import React from 'react'; import { cn } from '../../lib/cn'; import { motion } from 'framer-motion'; const pathVariants = { hidden: { opacity: 0, pathLength: 0, }, visible: { opacity: 1, pathLength: 1, transition: { delay: 0.15, duration: 0.4, ease: 'easeInOut', }, }, }; const sizeVariants = { sm: 'h-4 w-4', md: 'h-5 w-5', lg: 'h-6 w-6', }; const colorsVariants = { default: 'bg-default', primary: 'bg-liquid-brightmain', secondary: 'bg-liquid-darkmain', success: 'bg-liquid-green', warning: 'bg-liquid-orange', danger: 'bg-liquid-red', }; const borderColorsVariants = { default: 'border-default', primary: 'border-liquid-brightmain', secondary: 'border-liquid-darkmain', success: 'border-liquid-green', warning: 'border-liquid-orange', danger: 'border-liquid-red', }; const focuseOutlineVariants = { default: '[&:focus-visible+*]:outline-default', primary: '[&:focus-visible+*]:outline-liquid-brightmain', secondary: '[&:focus-visible+*]:outline-liquid-darkmain', success: '[&:focus-visible+*]:outline-liquid-green', warning: '[&:focus-visible+*]:outline-liquid-orange', danger: '[&:focus-visible+*]:outline-liquid-red', }; const radiusVraiants = { none: '', sm: 'rounded-[3.5px]', md: 'rounded-[5px]', lg: 'rounded-[7px]', full: 'rounded-full', }; interface CheckboxProps { size?: 'sm' | 'md' | 'lg'; radius?: 'none' | 'sm' | 'md' | 'lg' | 'full'; disabled?: boolean; color?: | 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger'; label?: string; variant?: 'default' | 'label'; className?: string; defaultState?: boolean; onChange: (state: boolean) => void; } export const Checkbox: React.FC = ({ size = 'md', radius = 'md', disabled = false, color = 'primary', label = '', variant = 'label', className, onChange, defaultState = false, }) => { const [active, setActive] = React.useState(defaultState); React.useEffect(() => onChange(active), [active]); return (
{ setActive(!active); }} />
{active && ( )}
{variant == 'label' && (
{label}
)}
); };