@wow-two-beta/ui 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/index.d.ts +1 -0
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +2 -2
- package/dist/actions/toolbar/Toolbar.d.ts +23 -0
- package/dist/actions/toolbar/Toolbar.d.ts.map +1 -0
- package/dist/actions/toolbar/index.d.ts +2 -0
- package/dist/actions/toolbar/index.d.ts.map +1 -0
- package/dist/{chunk-PFM3IQKM.js → chunk-A4N52LL6.js} +1132 -170
- package/dist/chunk-A4N52LL6.js.map +1 -0
- package/dist/{chunk-52DFDWY3.js → chunk-EU6JT5B4.js} +6 -6
- package/dist/chunk-EU6JT5B4.js.map +1 -0
- package/dist/{chunk-VTLWHUMD.js → chunk-PRRVOVUC.js} +384 -8
- package/dist/chunk-PRRVOVUC.js.map +1 -0
- package/dist/{chunk-ZTHJ5OTI.js → chunk-UGHPZ3I7.js} +212 -6
- package/dist/chunk-UGHPZ3I7.js.map +1 -0
- package/dist/{chunk-D5CHR6RX.js → chunk-ULAOIBCP.js} +113 -5
- package/dist/chunk-ULAOIBCP.js.map +1 -0
- package/dist/{chunk-YANOG5YR.js → chunk-YMSAS7M7.js} +104 -55
- package/dist/chunk-YMSAS7M7.js.map +1 -0
- package/dist/display/accordion/Accordion.d.ts +41 -0
- package/dist/display/accordion/Accordion.d.ts.map +1 -0
- package/dist/display/accordion/index.d.ts +2 -0
- package/dist/display/accordion/index.d.ts.map +1 -0
- package/dist/display/collapsible/Collapsible.d.ts +26 -0
- package/dist/display/collapsible/Collapsible.d.ts.map +1 -0
- package/dist/display/collapsible/index.d.ts +2 -0
- package/dist/display/collapsible/index.d.ts.map +1 -0
- package/dist/display/index.d.ts +3 -0
- package/dist/display/index.d.ts.map +1 -1
- package/dist/display/index.js +2 -3
- package/dist/display/tabs/Tabs.d.ts +31 -0
- package/dist/display/tabs/Tabs.d.ts.map +1 -0
- package/dist/display/tabs/index.d.ts +2 -0
- package/dist/display/tabs/index.d.ts.map +1 -0
- package/dist/forms/ColorExtensions.d.ts +38 -0
- package/dist/forms/ColorExtensions.d.ts.map +1 -0
- package/dist/forms/{_dateUtils.d.ts → DateExtensions.d.ts} +1 -1
- package/dist/forms/DateExtensions.d.ts.map +1 -0
- package/dist/forms/{_styles.d.ts → InputStyles.d.ts} +1 -1
- package/dist/forms/InputStyles.d.ts.map +1 -0
- package/dist/forms/colorArea/ColorArea.d.ts +18 -0
- package/dist/forms/colorArea/ColorArea.d.ts.map +1 -0
- package/dist/forms/colorArea/index.d.ts +2 -0
- package/dist/forms/colorArea/index.d.ts.map +1 -0
- package/dist/forms/colorField/ColorField.d.ts +11 -0
- package/dist/forms/colorField/ColorField.d.ts.map +1 -0
- package/dist/forms/colorField/index.d.ts +2 -0
- package/dist/forms/colorField/index.d.ts.map +1 -0
- package/dist/forms/colorPicker/ColorPicker.d.ts +15 -0
- package/dist/forms/colorPicker/ColorPicker.d.ts.map +1 -0
- package/dist/forms/colorPicker/index.d.ts +2 -0
- package/dist/forms/colorPicker/index.d.ts.map +1 -0
- package/dist/forms/colorSlider/ColorSlider.d.ts +15 -0
- package/dist/forms/colorSlider/ColorSlider.d.ts.map +1 -0
- package/dist/forms/colorSlider/index.d.ts +2 -0
- package/dist/forms/colorSlider/index.d.ts.map +1 -0
- package/dist/forms/colorSwatch/ColorSwatch.d.ts +21 -0
- package/dist/forms/colorSwatch/ColorSwatch.d.ts.map +1 -0
- package/dist/forms/colorSwatch/ColorSwatch.variants.d.ts +165 -0
- package/dist/forms/colorSwatch/ColorSwatch.variants.d.ts.map +1 -0
- package/dist/forms/colorSwatch/index.d.ts +3 -0
- package/dist/forms/colorSwatch/index.d.ts.map +1 -0
- package/dist/forms/colorSwatchPicker/ColorSwatchPicker.d.ts +13 -0
- package/dist/forms/colorSwatchPicker/ColorSwatchPicker.d.ts.map +1 -0
- package/dist/forms/colorSwatchPicker/index.d.ts +2 -0
- package/dist/forms/colorSwatchPicker/index.d.ts.map +1 -0
- package/dist/forms/colorWheel/ColorWheel.d.ts +13 -0
- package/dist/forms/colorWheel/ColorWheel.d.ts.map +1 -0
- package/dist/forms/colorWheel/index.d.ts +2 -0
- package/dist/forms/colorWheel/index.d.ts.map +1 -0
- package/dist/forms/combobox/Combobox.d.ts +1 -1
- package/dist/forms/combobox/Combobox.d.ts.map +1 -1
- package/dist/forms/dateField/DateField.d.ts +1 -1
- package/dist/forms/dateField/DateField.d.ts.map +1 -1
- package/dist/forms/datePicker/DatePicker.d.ts.map +1 -1
- package/dist/forms/dateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/dist/forms/emailInput/EmailInput.d.ts +1 -1
- package/dist/forms/emailInput/EmailInput.d.ts.map +1 -1
- package/dist/forms/index.d.ts +8 -0
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +3 -3
- package/dist/forms/maskedInput/MaskedInput.d.ts +1 -1
- package/dist/forms/maskedInput/MaskedInput.d.ts.map +1 -1
- package/dist/forms/numberInput/NumberInput.d.ts +1 -1
- package/dist/forms/numberInput/NumberInput.d.ts.map +1 -1
- package/dist/forms/passwordInput/PasswordInput.d.ts +1 -1
- package/dist/forms/passwordInput/PasswordInput.d.ts.map +1 -1
- package/dist/forms/searchInput/SearchInput.d.ts +1 -1
- package/dist/forms/searchInput/SearchInput.d.ts.map +1 -1
- package/dist/forms/stepper/Stepper.d.ts +32 -0
- package/dist/forms/stepper/Stepper.d.ts.map +1 -0
- package/dist/forms/stepper/index.d.ts +2 -0
- package/dist/forms/stepper/index.d.ts.map +1 -0
- package/dist/forms/telInput/TelInput.d.ts +1 -1
- package/dist/forms/telInput/TelInput.d.ts.map +1 -1
- package/dist/forms/textInput/TextInput.d.ts +1 -1
- package/dist/forms/textInput/TextInput.d.ts.map +1 -1
- package/dist/forms/textarea/Textarea.d.ts +1 -1
- package/dist/forms/textarea/Textarea.d.ts.map +1 -1
- package/dist/forms/timeField/TimeField.d.ts +1 -1
- package/dist/forms/timeField/TimeField.d.ts.map +1 -1
- package/dist/forms/timePicker/TimePicker.d.ts.map +1 -1
- package/dist/forms/urlInput/UrlInput.d.ts +1 -1
- package/dist/forms/urlInput/UrlInput.d.ts.map +1 -1
- package/dist/index.js +6 -7
- package/dist/nav/index.d.ts +1 -0
- package/dist/nav/index.d.ts.map +1 -1
- package/dist/nav/index.js +2 -3
- package/dist/nav/navigationMenu/NavigationMenu.d.ts +39 -0
- package/dist/nav/navigationMenu/NavigationMenu.d.ts.map +1 -0
- package/dist/nav/navigationMenu/index.d.ts +2 -0
- package/dist/nav/navigationMenu/index.d.ts.map +1 -0
- package/dist/overlays/index.js +2 -3
- package/dist/overlays/popover/Popover.d.ts +7 -0
- package/dist/overlays/popover/Popover.d.ts.map +1 -1
- package/dist/primitives/anchoredPositioner/AnchoredPositioner.d.ts +8 -0
- package/dist/primitives/anchoredPositioner/AnchoredPositioner.d.ts.map +1 -1
- package/dist/primitives/index.js +1 -2
- package/dist/primitives/rovingFocusGroup/RovingFocusGroup.d.ts +1 -1
- package/dist/primitives/rovingFocusGroup/RovingFocusGroup.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-33IOXQYO.js +0 -47
- package/dist/chunk-33IOXQYO.js.map +0 -1
- package/dist/chunk-52DFDWY3.js.map +0 -1
- package/dist/chunk-D5CHR6RX.js.map +0 -1
- package/dist/chunk-PFM3IQKM.js.map +0 -1
- package/dist/chunk-VTLWHUMD.js.map +0 -1
- package/dist/chunk-YANOG5YR.js.map +0 -1
- package/dist/chunk-ZTHJ5OTI.js.map +0 -1
- package/dist/forms/_dateUtils.d.ts.map +0 -1
- package/dist/forms/_styles.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/forms/label/Label.tsx","../src/forms/formHelperText/FormHelperText.tsx","../src/forms/formErrorMessage/FormErrorMessage.tsx","../src/forms/fieldset/Fieldset.tsx","../src/forms/legend/Legend.tsx","../src/forms/_styles.ts","../src/forms/textInput/TextInput.tsx","../src/forms/emailInput/EmailInput.tsx","../src/forms/telInput/TelInput.tsx","../src/forms/urlInput/UrlInput.tsx","../src/forms/numberInput/NumberInput.tsx","../src/forms/passwordInput/PasswordInput.tsx","../src/forms/searchInput/SearchInput.tsx","../src/forms/textarea/Textarea.tsx","../src/forms/checkbox/Checkbox.tsx","../src/forms/radio/Radio.tsx","../src/forms/switch/Switch.tsx","../src/forms/slider/Slider.tsx","../src/forms/formField/FormField.tsx","../src/forms/checkboxField/CheckboxField.tsx","../src/forms/radioField/RadioField.tsx","../src/forms/switchField/SwitchField.tsx","../src/forms/checkboxGroup/CheckboxGroup.tsx","../src/forms/radioGroup/RadioGroup.tsx","../src/forms/pinInput/PinInput.tsx","../src/forms/maskedInput/MaskedInput.tsx","../src/forms/currencyInput/CurrencyInput.tsx","../src/forms/percentInput/PercentInput.tsx","../src/forms/characterCount/CharacterCount.tsx","../src/forms/inputAddon/InputAddon.tsx","../src/forms/inputGroup/InputGroup.tsx","../src/forms/labeledInput/LabeledInput.tsx","../src/forms/choiceCard/ChoiceCard.tsx","../src/forms/passwordStrength/PasswordStrength.tsx","../src/forms/filePicker/FilePicker.tsx","../src/forms/listbox/Listbox.variants.ts","../src/forms/listbox/Listbox.tsx","../src/forms/select/Select.variants.ts","../src/forms/select/Select.tsx","../src/forms/multiSelect/MultiSelect.tsx","../src/forms/combobox/Combobox.tsx","../src/forms/_dateUtils.ts","../src/forms/calendar/Calendar.tsx","../src/forms/dateField/DateField.tsx","../src/forms/timeField/TimeField.tsx","../src/forms/rangeCalendar/RangeCalendar.tsx","../src/forms/datePicker/DatePicker.tsx","../src/forms/timePicker/TimePicker.tsx","../src/forms/dateRangePicker/DateRangePicker.tsx"],"names":["forwardRef","jsx","jsxs","useRef","useImperativeHandle","useState","Minus","SIZE_CLASS","TRACK_CLASS","useId","Children","isValidElement","cloneElement","SIZE","Listbox","ListboxItem","Check","createContext","useContext","useCallback","useMemo","SelectTrigger","SelectItem","useEffect","MultiSelectTrigger","ChevronDown","X","FocusScope","MultiSelectItem","ComboboxInput","ComboboxItem","Calendar","DateField","TimeField","RangeCalendar","ChevronLeft","ChevronRight","DatePicker","CalendarIcon","defaultFormat","TimePicker","Fragment","DateRangePicker"],"mappings":"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","file":"chunk-PFM3IQKM.js","sourcesContent":["import { forwardRef, type LabelHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n /** Show a `*` indicator. Auto-derived from `FormControl.isRequired` when present. */\n required?: boolean;\n}\n\n/**\n * `<label>` wired to `FormControl` context — when wrapped in a `FormControl`\n * it auto-fills `htmlFor` and `id`. Standalone use: pass `htmlFor` directly.\n */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, required, htmlFor, id, children, ...props }, ref) => {\n const ctx = useFormControl();\n const isRequired = required ?? ctx?.isRequired ?? false;\n return (\n <label\n ref={ref}\n htmlFor={htmlFor ?? ctx?.id}\n id={id ?? ctx?.labelId}\n className={cn(\n 'text-sm font-medium text-foreground',\n ctx?.isDisabled && 'opacity-60',\n className,\n )}\n {...props}\n >\n {children}\n {isRequired && <span className=\"ml-0.5 text-destructive\" aria-hidden=\"true\">*</span>}\n </label>\n );\n },\n);\nLabel.displayName = 'Label';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport type FormHelperTextProps = ComponentPropsWithoutRef<'p'>;\n\n/**\n * Helper / hint text below a form control. Reads `helperId` from\n * `FormControl` so the input can reference it via `aria-describedby`.\n */\nexport const FormHelperText = forwardRef<HTMLParagraphElement, FormHelperTextProps>(\n ({ className, id, ...props }, ref) => {\n const ctx = useFormControl();\n return (\n <p\n ref={ref}\n id={id ?? ctx?.helperId}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n );\n },\n);\nFormHelperText.displayName = 'FormHelperText';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport type FormErrorMessageProps = ComponentPropsWithoutRef<'p'>;\n\n/**\n * Error copy under a form control. Renders only when the surrounding\n * `FormControl` is `isInvalid`. `id={errorId}` for `aria-describedby` wiring.\n */\nexport const FormErrorMessage = forwardRef<HTMLParagraphElement, FormErrorMessageProps>(\n ({ className, id, ...props }, ref) => {\n const ctx = useFormControl();\n if (ctx && !ctx.isInvalid) return null;\n return (\n <p\n ref={ref}\n id={id ?? ctx?.errorId}\n role=\"alert\"\n className={cn('text-sm text-destructive', className)}\n {...props}\n />\n );\n },\n);\nFormErrorMessage.displayName = 'FormErrorMessage';\n","import { forwardRef, type FieldsetHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\n\nexport type FieldsetProps = FieldsetHTMLAttributes<HTMLFieldSetElement>;\n\n/**\n * Semantic `<fieldset>` for grouping related controls. Pair with `Legend`\n * for the group label.\n */\nexport const Fieldset = forwardRef<HTMLFieldSetElement, FieldsetProps>(\n ({ className, ...props }, ref) => (\n <fieldset\n ref={ref}\n className={cn('m-0 min-w-0 border-0 p-0', className)}\n {...props}\n />\n ),\n);\nFieldset.displayName = 'Fieldset';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\n\nexport type LegendProps = HTMLAttributes<HTMLLegendElement>;\n\n/**\n * `<legend>` styled to match `Label`. Pair with `Fieldset`.\n */\nexport const Legend = forwardRef<HTMLLegendElement, LegendProps>(\n ({ className, ...props }, ref) => (\n <legend\n ref={ref}\n className={cn('mb-2 text-sm font-medium text-foreground', className)}\n {...props}\n />\n ),\n);\nLegend.displayName = 'Legend';\n","// Shared visual primitives for form atoms. Co-located in `forms/` so imports\n// stay within-domain (ESLint boundaries allow same-domain imports).\n\nimport { tv, type VariantProps } from '../utils';\n\nexport const inputBaseVariants = tv({\n base: 'flex w-full rounded-md border bg-background text-foreground placeholder:text-subtle-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60 read-only:bg-muted',\n variants: {\n size: {\n sm: 'h-8 px-2.5 text-sm',\n md: 'h-10 px-3 text-sm',\n lg: 'h-12 px-4 text-base',\n },\n state: {\n default: 'border-input hover:border-border-strong',\n invalid: 'border-destructive focus-visible:ring-destructive',\n },\n },\n defaultVariants: {\n size: 'md',\n state: 'default',\n },\n});\n\nexport type InputBaseVariants = VariantProps<typeof inputBaseVariants>;\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface TextInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {}\n\n/**\n * Single-line text input. For email/tel/url/number/password/search variants\n * use the dedicated input component (each carries only the props/buttons it\n * actually needs).\n */\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n ({ className, size, state, id, disabled, required, readOnly, ...props }, ref) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <input\n ref={ref}\n type=\"text\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nTextInput.displayName = 'TextInput';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface EmailInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {}\n\n/** `<input type=\"email\">` with sensible defaults (autocomplete, inputmode). */\nexport const EmailInput = forwardRef<HTMLInputElement, EmailInputProps>(\n ({ className, size, state, id, disabled, required, readOnly, ...props }, ref) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <input\n ref={ref}\n type=\"email\"\n autoComplete=\"email\"\n inputMode=\"email\"\n spellCheck={false}\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nEmailInput.displayName = 'EmailInput';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface TelInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {}\n\n/** `<input type=\"tel\">` with `inputmode=\"tel\"` and `autocomplete=\"tel\"`. */\nexport const TelInput = forwardRef<HTMLInputElement, TelInputProps>(\n ({ className, size, state, id, disabled, required, readOnly, ...props }, ref) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <input\n ref={ref}\n type=\"tel\"\n autoComplete=\"tel\"\n inputMode=\"tel\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nTelInput.displayName = 'TelInput';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface UrlInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {}\n\n/** `<input type=\"url\">` with `inputmode=\"url\"` and `autocomplete=\"url\"`. */\nexport const UrlInput = forwardRef<HTMLInputElement, UrlInputProps>(\n ({ className, size, state, id, disabled, required, readOnly, ...props }, ref) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <input\n ref={ref}\n type=\"url\"\n autoComplete=\"url\"\n inputMode=\"url\"\n spellCheck={false}\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nUrlInput.displayName = 'UrlInput';\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type InputHTMLAttributes,\n} from 'react';\nimport { Minus, Plus } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface NumberInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {\n step?: number;\n}\n\n/**\n * Numeric input with stepper buttons. Steppers are raw `<button>` elements\n * (not `IconButton`) to keep the strict atom rule.\n */\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n { className, size, state, id, disabled, required, readOnly, step = 1, ...props },\n forwardedRef,\n ) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n const inputRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement);\n\n const adjust = (direction: 1 | -1) => {\n const el = inputRef.current;\n if (!el || typeof el.stepUp !== 'function') return;\n if (direction === 1) el.stepUp(step);\n else el.stepDown(step);\n el.dispatchEvent(new Event('input', { bubbles: true }));\n el.dispatchEvent(new Event('change', { bubbles: true }));\n };\n\n const isDisabled = disabled ?? ctx?.isDisabled ?? false;\n\n return (\n <div className={cn('relative', className)}>\n <input\n ref={inputRef}\n type=\"number\"\n inputMode=\"decimal\"\n step={step}\n id={id ?? ctx?.id}\n disabled={isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), 'pr-12 [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none')}\n {...props}\n />\n <div className=\"absolute right-1 top-1/2 flex -translate-y-1/2 items-center\">\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={() => adjust(-1)}\n aria-label=\"Decrement\"\n className=\"grid h-7 w-6 place-items-center rounded text-muted-foreground hover:bg-muted disabled:opacity-50\"\n >\n <Icon icon={Minus} size={14} />\n </button>\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={() => adjust(1)}\n aria-label=\"Increment\"\n className=\"grid h-7 w-6 place-items-center rounded text-muted-foreground hover:bg-muted disabled:opacity-50\"\n >\n <Icon icon={Plus} size={14} />\n </button>\n </div>\n </div>\n );\n },\n);\nNumberInput.displayName = 'NumberInput';\n","import { forwardRef, useState, type InputHTMLAttributes } from 'react';\nimport { Eye, EyeOff } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface PasswordInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {\n /** Whether to render the visibility-toggle button. Default true. */\n toggleable?: boolean;\n}\n\n/**\n * Password input with optional visibility toggle. Toggle is a raw `<button>`\n * to keep the strict atom rule.\n */\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(\n (\n {\n className,\n size,\n state,\n id,\n disabled,\n required,\n readOnly,\n toggleable = true,\n autoComplete = 'current-password',\n ...props\n },\n ref,\n ) => {\n const [visible, setVisible] = useState(false);\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n const isDisabled = disabled ?? ctx?.isDisabled ?? false;\n\n return (\n <div className={cn('relative', className)}>\n <input\n ref={ref}\n type={visible ? 'text' : 'password'}\n autoComplete={autoComplete}\n spellCheck={false}\n id={id ?? ctx?.id}\n disabled={isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), toggleable && 'pr-10')}\n {...props}\n />\n {toggleable && (\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={() => setVisible((v) => !v)}\n aria-label={visible ? 'Hide password' : 'Show password'}\n aria-pressed={visible}\n className=\"absolute right-1 top-1/2 grid h-8 w-8 -translate-y-1/2 place-items-center rounded text-muted-foreground hover:bg-muted disabled:opacity-50\"\n >\n <Icon icon={visible ? EyeOff : Eye} size={16} />\n </button>\n )}\n </div>\n );\n },\n);\nPasswordInput.displayName = 'PasswordInput';\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n useState,\n type InputHTMLAttributes,\n} from 'react';\nimport { Search, X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface SearchInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {\n /** Show a clear (×) button when the input has a value. Default true. */\n clearable?: boolean;\n onClear?: () => void;\n}\n\n/**\n * Search input with leading search icon and optional clear button.\n * Buttons are raw `<button>` elements to keep the strict atom rule.\n */\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n className,\n size,\n state,\n id,\n disabled,\n required,\n readOnly,\n clearable = true,\n onClear,\n onChange,\n defaultValue,\n value,\n ...props\n },\n forwardedRef,\n ) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n const isDisabled = disabled ?? ctx?.isDisabled ?? false;\n const inputRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement);\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = useState(defaultValue ?? '');\n const currentValue = isControlled ? value : uncontrolled;\n const showClear = clearable && String(currentValue ?? '').length > 0;\n\n const handleClear = () => {\n const el = inputRef.current;\n if (el) {\n const setter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')\n ?.set;\n setter?.call(el, '');\n el.dispatchEvent(new Event('input', { bubbles: true }));\n el.focus();\n }\n if (!isControlled) setUncontrolled('');\n onClear?.();\n };\n\n return (\n <div className={cn('relative', className)}>\n <Icon\n icon={Search}\n size={16}\n className=\"absolute left-3 top-1/2 -translate-y-1/2 text-subtle-foreground\"\n />\n <input\n ref={inputRef}\n type=\"search\"\n id={id ?? ctx?.id}\n value={isControlled ? value : undefined}\n defaultValue={!isControlled ? (defaultValue as string | number | undefined) : undefined}\n onChange={(e) => {\n if (!isControlled) setUncontrolled(e.target.value);\n onChange?.(e);\n }}\n disabled={isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(\n inputBaseVariants({ size, state: finalState }),\n 'pl-9',\n showClear && 'pr-9',\n '[&::-webkit-search-cancel-button]:appearance-none',\n )}\n {...props}\n />\n {showClear && (\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={handleClear}\n aria-label=\"Clear search\"\n className=\"absolute right-1 top-1/2 grid h-8 w-8 -translate-y-1/2 place-items-center rounded text-subtle-foreground hover:bg-muted hover:text-muted-foreground\"\n >\n <Icon icon={X} size={14} />\n </button>\n )}\n </div>\n );\n },\n);\nSearchInput.displayName = 'SearchInput';\n","import { forwardRef, type TextareaHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface TextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>,\n InputBaseVariants {}\n\n/**\n * Multi-line text input. Inherits the input visual base. For autosize, pair\n * with a sibling-domain hook in v1 — kept simple at L3.\n */\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n { className, size, state, id, disabled, required, readOnly, rows = 3, ...props },\n ref,\n ) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <textarea\n ref={ref}\n rows={rows}\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(\n inputBaseVariants({ size, state: finalState }),\n 'h-auto resize-y py-2',\n className,\n )}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = 'Textarea';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { Check, Minus } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface CheckboxProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n size?: 'sm' | 'md' | 'lg';\n /** Tristate visual — input is `checked={false}` but rendered as a dash. */\n indeterminate?: boolean;\n}\n\nconst SIZE_CLASS: Record<NonNullable<CheckboxProps['size']>, string> = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n};\n\n/**\n * Native checkbox with custom visual. Renders the input visually hidden but\n * accessible — wrap in a `<label>` (or pair with `Label` via `FormControl`).\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n { className, size = 'md', indeterminate, id, disabled, required, checked, ...props },\n ref,\n ) => {\n const ctx = useFormControl();\n const isDisabled = disabled ?? ctx?.isDisabled;\n return (\n <span className={cn('relative inline-flex shrink-0', SIZE_CLASS[size], className)}>\n <input\n ref={ref}\n type=\"checkbox\"\n id={id ?? ctx?.id}\n disabled={isDisabled}\n required={required ?? ctx?.isRequired}\n checked={checked}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className=\"peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n {...props}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none grid h-full w-full place-items-center rounded-sm border border-input bg-background text-primary-foreground transition-colors',\n 'peer-checked:border-primary peer-checked:bg-primary',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-1',\n 'peer-disabled:opacity-50',\n indeterminate && 'border-primary bg-primary',\n )}\n >\n {indeterminate ? (\n <Minus size={Math.round(SIZE_CLASS[size].length * 1.4)} className=\"h-3 w-3\" />\n ) : (\n <Check className=\"h-3 w-3 opacity-0 peer-checked:opacity-100\" />\n )}\n </span>\n </span>\n );\n },\n);\nCheckbox.displayName = 'Checkbox';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface RadioProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst SIZE_CLASS: Record<NonNullable<RadioProps['size']>, string> = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n};\n\n/**\n * Native radio button with custom visual. Use multiple with the same `name`\n * to form a mutually exclusive group; for arrow-key nav, wrap in\n * `RadioGroup` (L4).\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n ({ className, size = 'md', id, disabled, required, ...props }, ref) => {\n const ctx = useFormControl();\n return (\n <span className={cn('relative inline-flex shrink-0', SIZE_CLASS[size], className)}>\n <input\n ref={ref}\n type=\"radio\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n aria-invalid={ctx?.isInvalid || undefined}\n className=\"peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n {...props}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none grid h-full w-full place-items-center rounded-full border border-input bg-background transition-colors',\n 'peer-checked:border-primary',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-1',\n 'peer-disabled:opacity-50',\n )}\n >\n <span className=\"h-2 w-2 rounded-full bg-primary opacity-0 peer-checked:opacity-100\" />\n </span>\n </span>\n );\n },\n);\nRadio.displayName = 'Radio';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface SwitchProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst TRACK_CLASS: Record<NonNullable<SwitchProps['size']>, string> = {\n sm: 'h-4 w-7',\n md: 'h-5 w-9',\n lg: 'h-6 w-11',\n};\nconst THUMB_CLASS: Record<NonNullable<SwitchProps['size']>, string> = {\n sm: 'h-3 w-3 peer-checked:translate-x-3',\n md: 'h-4 w-4 peer-checked:translate-x-4',\n lg: 'h-5 w-5 peer-checked:translate-x-5',\n};\n\n/**\n * Toggle switch — native checkbox styled as an iOS-style track + thumb.\n * Strict atom: no built-in label; pair via `FormControl` or wrap manually.\n */\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n ({ className, size = 'md', id, disabled, required, ...props }, ref) => {\n const ctx = useFormControl();\n return (\n <span className={cn('relative inline-flex shrink-0', TRACK_CLASS[size], className)}>\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n aria-invalid={ctx?.isInvalid || undefined}\n className=\"peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n {...props}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none flex h-full w-full items-center rounded-full bg-input px-0.5 transition-colors',\n 'peer-checked:bg-primary',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-1',\n 'peer-disabled:opacity-50',\n )}\n >\n <span\n className={cn(\n 'rounded-full bg-background shadow-sm transition-transform duration-150',\n THUMB_CLASS[size],\n )}\n />\n </span>\n </span>\n );\n },\n);\nSwitch.displayName = 'Switch';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface SliderProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst TRACK_CLASS: Record<NonNullable<SliderProps['size']>, string> = {\n sm: 'h-1',\n md: 'h-1.5',\n lg: 'h-2',\n};\n\n/**\n * Single-value range slider — native `<input type=\"range\">` styled across\n * browsers. Multi-thumb / range slider lives at L5.\n */\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n (\n { className, size = 'md', id, disabled, required, min = 0, max = 100, ...props },\n ref,\n ) => {\n const ctx = useFormControl();\n return (\n <input\n ref={ref}\n type=\"range\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n min={min}\n max={max}\n aria-invalid={ctx?.isInvalid || undefined}\n className={cn(\n 'w-full appearance-none bg-transparent disabled:cursor-not-allowed disabled:opacity-50',\n // WebKit\n '[&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-muted',\n `[&::-webkit-slider-runnable-track]:${TRACK_CLASS[size]}`,\n '[&::-webkit-slider-thumb]:mt-[-6px] [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-primary [&::-webkit-slider-thumb]:bg-background',\n // Firefox\n `[&::-moz-range-track]:${TRACK_CLASS[size]}`,\n '[&::-moz-range-track]:rounded-full [&::-moz-range-track]:bg-muted',\n '[&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:border-primary [&::-moz-range-thumb]:bg-background',\n 'focus-visible:outline-none focus-visible:[&::-webkit-slider-thumb]:ring-2 focus-visible:[&::-webkit-slider-thumb]:ring-ring',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSlider.displayName = 'Slider';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { FormControlProvider } from '../../primitives/formControlContext/FormControlContext';\nimport { Label } from '../label/Label';\nimport { FormHelperText } from '../formHelperText/FormHelperText';\nimport { FormErrorMessage } from '../formErrorMessage/FormErrorMessage';\n\nexport interface FormFieldProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** Label text. Pass a node for richer content (e.g. label + tooltip). */\n label?: ReactNode;\n /** Helper / hint shown beneath the control. Hidden when `error` is set. */\n helper?: ReactNode;\n /** Error text — renders only when truthy. Sets `isInvalid` on the form context. */\n error?: ReactNode;\n /** Mark required (also exposes `isRequired` to the control via context). */\n isRequired?: boolean;\n /** Mark disabled (also exposes `isDisabled` to the control). */\n isDisabled?: boolean;\n /** Mark read-only (also exposes `isReadOnly` to the control). */\n isReadOnly?: boolean;\n /** The single form control (Input, Select, etc.) — receives wired id/aria via context. */\n children: ReactNode;\n}\n\n/**\n * One-stop label + control + helper + error wrapper. Wraps children in a\n * `FormControlProvider` so the inner control auto-wires `id`, `aria-describedby`,\n * `aria-invalid`, `disabled`, `required`, `readOnly`.\n */\nexport const FormField = forwardRef<HTMLDivElement, FormFieldProps>(\n (\n { label, helper, error, isRequired, isDisabled, isReadOnly, children, className, ...props },\n ref,\n ) => (\n <FormControlProvider\n isInvalid={Boolean(error)}\n isRequired={isRequired}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n >\n <div\n ref={ref}\n className={cn('flex flex-col gap-1.5', className)}\n {...props}\n >\n {label && <Label>{label}</Label>}\n {children}\n {error ? <FormErrorMessage>{error}</FormErrorMessage> : helper && <FormHelperText>{helper}</FormHelperText>}\n </div>\n </FormControlProvider>\n ),\n);\nFormField.displayName = 'FormField';\n","import { forwardRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useId } from '../../hooks';\nimport { Checkbox, type CheckboxProps } from '../checkbox/Checkbox';\n\nexport interface CheckboxFieldProps extends Omit<CheckboxProps, 'children'> {\n /** Right-side label. */\n label: ReactNode;\n /** Smaller helper / description below. */\n description?: ReactNode;\n /** Wrap-element className (the `<label>`). */\n wrapperClassName?: string;\n}\n\n/**\n * Checkbox + right-side label + optional description, wrapped in a single\n * `<label>` so clicking text toggles the box.\n */\nexport const CheckboxField = forwardRef<HTMLInputElement, CheckboxFieldProps>(\n ({ label, description, id, wrapperClassName, className, ...props }, ref) => {\n const generated = useId();\n const inputId = id ?? generated;\n return (\n <label\n htmlFor={inputId}\n className={cn('flex items-start gap-2.5 cursor-pointer', wrapperClassName)}\n >\n <Checkbox ref={ref} id={inputId} className={className} {...props} />\n <span className=\"flex flex-col gap-0.5 text-sm\">\n <span className=\"font-medium text-foreground\">{label}</span>\n {description && <span className=\"text-muted-foreground\">{description}</span>}\n </span>\n </label>\n );\n },\n);\nCheckboxField.displayName = 'CheckboxField';\n","import { forwardRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useId } from '../../hooks';\nimport { Radio, type RadioProps } from '../radio/Radio';\n\nexport interface RadioFieldProps extends Omit<RadioProps, 'children'> {\n label: ReactNode;\n description?: ReactNode;\n wrapperClassName?: string;\n}\n\n/**\n * Radio + right-side label + optional description, wrapped in a `<label>`.\n */\nexport const RadioField = forwardRef<HTMLInputElement, RadioFieldProps>(\n ({ label, description, id, wrapperClassName, className, ...props }, ref) => {\n const generated = useId();\n const inputId = id ?? generated;\n return (\n <label htmlFor={inputId} className={cn('flex items-start gap-2.5 cursor-pointer', wrapperClassName)}>\n <Radio ref={ref} id={inputId} className={className} {...props} />\n <span className=\"flex flex-col gap-0.5 text-sm\">\n <span className=\"font-medium text-foreground\">{label}</span>\n {description && <span className=\"text-muted-foreground\">{description}</span>}\n </span>\n </label>\n );\n },\n);\nRadioField.displayName = 'RadioField';\n","import { forwardRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useId } from '../../hooks';\nimport { Switch, type SwitchProps } from '../switch/Switch';\n\nexport interface SwitchFieldProps extends Omit<SwitchProps, 'children'> {\n label: ReactNode;\n description?: ReactNode;\n /** Place the switch on the left (default) or right of the label. */\n side?: 'left' | 'right';\n wrapperClassName?: string;\n}\n\n/**\n * Switch + label + optional description in a single clickable `<label>`.\n * `side=\"right\"` is the common settings-row pattern (label left, switch right).\n */\nexport const SwitchField = forwardRef<HTMLInputElement, SwitchFieldProps>(\n ({ label, description, side = 'left', id, wrapperClassName, className, ...props }, ref) => {\n const generated = useId();\n const inputId = id ?? generated;\n const text = (\n <span className=\"flex flex-col gap-0.5 text-sm\">\n <span className=\"font-medium text-foreground\">{label}</span>\n {description && <span className=\"text-muted-foreground\">{description}</span>}\n </span>\n );\n return (\n <label\n htmlFor={inputId}\n className={cn(\n 'flex cursor-pointer items-start gap-3',\n side === 'right' && 'flex-row-reverse justify-between',\n wrapperClassName,\n )}\n >\n <Switch ref={ref} id={inputId} className={className} {...props} />\n {text}\n </label>\n );\n },\n);\nSwitchField.displayName = 'SwitchField';\n","import { Children, cloneElement, forwardRef, isValidElement, type HTMLAttributes, type ReactElement, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Fieldset } from '../fieldset/Fieldset';\nimport { Legend } from '../legend/Legend';\nimport type { CheckboxFieldProps } from '../checkboxField/CheckboxField';\n\ninterface CheckboxGroupProps extends Omit<HTMLAttributes<HTMLFieldSetElement>, 'onChange'> {\n /** Group legend (label-equivalent for fieldset). */\n legend?: ReactNode;\n /** Selected values (controlled). */\n value?: string[];\n /** Initial values (uncontrolled). */\n defaultValue?: string[];\n /** Fires whenever selection changes. */\n onValueChange?: (next: string[]) => void;\n /** Disable the whole group. */\n isDisabled?: boolean;\n /** Layout direction. Default `vertical`. */\n orientation?: 'horizontal' | 'vertical';\n /** `<CheckboxField>` children with `value=\"…\"` attached. */\n children: ReactNode;\n}\n\ninterface ChildLike extends CheckboxFieldProps {\n value?: string;\n}\n\n/**\n * Multi-select group of `CheckboxField` children. Each child must declare a\n * `value` prop the group uses to track selection.\n */\nexport const CheckboxGroup = forwardRef<HTMLFieldSetElement, CheckboxGroupProps>(\n (\n {\n legend,\n value,\n defaultValue,\n onValueChange,\n isDisabled,\n orientation = 'vertical',\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const [selected, setSelected] = useControlled<string[]>({\n controlled: value,\n default: defaultValue ?? [],\n onChange: onValueChange,\n });\n\n const toggle = (v: string | undefined) => {\n if (v === undefined) return;\n setSelected(selected.includes(v) ? selected.filter((x) => x !== v) : [...selected, v]);\n };\n\n return (\n <Fieldset ref={ref} disabled={isDisabled} className={cn(className)} {...props}>\n {legend && <Legend>{legend}</Legend>}\n <div className={cn('flex gap-3', orientation === 'vertical' ? 'flex-col' : 'flex-row flex-wrap')}>\n {Children.map(children, (child) => {\n if (!isValidElement(child)) return child;\n const c = child as ReactElement<ChildLike>;\n const v = c.props.value;\n return cloneElement(c, {\n checked: v !== undefined && selected.includes(v),\n onChange: () => toggle(v),\n } as Partial<ChildLike>);\n })}\n </div>\n </Fieldset>\n );\n },\n);\nCheckboxGroup.displayName = 'CheckboxGroup';\n\nexport type { CheckboxGroupProps };\n","import { Children, cloneElement, forwardRef, isValidElement, useId, type HTMLAttributes, type ReactElement, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Fieldset } from '../fieldset/Fieldset';\nimport { Legend } from '../legend/Legend';\nimport type { RadioFieldProps } from '../radioField/RadioField';\n\ninterface RadioGroupProps extends Omit<HTMLAttributes<HTMLFieldSetElement>, 'onChange' | 'defaultValue'> {\n legend?: ReactNode;\n /** Shared `name` (required for native radio behavior). Auto-generated if omitted. */\n name?: string;\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (next: string | null) => void;\n isDisabled?: boolean;\n orientation?: 'horizontal' | 'vertical';\n children: ReactNode;\n}\n\ninterface ChildLike extends RadioFieldProps {\n value?: string;\n}\n\n/**\n * Mutex group of `RadioField` children. Single-value selection; auto-generates\n * a shared `name` if not provided.\n */\nexport const RadioGroup = forwardRef<HTMLFieldSetElement, RadioGroupProps>(\n (\n {\n legend,\n name,\n value,\n defaultValue,\n onValueChange,\n isDisabled,\n orientation = 'vertical',\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const generatedName = useId();\n const groupName = name ?? generatedName;\n const [selected, setSelected] = useControlled<string | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange: onValueChange,\n });\n\n return (\n <Fieldset ref={ref} disabled={isDisabled} className={cn(className)} {...props}>\n {legend && <Legend>{legend}</Legend>}\n <div className={cn('flex gap-3', orientation === 'vertical' ? 'flex-col' : 'flex-row flex-wrap')}>\n {Children.map(children, (child) => {\n if (!isValidElement(child)) return child;\n const c = child as ReactElement<ChildLike>;\n const v = c.props.value;\n return cloneElement(c, {\n name: groupName,\n checked: v !== undefined && selected === v,\n onChange: () => setSelected(v ?? null),\n } as Partial<ChildLike>);\n })}\n </div>\n </Fieldset>\n );\n },\n);\nRadioGroup.displayName = 'RadioGroup';\n\nexport type { RadioGroupProps };\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type ComponentPropsWithoutRef,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { inputBaseVariants } from '../_styles';\n\nexport interface PinInputProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'onChange'> {\n /** Number of digit cells. Default 6. */\n length?: number;\n /** Controlled value (full string). */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n /** Fires whenever the value changes. */\n onValueChange?: (value: string) => void;\n /** Fires when the user fills the final cell. */\n onComplete?: (value: string) => void;\n /** Restrict to digits (`numeric`) or any single char (`alphanumeric`). Default `numeric`. */\n type?: 'numeric' | 'alphanumeric';\n /** Cell visual size. Default `md`. */\n size?: 'sm' | 'md' | 'lg';\n /** Render each cell as `*` (good for verification codes). */\n mask?: boolean;\n isDisabled?: boolean;\n}\n\nconst SIZE: Record<NonNullable<PinInputProps['size']>, string> = {\n sm: 'h-9 w-9 text-base',\n md: 'h-11 w-11 text-lg',\n lg: 'h-14 w-14 text-xl',\n};\n\n/**\n * One-time-code / PIN input — N single-character cells with auto-advance,\n * paste-spread, and backspace-to-previous behavior.\n */\nexport const PinInput = forwardRef<HTMLDivElement, PinInputProps>(\n (\n {\n length = 6,\n value,\n defaultValue,\n onValueChange,\n onComplete,\n type = 'numeric',\n size = 'md',\n mask,\n isDisabled,\n className,\n ...props\n },\n ref,\n ) => {\n const [val, setVal] = useControlled({\n controlled: value,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const cells = Array.from({ length }, (_, i) => val[i] ?? '');\n const inputs = useRef<(HTMLInputElement | null)[]>([]);\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n useImperativeHandle(ref, () => wrapperRef.current as HTMLDivElement);\n\n const isAllowed = (ch: string) =>\n type === 'numeric' ? /^[0-9]$/.test(ch) : /^[A-Za-z0-9]$/.test(ch);\n\n const update = (next: string) => {\n const trimmed = next.slice(0, length);\n setVal(trimmed);\n if (trimmed.length === length) onComplete?.(trimmed);\n };\n\n const handleChange = (i: number, raw: string) => {\n const ch = raw.slice(-1);\n if (ch && !isAllowed(ch)) return;\n const arr = cells.slice();\n arr[i] = ch;\n const next = arr.join('').slice(0, length);\n update(next);\n if (ch && i < length - 1) inputs.current[i + 1]?.focus();\n };\n\n const handleKeyDown = (i: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && !cells[i] && i > 0) {\n inputs.current[i - 1]?.focus();\n } else if (e.key === 'ArrowLeft' && i > 0) {\n e.preventDefault();\n inputs.current[i - 1]?.focus();\n } else if (e.key === 'ArrowRight' && i < length - 1) {\n e.preventDefault();\n inputs.current[i + 1]?.focus();\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pasted = e.clipboardData.getData('text').replace(/\\s+/g, '');\n const filtered = pasted.split('').filter(isAllowed).join('');\n if (filtered) {\n e.preventDefault();\n update(filtered);\n const focusIdx = Math.min(filtered.length, length - 1);\n inputs.current[focusIdx]?.focus();\n }\n };\n\n return (\n <div ref={wrapperRef} className={cn('inline-flex gap-2', className)} {...props}>\n {cells.map((ch, i) => (\n <input\n key={i}\n ref={(el) => {\n inputs.current[i] = el;\n }}\n type={mask ? 'password' : 'text'}\n inputMode={type === 'numeric' ? 'numeric' : 'text'}\n autoComplete=\"one-time-code\"\n maxLength={1}\n disabled={isDisabled}\n value={ch}\n onChange={(e) => handleChange(i, e.target.value)}\n onKeyDown={(e) => handleKeyDown(i, e)}\n onPaste={handlePaste}\n className={cn(\n inputBaseVariants({ state: 'default' }),\n 'text-center font-medium',\n SIZE[size],\n )}\n />\n ))}\n </div>\n );\n },\n);\nPinInput.displayName = 'PinInput';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\n\nexport interface MaskedInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'value' | 'defaultValue' | 'onChange'>,\n InputBaseVariants {\n /** Mask pattern. `#` = digit, `A` = alpha, `*` = alphanumeric, anything else = literal. */\n mask: string;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n}\n\nfunction applyMask(raw: string, mask: string): string {\n let out = '';\n let r = 0;\n for (let m = 0; m < mask.length && r < raw.length; m++) {\n const tok = mask[m];\n const ch = raw[r];\n if (!tok || !ch) break;\n if (tok === '#') {\n if (/[0-9]/.test(ch)) {\n out += ch;\n r++;\n } else {\n r++;\n m--;\n }\n } else if (tok === 'A') {\n if (/[A-Za-z]/.test(ch)) {\n out += ch;\n r++;\n } else {\n r++;\n m--;\n }\n } else if (tok === '*') {\n if (/[A-Za-z0-9]/.test(ch)) {\n out += ch;\n r++;\n } else {\n r++;\n m--;\n }\n } else {\n // literal\n out += tok;\n if (ch === tok) r++;\n }\n }\n return out;\n}\n\n/**\n * Text input with a simple character-class mask. Tokens: `#` digit, `A`\n * letter, `*` alphanumeric. Anything else is a literal that's auto-inserted.\n *\n * Examples: `\"###-###-####\"` (US phone), `\"##/##/####\"` (date), `\"AAA-####\"`.\n */\nexport const MaskedInput = forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n { className, size, state, mask, value, defaultValue, onValueChange, id, disabled, required, readOnly, ...props },\n ref,\n ) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n const [val, setVal] = useControlled({\n controlled: value,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n return (\n <input\n ref={ref}\n type=\"text\"\n value={val}\n onChange={(e) => setVal(applyMask(e.target.value, mask))}\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nMaskedInput.displayName = 'MaskedInput';\n","import { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport { NumberInput, type NumberInputProps } from '../numberInput/NumberInput';\n\nexport interface CurrencyInputProps extends Omit<NumberInputProps, 'children'> {\n /** Currency symbol or 3-letter code displayed as a prefix. Default `\"$\"`. */\n symbol?: string;\n}\n\n/**\n * `NumberInput` with a leading currency symbol. Symbol shown as a non-input\n * decoration (input value is the bare number).\n */\nexport const CurrencyInput = forwardRef<HTMLInputElement, CurrencyInputProps>(\n ({ symbol = '$', className, ...props }, ref) => (\n <div className={cn('relative', className)}>\n <span className=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-sm text-muted-foreground\">\n {symbol}\n </span>\n <NumberInput ref={ref} {...props} className=\"pl-7\" />\n </div>\n ),\n);\nCurrencyInput.displayName = 'CurrencyInput';\n","import { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport { NumberInput, type NumberInputProps } from '../numberInput/NumberInput';\n\nexport type PercentInputProps = Omit<NumberInputProps, 'children'>;\n\n/**\n * `NumberInput` with a trailing `%` decoration. Input value remains the\n * bare number (interpret as 0–100 in your form).\n */\nexport const PercentInput = forwardRef<HTMLInputElement, PercentInputProps>(\n ({ className, ...props }, ref) => (\n <div className={cn('relative', className)}>\n <NumberInput ref={ref} {...props} className=\"pr-16\" />\n <span className=\"pointer-events-none absolute right-12 top-1/2 -translate-y-1/2 text-sm text-muted-foreground\">\n %\n </span>\n </div>\n ),\n);\nPercentInput.displayName = 'PercentInput';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface CharacterCountProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** Current length. */\n value: number;\n /** Maximum allowed length (also flips text to destructive when exceeded). */\n max: number;\n /** Show as `current / max` (default) or just `current`. */\n showMax?: boolean;\n}\n\n/**\n * Counter for character-limited fields. Drop in below a Textarea / Input.\n * Goes destructive once `value > max`.\n */\nexport const CharacterCount = forwardRef<HTMLDivElement, CharacterCountProps>(\n ({ value, max, showMax = true, className, ...props }, ref) => {\n const over = value > max;\n return (\n <div\n ref={ref}\n aria-live=\"polite\"\n className={cn(\n 'text-right text-xs',\n over ? 'text-destructive' : 'text-muted-foreground',\n className,\n )}\n {...props}\n >\n {value}{showMax && ` / ${max}`}\n </div>\n );\n },\n);\nCharacterCount.displayName = 'CharacterCount';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface InputAddonProps extends ComponentPropsWithoutRef<'div'> {\n /** Element rendered to the left of the input (e.g. \"https://\"). */\n leading?: ReactNode;\n /** Element rendered to the right of the input (e.g. \".com\"). */\n trailing?: ReactNode;\n /** The input element (TextInput, EmailInput, etc.). */\n children: ReactNode;\n}\n\n/**\n * Wrap any input with leading and/or trailing addon slots — visually\n * connected to the input border. Common for protocol prefixes, units,\n * suffixes (\"https://\", \".com\", \"kg\").\n */\nexport const InputAddon = forwardRef<HTMLDivElement, InputAddonProps>(\n ({ leading, trailing, children, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'inline-flex w-full items-stretch [&>*]:rounded-none',\n '[&>*:first-child]:rounded-l-md [&>*:last-child]:rounded-r-md',\n '[&>*:not(:first-child)]:-ml-px',\n className,\n )}\n {...props}\n >\n {leading && (\n <span className=\"inline-flex shrink-0 items-center border border-input bg-muted px-3 text-sm text-muted-foreground\">\n {leading}\n </span>\n )}\n {children}\n {trailing && (\n <span className=\"inline-flex shrink-0 items-center border border-input bg-muted px-3 text-sm text-muted-foreground\">\n {trailing}\n </span>\n )}\n </div>\n ),\n);\nInputAddon.displayName = 'InputAddon';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface InputGroupProps extends ComponentPropsWithoutRef<'div'> {\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Visually joins a row/column of inputs (TextInput, NumberInput, etc.)\n * — collapses inner radii so they read as one connected control. Mirror\n * of `actions/ButtonGroup`.\n */\nexport const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(\n ({ orientation = 'horizontal', className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'inline-flex w-full',\n orientation === 'horizontal' ? 'flex-row' : 'flex-col',\n orientation === 'horizontal'\n ? '[&>*]:rounded-none [&>*:first-child]:rounded-l-md [&>*:last-child]:rounded-r-md [&>*:not(:first-child)]:-ml-px'\n : '[&>*]:rounded-none [&>*:first-child]:rounded-t-md [&>*:last-child]:rounded-b-md [&>*:not(:first-child)]:-mt-px',\n className,\n )}\n {...props}\n />\n ),\n);\nInputGroup.displayName = 'InputGroup';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useId } from '../../hooks';\nimport { Label } from '../label/Label';\n\nexport interface LabeledInputProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n label: ReactNode;\n /** The input element. Receives a generated `id` linked to the label. */\n children: React.ReactElement<{ id?: string }>;\n /** Optional inline-end label (e.g. \"Optional\"). */\n trailing?: ReactNode;\n}\n\n/**\n * Lighter alternative to `FormField` — just `Label` + control, no helper /\n * error / context wiring. Good for compact inline forms.\n */\nexport const LabeledInput = forwardRef<HTMLDivElement, LabeledInputProps>(\n ({ label, children, trailing, className, ...props }, ref) => {\n const generated = useId();\n const id = children.props.id ?? generated;\n return (\n <div ref={ref} className={cn('flex flex-col gap-1.5', className)} {...props}>\n <div className=\"flex items-center justify-between\">\n <Label htmlFor={id}>{label}</Label>\n {trailing && <span className=\"text-xs text-muted-foreground\">{trailing}</span>}\n </div>\n {React.cloneElement(children, { id })}\n </div>\n );\n },\n);\nLabeledInput.displayName = 'LabeledInput';\n\nimport * as React from 'react';\n","import { forwardRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useId } from '../../hooks';\nimport { Radio, type RadioProps } from '../radio/Radio';\n\nexport interface ChoiceCardProps extends Omit<RadioProps, 'children' | 'size'> {\n label: ReactNode;\n description?: ReactNode;\n /** Optional icon rendered above the label. */\n icon?: ReactNode;\n /** Card size. Default `md`. */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst SIZE: Record<NonNullable<ChoiceCardProps['size']>, string> = {\n sm: 'p-3 text-xs',\n md: 'p-4 text-sm',\n lg: 'p-5 text-base',\n};\n\n/**\n * Radio styled as a clickable card with title + description + optional\n * icon. Common for plan/option pickers. Compose inside `RadioGroup` for\n * mutex selection.\n */\nexport const ChoiceCard = forwardRef<HTMLInputElement, ChoiceCardProps>(\n ({ label, description, icon, size = 'md', id, className, ...props }, ref) => {\n const generated = useId();\n const inputId = id ?? generated;\n return (\n <label\n htmlFor={inputId}\n className={cn(\n 'group relative block cursor-pointer rounded-lg border border-input bg-card text-card-foreground transition-colors',\n 'hover:border-border-strong has-[:checked]:border-primary has-[:checked]:bg-primary-soft/30',\n 'has-[:focus-visible]:ring-2 has-[:focus-visible]:ring-ring',\n SIZE[size],\n className,\n )}\n >\n <Radio ref={ref} id={inputId} className=\"absolute right-3 top-3\" {...props} />\n <div className=\"flex items-start gap-3 pr-7\">\n {icon && <span className=\"text-muted-foreground\">{icon}</span>}\n <div className=\"min-w-0 flex-1\">\n <div className=\"font-medium text-foreground\">{label}</div>\n {description && <div className=\"mt-0.5 text-muted-foreground\">{description}</div>}\n </div>\n </div>\n </label>\n );\n },\n);\nChoiceCard.displayName = 'ChoiceCard';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface PasswordStrengthProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** The password to measure. */\n value: string;\n /** Override the score (0–4). When set, internal scoring is bypassed. */\n score?: 0 | 1 | 2 | 3 | 4;\n /** Hide the textual label under the bar. */\n hideLabel?: boolean;\n}\n\nconst LABELS = ['Too weak', 'Weak', 'Fair', 'Strong', 'Excellent'];\nconst TONE = ['bg-destructive', 'bg-destructive', 'bg-warning', 'bg-success', 'bg-success'];\n\nfunction scorePassword(pw: string): 0 | 1 | 2 | 3 | 4 {\n let score = 0;\n if (pw.length >= 8) score++;\n if (pw.length >= 12) score++;\n if (/[a-z]/.test(pw) && /[A-Z]/.test(pw)) score++;\n if (/\\d/.test(pw)) score++;\n if (/[^A-Za-z0-9]/.test(pw)) score++;\n return Math.min(4, score) as 0 | 1 | 2 | 3 | 4;\n}\n\n/**\n * Strength meter for password fields. Naive rule-based scoring 0–4. Pass\n * `score` to override (e.g. drive from `zxcvbn`).\n */\nexport const PasswordStrength = forwardRef<HTMLDivElement, PasswordStrengthProps>(\n ({ value, score, hideLabel, className, ...props }, ref) => {\n const s: 0 | 1 | 2 | 3 | 4 = score ?? (value.length === 0 ? 0 : scorePassword(value));\n const label = LABELS[s] ?? '';\n const tone = TONE[s] ?? 'bg-destructive';\n return (\n <div ref={ref} className={cn('flex flex-col gap-1', className)} {...props}>\n <div className=\"flex gap-1\" aria-hidden=\"true\">\n {[0, 1, 2, 3].map((i) => (\n <div\n key={i}\n className={cn(\n 'h-1 flex-1 rounded-full bg-muted transition-colors',\n i < s && tone,\n )}\n />\n ))}\n </div>\n {!hideLabel && value && (\n <div className=\"text-xs text-muted-foreground\">{label}</div>\n )}\n </div>\n );\n },\n);\nPasswordStrength.displayName = 'PasswordStrength';\n","import { forwardRef, useImperativeHandle, useRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { Upload } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\nexport interface FilePickerProps extends Omit<ComponentPropsWithoutRef<'input'>, 'type' | 'value' | 'onChange' | 'size'> {\n /** Button label. Default `\"Choose file\"`. */\n label?: ReactNode;\n /** Fires with the chosen FileList when files are picked. */\n onFilesChange?: (files: FileList | null) => void;\n /** Filename(s) preview rendered next to the button. Pass `null` to hide. */\n preview?: ReactNode;\n /** Visual size of the button. Default `md`. */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst SIZE: Record<NonNullable<FilePickerProps['size']>, string> = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-4 text-sm',\n lg: 'h-12 px-6 text-base',\n};\n\n/**\n * Basic file picker — styled trigger button + visually-hidden native\n * `<input type=\"file\">`. For drag-drop / preview / progress, use the L5\n * `Dropzone` organism (planned).\n */\nexport const FilePicker = forwardRef<HTMLInputElement, FilePickerProps>(\n ({ label = 'Choose file', onFilesChange, preview, size = 'md', className, disabled, ...props }, ref) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle(ref, () => inputRef.current as HTMLInputElement);\n return (\n <div className={cn('inline-flex items-center gap-3', className)}>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => inputRef.current?.click()}\n className={cn(\n 'inline-flex items-center gap-2 rounded-md border border-input bg-background font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n SIZE[size],\n )}\n >\n <Icon icon={Upload} size={16} />\n {label}\n </button>\n <input\n ref={inputRef}\n type=\"file\"\n disabled={disabled}\n className=\"sr-only\"\n onChange={(e) => onFilesChange?.(e.target.files)}\n {...props}\n />\n {preview && <span className=\"truncate text-sm text-muted-foreground\">{preview}</span>}\n </div>\n );\n },\n);\nFilePicker.displayName = 'FilePicker';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const listboxVariants = tv({\n base: 'flex max-h-72 flex-col gap-0.5 overflow-y-auto rounded-md border border-border bg-popover p-1 text-sm text-popover-foreground shadow-md outline-none',\n});\n\nexport const listboxItemVariants = tv({\n base: 'relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none',\n variants: {\n state: {\n default: 'text-popover-foreground',\n active: 'bg-muted text-foreground',\n selected: 'bg-primary-soft text-primary-soft-foreground',\n disabled: 'pointer-events-none opacity-50',\n },\n },\n defaultVariants: { state: 'default' },\n});\n\nexport const listboxGroupLabelVariants = tv({\n base: 'px-2 py-1.5 text-xs font-semibold text-muted-foreground',\n});\n\nexport const listboxSeparatorVariants = tv({\n base: '-mx-1 my-1 h-px bg-border',\n});\n\nexport const listboxEmptyVariants = tv({\n base: 'px-2 py-6 text-center text-sm text-muted-foreground',\n});\n\nexport type ListboxVariants = VariantProps<typeof listboxVariants>;\nexport type ListboxItemVariants = VariantProps<typeof listboxItemVariants>;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { Check } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n listboxEmptyVariants,\n listboxGroupLabelVariants,\n listboxItemVariants,\n listboxSeparatorVariants,\n listboxVariants,\n} from './Listbox.variants';\n\ninterface ItemEntry {\n id: string;\n value: string;\n disabled: boolean;\n ref: HTMLDivElement | null;\n}\n\ninterface ListboxContextValue {\n multiple: boolean;\n values: string[];\n activeId: string | null;\n onItemSelect: (value: string) => void;\n registerItem: (entry: ItemEntry) => void;\n unregisterItem: (id: string) => void;\n setActiveId: (id: string | null) => void;\n}\n\nconst ListboxContext = createContext<ListboxContextValue | null>(null);\n\nfunction useListboxContext() {\n const ctx = useContext(ListboxContext);\n if (!ctx) throw new Error('Listbox.Item / Group / Separator must be used inside <Listbox>');\n return ctx;\n}\n\ntype SingleProps = {\n multiple?: false;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n};\ntype MultiProps = {\n multiple: true;\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n};\n\nexport type ListboxProps = HTMLAttributes<HTMLDivElement> &\n (SingleProps | MultiProps) & {\n /** Disable all items. */\n disabled?: boolean;\n /** Optional class to override container styles. */\n className?: string;\n children: ReactNode;\n };\n\nexport const Listbox = forwardRef<HTMLDivElement, ListboxProps>(function Listbox(\n props,\n ref,\n) {\n const {\n multiple = false,\n value,\n defaultValue,\n onValueChange,\n disabled,\n className,\n children,\n onKeyDown,\n ...rest\n } = props as ListboxProps & {\n multiple?: boolean;\n value?: string | string[];\n defaultValue?: string | string[];\n onValueChange?: ((v: string) => void) | ((v: string[]) => void);\n };\n\n const initial: string | string[] =\n defaultValue ?? (multiple ? [] : '');\n const [current, setCurrent] = useControlled<string | string[]>({\n controlled: value,\n default: initial,\n onChange: onValueChange as (v: string | string[]) => void,\n });\n const values = useMemo(\n () => (Array.isArray(current) ? current : current ? [current] : []),\n [current],\n );\n\n const items = useRef<ItemEntry[]>([]);\n const [activeId, setActiveId] = useState<string | null>(null);\n\n const registerItem = useCallback((entry: ItemEntry) => {\n if (!items.current.some((i) => i.id === entry.id)) items.current.push(entry);\n }, []);\n const updateItem = useCallback((entry: ItemEntry) => {\n const idx = items.current.findIndex((i) => i.id === entry.id);\n if (idx >= 0) items.current[idx] = entry;\n }, []);\n const unregisterItem = useCallback((id: string) => {\n items.current = items.current.filter((i) => i.id !== id);\n }, []);\n\n const onItemSelect = useCallback(\n (next: string) => {\n if (multiple) {\n const cur = Array.isArray(current) ? current : [];\n const has = cur.includes(next);\n setCurrent(has ? cur.filter((v) => v !== next) : [...cur, next]);\n } else {\n setCurrent(next);\n }\n },\n [multiple, current, setCurrent],\n );\n\n // Initialise active descendant — first selected, else first enabled.\n useEffect(() => {\n if (activeId) return;\n const firstSelected = items.current.find(\n (i) => !i.disabled && values.includes(i.value),\n );\n const firstEnabled = items.current.find((i) => !i.disabled);\n setActiveId((firstSelected ?? firstEnabled)?.id ?? null);\n // run once after mount when items have registered\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const moveActive = useCallback(\n (direction: 1 | -1, jump = 1) => {\n const list = items.current.filter((i) => !i.disabled);\n if (list.length === 0) return;\n const currentIdx = list.findIndex((i) => i.id === activeId);\n let nextIdx = currentIdx + direction * jump;\n if (currentIdx === -1) nextIdx = direction === 1 ? 0 : list.length - 1;\n if (nextIdx < 0) nextIdx = 0;\n if (nextIdx >= list.length) nextIdx = list.length - 1;\n const nextEntry = list[nextIdx];\n if (nextEntry) setActiveId(nextEntry.id);\n },\n [activeId],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || disabled) return;\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n moveActive(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n moveActive(-1);\n break;\n case 'Home':\n event.preventDefault();\n moveActive(-1, items.current.length);\n break;\n case 'End':\n event.preventDefault();\n moveActive(1, items.current.length);\n break;\n case 'PageDown':\n event.preventDefault();\n moveActive(1, 10);\n break;\n case 'PageUp':\n event.preventDefault();\n moveActive(-1, 10);\n break;\n case 'Enter':\n case ' ': {\n if (!activeId) return;\n const entry = items.current.find((i) => i.id === activeId);\n if (!entry || entry.disabled) return;\n event.preventDefault();\n onItemSelect(entry.value);\n break;\n }\n }\n },\n [activeId, disabled, moveActive, onItemSelect, onKeyDown],\n );\n\n const ctx = useMemo<ListboxContextValue>(\n () => ({\n multiple,\n values,\n activeId,\n onItemSelect,\n registerItem: (e) => {\n const existing = items.current.find((i) => i.id === e.id);\n if (existing) updateItem(e);\n else registerItem(e);\n },\n unregisterItem,\n setActiveId,\n }),\n [multiple, values, activeId, onItemSelect, registerItem, unregisterItem, updateItem],\n );\n\n return (\n <ListboxContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"listbox\"\n tabIndex={disabled ? -1 : 0}\n aria-multiselectable={multiple || undefined}\n aria-activedescendant={activeId ?? undefined}\n aria-disabled={disabled || undefined}\n onKeyDown={handleKeyDown}\n className={cn(listboxVariants(), className)}\n {...rest}\n >\n {children}\n </div>\n </ListboxContext.Provider>\n );\n});\n\nexport interface ListboxItemProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n disabled?: boolean;\n children: ReactNode;\n}\n\nexport const ListboxItem = forwardRef<HTMLDivElement, ListboxItemProps>(function ListboxItem(\n { value, disabled = false, className, children, onClick, onPointerEnter, ...rest },\n forwardedRef,\n) {\n const ctx = useListboxContext();\n const id = useId();\n const ref = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n ctx.registerItem({ id, value, disabled, ref: ref.current });\n return () => ctx.unregisterItem(id);\n }, [ctx, id, value, disabled]);\n\n const isSelected = ctx.values.includes(value);\n const isActive = ctx.activeId === id;\n const state = disabled\n ? 'disabled'\n : isSelected\n ? 'selected'\n : isActive\n ? 'active'\n : 'default';\n\n const setRefs = (node: HTMLDivElement | null) => {\n ref.current = node;\n if (typeof forwardedRef === 'function') forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n };\n\n return (\n <div\n ref={setRefs}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={disabled || undefined}\n data-active={isActive ? '' : undefined}\n data-selected={isSelected ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n ctx.onItemSelect(value);\n }}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n if (!disabled) ctx.setActiveId(id);\n }}\n className={cn(listboxItemVariants({ state }), className)}\n {...rest}\n >\n <span className=\"flex-1\">{children}</span>\n {ctx.multiple && isSelected && <Check className=\"h-4 w-4\" />}\n {!ctx.multiple && isSelected && <Check className=\"h-4 w-4 opacity-80\" />}\n </div>\n );\n});\n\nexport interface ListboxGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Optional group heading. */\n label?: ReactNode;\n children: ReactNode;\n}\n\nexport function ListboxGroup({ label, children, className, ...rest }: ListboxGroupProps) {\n const labelId = useId();\n return (\n <div role=\"group\" aria-labelledby={label ? labelId : undefined} className={className} {...rest}>\n {label && (\n <div id={labelId} className={listboxGroupLabelVariants()}>\n {label}\n </div>\n )}\n {children}\n </div>\n );\n}\n\nexport function ListboxSeparator(props: HTMLAttributes<HTMLDivElement>) {\n return <div role=\"separator\" className={listboxSeparatorVariants()} {...props} />;\n}\n\nexport function ListboxEmpty({ children, className, ...rest }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div role=\"presentation\" className={cn(listboxEmptyVariants(), className)} {...rest}>\n {children}\n </div>\n );\n}\n\ntype ListboxComponent = typeof Listbox & {\n Item: typeof ListboxItem;\n Group: typeof ListboxGroup;\n Separator: typeof ListboxSeparator;\n Empty: typeof ListboxEmpty;\n};\n\n(Listbox as ListboxComponent).Item = ListboxItem;\n(Listbox as ListboxComponent).Group = ListboxGroup;\n(Listbox as ListboxComponent).Separator = ListboxSeparator;\n(Listbox as ListboxComponent).Empty = ListboxEmpty;\n\nexport default Listbox as ListboxComponent;\n","import { tv, type VariantProps } from '../../utils';\n\nexport const selectTriggerVariants = tv({\n base: 'flex w-full items-center justify-between gap-2 rounded-md border bg-background text-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60 data-[state=open]:border-border-strong',\n variants: {\n size: {\n sm: 'h-8 px-2.5 text-sm',\n md: 'h-10 px-3 text-sm',\n lg: 'h-12 px-4 text-base',\n },\n state: {\n default: 'border-input hover:border-border-strong',\n invalid: 'border-destructive focus-visible:ring-destructive',\n },\n },\n defaultVariants: {\n size: 'md',\n state: 'default',\n },\n});\n\nexport type SelectTriggerVariants = VariantProps<typeof selectTriggerVariants>;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { ChevronDown } from 'lucide-react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { AnchoredPositioner, DismissableLayer, Portal } from '../../primitives';\nimport {\n Listbox,\n ListboxItem,\n ListboxGroup,\n ListboxSeparator,\n ListboxEmpty,\n type ListboxItemProps,\n} from '../listbox';\nimport { selectTriggerVariants, type SelectTriggerVariants } from './Select.variants';\n\ninterface SelectContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n value: string;\n onSelect: (value: string) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n labels: Record<string, ReactNode>;\n registerLabel: (value: string, label: ReactNode) => void;\n unregisterLabel: (value: string) => void;\n disabled: boolean;\n name?: string;\n invalid?: boolean;\n}\n\nconst SelectContext = createContext<SelectContextValue | null>(null);\n\nfunction useSelectContext() {\n const ctx = useContext(SelectContext);\n if (!ctx) throw new Error('Select.* must be used inside <Select>');\n return ctx;\n}\n\nexport interface SelectProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n disabled?: boolean;\n /** Hidden form-input name. If set, value ships with native form submission. */\n name?: string;\n /** Style trigger as invalid (red border, error ring). */\n invalid?: boolean;\n /** Default open state (uncontrolled). */\n defaultOpen?: boolean;\n /** Controlled open state. */\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: ReactNode;\n}\n\nexport function Select({\n value,\n defaultValue,\n onValueChange,\n disabled = false,\n name,\n invalid,\n defaultOpen = false,\n open: openProp,\n onOpenChange,\n children,\n}: SelectProps) {\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const [valueState, setValueState] = useControlled({\n controlled: value,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const [labels, setLabels] = useState<Record<string, ReactNode>>({});\n\n const registerLabel = useCallback((v: string, label: ReactNode) => {\n setLabels((prev) => (prev[v] === label ? prev : { ...prev, [v]: label }));\n }, []);\n const unregisterLabel = useCallback((v: string) => {\n setLabels((prev) => {\n if (!(v in prev)) return prev;\n const next = { ...prev };\n delete next[v];\n return next;\n });\n }, []);\n\n const onSelect = useCallback(\n (next: string) => {\n setValueState(next);\n setOpenState(false);\n // Return focus to trigger\n requestAnimationFrame(() => triggerRef.current?.focus());\n },\n [setValueState, setOpenState],\n );\n\n const ctx = useMemo<SelectContextValue>(\n () => ({\n open: openState,\n setOpen: setOpenState,\n value: valueState,\n onSelect,\n triggerRef,\n labels,\n registerLabel,\n unregisterLabel,\n disabled,\n name,\n invalid,\n }),\n [\n openState,\n setOpenState,\n valueState,\n onSelect,\n labels,\n registerLabel,\n unregisterLabel,\n disabled,\n name,\n invalid,\n ],\n );\n\n return <SelectContext.Provider value={ctx}>{children}</SelectContext.Provider>;\n}\n\nexport interface SelectTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>,\n SelectTriggerVariants {\n children?: ReactNode;\n}\n\nexport const SelectTrigger = forwardRef<HTMLButtonElement, SelectTriggerProps>(\n function SelectTrigger({ size, state, className, onClick, children, ...rest }, forwardedRef) {\n const ctx = useSelectContext();\n const triggerState = state ?? (ctx.invalid ? 'invalid' : 'default');\n return (\n <button\n ref={composeRefs(forwardedRef, ctx.triggerRef)}\n type=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n disabled={ctx.disabled}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(!ctx.open);\n }}\n className={cn(selectTriggerVariants({ size, state: triggerState }), className)}\n {...rest}\n >\n {children ?? <SelectValue />}\n <ChevronDown\n className={cn(\n 'h-4 w-4 text-muted-foreground transition-transform',\n ctx.open && 'rotate-180',\n )}\n />\n </button>\n );\n },\n);\n\nexport interface SelectValueProps {\n /** Shown when nothing is selected. */\n placeholder?: ReactNode;\n /** Optional explicit override (e.g., custom rendering). */\n children?: ReactNode;\n}\n\nexport function SelectValue({ placeholder, children }: SelectValueProps) {\n const ctx = useSelectContext();\n if (children) return <span className=\"truncate\">{children}</span>;\n const label = ctx.value ? (ctx.labels[ctx.value] ?? ctx.value) : null;\n return (\n <span className={cn('truncate', !label && 'text-subtle-foreground')}>\n {label ?? placeholder}\n </span>\n );\n}\n\nexport interface SelectContentProps {\n className?: string;\n /** Placement of the panel relative to trigger. Default `bottom`. */\n placement?: React.ComponentProps<typeof AnchoredPositioner>['placement'];\n /** Distance from trigger. Default 6. */\n offset?: number;\n children: ReactNode;\n}\n\nexport function SelectContent({\n className,\n placement = 'bottom',\n offset = 6,\n children,\n}: SelectContentProps) {\n const ctx = useSelectContext();\n if (!ctx.open) return null;\n return (\n <Portal>\n <AnchoredPositioner anchor={ctx.triggerRef.current} placement={placement} offset={offset}>\n <FocusScope asChild trapped loop>\n <DismissableLayer\n onEscape={() => ctx.setOpen(false)}\n onOutsidePointerDown={(e) => {\n if (ctx.triggerRef.current?.contains(e.target as Node)) return;\n ctx.setOpen(false);\n }}\n >\n <Listbox\n value={ctx.value}\n onValueChange={(v) => ctx.onSelect(v as string)}\n className={cn('min-w-[var(--radix-anchor-width)]', className)}\n style={\n ctx.triggerRef.current\n ? { minWidth: ctx.triggerRef.current.offsetWidth }\n : undefined\n }\n >\n {children}\n </Listbox>\n </DismissableLayer>\n </FocusScope>\n </AnchoredPositioner>\n {ctx.name && <input type=\"hidden\" name={ctx.name} value={ctx.value} />}\n </Portal>\n );\n}\n\nexport type SelectItemProps = ListboxItemProps;\n\nexport const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(function SelectItem(\n props,\n ref,\n) {\n const ctx = useSelectContext();\n useEffect(() => {\n ctx.registerLabel(props.value, props.children);\n return () => ctx.unregisterLabel(props.value);\n }, [ctx, props.value, props.children]);\n return <ListboxItem ref={ref} {...props} />;\n});\n\ntype SelectComponent = typeof Select & {\n Trigger: typeof SelectTrigger;\n Value: typeof SelectValue;\n Content: typeof SelectContent;\n Item: typeof SelectItem;\n Group: typeof ListboxGroup;\n Separator: typeof ListboxSeparator;\n Empty: typeof ListboxEmpty;\n};\n\n(Select as SelectComponent).Trigger = SelectTrigger;\n(Select as SelectComponent).Value = SelectValue;\n(Select as SelectComponent).Content = SelectContent;\n(Select as SelectComponent).Item = SelectItem;\n(Select as SelectComponent).Group = ListboxGroup;\n(Select as SelectComponent).Separator = ListboxSeparator;\n(Select as SelectComponent).Empty = ListboxEmpty;\n\nexport default Select as SelectComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { ChevronDown, X } from 'lucide-react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { AnchoredPositioner, DismissableLayer, Portal } from '../../primitives';\nimport {\n Listbox,\n ListboxItem,\n ListboxGroup,\n ListboxSeparator,\n ListboxEmpty,\n type ListboxItemProps,\n} from '../listbox';\nimport { selectTriggerVariants, type SelectTriggerVariants } from '../select/Select.variants';\n\ninterface MultiSelectContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n values: string[];\n setValues: (values: string[]) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n labels: Record<string, ReactNode>;\n registerLabel: (value: string, label: ReactNode) => void;\n unregisterLabel: (value: string) => void;\n disabled: boolean;\n name?: string;\n invalid?: boolean;\n}\n\nconst MultiSelectContext = createContext<MultiSelectContextValue | null>(null);\n\nfunction useMultiSelectContext() {\n const ctx = useContext(MultiSelectContext);\n if (!ctx) throw new Error('MultiSelect.* must be used inside <MultiSelect>');\n return ctx;\n}\n\nexport interface MultiSelectProps {\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n disabled?: boolean;\n name?: string;\n invalid?: boolean;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: ReactNode;\n}\n\nexport function MultiSelect({\n value,\n defaultValue,\n onValueChange,\n disabled = false,\n name,\n invalid,\n defaultOpen = false,\n open: openProp,\n onOpenChange,\n children,\n}: MultiSelectProps) {\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const [valuesState, setValuesState] = useControlled<string[]>({\n controlled: value,\n default: defaultValue ?? [],\n onChange: onValueChange,\n });\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const [labels, setLabels] = useState<Record<string, ReactNode>>({});\n\n const registerLabel = useCallback((v: string, label: ReactNode) => {\n setLabels((prev) => (prev[v] === label ? prev : { ...prev, [v]: label }));\n }, []);\n const unregisterLabel = useCallback((v: string) => {\n setLabels((prev) => {\n if (!(v in prev)) return prev;\n const next = { ...prev };\n delete next[v];\n return next;\n });\n }, []);\n\n const ctx = useMemo<MultiSelectContextValue>(\n () => ({\n open: openState,\n setOpen: setOpenState,\n values: valuesState,\n setValues: setValuesState,\n triggerRef,\n labels,\n registerLabel,\n unregisterLabel,\n disabled,\n name,\n invalid,\n }),\n [\n openState,\n setOpenState,\n valuesState,\n setValuesState,\n labels,\n registerLabel,\n unregisterLabel,\n disabled,\n name,\n invalid,\n ],\n );\n\n return <MultiSelectContext.Provider value={ctx}>{children}</MultiSelectContext.Provider>;\n}\n\nexport interface MultiSelectTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>,\n SelectTriggerVariants {\n children?: ReactNode;\n}\n\nexport const MultiSelectTrigger = forwardRef<HTMLButtonElement, MultiSelectTriggerProps>(\n function MultiSelectTrigger(\n { size, state, className, onClick, onKeyDown, children, ...rest },\n forwardedRef,\n ) {\n const ctx = useMultiSelectContext();\n const triggerState = state ?? (ctx.invalid ? 'invalid' : 'default');\n return (\n <button\n ref={composeRefs(forwardedRef, ctx.triggerRef)}\n type=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n disabled={ctx.disabled}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(!ctx.open);\n }}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === 'Backspace' && ctx.values.length > 0) {\n ctx.setValues(ctx.values.slice(0, -1));\n }\n }}\n className={cn(\n selectTriggerVariants({ size, state: triggerState }),\n 'h-auto min-h-10 flex-wrap py-1.5',\n className,\n )}\n {...rest}\n >\n {children ?? <MultiSelectTags />}\n <ChevronDown\n className={cn(\n 'h-4 w-4 shrink-0 self-center text-muted-foreground transition-transform',\n ctx.open && 'rotate-180',\n )}\n />\n </button>\n );\n },\n);\n\nexport interface MultiSelectTagsProps {\n /** Shown when no values selected. */\n placeholder?: ReactNode;\n}\n\nexport function MultiSelectTags({ placeholder }: MultiSelectTagsProps) {\n const ctx = useMultiSelectContext();\n if (ctx.values.length === 0) {\n return <span className=\"text-subtle-foreground\">{placeholder}</span>;\n }\n return (\n <span className=\"flex flex-1 flex-wrap items-center gap-1\">\n {ctx.values.map((v) => (\n <span\n key={v}\n className=\"inline-flex items-center gap-1 rounded-sm bg-muted px-1.5 py-0.5 text-xs\"\n >\n {ctx.labels[v] ?? v}\n {!ctx.disabled && (\n <span\n role=\"button\"\n tabIndex={-1}\n aria-label={`Remove ${typeof ctx.labels[v] === 'string' ? ctx.labels[v] : v}`}\n onClick={(e) => {\n e.stopPropagation();\n ctx.setValues(ctx.values.filter((x) => x !== v));\n }}\n onPointerDown={(e) => e.stopPropagation()}\n className=\"cursor-pointer rounded-sm p-0.5 hover:bg-border\"\n >\n <X className=\"h-3 w-3\" />\n </span>\n )}\n </span>\n ))}\n </span>\n );\n}\n\nexport interface MultiSelectContentProps {\n className?: string;\n placement?: React.ComponentProps<typeof AnchoredPositioner>['placement'];\n offset?: number;\n children: ReactNode;\n}\n\nexport function MultiSelectContent({\n className,\n placement = 'bottom',\n offset = 6,\n children,\n}: MultiSelectContentProps) {\n const ctx = useMultiSelectContext();\n if (!ctx.open) return null;\n return (\n <Portal>\n <AnchoredPositioner anchor={ctx.triggerRef.current} placement={placement} offset={offset}>\n <FocusScope asChild trapped loop>\n <DismissableLayer\n onEscape={() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }}\n onOutsidePointerDown={(e) => {\n if (ctx.triggerRef.current?.contains(e.target as Node)) return;\n ctx.setOpen(false);\n }}\n >\n <Listbox\n multiple\n value={ctx.values}\n onValueChange={(v) => ctx.setValues(v as string[])}\n className={cn(className)}\n style={\n ctx.triggerRef.current\n ? { minWidth: ctx.triggerRef.current.offsetWidth }\n : undefined\n }\n >\n {children}\n </Listbox>\n </DismissableLayer>\n </FocusScope>\n </AnchoredPositioner>\n {ctx.name &&\n ctx.values.map((v) => <input key={v} type=\"hidden\" name={ctx.name} value={v} />)}\n </Portal>\n );\n}\n\nexport type MultiSelectItemProps = ListboxItemProps;\n\nexport const MultiSelectItem = forwardRef<HTMLDivElement, MultiSelectItemProps>(\n function MultiSelectItem(props, ref) {\n const ctx = useMultiSelectContext();\n useEffect(() => {\n ctx.registerLabel(props.value, props.children);\n return () => ctx.unregisterLabel(props.value);\n }, [ctx, props.value, props.children]);\n return <ListboxItem ref={ref} {...props} />;\n },\n);\n\ntype MultiSelectComponent = typeof MultiSelect & {\n Trigger: typeof MultiSelectTrigger;\n Tags: typeof MultiSelectTags;\n Content: typeof MultiSelectContent;\n Item: typeof MultiSelectItem;\n Group: typeof ListboxGroup;\n Separator: typeof ListboxSeparator;\n Empty: typeof ListboxEmpty;\n};\n\n(MultiSelect as MultiSelectComponent).Trigger = MultiSelectTrigger;\n(MultiSelect as MultiSelectComponent).Tags = MultiSelectTags;\n(MultiSelect as MultiSelectComponent).Content = MultiSelectContent;\n(MultiSelect as MultiSelectComponent).Item = MultiSelectItem;\n(MultiSelect as MultiSelectComponent).Group = ListboxGroup;\n(MultiSelect as MultiSelectComponent).Separator = ListboxSeparator;\n(MultiSelect as MultiSelectComponent).Empty = ListboxEmpty;\n\nexport default MultiSelect as MultiSelectComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { Check } from 'lucide-react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { AnchoredPositioner, DismissableLayer, Portal } from '../../primitives';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\nimport {\n listboxVariants,\n listboxItemVariants,\n listboxGroupLabelVariants,\n listboxSeparatorVariants,\n listboxEmptyVariants,\n} from '../listbox/Listbox.variants';\n\ninterface ComboboxItemEntry {\n id: string;\n value: string;\n disabled: boolean;\n label: ReactNode;\n}\n\ninterface ComboboxContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n value: string;\n setValue: (value: string) => void;\n inputValue: string;\n setInputValue: (input: string) => void;\n activeId: string | null;\n setActiveId: (id: string | null) => void;\n registerItem: (entry: ComboboxItemEntry) => void;\n unregisterItem: (id: string) => void;\n itemsRef: React.MutableRefObject<ComboboxItemEntry[]>;\n inputRef: React.MutableRefObject<HTMLInputElement | null>;\n listboxId: string;\n disabled: boolean;\n invalid?: boolean;\n selectItem: (entry: ComboboxItemEntry, options?: { close?: boolean }) => void;\n}\n\nconst ComboboxContext = createContext<ComboboxContextValue | null>(null);\n\nfunction useComboboxContext() {\n const ctx = useContext(ComboboxContext);\n if (!ctx) throw new Error('Combobox.* must be used inside <Combobox>');\n return ctx;\n}\n\nexport interface ComboboxProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n inputValue?: string;\n defaultInputValue?: string;\n onInputChange?: (input: string) => void;\n disabled?: boolean;\n invalid?: boolean;\n name?: string;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** When the user picks an item, set the input value to its label. Default true. */\n fillInputOnSelect?: boolean;\n children: ReactNode;\n}\n\nexport function Combobox({\n value,\n defaultValue,\n onValueChange,\n inputValue,\n defaultInputValue,\n onInputChange,\n disabled = false,\n invalid,\n name,\n defaultOpen = false,\n open: openProp,\n onOpenChange,\n fillInputOnSelect = true,\n children,\n}: ComboboxProps) {\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const [valueState, setValueState] = useControlled({\n controlled: value,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const [inputState, setInputState] = useControlled({\n controlled: inputValue,\n default: defaultInputValue ?? '',\n onChange: onInputChange,\n });\n\n const itemsRef = useRef<ComboboxItemEntry[]>([]);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [activeId, setActiveId] = useState<string | null>(null);\n const listboxId = useId();\n\n const registerItem = useCallback((entry: ComboboxItemEntry) => {\n const idx = itemsRef.current.findIndex((i) => i.id === entry.id);\n if (idx >= 0) itemsRef.current[idx] = entry;\n else itemsRef.current.push(entry);\n }, []);\n const unregisterItem = useCallback((id: string) => {\n itemsRef.current = itemsRef.current.filter((i) => i.id !== id);\n }, []);\n\n const selectItem = useCallback(\n (entry: ComboboxItemEntry, opts?: { close?: boolean }) => {\n setValueState(entry.value);\n if (fillInputOnSelect) {\n const text = typeof entry.label === 'string' ? entry.label : entry.value;\n setInputState(text);\n }\n if (opts?.close ?? true) setOpenState(false);\n },\n [setValueState, setInputState, setOpenState, fillInputOnSelect],\n );\n\n const ctx = useMemo<ComboboxContextValue>(\n () => ({\n open: openState,\n setOpen: setOpenState,\n value: valueState,\n setValue: setValueState,\n inputValue: inputState,\n setInputValue: setInputState,\n activeId,\n setActiveId,\n registerItem,\n unregisterItem,\n itemsRef,\n inputRef,\n listboxId,\n disabled,\n invalid,\n selectItem,\n }),\n [\n openState,\n setOpenState,\n valueState,\n setValueState,\n inputState,\n setInputState,\n activeId,\n registerItem,\n unregisterItem,\n listboxId,\n disabled,\n invalid,\n selectItem,\n ],\n );\n\n return (\n <ComboboxContext.Provider value={ctx}>\n {children}\n {name && <input type=\"hidden\" name={name} value={valueState} />}\n </ComboboxContext.Provider>\n );\n}\n\nexport interface ComboboxInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'size'>,\n InputBaseVariants {}\n\nexport const ComboboxInput = forwardRef<HTMLInputElement, ComboboxInputProps>(\n function ComboboxInput(\n { className, size, state, onKeyDown, onFocus, ...rest },\n forwardedRef,\n ) {\n const ctx = useComboboxContext();\n const inputState = state ?? (ctx.invalid ? 'invalid' : 'default');\n\n const moveActive = useCallback(\n (direction: 1 | -1) => {\n const list = ctx.itemsRef.current.filter((i) => !i.disabled);\n if (list.length === 0) return;\n const idx = list.findIndex((i) => i.id === ctx.activeId);\n let nextIdx = idx + direction;\n if (idx === -1) nextIdx = direction === 1 ? 0 : list.length - 1;\n if (nextIdx < 0) nextIdx = list.length - 1;\n if (nextIdx >= list.length) nextIdx = 0;\n const next = list[nextIdx];\n if (next) ctx.setActiveId(next.id);\n },\n [ctx],\n );\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || ctx.disabled) return;\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!ctx.open) ctx.setOpen(true);\n else moveActive(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (!ctx.open) ctx.setOpen(true);\n else moveActive(-1);\n break;\n case 'Home':\n if (ctx.open) {\n e.preventDefault();\n const first = ctx.itemsRef.current.find((i) => !i.disabled);\n if (first) ctx.setActiveId(first.id);\n }\n break;\n case 'End':\n if (ctx.open) {\n e.preventDefault();\n const list = ctx.itemsRef.current.filter((i) => !i.disabled);\n const last = list[list.length - 1];\n if (last) ctx.setActiveId(last.id);\n }\n break;\n case 'Enter': {\n if (!ctx.open || !ctx.activeId) return;\n const entry = ctx.itemsRef.current.find((i) => i.id === ctx.activeId);\n if (!entry || entry.disabled) return;\n e.preventDefault();\n ctx.selectItem(entry);\n break;\n }\n case 'Escape':\n if (ctx.open) {\n e.preventDefault();\n ctx.setOpen(false);\n } else if (ctx.inputValue) {\n e.preventDefault();\n ctx.setInputValue('');\n ctx.setValue('');\n }\n break;\n }\n };\n\n return (\n <input\n ref={composeRefs(forwardedRef, ctx.inputRef)}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={ctx.open}\n aria-controls={ctx.listboxId}\n aria-activedescendant={ctx.activeId ?? undefined}\n aria-autocomplete=\"list\"\n aria-disabled={ctx.disabled || undefined}\n disabled={ctx.disabled}\n value={ctx.inputValue}\n onChange={(e) => {\n ctx.setInputValue(e.target.value);\n if (!ctx.open) ctx.setOpen(true);\n // Clear active when input changes — re-init on next render of items.\n ctx.setActiveId(null);\n }}\n onFocus={(e) => {\n onFocus?.(e);\n if (!ctx.open) ctx.setOpen(true);\n }}\n onKeyDown={handleKeyDown}\n className={cn(inputBaseVariants({ size, state: inputState }), className)}\n {...rest}\n />\n );\n },\n);\n\nexport interface ComboboxContentProps {\n className?: string;\n placement?: React.ComponentProps<typeof AnchoredPositioner>['placement'];\n offset?: number;\n children: ReactNode;\n}\n\nexport function ComboboxContent({\n className,\n placement = 'bottom',\n offset = 6,\n children,\n}: ComboboxContentProps) {\n const ctx = useComboboxContext();\n if (!ctx.open) return null;\n return (\n <Portal>\n <AnchoredPositioner anchor={ctx.inputRef.current} placement={placement} offset={offset}>\n <DismissableLayer\n onEscape={() => ctx.setOpen(false)}\n onOutsidePointerDown={(e) => {\n if (ctx.inputRef.current?.contains(e.target as Node)) return;\n ctx.setOpen(false);\n }}\n >\n <div\n id={ctx.listboxId}\n role=\"listbox\"\n className={cn(listboxVariants(), className)}\n style={\n ctx.inputRef.current\n ? { minWidth: ctx.inputRef.current.offsetWidth }\n : undefined\n }\n >\n {children}\n </div>\n </DismissableLayer>\n </AnchoredPositioner>\n </Portal>\n );\n}\n\nexport interface ComboboxItemProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n disabled?: boolean;\n children: ReactNode;\n}\n\nexport const ComboboxItem = forwardRef<HTMLDivElement, ComboboxItemProps>(function ComboboxItem(\n { value, disabled = false, className, children, onClick, onPointerEnter, ...rest },\n forwardedRef,\n) {\n const ctx = useComboboxContext();\n const id = useId();\n\n useEffect(() => {\n ctx.registerItem({ id, value, disabled, label: children });\n return () => ctx.unregisterItem(id);\n }, [ctx, id, value, disabled, children]);\n\n // Auto-set first matching item active on render if no active id.\n useEffect(() => {\n if (!ctx.activeId) {\n const list = ctx.itemsRef.current.filter((i) => !i.disabled);\n if (list[0]) ctx.setActiveId(list[0].id);\n }\n }, [ctx]);\n\n const isSelected = ctx.value === value;\n const isActive = ctx.activeId === id;\n const state = disabled\n ? 'disabled'\n : isSelected\n ? 'selected'\n : isActive\n ? 'active'\n : 'default';\n\n return (\n <div\n ref={forwardedRef}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={disabled || undefined}\n data-active={isActive ? '' : undefined}\n data-selected={isSelected ? '' : undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n ctx.selectItem({ id, value, disabled, label: children });\n }}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n if (!disabled) ctx.setActiveId(id);\n }}\n className={cn(listboxItemVariants({ state }), className)}\n {...rest}\n >\n <span className=\"flex-1\">{children}</span>\n {isSelected && <Check className=\"h-4 w-4 opacity-80\" />}\n </div>\n );\n});\n\nexport interface ComboboxGroupProps extends HTMLAttributes<HTMLDivElement> {\n label?: ReactNode;\n children: ReactNode;\n}\n\nexport function ComboboxGroup({ label, children, className, ...rest }: ComboboxGroupProps) {\n const labelId = useId();\n return (\n <div role=\"group\" aria-labelledby={label ? labelId : undefined} className={className} {...rest}>\n {label && (\n <div id={labelId} className={listboxGroupLabelVariants()}>\n {label}\n </div>\n )}\n {children}\n </div>\n );\n}\n\nexport function ComboboxSeparator(props: HTMLAttributes<HTMLDivElement>) {\n return <div role=\"separator\" className={listboxSeparatorVariants()} {...props} />;\n}\n\nexport function ComboboxEmpty({ children, className, ...rest }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div role=\"presentation\" className={cn(listboxEmptyVariants(), className)} {...rest}>\n {children}\n </div>\n );\n}\n\ntype ComboboxComponent = typeof Combobox & {\n Input: typeof ComboboxInput;\n Content: typeof ComboboxContent;\n Item: typeof ComboboxItem;\n Group: typeof ComboboxGroup;\n Separator: typeof ComboboxSeparator;\n Empty: typeof ComboboxEmpty;\n};\n\n(Combobox as ComboboxComponent).Input = ComboboxInput;\n(Combobox as ComboboxComponent).Content = ComboboxContent;\n(Combobox as ComboboxComponent).Item = ComboboxItem;\n(Combobox as ComboboxComponent).Group = ComboboxGroup;\n(Combobox as ComboboxComponent).Separator = ComboboxSeparator;\n(Combobox as ComboboxComponent).Empty = ComboboxEmpty;\n\nexport default Combobox as ComboboxComponent;\n","// Shared date helpers for Calendar / DatePicker / DateField / RangeCalendar.\n// Co-located in `forms/` so imports stay within-domain.\n//\n// Native Date only — no date-fns / luxon dependency. All helpers operate on\n// local time (no UTC math) since calendar UIs are inherently local.\n\nexport const WEEKDAYS_SHORT = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nexport const MONTHS_LONG = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nexport function startOfDay(d: Date): Date {\n const c = new Date(d);\n c.setHours(0, 0, 0, 0);\n return c;\n}\n\nexport function isSameDay(a: Date | null | undefined, b: Date | null | undefined): boolean {\n if (!a || !b) return false;\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isToday(d: Date): boolean {\n return isSameDay(d, new Date());\n}\n\nexport function addMonths(d: Date, n: number): Date {\n const c = new Date(d);\n c.setMonth(c.getMonth() + n);\n return c;\n}\n\nexport function addDays(d: Date, n: number): Date {\n const c = new Date(d);\n c.setDate(c.getDate() + n);\n return c;\n}\n\nexport function startOfMonth(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), 1);\n}\n\nexport function daysInMonth(year: number, month: number): number {\n // month is 0-indexed; setting day 0 of next month gives last day of month.\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Build the 6-week (42-cell) grid that the calendar UI renders.\n * Cells outside the target month carry `outOfMonth: true`.\n */\nexport function buildMonthGrid(year: number, month: number): { date: Date; outOfMonth: boolean }[] {\n const first = new Date(year, month, 1);\n const firstWeekday = first.getDay(); // 0 (Sun) – 6 (Sat)\n const start = addDays(first, -firstWeekday);\n const cells: { date: Date; outOfMonth: boolean }[] = [];\n for (let i = 0; i < 42; i++) {\n const date = addDays(start, i);\n cells.push({ date, outOfMonth: date.getMonth() !== month });\n }\n return cells;\n}\n\n/** Format Date → \"YYYY-MM-DD\" for native `<input type=\"date\">` value. */\nexport function formatISODate(d: Date | null | undefined): string {\n if (!d) return '';\n const year = d.getFullYear();\n const month = String(d.getMonth() + 1).padStart(2, '0');\n const day = String(d.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n}\n\n/** Parse \"YYYY-MM-DD\" → Date (local time). Returns null for invalid input. */\nexport function parseISODate(s: string | null | undefined): Date | null {\n if (!s) return null;\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(s);\n if (!m) return null;\n const [, y, mo, d] = m;\n if (!y || !mo || !d) return null;\n const date = new Date(Number(y), Number(mo) - 1, Number(d));\n if (isNaN(date.getTime())) return null;\n return date;\n}\n\n/** Format Date → \"HH:MM\" for native `<input type=\"time\">` value. */\nexport function formatISOTime(d: Date | null | undefined): string {\n if (!d) return '';\n const h = String(d.getHours()).padStart(2, '0');\n const m = String(d.getMinutes()).padStart(2, '0');\n return `${h}:${m}`;\n}\n\n/** Parse \"HH:MM\" → { hours, minutes }. Returns null for invalid input. */\nexport function parseISOTime(s: string | null | undefined): { hours: number; minutes: number } | null {\n if (!s) return null;\n const m = /^(\\d{2}):(\\d{2})$/.exec(s);\n if (!m) return null;\n const [, h, mi] = m;\n if (!h || !mi) return null;\n const hours = Number(h);\n const minutes = Number(mi);\n if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59) return null;\n return { hours, minutes };\n}\n\nexport function clampDate(d: Date, min?: Date | null, max?: Date | null): Date {\n if (min && d < min) return min;\n if (max && d > max) return max;\n return d;\n}\n\nexport function isDateDisabled(\n d: Date,\n options: { min?: Date | null; max?: Date | null; isDisabled?: (d: Date) => boolean },\n): boolean {\n const { min, max, isDisabled } = options;\n if (min && startOfDay(d) < startOfDay(min)) return true;\n if (max && startOfDay(d) > startOfDay(max)) return true;\n if (isDisabled?.(d)) return true;\n return false;\n}\n\nexport function isInRange(\n d: Date,\n start: Date | null | undefined,\n end: Date | null | undefined,\n): boolean {\n if (!start || !end) return false;\n const t = startOfDay(d).getTime();\n const s = startOfDay(start).getTime();\n const e = startOfDay(end).getTime();\n return t >= Math.min(s, e) && t <= Math.max(s, e);\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n} from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n MONTHS_LONG,\n WEEKDAYS_SHORT,\n addDays,\n addMonths,\n buildMonthGrid,\n isDateDisabled,\n isSameDay,\n isToday,\n startOfMonth,\n} from '../_dateUtils';\n\nexport interface CalendarProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n /** Controlled selected date. */\n value?: Date | null;\n /** Uncontrolled initial selection. */\n defaultValue?: Date | null;\n /** Selection callback. */\n onChange?: (date: Date) => void;\n /** Initial visible month (uncontrolled). */\n defaultMonth?: Date;\n /** Minimum selectable date. */\n min?: Date | null;\n /** Maximum selectable date. */\n max?: Date | null;\n /** Custom disable predicate. */\n isDisabled?: (date: Date) => boolean;\n /** A11y label. */\n 'aria-label'?: string;\n}\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(function Calendar(\n {\n value,\n defaultValue,\n onChange,\n defaultMonth,\n min,\n max,\n isDisabled,\n 'aria-label': ariaLabel = 'Calendar',\n className,\n ...rest\n },\n ref,\n) {\n const [selected, setSelected] = useControlled<Date | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange: onChange as ((v: Date | null) => void) | undefined,\n });\n\n const [viewMonth, setViewMonth] = useState<Date>(\n () => startOfMonth(defaultMonth ?? selected ?? new Date()),\n );\n const [focusedDate, setFocusedDate] = useState<Date>(\n () => selected ?? new Date(),\n );\n const gridRef = useRef<HTMLDivElement | null>(null);\n\n // Re-focus the active day cell when focusedDate changes (keyboard nav).\n useEffect(() => {\n const cell = gridRef.current?.querySelector<HTMLButtonElement>(\n `[data-date=\"${focusedDate.toDateString()}\"]`,\n );\n cell?.focus();\n }, [focusedDate]);\n\n const moveFocus = useCallback(\n (next: Date) => {\n if (next.getMonth() !== viewMonth.getMonth() || next.getFullYear() !== viewMonth.getFullYear()) {\n setViewMonth(startOfMonth(next));\n }\n setFocusedDate(next);\n },\n [viewMonth],\n );\n\n const onCellKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>, date: Date) => {\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n moveFocus(addDays(date, 1));\n break;\n case 'ArrowLeft':\n e.preventDefault();\n moveFocus(addDays(date, -1));\n break;\n case 'ArrowDown':\n e.preventDefault();\n moveFocus(addDays(date, 7));\n break;\n case 'ArrowUp':\n e.preventDefault();\n moveFocus(addDays(date, -7));\n break;\n case 'Home':\n e.preventDefault();\n moveFocus(addDays(date, -date.getDay()));\n break;\n case 'End':\n e.preventDefault();\n moveFocus(addDays(date, 6 - date.getDay()));\n break;\n case 'PageDown':\n e.preventDefault();\n moveFocus(addMonths(date, e.shiftKey ? 12 : 1));\n break;\n case 'PageUp':\n e.preventDefault();\n moveFocus(addMonths(date, e.shiftKey ? -12 : -1));\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n if (!isDateDisabled(date, { min, max, isDisabled })) {\n setSelected(date);\n }\n break;\n }\n },\n [moveFocus, setSelected, min, max, isDisabled],\n );\n\n const cells = buildMonthGrid(viewMonth.getFullYear(), viewMonth.getMonth());\n\n return (\n <div\n ref={ref}\n role=\"application\"\n aria-label={ariaLabel}\n className={cn(\n 'inline-flex flex-col gap-2 rounded-md border border-border bg-popover p-3 text-popover-foreground',\n className,\n )}\n {...rest}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between gap-2 px-1\">\n <button\n type=\"button\"\n aria-label=\"Previous month\"\n onClick={() => setViewMonth((m) => addMonths(m, -1))}\n className=\"grid h-7 w-7 place-items-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n <div className=\"text-sm font-medium\" aria-live=\"polite\">\n {MONTHS_LONG[viewMonth.getMonth()]} {viewMonth.getFullYear()}\n </div>\n <button\n type=\"button\"\n aria-label=\"Next month\"\n onClick={() => setViewMonth((m) => addMonths(m, 1))}\n className=\"grid h-7 w-7 place-items-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n </div>\n\n {/* Weekday row */}\n <div className=\"grid grid-cols-7 gap-0 px-1\">\n {WEEKDAYS_SHORT.map((w) => (\n <div\n key={w}\n className=\"grid h-7 w-9 place-items-center text-xs font-medium text-muted-foreground\"\n >\n {w}\n </div>\n ))}\n </div>\n\n {/* Day grid */}\n <div ref={gridRef} className=\"grid grid-cols-7 gap-0 px-1\" role=\"grid\">\n {cells.map(({ date, outOfMonth }) => {\n const disabled = isDateDisabled(date, { min, max, isDisabled });\n const isSelectedCell = isSameDay(selected, date);\n const isFocusedCell = isSameDay(focusedDate, date);\n return (\n <button\n key={date.toDateString()}\n type=\"button\"\n role=\"gridcell\"\n data-date={date.toDateString()}\n aria-selected={isSelectedCell}\n aria-disabled={disabled || undefined}\n data-selected={isSelectedCell ? '' : undefined}\n data-today={isToday(date) ? '' : undefined}\n data-out-of-month={outOfMonth ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n tabIndex={isFocusedCell ? 0 : -1}\n disabled={disabled}\n onClick={() => {\n if (disabled) return;\n setSelected(date);\n setFocusedDate(date);\n if (outOfMonth) setViewMonth(startOfMonth(date));\n }}\n onKeyDown={(e) => onCellKeyDown(e, date)}\n className={cn(\n 'grid h-9 w-9 place-items-center rounded-sm text-sm transition-colors',\n 'hover:bg-muted hover:text-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n outOfMonth && 'text-muted-foreground/60',\n isToday(date) && !isSelectedCell && 'border border-border',\n isSelectedCell && 'bg-primary text-primary-foreground hover:bg-primary',\n disabled && 'pointer-events-none opacity-40',\n )}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n});\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\nimport { formatISODate, parseISODate } from '../_dateUtils';\n\nexport interface DateFieldProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'value' | 'defaultValue' | 'onChange' | 'min' | 'max' | 'size'\n >,\n InputBaseVariants {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (date: Date | null) => void;\n min?: Date | null;\n max?: Date | null;\n}\n\nexport const DateField = forwardRef<HTMLInputElement, DateFieldProps>(function DateField(\n { value, defaultValue, onChange, min, max, size, state, className, id, disabled, required, ...rest },\n ref,\n) {\n const ctx = useFormControl();\n const [current, setCurrent] = useControlled<Date | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange,\n });\n return (\n <input\n ref={ref}\n type=\"date\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n value={formatISODate(current)}\n min={formatISODate(min)}\n max={formatISODate(max)}\n onChange={(e) => setCurrent(parseISODate(e.target.value))}\n className={cn(inputBaseVariants({ size, state: state ?? (ctx?.isInvalid ? 'invalid' : 'default') }), className)}\n {...rest}\n />\n );\n});\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../_styles';\nimport { formatISOTime, parseISOTime } from '../_dateUtils';\n\nexport interface TimeValue {\n hours: number;\n minutes: number;\n}\n\nexport interface TimeFieldProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'value' | 'defaultValue' | 'onChange' | 'size'\n >,\n InputBaseVariants {\n value?: TimeValue | null;\n defaultValue?: TimeValue | null;\n onChange?: (value: TimeValue | null) => void;\n}\n\nfunction timeToString(t: TimeValue | null | undefined): string {\n if (!t) return '';\n const date = new Date();\n date.setHours(t.hours, t.minutes, 0, 0);\n return formatISOTime(date);\n}\n\nexport const TimeField = forwardRef<HTMLInputElement, TimeFieldProps>(function TimeField(\n { value, defaultValue, onChange, size, state, className, id, disabled, required, ...rest },\n ref,\n) {\n const ctx = useFormControl();\n const [current, setCurrent] = useControlled<TimeValue | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange,\n });\n return (\n <input\n ref={ref}\n type=\"time\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n value={timeToString(current)}\n onChange={(e) => setCurrent(parseISOTime(e.target.value))}\n className={cn(inputBaseVariants({ size, state: state ?? (ctx?.isInvalid ? 'invalid' : 'default') }), className)}\n {...rest}\n />\n );\n});\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n} from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n MONTHS_LONG,\n WEEKDAYS_SHORT,\n addDays,\n addMonths,\n buildMonthGrid,\n isDateDisabled,\n isInRange,\n isSameDay,\n isToday,\n startOfDay,\n startOfMonth,\n} from '../_dateUtils';\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface RangeCalendarProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n value?: DateRange | null;\n defaultValue?: DateRange | null;\n onChange?: (range: DateRange) => void;\n defaultMonth?: Date;\n min?: Date | null;\n max?: Date | null;\n isDisabled?: (date: Date) => boolean;\n 'aria-label'?: string;\n}\n\nexport const RangeCalendar = forwardRef<HTMLDivElement, RangeCalendarProps>(\n function RangeCalendar(\n {\n value,\n defaultValue,\n onChange,\n defaultMonth,\n min,\n max,\n isDisabled,\n 'aria-label': ariaLabel = 'Date range',\n className,\n ...rest\n },\n ref,\n ) {\n const [range, setRange] = useControlled<DateRange | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange: onChange as ((v: DateRange | null) => void) | undefined,\n });\n\n const [viewMonth, setViewMonth] = useState<Date>(\n () => startOfMonth(defaultMonth ?? range?.start ?? new Date()),\n );\n const [focusedDate, setFocusedDate] = useState<Date>(\n () => range?.start ?? new Date(),\n );\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const [pendingStart, setPendingStart] = useState<Date | null>(null);\n const gridRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const cell = gridRef.current?.querySelector<HTMLButtonElement>(\n `[data-date=\"${focusedDate.toDateString()}\"]`,\n );\n cell?.focus();\n }, [focusedDate]);\n\n const moveFocus = useCallback(\n (next: Date) => {\n if (next.getMonth() !== viewMonth.getMonth() || next.getFullYear() !== viewMonth.getFullYear()) {\n setViewMonth(startOfMonth(next));\n }\n setFocusedDate(next);\n },\n [viewMonth],\n );\n\n const onSelectDay = useCallback(\n (date: Date) => {\n if (isDateDisabled(date, { min, max, isDisabled })) return;\n if (!pendingStart) {\n setPendingStart(date);\n setRange({ start: date, end: null });\n return;\n }\n // Second click: finalize range. Swap if needed.\n const startTime = startOfDay(pendingStart).getTime();\n const endTime = startOfDay(date).getTime();\n const finalStart = startTime <= endTime ? pendingStart : date;\n const finalEnd = startTime <= endTime ? date : pendingStart;\n setRange({ start: finalStart, end: finalEnd });\n setPendingStart(null);\n },\n [pendingStart, setRange, min, max, isDisabled],\n );\n\n const onCellKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>, date: Date) => {\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n moveFocus(addDays(date, 1));\n break;\n case 'ArrowLeft':\n e.preventDefault();\n moveFocus(addDays(date, -1));\n break;\n case 'ArrowDown':\n e.preventDefault();\n moveFocus(addDays(date, 7));\n break;\n case 'ArrowUp':\n e.preventDefault();\n moveFocus(addDays(date, -7));\n break;\n case 'Home':\n e.preventDefault();\n moveFocus(addDays(date, -date.getDay()));\n break;\n case 'End':\n e.preventDefault();\n moveFocus(addDays(date, 6 - date.getDay()));\n break;\n case 'PageDown':\n e.preventDefault();\n moveFocus(addMonths(date, e.shiftKey ? 12 : 1));\n break;\n case 'PageUp':\n e.preventDefault();\n moveFocus(addMonths(date, e.shiftKey ? -12 : -1));\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n onSelectDay(date);\n break;\n }\n },\n [moveFocus, onSelectDay],\n );\n\n const cells = buildMonthGrid(viewMonth.getFullYear(), viewMonth.getMonth());\n const previewEnd = pendingStart ? hoveredDate : range?.end;\n const isStart = (d: Date) => isSameDay(d, range?.start ?? null) || isSameDay(d, pendingStart);\n const isEnd = (d: Date) => isSameDay(d, range?.end ?? null);\n const inRange = (d: Date) => isInRange(d, pendingStart ?? range?.start, previewEnd ?? null);\n\n return (\n <div\n ref={ref}\n role=\"application\"\n aria-label={ariaLabel}\n className={cn(\n 'inline-flex flex-col gap-2 rounded-md border border-border bg-popover p-3 text-popover-foreground',\n className,\n )}\n {...rest}\n >\n <div className=\"flex items-center justify-between gap-2 px-1\">\n <button\n type=\"button\"\n aria-label=\"Previous month\"\n onClick={() => setViewMonth((m) => addMonths(m, -1))}\n className=\"grid h-7 w-7 place-items-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n <div className=\"text-sm font-medium\" aria-live=\"polite\">\n {MONTHS_LONG[viewMonth.getMonth()]} {viewMonth.getFullYear()}\n </div>\n <button\n type=\"button\"\n aria-label=\"Next month\"\n onClick={() => setViewMonth((m) => addMonths(m, 1))}\n className=\"grid h-7 w-7 place-items-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n </div>\n\n <div className=\"grid grid-cols-7 gap-0 px-1\">\n {WEEKDAYS_SHORT.map((w) => (\n <div\n key={w}\n className=\"grid h-7 w-9 place-items-center text-xs font-medium text-muted-foreground\"\n >\n {w}\n </div>\n ))}\n </div>\n\n <div ref={gridRef} className=\"grid grid-cols-7 gap-0 px-1\" role=\"grid\">\n {cells.map(({ date, outOfMonth }) => {\n const disabled = isDateDisabled(date, { min, max, isDisabled });\n const startCell = isStart(date);\n const endCell = isEnd(date);\n const rangeCell = inRange(date) && !startCell && !endCell;\n const isFocusedCell = isSameDay(focusedDate, date);\n return (\n <button\n key={date.toDateString()}\n type=\"button\"\n role=\"gridcell\"\n data-date={date.toDateString()}\n data-range-start={startCell ? '' : undefined}\n data-range-end={endCell ? '' : undefined}\n data-in-range={rangeCell ? '' : undefined}\n data-today={isToday(date) ? '' : undefined}\n data-out-of-month={outOfMonth ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n aria-selected={startCell || endCell}\n aria-disabled={disabled || undefined}\n tabIndex={isFocusedCell ? 0 : -1}\n disabled={disabled}\n onPointerEnter={() => setHoveredDate(date)}\n onPointerLeave={() => setHoveredDate((h) => (isSameDay(h, date) ? null : h))}\n onClick={() => {\n onSelectDay(date);\n setFocusedDate(date);\n if (outOfMonth) setViewMonth(startOfMonth(date));\n }}\n onKeyDown={(e) => onCellKeyDown(e, date)}\n className={cn(\n 'grid h-9 w-9 place-items-center text-sm transition-colors',\n 'hover:bg-muted hover:text-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n outOfMonth && 'text-muted-foreground/60',\n isToday(date) && !startCell && !endCell && 'border border-border rounded-sm',\n rangeCell && 'bg-primary-soft text-primary-soft-foreground',\n startCell && 'bg-primary text-primary-foreground rounded-l-sm',\n endCell && 'bg-primary text-primary-foreground rounded-r-sm',\n !startCell && !endCell && !rangeCell && 'rounded-sm',\n disabled && 'pointer-events-none opacity-40',\n )}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n },\n);\n","import { forwardRef, useRef, type ButtonHTMLAttributes } from 'react';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { AnchoredPositioner, DismissableLayer, Portal } from '../../primitives';\nimport { selectTriggerVariants, type SelectTriggerVariants } from '../select/Select.variants';\nimport { formatISODate } from '../_dateUtils';\nimport { Calendar } from '../calendar';\n\nexport interface DatePickerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChange' | 'value' | 'defaultValue'>,\n SelectTriggerVariants {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (date: Date | null) => void;\n placeholder?: string;\n format?: (date: Date) => string;\n min?: Date | null;\n max?: Date | null;\n isDisabled?: (date: Date) => boolean;\n invalid?: boolean;\n /** When `name` is set, a hidden input ships the ISO value with form submission. */\n name?: string;\n}\n\nconst defaultFormat = (d: Date) =>\n d.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' });\n\nexport const DatePicker = forwardRef<HTMLButtonElement, DatePickerProps>(function DatePicker(\n {\n value,\n defaultValue,\n onChange,\n placeholder = 'Pick a date',\n format = defaultFormat,\n min,\n max,\n isDisabled: dayDisabled,\n invalid,\n name,\n size,\n state,\n className,\n disabled,\n onClick,\n ...rest\n },\n forwardedRef,\n) {\n const [date, setDate] = useControlled<Date | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange,\n });\n const [open, setOpen] = useControlled<boolean>({\n controlled: undefined,\n default: false,\n });\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n\n const triggerState = state ?? (invalid ? 'invalid' : 'default');\n\n return (\n <>\n <button\n ref={composeRefs(forwardedRef, triggerRef)}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n data-state={open ? 'open' : 'closed'}\n disabled={disabled}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n setOpen(!open);\n }}\n className={cn(selectTriggerVariants({ size, state: triggerState }), className)}\n {...rest}\n >\n <span className={cn('truncate', !date && 'text-subtle-foreground')}>\n {date ? format(date) : placeholder}\n </span>\n <CalendarIcon className=\"h-4 w-4 shrink-0 text-muted-foreground\" />\n </button>\n {open && (\n <Portal>\n <AnchoredPositioner anchor={triggerRef.current} placement=\"bottom-start\" offset={6}>\n <FocusScope asChild trapped loop>\n <DismissableLayer\n onEscape={() => {\n setOpen(false);\n requestAnimationFrame(() => triggerRef.current?.focus());\n }}\n onOutsidePointerDown={(e) => {\n if (triggerRef.current?.contains(e.target as Node)) return;\n setOpen(false);\n }}\n >\n <Calendar\n value={date}\n onChange={(d) => {\n setDate(d);\n setOpen(false);\n requestAnimationFrame(() => triggerRef.current?.focus());\n }}\n defaultMonth={date ?? new Date()}\n min={min}\n max={max}\n isDisabled={dayDisabled}\n className=\"shadow-md\"\n />\n </DismissableLayer>\n </FocusScope>\n </AnchoredPositioner>\n </Portal>\n )}\n {name && <input type=\"hidden\" name={name} value={formatISODate(date)} />}\n </>\n );\n});\n","import { forwardRef, useEffect, useMemo, useRef, type ButtonHTMLAttributes } from 'react';\nimport { Clock } from 'lucide-react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { AnchoredPositioner, DismissableLayer, Portal } from '../../primitives';\nimport { selectTriggerVariants, type SelectTriggerVariants } from '../select/Select.variants';\nimport { type TimeValue } from '../timeField';\n\nexport interface TimePickerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChange' | 'value' | 'defaultValue'>,\n SelectTriggerVariants {\n value?: TimeValue | null;\n defaultValue?: TimeValue | null;\n onChange?: (time: TimeValue | null) => void;\n /** Minute interval. Default 5. */\n minuteStep?: number;\n placeholder?: string;\n format?: (time: TimeValue) => string;\n invalid?: boolean;\n name?: string;\n}\n\nconst defaultFormat = (t: TimeValue) =>\n `${String(t.hours).padStart(2, '0')}:${String(t.minutes).padStart(2, '0')}`;\n\nconst HOURS = Array.from({ length: 24 }, (_, i) => i);\n\nexport const TimePicker = forwardRef<HTMLButtonElement, TimePickerProps>(function TimePicker(\n {\n value,\n defaultValue,\n onChange,\n minuteStep = 5,\n placeholder = 'Pick a time',\n format = defaultFormat,\n invalid,\n name,\n size,\n state,\n className,\n disabled,\n onClick,\n ...rest\n },\n forwardedRef,\n) {\n const [time, setTime] = useControlled<TimeValue | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange,\n });\n const [open, setOpen] = useControlled<boolean>({\n controlled: undefined,\n default: false,\n });\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const hoursRef = useRef<HTMLDivElement | null>(null);\n const minutesRef = useRef<HTMLDivElement | null>(null);\n\n const minutes = useMemo(() => {\n const list: number[] = [];\n for (let m = 0; m < 60; m += minuteStep) list.push(m);\n return list;\n }, [minuteStep]);\n\n // Auto-scroll selected hour/minute into view when opening.\n useEffect(() => {\n if (!open) return;\n requestAnimationFrame(() => {\n hoursRef.current\n ?.querySelector<HTMLButtonElement>('[data-selected]')\n ?.scrollIntoView({ block: 'center' });\n minutesRef.current\n ?.querySelector<HTMLButtonElement>('[data-selected]')\n ?.scrollIntoView({ block: 'center' });\n });\n }, [open]);\n\n const triggerState = state ?? (invalid ? 'invalid' : 'default');\n\n const update = (next: Partial<TimeValue>) => {\n const merged: TimeValue = {\n hours: next.hours ?? time?.hours ?? 0,\n minutes: next.minutes ?? time?.minutes ?? 0,\n };\n setTime(merged);\n };\n\n return (\n <>\n <button\n ref={composeRefs(forwardedRef, triggerRef)}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n data-state={open ? 'open' : 'closed'}\n disabled={disabled}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n setOpen(!open);\n }}\n className={cn(selectTriggerVariants({ size, state: triggerState }), className)}\n {...rest}\n >\n <span className={cn('truncate', !time && 'text-subtle-foreground')}>\n {time ? format(time) : placeholder}\n </span>\n <Clock className=\"h-4 w-4 shrink-0 text-muted-foreground\" />\n </button>\n {open && (\n <Portal>\n <AnchoredPositioner anchor={triggerRef.current} placement=\"bottom-start\" offset={6}>\n <FocusScope asChild trapped loop>\n <DismissableLayer\n onEscape={() => {\n setOpen(false);\n requestAnimationFrame(() => triggerRef.current?.focus());\n }}\n onOutsidePointerDown={(e) => {\n if (triggerRef.current?.contains(e.target as Node)) return;\n setOpen(false);\n }}\n >\n <div className=\"z-50 flex gap-1 rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-md outline-none animate-in fade-in-0 zoom-in-95\">\n <div\n ref={hoursRef}\n role=\"listbox\"\n aria-label=\"Hours\"\n className=\"flex max-h-56 flex-col gap-0.5 overflow-y-auto pr-1\"\n >\n {HOURS.map((h) => {\n const selected = time?.hours === h;\n return (\n <button\n key={h}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n data-selected={selected ? '' : undefined}\n onClick={() => update({ hours: h })}\n className={cn(\n 'grid h-8 w-12 place-items-center rounded-sm text-sm transition-colors hover:bg-muted',\n selected && 'bg-primary text-primary-foreground hover:bg-primary',\n )}\n >\n {String(h).padStart(2, '0')}\n </button>\n );\n })}\n </div>\n <div className=\"w-px self-stretch bg-border\" />\n <div\n ref={minutesRef}\n role=\"listbox\"\n aria-label=\"Minutes\"\n className=\"flex max-h-56 flex-col gap-0.5 overflow-y-auto pl-1\"\n >\n {minutes.map((m) => {\n const selected = time?.minutes === m;\n return (\n <button\n key={m}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n data-selected={selected ? '' : undefined}\n onClick={() => update({ minutes: m })}\n className={cn(\n 'grid h-8 w-12 place-items-center rounded-sm text-sm transition-colors hover:bg-muted',\n selected && 'bg-primary text-primary-foreground hover:bg-primary',\n )}\n >\n {String(m).padStart(2, '0')}\n </button>\n );\n })}\n </div>\n </div>\n </DismissableLayer>\n </FocusScope>\n </AnchoredPositioner>\n </Portal>\n )}\n {name && time && (\n <input\n type=\"hidden\"\n name={name}\n value={`${String(time.hours).padStart(2, '0')}:${String(time.minutes).padStart(2, '0')}`}\n />\n )}\n </>\n );\n});\n","import { forwardRef, useEffect, useRef, type ButtonHTMLAttributes } from 'react';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { AnchoredPositioner, DismissableLayer, Portal } from '../../primitives';\nimport { selectTriggerVariants, type SelectTriggerVariants } from '../select/Select.variants';\nimport { formatISODate } from '../_dateUtils';\nimport { RangeCalendar, type DateRange } from '../rangeCalendar';\n\nexport interface DateRangePickerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChange' | 'value' | 'defaultValue'>,\n SelectTriggerVariants {\n value?: DateRange | null;\n defaultValue?: DateRange | null;\n onChange?: (range: DateRange | null) => void;\n placeholder?: string;\n format?: (date: Date) => string;\n min?: Date | null;\n max?: Date | null;\n isDisabled?: (date: Date) => boolean;\n invalid?: boolean;\n /** When `name` is set, two hidden inputs (`{name}_start`, `{name}_end`) ship the ISO values. */\n name?: string;\n}\n\nconst defaultFormat = (d: Date) =>\n d.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' });\n\nexport const DateRangePicker = forwardRef<HTMLButtonElement, DateRangePickerProps>(\n function DateRangePicker(\n {\n value,\n defaultValue,\n onChange,\n placeholder = 'Pick a range',\n format = defaultFormat,\n min,\n max,\n isDisabled: dayDisabled,\n invalid,\n name,\n size,\n state,\n className,\n disabled,\n onClick,\n ...rest\n },\n forwardedRef,\n ) {\n const [range, setRange] = useControlled<DateRange | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange,\n });\n const [open, setOpen] = useControlled<boolean>({\n controlled: undefined,\n default: false,\n });\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const triggerState = state ?? (invalid ? 'invalid' : 'default');\n\n // Auto-close when both ends are picked.\n const wasComplete = useRef(false);\n useEffect(() => {\n const complete = !!(range?.start && range?.end);\n if (complete && !wasComplete.current && open) {\n setOpen(false);\n requestAnimationFrame(() => triggerRef.current?.focus());\n }\n wasComplete.current = complete;\n }, [range, open, setOpen]);\n\n const display = range?.start\n ? range.end\n ? `${format(range.start)} → ${format(range.end)}`\n : `${format(range.start)} → …`\n : null;\n\n return (\n <>\n <button\n ref={composeRefs(forwardedRef, triggerRef)}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n data-state={open ? 'open' : 'closed'}\n disabled={disabled}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n setOpen(!open);\n }}\n className={cn(selectTriggerVariants({ size, state: triggerState }), className)}\n {...rest}\n >\n <span className={cn('truncate', !display && 'text-subtle-foreground')}>\n {display ?? placeholder}\n </span>\n <CalendarIcon className=\"h-4 w-4 shrink-0 text-muted-foreground\" />\n </button>\n {open && (\n <Portal>\n <AnchoredPositioner anchor={triggerRef.current} placement=\"bottom-start\" offset={6}>\n <FocusScope asChild trapped loop>\n <DismissableLayer\n onEscape={() => {\n setOpen(false);\n requestAnimationFrame(() => triggerRef.current?.focus());\n }}\n onOutsidePointerDown={(e) => {\n if (triggerRef.current?.contains(e.target as Node)) return;\n setOpen(false);\n }}\n >\n <RangeCalendar\n value={range}\n onChange={setRange}\n defaultMonth={range?.start ?? new Date()}\n min={min}\n max={max}\n isDisabled={dayDisabled}\n className=\"shadow-md\"\n />\n </DismissableLayer>\n </FocusScope>\n </AnchoredPositioner>\n </Portal>\n )}\n {name && (\n <>\n <input type=\"hidden\" name={`${name}_start`} value={formatISODate(range?.start)} />\n <input type=\"hidden\" name={`${name}_end`} value={formatISODate(range?.end)} />\n </>\n )}\n </>\n );\n },\n);\n"]}
|