@wow-two-beta/ui 0.0.17 → 0.0.18
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/backToTopButton/BackToTopButton.d.ts +19 -0
- package/dist/actions/backToTopButton/BackToTopButton.d.ts.map +1 -0
- package/dist/actions/backToTopButton/index.d.ts +2 -0
- package/dist/actions/backToTopButton/index.d.ts.map +1 -0
- 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/{chunk-XHGWBSIR.js → chunk-25CGSOXZ.js} +5 -87
- package/dist/chunk-25CGSOXZ.js.map +1 -0
- package/dist/{chunk-SM2TOB4U.js → chunk-3KPILWVX.js} +268 -4
- package/dist/chunk-3KPILWVX.js.map +1 -0
- package/dist/{chunk-ILYL6ROC.js → chunk-3P7DZCDS.js} +257 -5
- package/dist/chunk-3P7DZCDS.js.map +1 -0
- package/dist/{chunk-3IN5ULKY.js → chunk-45SFQEMP.js} +417 -37
- package/dist/chunk-45SFQEMP.js.map +1 -0
- package/dist/{chunk-W7LQZKTH.js → chunk-D7XIPKDJ.js} +109 -4
- package/dist/chunk-D7XIPKDJ.js.map +1 -0
- package/dist/{chunk-2VAZKEQD.js → chunk-DSA7L7PD.js} +256 -141
- package/dist/chunk-DSA7L7PD.js.map +1 -0
- package/dist/{chunk-NRAJPSEK.js → chunk-GRJBIGUD.js} +72 -6
- package/dist/chunk-GRJBIGUD.js.map +1 -0
- package/dist/chunk-NKADHZMX.js +39 -0
- package/dist/chunk-NKADHZMX.js.map +1 -0
- package/dist/chunk-NTW7SDAP.js +92 -0
- package/dist/chunk-NTW7SDAP.js.map +1 -0
- package/dist/chunk-O6UUYPTB.js +148 -0
- package/dist/chunk-O6UUYPTB.js.map +1 -0
- package/dist/{chunk-4ESR253U.js → chunk-XRTXK5Y4.js} +119 -7
- package/dist/chunk-XRTXK5Y4.js.map +1 -0
- package/dist/display/index.d.ts +1 -0
- package/dist/display/index.d.ts.map +1 -1
- package/dist/display/index.js +2 -2
- package/dist/display/swipeActions/SwipeActions.d.ts +17 -0
- package/dist/display/swipeActions/SwipeActions.d.ts.map +1 -0
- package/dist/display/swipeActions/index.d.ts +2 -0
- package/dist/display/swipeActions/index.d.ts.map +1 -0
- package/dist/feedback/index.d.ts +3 -0
- package/dist/feedback/index.d.ts.map +1 -1
- package/dist/feedback/index.js +3 -1
- package/dist/feedback/onboardingChecklist/OnboardingChecklist.d.ts +33 -0
- package/dist/feedback/onboardingChecklist/OnboardingChecklist.d.ts.map +1 -0
- package/dist/feedback/onboardingChecklist/index.d.ts +3 -0
- package/dist/feedback/onboardingChecklist/index.d.ts.map +1 -0
- package/dist/feedback/tour/Tour.d.ts +25 -0
- package/dist/feedback/tour/Tour.d.ts.map +1 -0
- package/dist/feedback/tour/index.d.ts +2 -0
- package/dist/feedback/tour/index.d.ts.map +1 -0
- package/dist/feedback/undoBar/UndoBar.d.ts +22 -0
- package/dist/feedback/undoBar/UndoBar.d.ts.map +1 -0
- package/dist/feedback/undoBar/index.d.ts +2 -0
- package/dist/feedback/undoBar/index.d.ts.map +1 -0
- package/dist/forms/index.d.ts +1 -0
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +6 -4
- package/dist/forms/wizard/Wizard.d.ts +58 -0
- package/dist/forms/wizard/Wizard.d.ts.map +1 -0
- package/dist/forms/wizard/index.d.ts +3 -0
- package/dist/forms/wizard/index.d.ts.map +1 -0
- package/dist/index.js +12 -9
- package/dist/layout/appShell/AppShell.d.ts +50 -0
- package/dist/layout/appShell/AppShell.d.ts.map +1 -0
- package/dist/layout/appShell/index.d.ts +3 -0
- package/dist/layout/appShell/index.d.ts.map +1 -0
- package/dist/layout/index.d.ts +2 -0
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +7 -2
- package/dist/layout/pullToRefresh/PullToRefresh.d.ts +15 -0
- package/dist/layout/pullToRefresh/PullToRefresh.d.ts.map +1 -0
- package/dist/layout/pullToRefresh/index.d.ts +2 -0
- package/dist/layout/pullToRefresh/index.d.ts.map +1 -0
- package/dist/nav/index.d.ts +2 -0
- package/dist/nav/index.d.ts.map +1 -1
- package/dist/nav/index.js +4 -3
- package/dist/nav/scrollSpy/ScrollSpy.d.ts +25 -0
- package/dist/nav/scrollSpy/ScrollSpy.d.ts.map +1 -0
- package/dist/nav/scrollSpy/index.d.ts +2 -0
- package/dist/nav/scrollSpy/index.d.ts.map +1 -0
- package/dist/nav/tableOfContents/TableOfContents.d.ts +24 -0
- package/dist/nav/tableOfContents/TableOfContents.d.ts.map +1 -0
- package/dist/nav/tableOfContents/index.d.ts +2 -0
- package/dist/nav/tableOfContents/index.d.ts.map +1 -0
- package/dist/overlays/actionSheet/ActionSheet.d.ts +29 -0
- package/dist/overlays/actionSheet/ActionSheet.d.ts.map +1 -0
- package/dist/overlays/actionSheet/index.d.ts +3 -0
- package/dist/overlays/actionSheet/index.d.ts.map +1 -0
- package/dist/overlays/bottomSheet/BottomSheet.d.ts +29 -0
- package/dist/overlays/bottomSheet/BottomSheet.d.ts.map +1 -0
- package/dist/overlays/bottomSheet/index.d.ts +2 -0
- package/dist/overlays/bottomSheet/index.d.ts.map +1 -0
- package/dist/overlays/index.d.ts +2 -0
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/overlays/index.js +5 -3
- package/package.json +1 -1
- package/dist/chunk-2VAZKEQD.js.map +0 -1
- package/dist/chunk-3IN5ULKY.js.map +0 -1
- package/dist/chunk-4ESR253U.js.map +0 -1
- package/dist/chunk-ILYL6ROC.js.map +0 -1
- package/dist/chunk-NRAJPSEK.js.map +0 -1
- package/dist/chunk-SM2TOB4U.js.map +0 -1
- package/dist/chunk-W7LQZKTH.js.map +0 -1
- package/dist/chunk-XHGWBSIR.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
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/InputStyles.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.tsx","../src/forms/select/Select.variants.ts","../src/forms/select/Select.tsx","../src/forms/multiSelect/MultiSelect.tsx","../src/forms/combobox/Combobox.tsx","../src/forms/DateExtensions.ts","../src/forms/MonthGrid.tsx","../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","../src/forms/colorSwatch/ColorSwatch.variants.ts","../src/forms/colorSwatch/ColorSwatch.tsx","../src/forms/ColorExtensions.ts","../src/forms/colorField/ColorField.tsx","../src/forms/colorSlider/ColorSlider.tsx","../src/forms/colorArea/ColorArea.tsx","../src/forms/colorWheel/ColorWheel.tsx","../src/forms/colorSwatchPicker/ColorSwatchPicker.tsx","../src/forms/colorPicker/ColorPicker.tsx","../src/forms/stepper/Stepper.tsx","../src/forms/tagsInput/TagsInput.tsx","../src/forms/fileUpload/FileUpload.tsx","../src/forms/editable/Editable.tsx","../src/forms/wizard/Wizard.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","MultiSelectItem","ComboboxInput","ComboboxItem","Calendar","DateField","TimeField","RangeCalendar","DatePicker","CalendarIcon","defaultFormat","TimePicker","DateRangePicker","ColorSwatch","ColorField","ColorSlider","ratio","ColorArea","ColorWheel","ColorPicker","value","Stepper","StepperList","StepperStep","StepperPanel","TagsInput","FileUpload","EditablePreview","EditableInput","EditableSubmit","EditableCancel","Wizard","next","WizardSteps","WizardStep","WizardFooter"],"mappings":"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","file":"chunk-3P7DZCDS.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 '../InputStyles';\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 '../InputStyles';\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 '../InputStyles';\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 '../InputStyles';\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 '../InputStyles';\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 '../InputStyles';\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 '../InputStyles';\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 '../InputStyles';\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 '../InputStyles';\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 '../InputStyles';\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 {\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 useState,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays';\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 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 defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Floating placement of the dropdown. */\n placement?: React.ComponentProps<typeof Popover>['placement'];\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 placement = 'bottom',\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 [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 },\n [setValueState, setOpenState],\n );\n\n const ctx = useMemo<SelectContextValue>(\n () => ({\n open: openState,\n setOpen: setOpenState,\n value: valueState,\n onSelect,\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 (\n <SelectContext.Provider value={ctx}>\n <Popover\n open={openState}\n onOpenChange={setOpenState}\n placement={placement}\n offset={6}\n >\n {children}\n </Popover>\n </SelectContext.Provider>\n );\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, children, ...rest }, ref) {\n const ctx = useSelectContext();\n const triggerState = state ?? (ctx.invalid ? 'invalid' : 'default');\n return (\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n disabled={ctx.disabled}\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 </PopoverTrigger>\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 children: ReactNode;\n}\n\nexport function SelectContent({ className, children }: SelectContentProps) {\n const ctx = useSelectContext();\n return (\n <PopoverContent bare>\n <Listbox\n value={ctx.value}\n onValueChange={(v) => ctx.onSelect(v as string)}\n className={cn('min-w-[var(--anchor-width)]', className)}\n >\n {children}\n </Listbox>\n {ctx.name && <input type=\"hidden\" name={ctx.name} value={ctx.value} />}\n </PopoverContent>\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 useState,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { ChevronDown, X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays';\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 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 placement?: React.ComponentProps<typeof Popover>['placement'];\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 placement = 'bottom',\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 [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 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 (\n <MultiSelectContext.Provider value={ctx}>\n <Popover\n open={openState}\n onOpenChange={setOpenState}\n placement={placement}\n offset={6}\n >\n {children}\n </Popover>\n </MultiSelectContext.Provider>\n );\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, onKeyDown, children, ...rest },\n ref,\n ) {\n const ctx = useMultiSelectContext();\n const triggerState = state ?? (ctx.invalid ? 'invalid' : 'default');\n return (\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n disabled={ctx.disabled}\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 </PopoverTrigger>\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 children: ReactNode;\n}\n\nexport function MultiSelectContent({ className, children }: MultiSelectContentProps) {\n const ctx = useMultiSelectContext();\n return (\n <PopoverContent bare>\n <Listbox\n multiple\n value={ctx.values}\n onValueChange={(v) => ctx.setValues(v as string[])}\n className={cn('min-w-[var(--anchor-width)]', className)}\n >\n {children}\n </Listbox>\n {ctx.name &&\n ctx.values.map((v) => <input key={v} type=\"hidden\" name={ctx.name} value={v} />)}\n </PopoverContent>\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 '../InputStyles';\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","// Shared month-grid renderer for Calendar and RangeCalendar. Co-located in\n// `forms/` as a domain-internal helper. Owns:\n// - the 42-cell visual layout (header + weekday row + 6×7 grid)\n// - keyboard navigation (arrows / Home/End / PgUp/PgDn / Shift+PgUp/PgDn)\n// - focused-cell management (autofocus on focusedDate change)\n// - month nav buttons\n//\n// Consumers (Calendar, RangeCalendar) provide:\n// - their own selection state via `dayProps(date)` returning extra attrs\n// - `onDayActivate(date)` callback for click/Enter/Space\n//\n// Not exported from `forms/index.ts` — internal only.\n\nimport {\n useCallback,\n useEffect,\n useRef,\n type ButtonHTMLAttributes,\n type KeyboardEvent,\n} from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../utils';\nimport {\n MONTHS_LONG,\n WEEKDAYS_SHORT,\n addDays,\n addMonths,\n buildMonthGrid,\n isSameDay,\n isToday,\n startOfMonth,\n} from './DateExtensions';\n\nexport interface MonthGridDayProps\n extends Pick<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'className' | 'onPointerEnter' | 'onPointerLeave' | 'aria-selected'\n > {\n /** Extra `data-*` attributes (data-selected, data-range-start, etc.). */\n [key: `data-${string}`]: string | boolean | undefined;\n}\n\nexport interface MonthGridProps {\n /** First day of the visible month (use `startOfMonth(date)`). */\n viewMonth: Date;\n /** Called when prev/next steps the visible month. */\n onViewMonthChange: (date: Date) => void;\n /** The currently focused day (cell tabIndex=0). */\n focusedDate: Date;\n /** Called by keyboard navigation. */\n onFocusedDateChange: (date: Date) => void;\n /** Predicate marking a day as disabled. */\n isDayDisabled?: (date: Date) => boolean;\n /** Click / Enter / Space activation. */\n onDayActivate?: (date: Date, meta: { outOfMonth: boolean }) => void;\n /** Extra per-day attributes for selection styling and hover handlers. */\n dayProps?: (date: Date, meta: { outOfMonth: boolean }) => MonthGridDayProps | undefined;\n 'aria-label'?: string;\n className?: string;\n}\n\nexport function MonthGrid({\n viewMonth,\n onViewMonthChange,\n focusedDate,\n onFocusedDateChange,\n isDayDisabled,\n onDayActivate,\n dayProps,\n 'aria-label': ariaLabel = 'Calendar',\n className,\n}: MonthGridProps) {\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 (\n next.getMonth() !== viewMonth.getMonth() ||\n next.getFullYear() !== viewMonth.getFullYear()\n ) {\n onViewMonthChange(startOfMonth(next));\n }\n onFocusedDateChange(next);\n },\n [viewMonth, onViewMonthChange, onFocusedDateChange],\n );\n\n const onCellKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>, date: Date, outOfMonth: boolean) => {\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 (!isDayDisabled?.(date)) onDayActivate?.(date, { outOfMonth });\n break;\n }\n },\n [moveFocus, onDayActivate, isDayDisabled],\n );\n\n const cells = buildMonthGrid(viewMonth.getFullYear(), viewMonth.getMonth());\n\n return (\n <div\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 >\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={() => onViewMonthChange(addMonths(viewMonth, -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={() => onViewMonthChange(addMonths(viewMonth, 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 = isDayDisabled?.(date) ?? false;\n const isFocusedCell = isSameDay(focusedDate, date);\n const consumerProps = dayProps?.(date, { outOfMonth }) ?? {};\n const { className: cellClassName, ...consumerRest } = consumerProps as Record<\n string,\n unknown\n > & { className?: string };\n\n return (\n <button\n key={date.toDateString()}\n type=\"button\"\n role=\"gridcell\"\n data-date={date.toDateString()}\n aria-disabled={disabled || 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 onDayActivate?.(date, { outOfMonth });\n onFocusedDateChange(date);\n if (outOfMonth) onViewMonthChange(startOfMonth(date));\n }}\n onKeyDown={(e) => onCellKeyDown(e, date, outOfMonth)}\n {...(consumerRest as ButtonHTMLAttributes<HTMLButtonElement>)}\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 disabled && 'pointer-events-none opacity-40',\n cellClassName,\n )}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { forwardRef, useState, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { isDateDisabled, isSameDay, isToday, startOfMonth } from '../DateExtensions';\nimport { MonthGrid } from '../MonthGrid';\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 const [viewMonth, setViewMonth] = useState<Date>(\n () => startOfMonth(defaultMonth ?? selected ?? new Date()),\n );\n const [focusedDate, setFocusedDate] = useState<Date>(() => selected ?? new Date());\n\n return (\n <div ref={ref} className={cn(className)} {...rest}>\n <MonthGrid\n viewMonth={viewMonth}\n onViewMonthChange={setViewMonth}\n focusedDate={focusedDate}\n onFocusedDateChange={setFocusedDate}\n isDayDisabled={(d) => isDateDisabled(d, { min, max, isDisabled })}\n onDayActivate={(d) => setSelected(d)}\n dayProps={(date) => {\n const isSelectedCell = isSameDay(selected, date);\n return {\n 'aria-selected': isSelectedCell,\n 'data-selected': isSelectedCell ? '' : undefined,\n className: cn(\n 'rounded-sm',\n isToday(date) && !isSelectedCell && 'border border-border',\n isSelectedCell && 'bg-primary text-primary-foreground hover:bg-primary',\n ),\n };\n }}\n aria-label={ariaLabel}\n />\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 '../InputStyles';\nimport { formatISODate, parseISODate } from '../DateExtensions';\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 '../InputStyles';\nimport { formatISOTime, parseISOTime } from '../DateExtensions';\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 { forwardRef, useState, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n isDateDisabled,\n isInRange,\n isSameDay,\n isToday,\n startOfDay,\n startOfMonth,\n} from '../DateExtensions';\nimport { MonthGrid } from '../MonthGrid';\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 const [viewMonth, setViewMonth] = useState<Date>(\n () => startOfMonth(defaultMonth ?? range?.start ?? new Date()),\n );\n const [focusedDate, setFocusedDate] = useState<Date>(() => range?.start ?? new Date());\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const [pendingStart, setPendingStart] = useState<Date | null>(null);\n\n const handleActivate = (date: Date) => {\n if (!pendingStart) {\n setPendingStart(date);\n setRange({ start: date, end: null });\n return;\n }\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\n const previewEnd = pendingStart ? hoveredDate : range?.end;\n const isStart = (d: Date) =>\n isSameDay(d, range?.start ?? null) || isSameDay(d, pendingStart);\n const isEnd = (d: Date) => isSameDay(d, range?.end ?? null);\n const inRange = (d: Date) =>\n isInRange(d, pendingStart ?? range?.start, previewEnd ?? null);\n\n return (\n <div ref={ref} className={cn(className)} {...rest}>\n <MonthGrid\n viewMonth={viewMonth}\n onViewMonthChange={setViewMonth}\n focusedDate={focusedDate}\n onFocusedDateChange={setFocusedDate}\n isDayDisabled={(d) => isDateDisabled(d, { min, max, isDisabled })}\n onDayActivate={handleActivate}\n dayProps={(date) => {\n const startCell = isStart(date);\n const endCell = isEnd(date);\n const rangeCell = inRange(date) && !startCell && !endCell;\n const selected = startCell || endCell;\n return {\n 'aria-selected': selected,\n 'data-range-start': startCell ? '' : undefined,\n 'data-range-end': endCell ? '' : undefined,\n 'data-in-range': rangeCell ? '' : undefined,\n onPointerEnter: () => setHoveredDate(date),\n onPointerLeave: () =>\n setHoveredDate((h) => (isSameDay(h, date) ? null : h)),\n className: cn(\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 ),\n };\n }}\n aria-label={ariaLabel}\n />\n </div>\n );\n },\n);\n","import { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays';\nimport { selectTriggerVariants, type SelectTriggerVariants } from '../select/Select.variants';\nimport { formatISODate } from '../DateExtensions';\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 ...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\n const triggerState = state ?? (invalid ? 'invalid' : 'default');\n\n return (\n <Popover open={open} onOpenChange={setOpen} placement=\"bottom-start\" offset={6}>\n <PopoverTrigger asChild>\n <button\n ref={forwardedRef}\n type=\"button\"\n disabled={disabled}\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 </PopoverTrigger>\n <PopoverContent bare>\n <Calendar\n value={date}\n onChange={(d) => {\n setDate(d);\n setOpen(false);\n }}\n defaultMonth={date ?? new Date()}\n min={min}\n max={max}\n isDisabled={dayDisabled}\n />\n </PopoverContent>\n {name && <input type=\"hidden\" name={name} value={formatISODate(date)} />}\n </Popover>\n );\n});\n","import { forwardRef, useEffect, useMemo, useRef, type ButtonHTMLAttributes } from 'react';\nimport { Clock } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays';\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 ...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 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 <Popover open={open} onOpenChange={setOpen} placement=\"bottom-start\" offset={6}>\n <PopoverTrigger asChild>\n <button\n ref={forwardedRef}\n type=\"button\"\n disabled={disabled}\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 </PopoverTrigger>\n <PopoverContent bare>\n <div className=\"flex gap-1 rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-md\">\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 </PopoverContent>\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 </Popover>\n );\n});\n","import { forwardRef, useEffect, useRef, type ButtonHTMLAttributes } from 'react';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays';\nimport { selectTriggerVariants, type SelectTriggerVariants } from '../select/Select.variants';\nimport { formatISODate } from '../DateExtensions';\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 ...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 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 }\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 <Popover open={open} onOpenChange={setOpen} placement=\"bottom-start\" offset={6}>\n <PopoverTrigger asChild>\n <button\n ref={forwardedRef}\n type=\"button\"\n disabled={disabled}\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 </PopoverTrigger>\n <PopoverContent bare>\n <RangeCalendar\n value={range}\n onChange={setRange}\n defaultMonth={range?.start ?? new Date()}\n min={min}\n max={max}\n isDisabled={dayDisabled}\n />\n </PopoverContent>\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 </Popover>\n );\n },\n);\n","import { tv, type VariantProps } from '../../utils';\n\nexport const colorSwatchVariants = tv({\n base: 'inline-block shrink-0 border border-border bg-[image:linear-gradient(45deg,_#ddd_25%,_transparent_25%),_linear-gradient(-45deg,_#ddd_25%,_transparent_25%),_linear-gradient(45deg,_transparent_75%,_#ddd_75%),_linear-gradient(-45deg,_transparent_75%,_#ddd_75%)] bg-[length:8px_8px] bg-[position:0_0,_0_4px,_4px_-4px,_-4px_0px]',\n variants: {\n size: {\n xs: 'h-4 w-4',\n sm: 'h-5 w-5',\n md: 'h-6 w-6',\n lg: 'h-9 w-9',\n },\n shape: {\n square: 'rounded-sm',\n circle: 'rounded-full',\n },\n interactive: {\n true: 'cursor-pointer transition-shadow focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 hover:shadow-sm',\n false: '',\n },\n selected: {\n true: 'ring-2 ring-ring ring-offset-1',\n false: '',\n },\n disabled: {\n true: 'cursor-not-allowed opacity-50',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n shape: 'square',\n interactive: false,\n selected: false,\n disabled: false,\n },\n});\n\nexport type ColorSwatchVariants = VariantProps<typeof colorSwatchVariants>;\n","import { forwardRef, type ButtonHTMLAttributes, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { colorSwatchVariants, type ColorSwatchVariants } from './ColorSwatch.variants';\n\ntype CommonProps = Omit<ColorSwatchVariants, 'interactive'> & {\n /** Any CSS color string. Default `#000000`. */\n color?: string;\n className?: string;\n};\n\nexport type ColorSwatchProps =\n | (CommonProps & {\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;\n 'aria-label'?: string;\n } & Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className' | 'color'>)\n | (CommonProps &\n Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'color'> & {\n onClick?: undefined;\n });\n\n/**\n * Color preview chip. Renders as a `<button>` if `onClick` is provided,\n * otherwise a non-interactive `<div>`. The transparent checkerboard backdrop\n * ensures partial-alpha colors render correctly.\n */\nexport const ColorSwatch = forwardRef<HTMLElement, ColorSwatchProps>(function ColorSwatch(\n { color = '#000000', size, shape, selected, disabled, className, onClick, style, ...rest },\n ref,\n) {\n const interactive = !!onClick;\n const classes = cn(\n colorSwatchVariants({ size, shape, interactive, selected, disabled }),\n className,\n );\n // Layer the color on top of the checkerboard via box-shadow inset — keeps\n // the variant class's `bg-[image:...]` checkerboard visible behind alpha.\n const styleWithColor: React.CSSProperties = {\n ...style,\n boxShadow: `inset 0 0 0 100px ${color}`,\n };\n\n if (interactive) {\n const buttonProps = rest as ButtonHTMLAttributes<HTMLButtonElement>;\n return (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type=\"button\"\n disabled={disabled}\n onClick={onClick}\n style={styleWithColor}\n className={classes}\n {...buttonProps}\n />\n );\n }\n const divProps = rest as HTMLAttributes<HTMLDivElement>;\n return (\n <div\n ref={ref as React.Ref<HTMLDivElement>}\n style={styleWithColor}\n className={classes}\n {...divProps}\n />\n );\n});\n","// Color parsing + conversion helpers for ColorPicker, ColorArea, ColorWheel,\n// ColorSlider, ColorSwatch, ColorField. Co-located in `forms/` so imports\n// stay within-domain.\n//\n// Canonical representation: HSV (hue 0–360, saturation 0–1, value 0–1) plus\n// alpha 0–1. HSV picks the cleanest geometry for picker UIs (saturation/value\n// square, hue ring). External interface is hex strings (#RRGGBB or #RRGGBBAA).\n\nexport interface RGB {\n r: number; // 0–255\n g: number; // 0–255\n b: number; // 0–255\n a?: number; // 0–1 (default 1)\n}\n\nexport interface HSV {\n h: number; // 0–360\n s: number; // 0–1\n v: number; // 0–1\n a?: number; // 0–1\n}\n\nexport interface HSL {\n h: number; // 0–360\n s: number; // 0–1\n l: number; // 0–1\n a?: number; // 0–1\n}\n\nexport function clamp01(n: number): number {\n return Math.max(0, Math.min(1, n));\n}\n\nexport function clampHue(h: number): number {\n let v = h % 360;\n if (v < 0) v += 360;\n return v;\n}\n\nexport function clampByte(n: number): number {\n return Math.max(0, Math.min(255, Math.round(n)));\n}\n\n// ───────── hex ↔ rgb ─────────\n\n/** Parse \"#RGB\", \"#RGBA\", \"#RRGGBB\", or \"#RRGGBBAA\". Returns null on invalid. */\nexport function parseHex(input: string | null | undefined): RGB | null {\n if (!input) return null;\n const s = input.trim().replace(/^#/, '');\n let m: string | null = null;\n if (/^[0-9a-fA-F]{3}$/.test(s)) {\n m = s\n .split('')\n .map((c) => c + c)\n .join('');\n } else if (/^[0-9a-fA-F]{4}$/.test(s)) {\n m = s\n .split('')\n .map((c) => c + c)\n .join('');\n } else if (/^[0-9a-fA-F]{6}$/.test(s) || /^[0-9a-fA-F]{8}$/.test(s)) {\n m = s;\n }\n if (!m) return null;\n const r = parseInt(m.slice(0, 2), 16);\n const g = parseInt(m.slice(2, 4), 16);\n const b = parseInt(m.slice(4, 6), 16);\n const a = m.length === 8 ? parseInt(m.slice(6, 8), 16) / 255 : 1;\n return { r, g, b, a };\n}\n\n/** Format RGB → \"#RRGGBB\" (or \"#RRGGBBAA\" if alpha < 1). */\nexport function formatHex(rgb: RGB | null | undefined, options?: { withAlpha?: boolean }): string {\n if (!rgb) return '';\n const r = clampByte(rgb.r).toString(16).padStart(2, '0');\n const g = clampByte(rgb.g).toString(16).padStart(2, '0');\n const b = clampByte(rgb.b).toString(16).padStart(2, '0');\n const includeAlpha = options?.withAlpha ?? (rgb.a !== undefined && rgb.a < 1);\n if (includeAlpha) {\n const a = clampByte((rgb.a ?? 1) * 255)\n .toString(16)\n .padStart(2, '0');\n return `#${r}${g}${b}${a}`;\n }\n return `#${r}${g}${b}`;\n}\n\n// ───────── rgb ↔ hsv ─────────\n\nexport function rgbToHsv({ r, g, b, a = 1 }: RGB): HSV {\n const rn = r / 255;\n const gn = g / 255;\n const bn = b / 255;\n const max = Math.max(rn, gn, bn);\n const min = Math.min(rn, gn, bn);\n const d = max - min;\n let h = 0;\n if (d !== 0) {\n if (max === rn) h = ((gn - bn) / d) % 6;\n else if (max === gn) h = (bn - rn) / d + 2;\n else h = (rn - gn) / d + 4;\n h *= 60;\n if (h < 0) h += 360;\n }\n const s = max === 0 ? 0 : d / max;\n const v = max;\n return { h, s, v, a };\n}\n\nexport function hsvToRgb({ h, s, v, a = 1 }: HSV): RGB {\n const c = v * s;\n const hh = clampHue(h) / 60;\n const x = c * (1 - Math.abs((hh % 2) - 1));\n let r1 = 0;\n let g1 = 0;\n let b1 = 0;\n if (hh >= 0 && hh < 1) [r1, g1, b1] = [c, x, 0];\n else if (hh < 2) [r1, g1, b1] = [x, c, 0];\n else if (hh < 3) [r1, g1, b1] = [0, c, x];\n else if (hh < 4) [r1, g1, b1] = [0, x, c];\n else if (hh < 5) [r1, g1, b1] = [x, 0, c];\n else [r1, g1, b1] = [c, 0, x];\n const m = v - c;\n return {\n r: Math.round((r1 + m) * 255),\n g: Math.round((g1 + m) * 255),\n b: Math.round((b1 + m) * 255),\n a,\n };\n}\n\n// ───────── rgb ↔ hsl ─────────\n\nexport function rgbToHsl({ r, g, b, a = 1 }: RGB): HSL {\n const rn = r / 255;\n const gn = g / 255;\n const bn = b / 255;\n const max = Math.max(rn, gn, bn);\n const min = Math.min(rn, gn, bn);\n const d = max - min;\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n if (d !== 0) {\n s = d / (1 - Math.abs(2 * l - 1));\n if (max === rn) h = ((gn - bn) / d) % 6;\n else if (max === gn) h = (bn - rn) / d + 2;\n else h = (rn - gn) / d + 4;\n h *= 60;\n if (h < 0) h += 360;\n }\n return { h, s, l, a };\n}\n\nexport function hslToRgb({ h, s, l, a = 1 }: HSL): RGB {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const hh = clampHue(h) / 60;\n const x = c * (1 - Math.abs((hh % 2) - 1));\n let r1 = 0;\n let g1 = 0;\n let b1 = 0;\n if (hh >= 0 && hh < 1) [r1, g1, b1] = [c, x, 0];\n else if (hh < 2) [r1, g1, b1] = [x, c, 0];\n else if (hh < 3) [r1, g1, b1] = [0, c, x];\n else if (hh < 4) [r1, g1, b1] = [0, x, c];\n else if (hh < 5) [r1, g1, b1] = [x, 0, c];\n else [r1, g1, b1] = [c, 0, x];\n const m = l - c / 2;\n return {\n r: Math.round((r1 + m) * 255),\n g: Math.round((g1 + m) * 255),\n b: Math.round((b1 + m) * 255),\n a,\n };\n}\n\n// ───────── hex ↔ hsv (most-used composite) ─────────\n\nexport function parseColorToHsv(input: string | null | undefined): HSV | null {\n const rgb = parseHex(input);\n if (!rgb) return null;\n return rgbToHsv(rgb);\n}\n\nexport function hsvToHex(hsv: HSV, options?: { withAlpha?: boolean }): string {\n return formatHex(hsvToRgb(hsv), options);\n}\n\n// ───────── format helpers ─────────\n\nexport function formatRgbString({ r, g, b, a = 1 }: RGB): string {\n if (a < 1) return `rgba(${clampByte(r)}, ${clampByte(g)}, ${clampByte(b)}, ${a.toFixed(2)})`;\n return `rgb(${clampByte(r)}, ${clampByte(g)}, ${clampByte(b)})`;\n}\n\nexport function formatHslString({ h, s, l, a = 1 }: HSL): string {\n const hh = Math.round(clampHue(h));\n const ss = Math.round(s * 100);\n const ll = Math.round(l * 100);\n if (a < 1) return `hsla(${hh}, ${ss}%, ${ll}%, ${a.toFixed(2)})`;\n return `hsl(${hh}, ${ss}%, ${ll}%)`;\n}\n","import {\n forwardRef,\n useEffect,\n useState,\n type FocusEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\nimport { formatHex, parseHex } from '../ColorExtensions';\nimport { ColorSwatch } from '../colorSwatch';\n\nexport interface ColorFieldProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'value' | 'defaultValue' | 'onChange' | 'size'\n >,\n InputBaseVariants {\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (hex: string | null) => void;\n swatchShape?: 'square' | 'circle';\n withAlpha?: boolean;\n}\n\nfunction commitHex(text: string, withAlpha: boolean): string | null {\n const normalised = text.startsWith('#') ? text : `#${text}`;\n const rgb = parseHex(normalised);\n if (!rgb) return null;\n return formatHex(rgb, { withAlpha });\n}\n\nexport const ColorField = forwardRef<HTMLInputElement, ColorFieldProps>(function ColorField(\n {\n value,\n defaultValue,\n onChange,\n swatchShape = 'square',\n withAlpha = false,\n size,\n state,\n className,\n id,\n disabled,\n required,\n onBlur,\n onKeyDown,\n ...rest\n },\n ref,\n) {\n const ctx = useFormControl();\n const [committed, setCommitted] = useControlled<string | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange,\n });\n const [draft, setDraft] = useState<string>(committed ?? '');\n\n // Sync draft to committed value when external `value` changes.\n useEffect(() => {\n setDraft(committed ?? '');\n }, [committed]);\n\n const commit = () => {\n if (!draft) {\n setCommitted(null);\n return;\n }\n const next = commitHex(draft, withAlpha);\n if (next) {\n setCommitted(next);\n setDraft(next);\n } else {\n // Invalid — revert.\n setDraft(committed ?? '');\n }\n };\n\n return (\n <div className=\"relative inline-flex w-full items-stretch\">\n <span className=\"pointer-events-none absolute inset-y-0 left-2 flex items-center\">\n <ColorSwatch color={committed ?? '#00000000'} size=\"sm\" shape={swatchShape} />\n </span>\n <input\n ref={ref}\n type=\"text\"\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 spellCheck={false}\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n onBlur={(e: FocusEvent<HTMLInputElement>) => {\n onBlur?.(e);\n commit();\n }}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === 'Enter') {\n e.preventDefault();\n commit();\n }\n }}\n className={cn(\n inputBaseVariants({ size, state: state ?? (ctx?.isInvalid ? 'invalid' : 'default') }),\n 'pl-9 font-mono uppercase',\n className,\n )}\n {...rest}\n />\n </div>\n );\n});\n","import {\n forwardRef,\n useCallback,\n useRef,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { clamp01, clampHue, hsvToHex, type HSV } from '../ColorExtensions';\n\nexport type ColorChannel = 'hue' | 'saturation' | 'value' | 'alpha';\n\nexport interface ColorSliderProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue' | 'color'> {\n channel?: ColorChannel;\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n color?: HSV;\n step?: number;\n disabled?: boolean;\n 'aria-label'?: string;\n}\n\nfunction channelMax(channel: ColorChannel): number {\n return channel === 'hue' ? 360 : 1;\n}\n\nfunction defaultStep(channel: ColorChannel): number {\n return channel === 'hue' ? 1 : 0.01;\n}\n\nfunction buildGradient(channel: ColorChannel, color: HSV | undefined): string {\n if (channel === 'hue') {\n return 'linear-gradient(to right, hsl(0,100%,50%), hsl(60,100%,50%), hsl(120,100%,50%), hsl(180,100%,50%), hsl(240,100%,50%), hsl(300,100%,50%), hsl(360,100%,50%))';\n }\n const ctx: HSV = color ?? { h: 0, s: 1, v: 1 };\n if (channel === 'saturation') {\n const start = hsvToHex({ h: ctx.h, s: 0, v: ctx.v });\n const end = hsvToHex({ h: ctx.h, s: 1, v: ctx.v });\n return `linear-gradient(to right, ${start}, ${end})`;\n }\n if (channel === 'value') {\n const end = hsvToHex({ h: ctx.h, s: ctx.s, v: 1 });\n return `linear-gradient(to right, #000000, ${end})`;\n }\n // alpha\n const opaque = hsvToHex({ h: ctx.h, s: ctx.s, v: ctx.v });\n return `linear-gradient(to right, transparent, ${opaque})`;\n}\n\nconst CHECKERBOARD: CSSProperties = {\n backgroundImage:\n 'linear-gradient(45deg, #ddd 25%, transparent 25%), linear-gradient(-45deg, #ddd 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #ddd 75%), linear-gradient(-45deg, transparent 75%, #ddd 75%)',\n backgroundSize: '8px 8px',\n backgroundPosition: '0 0, 0 4px, 4px -4px, -4px 0px',\n};\n\nexport const ColorSlider = forwardRef<HTMLDivElement, ColorSliderProps>(function ColorSlider(\n {\n channel = 'hue',\n value,\n defaultValue,\n onChange,\n color,\n step,\n disabled = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n },\n forwardedRef,\n) {\n const max = channelMax(channel);\n const stepValue = step ?? defaultStep(channel);\n const [val, setVal] = useControlled<number>({\n controlled: value,\n default: defaultValue ?? 0,\n onChange,\n });\n\n const trackRef = useRef<HTMLDivElement | null>(null);\n\n const updateFromClientX = useCallback(\n (clientX: number) => {\n const track = trackRef.current;\n if (!track) return;\n const rect = track.getBoundingClientRect();\n const ratio = clamp01((clientX - rect.left) / rect.width);\n const next = ratio * max;\n setVal(channel === 'hue' ? clampHue(next) : clamp01(next));\n },\n [channel, max, setVal],\n );\n\n const handlePointerDown = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n (e.target as Element).setPointerCapture?.(e.pointerId);\n updateFromClientX(e.clientX);\n },\n [disabled, updateFromClientX],\n );\n\n const handlePointerMove = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n if (e.buttons !== 1) return;\n updateFromClientX(e.clientX);\n },\n [disabled, updateFromClientX],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n let next = val;\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n next = val + stepValue;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n next = val - stepValue;\n break;\n case 'PageUp':\n next = val + stepValue * 10;\n break;\n case 'PageDown':\n next = val - stepValue * 10;\n break;\n case 'Home':\n next = 0;\n break;\n case 'End':\n next = max;\n break;\n default:\n return;\n }\n e.preventDefault();\n setVal(channel === 'hue' ? clampHue(next) : clamp01(next));\n },\n [channel, disabled, max, setVal, stepValue, val],\n );\n\n const ratio = channel === 'hue' ? clampHue(val) / 360 : clamp01(val);\n const gradient = buildGradient(channel, color);\n const trackStyle: CSSProperties = {\n backgroundImage: gradient,\n ...(channel === 'alpha' ? { backgroundColor: 'transparent' } : null),\n };\n\n return (\n <div\n ref={forwardedRef}\n className={cn('relative inline-flex w-full select-none items-center', className)}\n {...rest}\n >\n {channel === 'alpha' && (\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 rounded-full\"\n style={CHECKERBOARD}\n />\n )}\n <div\n ref={composeRefs(trackRef)}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-label={ariaLabel ?? `${channel} slider`}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={Math.round(val * 100) / 100}\n aria-disabled={disabled || undefined}\n aria-orientation=\"horizontal\"\n data-disabled={disabled ? '' : undefined}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onKeyDown={handleKeyDown}\n style={trackStyle}\n className={cn(\n 'relative h-3 w-full rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n disabled && 'pointer-events-none opacity-50',\n )}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute top-1/2 h-4 w-4 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white bg-transparent shadow-md ring-1 ring-black/20\"\n style={{ left: `${ratio * 100}%` }}\n />\n </div>\n </div>\n );\n});\n","import {\n forwardRef,\n useCallback,\n useRef,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { clamp01, hsvToHex } from '../ColorExtensions';\n\nexport interface ColorAreaChange {\n saturation: number;\n value: number;\n}\n\nexport interface ColorAreaProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n hue?: number;\n saturation?: number;\n defaultSaturation?: number;\n value?: number;\n defaultValue?: number;\n onChange?: (next: ColorAreaChange) => void;\n step?: number;\n disabled?: boolean;\n 'aria-label'?: string;\n}\n\nexport const ColorArea = forwardRef<HTMLDivElement, ColorAreaProps>(function ColorArea(\n {\n hue = 0,\n saturation,\n defaultSaturation,\n value,\n defaultValue,\n onChange,\n step = 0.01,\n disabled = false,\n className,\n 'aria-label': ariaLabel = 'Saturation and value',\n ...rest\n },\n forwardedRef,\n) {\n const [s, setS] = useControlled<number>({\n controlled: saturation,\n default: defaultSaturation ?? 1,\n });\n const [v, setV] = useControlled<number>({\n controlled: value,\n default: defaultValue ?? 1,\n });\n\n const trackRef = useRef<HTMLDivElement | null>(null);\n\n const emit = useCallback(\n (nextS: number, nextV: number) => {\n const cs = clamp01(nextS);\n const cv = clamp01(nextV);\n setS(cs);\n setV(cv);\n onChange?.({ saturation: cs, value: cv });\n },\n [onChange, setS, setV],\n );\n\n const updateFromClient = useCallback(\n (clientX: number, clientY: number) => {\n const track = trackRef.current;\n if (!track) return;\n const rect = track.getBoundingClientRect();\n const xRatio = clamp01((clientX - rect.left) / rect.width);\n const yRatio = clamp01((clientY - rect.top) / rect.height);\n emit(xRatio, 1 - yRatio);\n },\n [emit],\n );\n\n const handlePointerDown = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n (e.target as Element).setPointerCapture?.(e.pointerId);\n updateFromClient(e.clientX, e.clientY);\n },\n [disabled, updateFromClient],\n );\n\n const handlePointerMove = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled || e.buttons !== 1) return;\n updateFromClient(e.clientX, e.clientY);\n },\n [disabled, updateFromClient],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n const big = step * 10;\n let nextS = s;\n let nextV = v;\n switch (e.key) {\n case 'ArrowRight':\n nextS = s + step;\n break;\n case 'ArrowLeft':\n nextS = s - step;\n break;\n case 'ArrowUp':\n nextV = v + step;\n break;\n case 'ArrowDown':\n nextV = v - step;\n break;\n case 'PageUp':\n nextV = v + big;\n break;\n case 'PageDown':\n nextV = v - big;\n break;\n case 'Home':\n nextS = 0;\n nextV = 1;\n break;\n case 'End':\n nextS = 1;\n nextV = 0;\n break;\n default:\n return;\n }\n e.preventDefault();\n emit(nextS, nextV);\n },\n [disabled, emit, s, step, v],\n );\n\n const baseColor = `hsl(${hue}, 100%, 50%)`;\n const trackStyle: CSSProperties = {\n backgroundImage: `linear-gradient(to bottom, transparent, #000), linear-gradient(to right, #fff, transparent)`,\n backgroundColor: baseColor,\n };\n\n const thumbColor = hsvToHex({ h: hue, s, v });\n const thumbStyle: CSSProperties = {\n left: `${s * 100}%`,\n top: `${(1 - v) * 100}%`,\n backgroundColor: thumbColor,\n };\n\n return (\n <div\n ref={composeRefs(forwardedRef, trackRef)}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-label={ariaLabel}\n aria-valuetext={`saturation ${(s * 100).toFixed(0)}%, value ${(v * 100).toFixed(0)}%`}\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? '' : undefined}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onKeyDown={handleKeyDown}\n style={trackStyle}\n className={cn(\n 'relative aspect-square w-full select-none rounded-md border border-border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n {...rest}\n >\n <div\n aria-hidden=\"true\"\n style={thumbStyle}\n className=\"absolute h-4 w-4 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow-md ring-1 ring-black/20\"\n />\n </div>\n );\n});\n","import {\n forwardRef,\n useCallback,\n useRef,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { clampHue } from '../ColorExtensions';\n\nexport interface ColorWheelProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n value?: number;\n defaultValue?: number;\n onChange?: (hue: number) => void;\n size?: number;\n thickness?: number;\n step?: number;\n disabled?: boolean;\n 'aria-label'?: string;\n}\n\nfunction angleFromCenter(clientX: number, clientY: number, rect: DOMRect): number {\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n const dx = clientX - cx;\n const dy = clientY - cy;\n const angle = (Math.atan2(dx, -dy) * 180) / Math.PI;\n return (angle + 360) % 360;\n}\n\nexport const ColorWheel = forwardRef<HTMLDivElement, ColorWheelProps>(function ColorWheel(\n {\n value,\n defaultValue,\n onChange,\n size = 200,\n thickness = 30,\n step = 1,\n disabled = false,\n className,\n 'aria-label': ariaLabel = 'Hue',\n ...rest\n },\n forwardedRef,\n) {\n const [hue, setHue] = useControlled<number>({\n controlled: value,\n default: defaultValue ?? 0,\n onChange,\n });\n const trackRef = useRef<HTMLDivElement | null>(null);\n\n const updateFromClient = useCallback(\n (clientX: number, clientY: number) => {\n const track = trackRef.current;\n if (!track) return;\n setHue(clampHue(angleFromCenter(clientX, clientY, track.getBoundingClientRect())));\n },\n [setHue],\n );\n\n const handlePointerDown = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n (e.target as Element).setPointerCapture?.(e.pointerId);\n updateFromClient(e.clientX, e.clientY);\n },\n [disabled, updateFromClient],\n );\n\n const handlePointerMove = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled || e.buttons !== 1) return;\n updateFromClient(e.clientX, e.clientY);\n },\n [disabled, updateFromClient],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n let next = hue;\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n next = hue + step;\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n next = hue - step;\n break;\n case 'PageUp':\n next = hue + step * 10;\n break;\n case 'PageDown':\n next = hue - step * 10;\n break;\n case 'Home':\n next = 0;\n break;\n case 'End':\n next = 359;\n break;\n default:\n return;\n }\n e.preventDefault();\n setHue(clampHue(next));\n },\n [disabled, hue, setHue, step],\n );\n\n const radius = (size - thickness) / 2;\n const angleRad = (hue * Math.PI) / 180;\n const thumbX = size / 2 + radius * Math.sin(angleRad);\n const thumbY = size / 2 - radius * Math.cos(angleRad);\n\n const wheelStyle: CSSProperties = {\n width: size,\n height: size,\n background: 'conic-gradient(from 0deg, hsl(0,100%,50%), hsl(60,100%,50%), hsl(120,100%,50%), hsl(180,100%,50%), hsl(240,100%,50%), hsl(300,100%,50%), hsl(360,100%,50%))',\n WebkitMaskImage: `radial-gradient(circle, transparent ${(radius - thickness / 2)}px, black ${(radius - thickness / 2 + 1)}px, black ${(radius + thickness / 2)}px, transparent ${(radius + thickness / 2 + 1)}px)`,\n maskImage: `radial-gradient(circle, transparent ${(radius - thickness / 2)}px, black ${(radius - thickness / 2 + 1)}px, black ${(radius + thickness / 2)}px, transparent ${(radius + thickness / 2 + 1)}px)`,\n };\n\n return (\n <div\n ref={composeRefs(forwardedRef, trackRef)}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-label={ariaLabel}\n aria-valuemin={0}\n aria-valuemax={360}\n aria-valuenow={Math.round(hue)}\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? '' : undefined}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onKeyDown={handleKeyDown}\n style={wheelStyle}\n className={cn(\n 'relative inline-block select-none rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n {...rest}\n >\n <div\n aria-hidden=\"true\"\n style={{\n left: thumbX,\n top: thumbY,\n backgroundColor: `hsl(${hue}, 100%, 50%)`,\n }}\n className=\"pointer-events-none absolute h-5 w-5 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow-md ring-1 ring-black/30\"\n />\n </div>\n );\n});\n","import { type HTMLAttributes, type KeyboardEvent } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { RovingFocusGroup, useRovingFocusItem } from '../../primitives';\nimport { ColorSwatch, type ColorSwatchVariants } from '../colorSwatch';\n\nexport interface ColorSwatchPickerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n colors: string[];\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (color: string) => void;\n swatchSize?: ColorSwatchVariants['size'];\n swatchShape?: ColorSwatchVariants['shape'];\n disabled?: boolean;\n}\n\ninterface ItemProps {\n color: string;\n selected: boolean;\n disabled: boolean;\n size?: ColorSwatchVariants['size'];\n shape?: ColorSwatchVariants['shape'];\n onSelect: (color: string) => void;\n}\n\nfunction ColorSwatchItem({ color, selected, disabled, size, shape, onSelect }: ItemProps) {\n const roving = useRovingFocusItem();\n return (\n <ColorSwatch\n ref={roving.ref as never}\n color={color}\n size={size}\n shape={shape}\n selected={selected}\n disabled={disabled}\n tabIndex={roving.tabIndex}\n onClick={() => onSelect(color)}\n onKeyDown={(e: KeyboardEvent<HTMLButtonElement>) => {\n roving.onKeyDown(e);\n if (e.defaultPrevented) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect(color);\n }\n }}\n onFocus={roving.onFocus}\n data-roving-focus-item\n aria-label={color}\n />\n );\n}\n\nexport function ColorSwatchPicker({\n colors,\n value,\n defaultValue,\n onChange,\n swatchSize = 'md',\n swatchShape = 'square',\n disabled = false,\n className,\n ...rest\n}: ColorSwatchPickerProps) {\n const [selected, setSelected] = useControlled<string | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange: onChange as ((v: string | null) => void) | undefined,\n });\n\n return (\n <RovingFocusGroup\n orientation=\"both\"\n loop\n className={cn('flex flex-wrap gap-1.5', className)}\n {...rest}\n >\n {colors.map((c) => (\n <ColorSwatchItem\n key={c}\n color={c}\n selected={selected === c}\n disabled={disabled}\n size={swatchSize}\n shape={swatchShape}\n onSelect={(color) => setSelected(color)}\n />\n ))}\n </RovingFocusGroup>\n );\n}\n","import { forwardRef, useEffect, useState } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays';\nimport {\n hsvToHex,\n parseColorToHsv,\n type HSV,\n} from '../ColorExtensions';\nimport { ColorSwatch, type ColorSwatchVariants } from '../colorSwatch';\nimport { ColorArea } from '../colorArea';\nimport { ColorSlider } from '../colorSlider';\nimport { ColorField } from '../colorField';\nimport { ColorSwatchPicker } from '../colorSwatchPicker';\n\nexport interface ColorPickerProps {\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (hex: string) => void;\n withAlpha?: boolean;\n presets?: string[];\n triggerSize?: ColorSwatchVariants['size'];\n disabled?: boolean;\n name?: string;\n className?: string;\n 'aria-label'?: string;\n}\n\nconst FALLBACK_HSV: HSV = { h: 217, s: 0.91, v: 0.96, a: 1 };\n\nexport const ColorPicker = forwardRef<HTMLButtonElement, ColorPickerProps>(function ColorPicker(\n {\n value,\n defaultValue = '#3b82f6',\n onChange,\n withAlpha = false,\n presets,\n triggerSize = 'md',\n disabled = false,\n name,\n className,\n 'aria-label': ariaLabel = 'Pick a color',\n },\n ref,\n) {\n const [hex, setHex] = useControlled<string | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange: onChange as ((v: string | null) => void) | undefined,\n });\n\n // Internal HSV state (kept in sync with hex). HSV preserves picker geometry\n // when the user moves to a fully-desaturated value (otherwise hue collapses).\n const [hsv, setHsvState] = useState<HSV>(() => parseColorToHsv(hex) ?? FALLBACK_HSV);\n\n useEffect(() => {\n if (!hex) return;\n const parsed = parseColorToHsv(hex);\n if (!parsed) return;\n // Only update internal HSV if the *committed* hex differs from what our\n // HSV currently produces — avoids hue collapsing when SV passes through 0.\n const currentHex = hsvToHex(hsv, { withAlpha });\n if (currentHex.toLowerCase() !== hex.toLowerCase()) {\n setHsvState({ ...parsed, a: hsv.a });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hex, withAlpha]);\n\n const updateHsv = (next: HSV) => {\n setHsvState(next);\n setHex(hsvToHex(next, { withAlpha }));\n };\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n aria-label={ariaLabel}\n disabled={disabled}\n className={cn(\n 'inline-flex items-center gap-2 rounded-md border border-border bg-background px-2 py-1 text-sm transition-colors hover:border-border-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60',\n className,\n )}\n >\n <ColorSwatch color={hex ?? '#00000000'} size={triggerSize} />\n <span className=\"font-mono uppercase\">{hex ?? '—'}</span>\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"flex w-64 flex-col gap-3\">\n <ColorArea\n hue={hsv.h}\n saturation={hsv.s}\n value={hsv.v}\n onChange={({ saturation, value }) => updateHsv({ ...hsv, s: saturation, v: value })}\n />\n <ColorSlider\n channel=\"hue\"\n value={hsv.h}\n onChange={(h) => updateHsv({ ...hsv, h })}\n aria-label=\"Hue\"\n />\n {withAlpha && (\n <ColorSlider\n channel=\"alpha\"\n value={hsv.a ?? 1}\n color={hsv}\n onChange={(a) => updateHsv({ ...hsv, a })}\n aria-label=\"Alpha\"\n />\n )}\n <ColorField\n value={hex}\n onChange={(next) => setHex(next)}\n withAlpha={withAlpha}\n />\n {presets && presets.length > 0 && (\n <ColorSwatchPicker\n colors={presets}\n value={hex}\n onChange={setHex}\n swatchSize=\"sm\"\n />\n )}\n </PopoverContent>\n {name && <input type=\"hidden\" name={name} value={hex ?? ''} />}\n </Popover>\n );\n});\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Check } from 'lucide-react';\nimport { cn, dataAttr } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { RovingFocusGroup, useRovingFocusItem } from '../../primitives';\n\ninterface StepperContextValue {\n value: string;\n setValue: (value: string) => void;\n orientation: 'horizontal' | 'vertical';\n baseId: string;\n registerStep: (value: string) => void;\n unregisterStep: (value: string) => void;\n stepsRef: React.MutableRefObject<string[]>;\n}\n\nconst StepperContext = createContext<StepperContextValue | null>(null);\n\nfunction useStepperContext() {\n const ctx = useContext(StepperContext);\n if (!ctx) throw new Error('Stepper.* must be used inside <Stepper>');\n return ctx;\n}\n\nexport interface StepperProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue'> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n orientation?: 'horizontal' | 'vertical';\n}\n\nexport const Stepper = forwardRef<HTMLDivElement, StepperProps>(function Stepper(\n {\n value,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n className,\n children,\n ...rest\n },\n ref,\n) {\n const [active, setActive] = useControlled<string>({\n controlled: value,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const baseId = useId();\n const stepsRef = useRef<string[]>([]);\n\n const registerStep = useCallback((v: string) => {\n if (!stepsRef.current.includes(v)) stepsRef.current.push(v);\n }, []);\n const unregisterStep = useCallback((v: string) => {\n stepsRef.current = stepsRef.current.filter((x) => x !== v);\n }, []);\n\n const ctx = useMemo<StepperContextValue>(\n () => ({\n value: active,\n setValue: setActive,\n orientation,\n baseId,\n registerStep,\n unregisterStep,\n stepsRef,\n }),\n [active, setActive, orientation, baseId, registerStep, unregisterStep],\n );\n\n return (\n <StepperContext.Provider value={ctx}>\n <div\n ref={ref}\n data-orientation={orientation}\n className={cn(\n orientation === 'vertical' ? 'flex gap-4' : 'flex flex-col gap-4',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </StepperContext.Provider>\n );\n});\n\nexport interface StepperListProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const StepperList = forwardRef<HTMLDivElement, StepperListProps>(function StepperList(\n { className, children, ...rest },\n ref,\n) {\n const ctx = useStepperContext();\n return (\n <RovingFocusGroup\n ref={ref as never}\n orientation={ctx.orientation}\n role=\"tablist\"\n aria-orientation={ctx.orientation}\n data-orientation={ctx.orientation}\n className={cn(\n 'flex',\n ctx.orientation === 'vertical' ? 'flex-col gap-4' : 'flex-row items-center gap-2',\n className,\n )}\n {...rest}\n >\n {children}\n </RovingFocusGroup>\n );\n});\n\nexport interface StepperStepProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {\n value: string;\n description?: ReactNode;\n disabled?: boolean;\n children: ReactNode;\n}\n\nexport const StepperStep = forwardRef<HTMLButtonElement, StepperStepProps>(function StepperStep(\n { value, description, disabled = false, className, onClick, children, ...rest },\n ref,\n) {\n const ctx = useStepperContext();\n const roving = useRovingFocusItem();\n\n useEffect(() => {\n ctx.registerStep(value);\n return () => ctx.unregisterStep(value);\n }, [ctx, value]);\n\n const ordered = ctx.stepsRef.current;\n const idx = ordered.indexOf(value);\n const activeIdx = ordered.indexOf(ctx.value);\n const status: 'pending' | 'active' | 'complete' =\n idx < activeIdx ? 'complete' : idx === activeIdx ? 'active' : 'pending';\n\n const stepId = `${ctx.baseId}-step-${value}`;\n const panelId = `${ctx.baseId}-panel-${value}`;\n const stepNumber = idx + 1;\n\n return (\n <div className=\"flex flex-1 items-center gap-2\">\n <button\n ref={(node) => {\n roving.ref(node);\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n id={stepId}\n type=\"button\"\n role=\"tab\"\n aria-selected={status === 'active'}\n aria-controls={panelId}\n aria-current={status === 'active' ? 'step' : undefined}\n data-status={status}\n data-disabled={dataAttr(disabled)}\n tabIndex={roving.tabIndex}\n disabled={disabled}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n ctx.setValue(value);\n }}\n onFocus={roving.onFocus}\n onKeyDown={roving.onKeyDown}\n className={cn(\n 'group flex items-center gap-2 text-left text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n {...rest}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n 'grid h-7 w-7 shrink-0 place-items-center rounded-full border-2 text-xs font-semibold transition-colors',\n status === 'pending' && 'border-border text-muted-foreground',\n status === 'active' && 'border-primary bg-primary text-primary-foreground',\n status === 'complete' && 'border-primary bg-primary text-primary-foreground',\n )}\n >\n {status === 'complete' ? <Check className=\"h-4 w-4\" /> : stepNumber}\n </span>\n <span className=\"flex flex-col\">\n <span\n className={cn(\n 'font-medium',\n status === 'pending' ? 'text-muted-foreground' : 'text-foreground',\n )}\n >\n {children}\n </span>\n {description && (\n <span className=\"text-xs text-muted-foreground\">{description}</span>\n )}\n </span>\n </button>\n {ctx.orientation === 'horizontal' && idx < ordered.length - 1 && (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'h-px flex-1 transition-colors',\n status === 'pending' ? 'bg-border' : 'bg-primary',\n )}\n />\n )}\n </div>\n );\n});\n\nexport interface StepperPanelProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n children: ReactNode;\n}\n\nexport const StepperPanel = forwardRef<HTMLDivElement, StepperPanelProps>(function StepperPanel(\n { value, className, children, ...rest },\n ref,\n) {\n const ctx = useStepperContext();\n if (ctx.value !== value) return null;\n const stepId = `${ctx.baseId}-step-${value}`;\n const panelId = `${ctx.baseId}-panel-${value}`;\n return (\n <div\n ref={ref}\n id={panelId}\n role=\"tabpanel\"\n aria-labelledby={stepId}\n tabIndex={0}\n className={cn('flex-1 outline-none', className)}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\ntype StepperComponent = typeof Stepper & {\n List: typeof StepperList;\n Step: typeof StepperStep;\n Panel: typeof StepperPanel;\n};\n\n(Stepper as StepperComponent).List = StepperList;\n(Stepper as StepperComponent).Step = StepperStep;\n(Stepper as StepperComponent).Panel = StepperPanel;\n\nexport default Stepper as StepperComponent;\n","import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Tag, type TagVariants } from '../../display/tag';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\nexport interface TagsInputProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'value' | 'defaultValue' | 'onChange' | 'size'\n >,\n InputBaseVariants {\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (tags: string[]) => void;\n inputValue?: string;\n onInputChange?: (input: string) => void;\n /** Characters that commit the current input. Enter and Tab always do. */\n delimiters?: string[];\n /** Predicate gating committed tags. Default: non-empty after trim. */\n validate?: (tag: string) => boolean;\n allowDuplicates?: boolean;\n max?: number;\n invalid?: boolean;\n /** Hidden input emits comma-joined value. */\n name?: string;\n tagVariant?: TagVariants['variant'];\n}\n\n/**\n * Free-form tag entry. Type → Enter/comma/Tab commits. Backspace at empty\n * input removes the last tag. Renders chips via `display/Tag`.\n */\nexport const TagsInput = forwardRef<HTMLInputElement, TagsInputProps>(function TagsInput(\n {\n value,\n defaultValue,\n onValueChange,\n inputValue,\n onInputChange,\n placeholder = 'Add tag…',\n delimiters = [','],\n validate = (t) => t.trim().length > 0,\n allowDuplicates = false,\n max,\n invalid,\n disabled,\n readOnly,\n name,\n tagVariant = 'neutral',\n size,\n className,\n onKeyDown,\n onBlur,\n ...rest\n },\n forwardedRef,\n) {\n const [tags, setTags] = useControlled({\n controlled: value,\n default: defaultValue ?? [],\n onChange: onValueChange,\n });\n const [text, setText] = useControlled({\n controlled: inputValue,\n default: '',\n onChange: onInputChange,\n });\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [pendingDelete, setPendingDelete] = useState(false);\n const state = invalid ? 'invalid' : 'default';\n\n const commit = useCallback(\n (raw: string) => {\n const trimmed = raw.trim();\n if (!trimmed || !validate(trimmed)) return;\n if (!allowDuplicates && tags.includes(trimmed)) return;\n if (max != null && tags.length >= max) return;\n setTags([...tags, trimmed]);\n setText('');\n },\n [tags, validate, allowDuplicates, max, setTags, setText],\n );\n\n const removeAt = useCallback(\n (idx: number) => {\n setTags(tags.filter((_, i) => i !== idx));\n },\n [tags, setTags],\n );\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled || readOnly) return;\n if (e.key === 'Enter' || (e.key === 'Tab' && text)) {\n if (text) {\n e.preventDefault();\n commit(text);\n setPendingDelete(false);\n }\n return;\n }\n if (delimiters.includes(e.key)) {\n e.preventDefault();\n commit(text);\n setPendingDelete(false);\n return;\n }\n if (e.key === 'Backspace' && !text && tags.length > 0) {\n if (pendingDelete) {\n e.preventDefault();\n removeAt(tags.length - 1);\n setPendingDelete(false);\n } else {\n setPendingDelete(true);\n }\n return;\n }\n setPendingDelete(false);\n };\n\n const handleContainerClick = (e: MouseEvent<HTMLDivElement>) => {\n if (e.target === e.currentTarget) inputRef.current?.focus();\n };\n\n return (\n <div\n role=\"group\"\n onClick={handleContainerClick}\n data-disabled={disabled || undefined}\n data-readonly={readOnly || undefined}\n data-invalid={invalid || undefined}\n className={cn(\n inputBaseVariants({ size, state }),\n 'h-auto min-h-10 flex-wrap items-center gap-1.5 py-1.5',\n disabled && 'cursor-not-allowed opacity-60',\n className,\n )}\n >\n {tags.map((t, i) => (\n <Tag\n key={`${t}-${i}`}\n variant={tagVariant}\n data-pending-delete={pendingDelete && i === tags.length - 1 ? '' : undefined}\n onClose={!disabled && !readOnly ? () => removeAt(i) : undefined}\n className={cn(pendingDelete && i === tags.length - 1 && 'ring-1 ring-ring')}\n >\n {t}\n </Tag>\n ))}\n <input\n {...rest}\n ref={composeRefs(forwardedRef, inputRef)}\n type=\"text\"\n value={text}\n placeholder={tags.length === 0 ? placeholder : undefined}\n disabled={disabled}\n readOnly={readOnly}\n aria-invalid={invalid || undefined}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={(e) => {\n onBlur?.(e);\n if (text) commit(text);\n setPendingDelete(false);\n }}\n className=\"min-w-[6rem] flex-1 border-0 bg-transparent p-0 text-sm outline-none placeholder:text-subtle-foreground disabled:cursor-not-allowed\"\n />\n {name && <input type=\"hidden\" name={name} value={tags.join(',')} />}\n </div>\n );\n});\nTagsInput.displayName = 'TagsInput';\n","import {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n type DragEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { UploadCloud } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\nexport type FileRejectionReason = 'type' | 'size' | 'count';\n\nexport interface FileRejection {\n file: File;\n reason: FileRejectionReason;\n}\n\nexport interface FileUploadProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'value' | 'onChange' | 'children' | 'size'\n > {\n /** Per-file byte cap. Files exceeding this drop into `rejected`. */\n maxSize?: number;\n /** Cap total accepted files (multiple mode). Excess go to `rejected`. */\n maxFiles?: number;\n onFilesChange?: (accepted: File[], rejected: FileRejection[]) => void;\n invalid?: boolean;\n label?: ReactNode;\n hint?: ReactNode;\n children?: ReactNode;\n}\n\nfunction matchesAccept(file: File, accept?: string): boolean {\n if (!accept) return true;\n const tokens = accept.split(',').map((t) => t.trim().toLowerCase()).filter(Boolean);\n if (tokens.length === 0) return true;\n const fileType = file.type.toLowerCase();\n const fileName = file.name.toLowerCase();\n return tokens.some((t) => {\n if (t.startsWith('.')) return fileName.endsWith(t);\n if (t.endsWith('/*')) return fileType.startsWith(t.slice(0, -1));\n return fileType === t;\n });\n}\n\n/**\n * Drag-drop file zone with click-to-pick fallback. Validates against\n * `accept`, `maxSize`, and `maxFiles`. Emits accepted + rejected lists via\n * `onFilesChange`. The zone itself is a `role=\"button\"` — Enter/Space opens\n * the native file picker.\n */\nexport const FileUpload = forwardRef<HTMLInputElement, FileUploadProps>(function FileUpload(\n {\n accept,\n multiple = false,\n maxSize,\n maxFiles,\n onFilesChange,\n disabled,\n invalid,\n label = 'Drop files here, or click to browse',\n hint,\n children,\n className,\n name,\n ...rest\n },\n forwardedRef,\n) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement);\n const dragCounter = useRef(0);\n const [dragState, setDragState] = useState<'idle' | 'over' | 'reject'>('idle');\n\n const partition = useCallback(\n (files: FileList | File[]): [File[], FileRejection[]] => {\n const accepted: File[] = [];\n const rejected: FileRejection[] = [];\n const arr = Array.from(files);\n for (const f of arr) {\n if (!matchesAccept(f, accept)) {\n rejected.push({ file: f, reason: 'type' });\n continue;\n }\n if (maxSize != null && f.size > maxSize) {\n rejected.push({ file: f, reason: 'size' });\n continue;\n }\n accepted.push(f);\n }\n if (maxFiles != null && accepted.length > maxFiles) {\n const overflow = accepted.splice(maxFiles);\n for (const f of overflow) rejected.push({ file: f, reason: 'count' });\n }\n return [accepted, rejected];\n },\n [accept, maxSize, maxFiles],\n );\n\n const openPicker = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleDragEnter = (e: DragEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n dragCounter.current += 1;\n const items = e.dataTransfer?.items;\n let reject = false;\n if (items && (accept || maxSize)) {\n // We can only inspect type at dragenter — size is not exposed pre-drop.\n if (accept) {\n const tokens = accept.split(',').map((t) => t.trim().toLowerCase()).filter(Boolean);\n for (let i = 0; i < items.length; i++) {\n const it = items[i];\n if (!it || it.kind !== 'file') continue;\n const t = it.type.toLowerCase();\n const ok = tokens.some((tk) => {\n if (tk.startsWith('.')) return false; // can't check extension here\n if (tk.endsWith('/*')) return t.startsWith(tk.slice(0, -1));\n return t === tk;\n });\n if (!ok) {\n reject = true;\n break;\n }\n }\n }\n }\n setDragState(reject ? 'reject' : 'over');\n };\n\n const handleDragOver = (e: DragEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n e.dataTransfer.dropEffect = 'copy';\n };\n\n const handleDragLeave = (e: DragEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n dragCounter.current -= 1;\n if (dragCounter.current <= 0) {\n dragCounter.current = 0;\n setDragState('idle');\n }\n };\n\n const handleDrop = (e: DragEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n dragCounter.current = 0;\n setDragState('idle');\n const files = e.dataTransfer?.files;\n if (!files || files.length === 0) return;\n const [accepted, rejected] = partition(files);\n onFilesChange?.(accepted, rejected);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n openPicker();\n }\n };\n\n const showError = invalid || dragState === 'reject';\n\n return (\n <div className={cn('flex flex-col gap-3', className)}>\n <div\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n data-drag-state={dragState}\n data-invalid={showError || undefined}\n onClick={openPicker}\n onKeyDown={handleKeyDown}\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n 'flex flex-col items-center justify-center gap-2 rounded-md border-2 border-dashed border-input bg-background px-6 py-10 text-center text-sm text-muted-foreground transition-colors',\n 'hover:border-border-strong hover:bg-muted/40',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n dragState === 'over' && 'border-primary bg-primary-soft/30 text-foreground',\n showError && 'border-destructive bg-destructive-soft/30 text-destructive',\n disabled && 'cursor-not-allowed opacity-60 hover:border-input hover:bg-background',\n )}\n >\n <Icon\n icon={UploadCloud}\n size={28}\n className={cn(\n 'text-muted-foreground',\n dragState === 'over' && 'text-primary',\n showError && 'text-destructive',\n )}\n />\n <div className=\"font-medium text-foreground\">{label}</div>\n {hint && <div className=\"text-xs\">{hint}</div>}\n <input\n {...rest}\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n name={name}\n className=\"sr-only\"\n onChange={(e) => {\n const files = e.target.files;\n if (!files || files.length === 0) return;\n const [accepted, rejected] = partition(files);\n onFilesChange?.(accepted, rejected);\n // reset so picking the same file again still fires\n e.target.value = '';\n }}\n />\n </div>\n {children}\n </div>\n );\n});\nFileUpload.displayName = 'FileUpload';\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { Check, X } from 'lucide-react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Icon } from '../../icons';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\ninterface EditableContextValue {\n value: string;\n draft: string;\n setDraft: (v: string) => void;\n editing: boolean;\n setEditing: (open: boolean) => void;\n submit: () => void;\n cancel: () => void;\n placeholder: string;\n disabled: boolean;\n readOnly: boolean;\n submitOnBlur: boolean;\n submitOnEnter: boolean;\n cancelOnEscape: boolean;\n inputRef: React.MutableRefObject<HTMLInputElement | null>;\n}\n\nconst EditableContext = createContext<EditableContextValue | null>(null);\n\nfunction useEditableContext() {\n const ctx = useContext(EditableContext);\n if (!ctx) throw new Error('Editable.* must be used inside <Editable>');\n return ctx;\n}\n\nexport interface EditableProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n editing?: boolean;\n defaultEditing?: boolean;\n onEditingChange?: (editing: boolean) => void;\n placeholder?: string;\n submitOnBlur?: boolean;\n submitOnEnter?: boolean;\n cancelOnEscape?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n name?: string;\n className?: string;\n children: ReactNode;\n}\n\nexport function Editable({\n value: valueProp,\n defaultValue,\n onValueChange,\n editing: editingProp,\n defaultEditing = false,\n onEditingChange,\n placeholder = 'Click to edit',\n submitOnBlur = true,\n submitOnEnter = true,\n cancelOnEscape = true,\n disabled = false,\n readOnly = false,\n name,\n className,\n children,\n}: EditableProps) {\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const [editing, setEditing] = useControlled({\n controlled: editingProp,\n default: defaultEditing,\n onChange: onEditingChange,\n });\n const [draft, setDraft] = useState(value);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n // Sync draft when entering edit mode or when committed value changes externally.\n useEffect(() => {\n if (editing) setDraft(value);\n }, [editing, value]);\n\n const submit = useCallback(() => {\n setValue(draft);\n setEditing(false);\n }, [draft, setValue, setEditing]);\n\n const cancel = useCallback(() => {\n setDraft(value);\n setEditing(false);\n }, [value, setEditing]);\n\n const ctx = useMemo<EditableContextValue>(\n () => ({\n value,\n draft,\n setDraft,\n editing,\n setEditing,\n submit,\n cancel,\n placeholder,\n disabled,\n readOnly,\n submitOnBlur,\n submitOnEnter,\n cancelOnEscape,\n inputRef,\n }),\n [\n value,\n draft,\n editing,\n setEditing,\n submit,\n cancel,\n placeholder,\n disabled,\n readOnly,\n submitOnBlur,\n submitOnEnter,\n cancelOnEscape,\n ],\n );\n\n return (\n <EditableContext.Provider value={ctx}>\n <div className={cn('inline-flex items-center gap-1.5', className)}>\n {children}\n {name && <input type=\"hidden\" name={name} value={value} />}\n </div>\n </EditableContext.Provider>\n );\n}\n\nexport type EditablePreviewProps = HTMLAttributes<HTMLSpanElement>;\n\nexport const EditablePreview = forwardRef<HTMLSpanElement, EditablePreviewProps>(\n function EditablePreview({ className, onClick, onKeyDown, ...rest }, forwardedRef) {\n const ctx = useEditableContext();\n if (ctx.editing) return null;\n const isEmpty = !ctx.value;\n const interactive = !ctx.disabled && !ctx.readOnly;\n return (\n <span\n ref={forwardedRef}\n role={interactive ? 'button' : undefined}\n tabIndex={interactive ? 0 : -1}\n aria-disabled={!interactive || undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || !interactive) return;\n ctx.setEditing(true);\n }}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || !interactive) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n ctx.setEditing(true);\n }\n }}\n className={cn(\n 'cursor-text rounded-sm px-1 py-0.5 text-sm text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n isEmpty && 'italic text-subtle-foreground',\n !interactive && 'cursor-default hover:bg-transparent',\n className,\n )}\n {...rest}\n >\n {ctx.value || ctx.placeholder}\n </span>\n );\n },\n);\n\nexport interface EditableInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'size'>,\n InputBaseVariants {}\n\nexport const EditableInput = forwardRef<HTMLInputElement, EditableInputProps>(\n function EditableInput(\n { className, size, state, onKeyDown, onBlur, ...rest },\n forwardedRef,\n ) {\n const ctx = useEditableContext();\n\n useEffect(() => {\n if (ctx.editing && ctx.inputRef.current) {\n ctx.inputRef.current.focus();\n const len = ctx.inputRef.current.value.length;\n ctx.inputRef.current.setSelectionRange(len, len);\n }\n }, [ctx.editing, ctx.inputRef]);\n\n if (!ctx.editing) return null;\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (ctx.submitOnEnter && e.key === 'Enter') {\n e.preventDefault();\n ctx.submit();\n } else if (ctx.cancelOnEscape && e.key === 'Escape') {\n e.preventDefault();\n ctx.cancel();\n }\n };\n\n return (\n <input\n ref={composeRefs(forwardedRef, ctx.inputRef)}\n type=\"text\"\n value={ctx.draft}\n disabled={ctx.disabled}\n readOnly={ctx.readOnly}\n onChange={(e) => ctx.setDraft(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={(e) => {\n onBlur?.(e);\n if (e.defaultPrevented) return;\n if (ctx.submitOnBlur) ctx.submit();\n }}\n className={cn(inputBaseVariants({ size, state }), className)}\n {...rest}\n />\n );\n },\n);\n\nexport type EditableButtonProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const EditableSubmit = forwardRef<HTMLButtonElement, EditableButtonProps>(\n function EditableSubmit({ className, onClick, children, type = 'button', ...rest }, forwardedRef) {\n const ctx = useEditableContext();\n if (!ctx.editing) return null;\n return (\n <button\n ref={forwardedRef}\n type={type}\n aria-label=\"Submit\"\n // onMouseDown so we fire before the input's blur handler closes us.\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.submit();\n }}\n className={cn(\n 'inline-flex h-8 w-8 items-center justify-center rounded-md text-success transition-colors hover:bg-success-soft focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children ?? <Icon icon={Check} size={14} />}\n </button>\n );\n },\n);\n\nexport const EditableCancel = forwardRef<HTMLButtonElement, EditableButtonProps>(\n function EditableCancel({ className, onClick, children, type = 'button', ...rest }, forwardedRef) {\n const ctx = useEditableContext();\n if (!ctx.editing) return null;\n return (\n <button\n ref={forwardedRef}\n type={type}\n aria-label=\"Cancel\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.cancel();\n }}\n className={cn(\n 'inline-flex h-8 w-8 items-center justify-center rounded-md text-destructive transition-colors hover:bg-destructive-soft focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children ?? <Icon icon={X} size={14} />}\n </button>\n );\n },\n);\n\ntype EditableComponent = typeof Editable & {\n Preview: typeof EditablePreview;\n Input: typeof EditableInput;\n Submit: typeof EditableSubmit;\n Cancel: typeof EditableCancel;\n};\n\n(Editable as EditableComponent).Preview = EditablePreview;\n(Editable as EditableComponent).Input = EditableInput;\n(Editable as EditableComponent).Submit = EditableSubmit;\n(Editable as EditableComponent).Cancel = EditableCancel;\n\nexport default Editable as EditableComponent;\n","import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useMemo,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\n\ninterface StepInfo {\n id: string;\n label?: ReactNode;\n optional?: boolean;\n final?: boolean;\n}\n\ninterface WizardContextValue {\n steps: StepInfo[];\n currentIndex: number;\n currentStep: StepInfo | undefined;\n goTo: (idOrIndex: string | number) => void;\n next: () => Promise<void>;\n back: () => void;\n canGoBack: boolean;\n visited: Set<string>;\n registerStep: (info: StepInfo) => void;\n unregisterStep: (id: string) => void;\n registerValidator: (id: string, validator: () => boolean | Promise<boolean>) => void;\n unregisterValidator: (id: string) => void;\n isPending: boolean;\n}\n\nconst WizardContext = createContext<WizardContextValue | null>(null);\n\nexport function useWizard() {\n const ctx = useContext(WizardContext);\n if (!ctx) throw new Error('useWizard must be used inside <Wizard>');\n return ctx;\n}\n\nexport interface WizardProps extends HTMLAttributes<HTMLDivElement> {\n currentStep?: string;\n defaultCurrentStep?: string;\n onStepChange?: (step: string) => void;\n onComplete?: () => void | Promise<void>;\n canGoBack?: boolean;\n children: ReactNode;\n}\n\nexport const Wizard = forwardRef<HTMLDivElement, WizardProps>(function Wizard(\n {\n currentStep: currentStepProp,\n defaultCurrentStep,\n onStepChange,\n onComplete,\n canGoBack = true,\n className,\n children,\n ...rest\n },\n ref,\n) {\n // Pre-walk children to discover step ids (so context can default to first id).\n const childArray = Children.toArray(children).filter(isValidElement);\n const stepFromChildren: StepInfo[] = childArray\n .filter(\n (c) =>\n (c.type as { displayName?: string }).displayName === 'WizardStep',\n )\n .map((c) => {\n const props = c.props as WizardStepProps;\n return {\n id: props.id,\n label: props.label,\n optional: props.optional,\n final: props.final,\n };\n });\n\n const [steps, setSteps] = useState<StepInfo[]>(stepFromChildren);\n const validatorsRef = useState(() => new Map<string, () => boolean | Promise<boolean>>())[0];\n\n const initialStep = stepFromChildren[0]?.id ?? '';\n const [currentStepId, setCurrentStepId] = useControlled<string>({\n controlled: currentStepProp,\n default: defaultCurrentStep ?? initialStep,\n onChange: onStepChange,\n });\n\n const [visited, setVisited] = useState<Set<string>>(() => new Set([initialStep]));\n const [isPending, setIsPending] = useState(false);\n\n const currentIndex = steps.findIndex((s) => s.id === currentStepId);\n const currentStep = steps[currentIndex];\n\n const registerStep = useCallback((info: StepInfo) => {\n setSteps((prev) => {\n const idx = prev.findIndex((s) => s.id === info.id);\n if (idx >= 0) {\n const next = prev.slice();\n next[idx] = info;\n return next;\n }\n return [...prev, info];\n });\n }, []);\n\n const unregisterStep = useCallback((id: string) => {\n setSteps((prev) => prev.filter((s) => s.id !== id));\n }, []);\n\n const registerValidator = useCallback(\n (id: string, validator: () => boolean | Promise<boolean>) => {\n validatorsRef.set(id, validator);\n },\n [validatorsRef],\n );\n\n const unregisterValidator = useCallback(\n (id: string) => {\n validatorsRef.delete(id);\n },\n [validatorsRef],\n );\n\n const goTo = useCallback(\n (idOrIndex: string | number) => {\n const target =\n typeof idOrIndex === 'number' ? steps[idOrIndex]?.id : idOrIndex;\n if (!target) return;\n setCurrentStepId(target);\n setVisited((prev) => new Set([...prev, target]));\n },\n [steps, setCurrentStepId],\n );\n\n const next = useCallback(async () => {\n if (!currentStep || isPending) return;\n const validator = validatorsRef.get(currentStep.id);\n if (validator) {\n setIsPending(true);\n try {\n const ok = await validator();\n if (!ok) return;\n } finally {\n setIsPending(false);\n }\n }\n if (currentStep.final) {\n setIsPending(true);\n try {\n await onComplete?.();\n } finally {\n setIsPending(false);\n }\n return;\n }\n const nextStep = steps[currentIndex + 1];\n if (nextStep) goTo(nextStep.id);\n }, [currentStep, currentIndex, steps, isPending, onComplete, validatorsRef, goTo]);\n\n const back = useCallback(() => {\n if (!canGoBack) return;\n const prev = steps[currentIndex - 1];\n if (prev) goTo(prev.id);\n }, [canGoBack, currentIndex, steps, goTo]);\n\n const ctx = useMemo<WizardContextValue>(\n () => ({\n steps,\n currentIndex,\n currentStep,\n goTo,\n next,\n back,\n canGoBack,\n visited,\n registerStep,\n unregisterStep,\n registerValidator,\n unregisterValidator,\n isPending,\n }),\n [\n steps,\n currentIndex,\n currentStep,\n goTo,\n next,\n back,\n canGoBack,\n visited,\n registerStep,\n unregisterStep,\n registerValidator,\n unregisterValidator,\n isPending,\n ],\n );\n\n return (\n <WizardContext.Provider value={ctx}>\n <div ref={ref} className={cn('flex flex-col gap-4', className)} {...rest}>\n {children}\n </div>\n </WizardContext.Provider>\n );\n});\n\nexport type WizardStepsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const WizardSteps = forwardRef<HTMLDivElement, WizardStepsProps>(\n function WizardSteps({ className, ...rest }, ref) {\n const ctx = useWizard();\n return (\n <div\n ref={ref}\n role=\"tablist\"\n aria-label=\"Wizard steps\"\n className={cn('flex items-center gap-2 overflow-x-auto', className)}\n {...rest}\n >\n {ctx.steps.map((step, i) => {\n const isCurrent = ctx.currentIndex === i;\n const wasVisited = ctx.visited.has(step.id);\n const canJump = ctx.canGoBack && wasVisited;\n return (\n <button\n key={step.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={isCurrent}\n aria-disabled={!canJump || undefined}\n onClick={() => canJump && ctx.goTo(step.id)}\n className={cn(\n 'flex items-center gap-2 rounded-md px-3 py-1.5 text-xs font-medium transition-colors',\n isCurrent\n ? 'bg-primary text-primary-foreground'\n : wasVisited\n ? 'bg-muted text-foreground hover:bg-muted/70'\n : 'text-muted-foreground',\n !canJump && 'cursor-default',\n )}\n >\n <span className=\"grid h-5 w-5 place-items-center rounded-full bg-background/20 text-[10px]\">\n {i + 1}\n </span>\n {step.label ?? step.id}\n {step.optional && <span className=\"ml-1 text-[10px] opacity-70\">(optional)</span>}\n </button>\n );\n })}\n </div>\n );\n },\n);\n\nexport interface WizardStepProps extends HTMLAttributes<HTMLDivElement> {\n id: string;\n label?: ReactNode;\n validate?: () => boolean | Promise<boolean>;\n optional?: boolean;\n final?: boolean;\n}\n\nexport const WizardStep = forwardRef<HTMLDivElement, WizardStepProps>(function WizardStep(\n { id, label, validate, optional, final, className, children, ...rest },\n ref,\n) {\n const ctx = useWizard();\n const isCurrent = ctx.currentStep?.id === id;\n\n // Register/refresh step metadata.\n useMemo(() => {\n ctx.registerStep({ id, label, optional, final });\n return id;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id, label, optional, final]);\n\n useMemo(() => {\n if (validate) ctx.registerValidator(id, validate);\n else ctx.unregisterValidator(id);\n return validate;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id, validate]);\n\n if (!isCurrent) return null;\n return (\n <div\n ref={ref}\n role=\"tabpanel\"\n aria-labelledby={`wizard-step-${id}`}\n className={cn('flex flex-col gap-3', className)}\n {...rest}\n >\n {children}\n </div>\n );\n});\nWizardStep.displayName = 'WizardStep';\n\nexport interface WizardFooterProps extends HTMLAttributes<HTMLDivElement> {\n prevLabel?: ReactNode;\n nextLabel?: ReactNode;\n submitLabel?: ReactNode;\n /** Render the Prev button when not on first step. Default true. */\n showPrev?: boolean;\n}\n\nexport const WizardFooter = forwardRef<HTMLDivElement, WizardFooterProps>(\n function WizardFooter(\n {\n prevLabel = 'Back',\n nextLabel = 'Next',\n submitLabel = 'Finish',\n showPrev = true,\n className,\n ...rest\n },\n ref,\n ) {\n const ctx = useWizard();\n const isFirst = ctx.currentIndex === 0;\n const isFinal = ctx.currentStep?.final ?? false;\n\n return (\n <div\n ref={ref}\n className={cn('mt-2 flex items-center justify-between gap-3', className)}\n {...rest}\n >\n {showPrev && !isFirst && ctx.canGoBack ? (\n <button\n type=\"button\"\n onClick={ctx.back}\n disabled={ctx.isPending}\n className=\"inline-flex h-9 items-center rounded-md border border-border bg-background px-4 text-sm font-medium hover:bg-muted disabled:opacity-50\"\n >\n {prevLabel}\n </button>\n ) : (\n <span />\n )}\n <button\n type=\"button\"\n onClick={ctx.next}\n disabled={ctx.isPending}\n className=\"inline-flex h-9 items-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50\"\n >\n {ctx.isPending ? '…' : isFinal ? submitLabel : nextLabel}\n </button>\n </div>\n );\n },\n);\n\ntype WizardComponent = typeof Wizard & {\n Steps: typeof WizardSteps;\n Step: typeof WizardStep;\n Footer: typeof WizardFooter;\n};\n\n(Wizard as WizardComponent).Steps = WizardSteps;\n(Wizard as WizardComponent).Step = WizardStep;\n(Wizard as WizardComponent).Footer = WizardFooter;\n\nexport default Wizard as WizardComponent;\n"]}
|