import { useEffect } from 'react'; import { Checkbox, useStoreState, useCheckboxStore } from '@ariakit/react'; import { cn } from '~/utils'; import * as React from 'react'; const CheckboxButton = React.forwardRef< HTMLInputElement, { icon?: React.ReactNode; label: string; className?: string; defaultChecked?: boolean; isCheckedClassName?: string; setValue?: (e: React.ChangeEvent, isChecked: boolean) => void; } >(({ icon, label, setValue, className, defaultChecked, isCheckedClassName }, ref) => { const checkbox = useCheckboxStore(); const isChecked = useStoreState(checkbox, (state) => state?.value); const onChange = (e: React.ChangeEvent) => { e.stopPropagation(); if (typeof isChecked !== 'boolean') { return; } setValue?.(e, !isChecked); }; useEffect(() => { if (defaultChecked) { checkbox.setValue(defaultChecked); } }, [defaultChecked, checkbox]); return ( } > {/* Icon if provided */} {icon && {icon}} {/* Show the label on larger screens */} {label} ); }); CheckboxButton.displayName = 'CheckboxButton'; export default CheckboxButton;