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