{"version":3,"sources":["../../../src/components/user-input/Checkbox.tsx","../../../src/components/user-input/Label.tsx"],"sourcesContent":["import { useState } from 'react'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport type { CheckedState } from '@radix-ui/react-checkbox'\nimport { Check, Minus } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\n\ntype CheckBoxSize = 'small' | 'medium' | 'large'\n\nconst checkboxSizeMapping: Record<CheckBoxSize, string> = {\n  small: 'size-4',\n  medium: 'size-6',\n  large: 'size-8',\n}\n\nconst checkboxIconSizeMapping: Record<CheckBoxSize, string> = {\n  small: 'size-3',\n  medium: 'size-5',\n  large: 'size-7',\n}\n\ntype CheckboxProps = {\n  /** used for the label's `for` attribute */\n  id?: string,\n  label?: Omit<LabelProps, 'id'>,\n  /**\n   * @default false\n   */\n  checked: CheckedState,\n  disabled?: boolean,\n  onChange?: (checked: boolean) => void,\n  onChangeTristate?: (checked: CheckedState) => void,\n  size?: CheckBoxSize,\n  className?: string,\n  containerClassName?: string,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by the parent\n */\nconst ControlledCheckbox = ({\n                              id,\n                              label,\n                              checked,\n                              disabled,\n                              onChange,\n                              onChangeTristate,\n                              size = 'medium',\n                              className = '',\n                              containerClassName\n                            }: CheckboxProps) => {\n  const usedSizeClass = checkboxSizeMapping[size]\n  const innerIconSize = checkboxIconSizeMapping[size]\n\n  const propagateChange = (checked: CheckedState) => {\n    if (onChangeTristate) {\n      onChangeTristate(checked)\n    }\n    if (onChange) {\n      onChange(checked === 'indeterminate' ? false : checked)\n    }\n  }\n\n  const changeValue = () => {\n    const newValue = checked === 'indeterminate' ? false : !checked\n    propagateChange(newValue)\n  }\n\n  return (\n    <div className={clsx('row justify-center items-center', containerClassName)}>\n      <CheckboxPrimitive.Root\n        onCheckedChange={propagateChange}\n        checked={checked}\n        disabled={disabled}\n        id={id}\n        className={clsx(usedSizeClass, `items-center border-2 rounded outline-none focus:border-primary`, {\n          'text-disabled-text border-disabled-text': disabled,\n          'border-on-background': !disabled,\n          'bg-primary/30 border-primary text-primary': checked === true || checked === 'indeterminate',\n          'hover:border-gray-400 focus:hover:border-primary': !checked\n        }, className)}\n      >\n        <CheckboxPrimitive.Indicator>\n          {checked === true && <Check className={innerIconSize}/>}\n          {checked === 'indeterminate' && <Minus className={innerIconSize}/>}\n        </CheckboxPrimitive.Indicator>\n      </CheckboxPrimitive.Root>\n      {label &&\n        <Label {...label} className={clsx('cursor-pointer', label.className)} htmlFor={id} onClick={changeValue}/>}\n    </div>\n  )\n}\n\ntype UncontrolledCheckboxProps = Omit<CheckboxProps, 'value' | 'checked'> & {\n  /**\n   * @default false\n   */\n  defaultValue?: CheckedState,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by this component\n */\nconst UncontrolledCheckbox = ({\n                                onChange,\n                                onChangeTristate,\n                                defaultValue = false,\n                                ...props\n                              }: UncontrolledCheckboxProps) => {\n  const [checked, setChecked] = useState(defaultValue)\n\n  const handleChange = (checked: CheckedState) => {\n    if (onChangeTristate) {\n      onChangeTristate(checked)\n    }\n    if (onChange) {\n      onChange(checked === 'indeterminate' ? false : checked)\n    }\n    setChecked(checked)\n  }\n\n  return (\n    <ControlledCheckbox\n      {...props}\n      checked={checked}\n      onChangeTristate={handleChange}\n    />\n  )\n}\n\nexport {\n  UncontrolledCheckbox,\n  ControlledCheckbox as Checkbox\n}\n","import type { LabelHTMLAttributes } from 'react'\n\nexport type LabelType = 'labelSmall' | 'labelMedium' | 'labelBig'\nconst styleMapping: Record<LabelType, string> = {\n  labelSmall: 'textstyle-label-sm',\n  labelMedium: 'textstyle-label-md',\n  labelBig: 'textstyle-label-lg',\n}\n\n\nexport type LabelProps = {\n  /** The text for the label */\n  name?: string,\n  /** The styling for the label */\n  labelType?: LabelType,\n} & LabelHTMLAttributes<HTMLLabelElement>\n\n/**\n * A Label component\n */\nexport const Label = ({\n  children,\n  name,\n  labelType = 'labelSmall',\n  ...props\n}: LabelProps) => {\n  return (\n    <label {...props}>\n      {children ? children : (<span className={styleMapping[labelType]}>{name}</span>)}\n    </label>\n  )\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,YAAY,uBAAuB;AAEnC,SAAS,OAAO,aAAa;AAC7B,OAAO,UAAU;;;ACwBa;AAzB9B,IAAM,eAA0C;AAAA,EAC9C,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,UAAU;AACZ;AAaO,IAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,GAAG;AACL,MAAkB;AAChB,SACE,oBAAC,WAAO,GAAG,OACR,qBAAW,WAAY,oBAAC,UAAK,WAAW,aAAa,SAAS,GAAI,gBAAK,GAC1E;AAEJ;;;ADsDQ,SACuB,OAAAA,MADvB;AA3ER,IAAM,sBAAoD;AAAA,EACxD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT;AAEA,IAAM,0BAAwD;AAAA,EAC5D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT;AAuBA,IAAM,qBAAqB,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ;AACF,MAAqB;AAC/C,QAAM,gBAAgB,oBAAoB,IAAI;AAC9C,QAAM,gBAAgB,wBAAwB,IAAI;AAElD,QAAM,kBAAkB,CAACC,aAA0B;AACjD,QAAI,kBAAkB;AACpB,uBAAiBA,QAAO;AAAA,IAC1B;AACA,QAAI,UAAU;AACZ,eAASA,aAAY,kBAAkB,QAAQA,QAAO;AAAA,IACxD;AAAA,EACF;AAEA,QAAM,cAAc,MAAM;AACxB,UAAM,WAAW,YAAY,kBAAkB,QAAQ,CAAC;AACxD,oBAAgB,QAAQ;AAAA,EAC1B;AAEA,SACE,qBAAC,SAAI,WAAW,KAAK,mCAAmC,kBAAkB,GACxE;AAAA,oBAAAD;AAAA,MAAmB;AAAA,MAAlB;AAAA,QACC,iBAAiB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,KAAK,eAAe,mEAAmE;AAAA,UAChG,2CAA2C;AAAA,UAC3C,wBAAwB,CAAC;AAAA,UACzB,6CAA6C,YAAY,QAAQ,YAAY;AAAA,UAC7E,oDAAoD,CAAC;AAAA,QACvD,GAAG,SAAS;AAAA,QAEZ,+BAAmB,6BAAlB,EACE;AAAA,sBAAY,QAAQ,gBAAAA,KAAC,SAAM,WAAW,eAAc;AAAA,UACpD,YAAY,mBAAmB,gBAAAA,KAAC,SAAM,WAAW,eAAc;AAAA,WAClE;AAAA;AAAA,IACF;AAAA,IACC,SACC,gBAAAA,KAAC,SAAO,GAAG,OAAO,WAAW,KAAK,kBAAkB,MAAM,SAAS,GAAG,SAAS,IAAI,SAAS,aAAY;AAAA,KAC5G;AAEJ;AAcA,IAAM,uBAAuB,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,GAAG;AACL,MAAiC;AAC7D,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,YAAY;AAEnD,QAAM,eAAe,CAACC,aAA0B;AAC9C,QAAI,kBAAkB;AACpB,uBAAiBA,QAAO;AAAA,IAC1B;AACA,QAAI,UAAU;AACZ,eAASA,aAAY,kBAAkB,QAAQA,QAAO;AAAA,IACxD;AACA,eAAWA,QAAO;AAAA,EACpB;AAEA,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,kBAAkB;AAAA;AAAA,EACpB;AAEJ;","names":["jsx","checked"]}