@vritti/quantum-ui 0.2.8 → 0.2.10

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.
Files changed (188) hide show
  1. package/README.md +7 -7
  2. package/dist/Alert.js +115 -0
  3. package/dist/Alert.js.map +1 -0
  4. package/dist/Avatar.js +6 -6
  5. package/dist/Badge.js +2 -28
  6. package/dist/Badge.js.map +1 -1
  7. package/dist/Badge2.js +30 -0
  8. package/dist/Badge2.js.map +1 -0
  9. package/dist/Button.js +1 -1
  10. package/dist/Button2.js +35 -16
  11. package/dist/Button2.js.map +1 -1
  12. package/dist/Card.js +1 -1
  13. package/dist/Chart.js +2 -2
  14. package/dist/Checkbox.js +2 -289
  15. package/dist/Checkbox.js.map +1 -1
  16. package/dist/Checkbox2.js +292 -0
  17. package/dist/Checkbox2.js.map +1 -0
  18. package/dist/Combination.js +6 -18
  19. package/dist/Combination.js.map +1 -1
  20. package/dist/DatePicker.js +4 -335
  21. package/dist/DatePicker.js.map +1 -1
  22. package/dist/DropdownMenu.js +8 -7
  23. package/dist/DropdownMenu.js.map +1 -1
  24. package/dist/Form.js +52 -27
  25. package/dist/Form.js.map +1 -1
  26. package/dist/Label.js +2 -2
  27. package/dist/OTPField.js +1 -1
  28. package/dist/PasswordField.js +1 -1
  29. package/dist/PhoneField.js +6 -6
  30. package/dist/PhoneField.js.map +1 -1
  31. package/dist/Progress.js +3 -3
  32. package/dist/Skeleton.js +1 -1
  33. package/dist/Sonner.js +7 -39
  34. package/dist/Sonner.js.map +1 -1
  35. package/dist/Spinner.js +1 -1
  36. package/dist/Switch.js +5 -5
  37. package/dist/TextArea.js +1 -1
  38. package/dist/TextField.js +4 -3
  39. package/dist/TextField.js.map +1 -1
  40. package/dist/ThemeContext.js +2 -8
  41. package/dist/ThemeContext.js.map +1 -1
  42. package/dist/Toggle.js +3 -3
  43. package/dist/Typography.js +1 -1
  44. package/dist/assets/quantum-ui.css +31 -31
  45. package/dist/chevron-left.js +15 -0
  46. package/dist/chevron-left.js.map +1 -0
  47. package/dist/chevron-right.js +15 -0
  48. package/dist/chevron-right.js.map +1 -0
  49. package/dist/components/Alert.js +2 -0
  50. package/dist/components/Alert.js.map +1 -0
  51. package/dist/components/Badge.js +2 -1
  52. package/dist/components/Badge.js.map +1 -1
  53. package/dist/components/DataTable.js +2 -0
  54. package/dist/components/DataTable.js.map +1 -0
  55. package/dist/components/Select.js +1379 -0
  56. package/dist/components/Select.js.map +1 -0
  57. package/dist/field.js +2 -2
  58. package/dist/hooks/index.js +1 -0
  59. package/dist/hooks/index.js.map +1 -1
  60. package/dist/index.js +10 -4
  61. package/dist/index.js.map +1 -1
  62. package/dist/index10.js +10 -99
  63. package/dist/index10.js.map +1 -1
  64. package/dist/index11.js +35 -95
  65. package/dist/index11.js.map +1 -1
  66. package/dist/index12.js +86 -190
  67. package/dist/index12.js.map +1 -1
  68. package/dist/index13.js +196 -190
  69. package/dist/index13.js.map +1 -1
  70. package/dist/index14.js +199 -0
  71. package/dist/index14.js.map +1 -0
  72. package/dist/index2.js +65 -58
  73. package/dist/index2.js.map +1 -1
  74. package/dist/index3.js +60 -8
  75. package/dist/index3.js.map +1 -1
  76. package/dist/index4.js +80 -106
  77. package/dist/index4.js.map +1 -1
  78. package/dist/index5.js +42 -37
  79. package/dist/index5.js.map +1 -1
  80. package/dist/index6.js +9 -4
  81. package/dist/index6.js.map +1 -1
  82. package/dist/index7.js +125 -10
  83. package/dist/index7.js.map +1 -1
  84. package/dist/index8.js +37 -42
  85. package/dist/index8.js.map +1 -1
  86. package/dist/index9.js +4 -37
  87. package/dist/index9.js.map +1 -1
  88. package/dist/lib/components/Alert/Alert.d.ts +11 -0
  89. package/dist/lib/components/Alert/Alert.d.ts.map +1 -0
  90. package/dist/lib/components/Alert/index.d.ts +2 -0
  91. package/dist/lib/components/Alert/index.d.ts.map +1 -0
  92. package/dist/lib/components/DataTable/DataTable.d.ts +15 -0
  93. package/dist/lib/components/DataTable/DataTable.d.ts.map +1 -0
  94. package/dist/lib/components/DataTable/components/DataTableColumnHeader.d.ts +12 -0
  95. package/dist/lib/components/DataTable/components/DataTableColumnHeader.d.ts.map +1 -0
  96. package/dist/lib/components/DataTable/components/DataTableEmpty.d.ts +13 -0
  97. package/dist/lib/components/DataTable/components/DataTableEmpty.d.ts.map +1 -0
  98. package/dist/lib/components/DataTable/components/DataTablePagination.d.ts +13 -0
  99. package/dist/lib/components/DataTable/components/DataTablePagination.d.ts.map +1 -0
  100. package/dist/lib/components/DataTable/components/DataTableToolbar.d.ts +15 -0
  101. package/dist/lib/components/DataTable/components/DataTableToolbar.d.ts.map +1 -0
  102. package/dist/lib/components/DataTable/components/DataTableViewOptions.d.ts +11 -0
  103. package/dist/lib/components/DataTable/components/DataTableViewOptions.d.ts.map +1 -0
  104. package/dist/lib/components/DataTable/hooks/useDataTable.d.ts +3 -0
  105. package/dist/lib/components/DataTable/hooks/useDataTable.d.ts.map +1 -0
  106. package/dist/lib/components/DataTable/index.d.ts +10 -0
  107. package/dist/lib/components/DataTable/index.d.ts.map +1 -0
  108. package/dist/lib/components/DataTable/types.d.ts +67 -0
  109. package/dist/lib/components/DataTable/types.d.ts.map +1 -0
  110. package/dist/lib/components/DataTable/utils.d.ts +3 -0
  111. package/dist/lib/components/DataTable/utils.d.ts.map +1 -0
  112. package/dist/lib/components/Form/Form.d.ts +3 -2
  113. package/dist/lib/components/Form/Form.d.ts.map +1 -1
  114. package/dist/lib/components/PhoneField/PhoneField.d.ts +1 -0
  115. package/dist/lib/components/PhoneField/PhoneField.d.ts.map +1 -1
  116. package/dist/lib/components/Select/Select.d.ts +23 -0
  117. package/dist/lib/components/Select/Select.d.ts.map +1 -0
  118. package/dist/lib/components/Select/components/MultiSelect/MultiSelect.d.ts +25 -0
  119. package/dist/lib/components/Select/components/MultiSelect/MultiSelect.d.ts.map +1 -0
  120. package/dist/lib/components/Select/components/MultiSelect/MultiSelectFilter.d.ts +21 -0
  121. package/dist/lib/components/Select/components/MultiSelect/MultiSelectFilter.d.ts.map +1 -0
  122. package/dist/lib/components/Select/components/SingleSelect/SingleSelect.d.ts +25 -0
  123. package/dist/lib/components/Select/components/SingleSelect/SingleSelect.d.ts.map +1 -0
  124. package/dist/lib/components/Select/components/SingleSelect/SingleSelectFilter.d.ts +21 -0
  125. package/dist/lib/components/Select/components/SingleSelect/SingleSelectFilter.d.ts.map +1 -0
  126. package/dist/lib/components/Select/hooks/useMultiSelect.d.ts +32 -0
  127. package/dist/lib/components/Select/hooks/useMultiSelect.d.ts.map +1 -0
  128. package/dist/lib/components/Select/hooks/useSelect.d.ts +23 -0
  129. package/dist/lib/components/Select/hooks/useSelect.d.ts.map +1 -0
  130. package/dist/lib/components/Select/hooks/useSingleSelect.d.ts +30 -0
  131. package/dist/lib/components/Select/hooks/useSingleSelect.d.ts.map +1 -0
  132. package/dist/lib/components/Select/index.d.ts +38 -0
  133. package/dist/lib/components/Select/index.d.ts.map +1 -0
  134. package/dist/lib/components/Select/types.d.ts +31 -0
  135. package/dist/lib/components/Select/types.d.ts.map +1 -0
  136. package/dist/lib/components/TextField/TextField.d.ts.map +1 -1
  137. package/dist/lib/components/index.d.ts +3 -0
  138. package/dist/lib/components/index.d.ts.map +1 -1
  139. package/dist/lib/context/ThemeContext.d.ts +1 -1
  140. package/dist/lib/context/ThemeContext.d.ts.map +1 -1
  141. package/dist/lib/context/index.d.ts +1 -1
  142. package/dist/lib/context/index.d.ts.map +1 -1
  143. package/dist/lib/hooks/index.d.ts +2 -1
  144. package/dist/lib/hooks/index.d.ts.map +1 -1
  145. package/dist/lib/hooks/useSSE.d.ts +21 -0
  146. package/dist/lib/hooks/useSSE.d.ts.map +1 -0
  147. package/dist/lib/index.d.ts +2 -2
  148. package/dist/lib/index.d.ts.map +1 -1
  149. package/dist/lib/utils/axios.d.ts.map +1 -1
  150. package/dist/lib/utils/formHelpers.d.ts +7 -3
  151. package/dist/lib/utils/formHelpers.d.ts.map +1 -1
  152. package/dist/popover.js +329 -0
  153. package/dist/popover.js.map +1 -0
  154. package/dist/separator2.js +2 -2
  155. package/dist/shadcn/shadcnAlert/alert.d.ts +11 -0
  156. package/dist/shadcn/shadcnAlert/alert.d.ts.map +1 -0
  157. package/dist/shadcn/shadcnAlert/index.d.ts +2 -0
  158. package/dist/shadcn/shadcnAlert/index.d.ts.map +1 -0
  159. package/dist/shadcn/shadcnBadge/Badge.d.ts +1 -1
  160. package/dist/shadcn/shadcnButton/Button.d.ts +2 -2
  161. package/dist/shadcn/shadcnButton/Button.d.ts.map +1 -1
  162. package/dist/shadcn/shadcnInputOTP/InputOTP.d.ts +2 -2
  163. package/dist/shadcn/shadcnMultiSelect/index.d.ts +3 -0
  164. package/dist/shadcn/shadcnMultiSelect/index.d.ts.map +1 -0
  165. package/dist/shadcn/shadcnMultiSelect/multi-select.d.ts +61 -0
  166. package/dist/shadcn/shadcnMultiSelect/multi-select.d.ts.map +1 -0
  167. package/dist/shadcn/shadcnSingleSelect/index.d.ts +3 -0
  168. package/dist/shadcn/shadcnSingleSelect/index.d.ts.map +1 -0
  169. package/dist/shadcn/shadcnSingleSelect/single-select.d.ts +60 -0
  170. package/dist/shadcn/shadcnSingleSelect/single-select.d.ts.map +1 -0
  171. package/dist/shadcn/shadcnSonner/sonner.d.ts +1 -1
  172. package/dist/shadcn/shadcnSonner/sonner.d.ts.map +1 -1
  173. package/dist/triangle-alert.js +40 -0
  174. package/dist/triangle-alert.js.map +1 -0
  175. package/dist/useSSE.js +82 -0
  176. package/dist/useSSE.js.map +1 -0
  177. package/dist/useTheme.js.map +1 -1
  178. package/dist/utils/axios.js +4167 -2
  179. package/dist/utils/axios.js.map +1 -1
  180. package/dist/utils.js +3748 -2970
  181. package/dist/utils.js.map +1 -1
  182. package/dist/utils2.js +3042 -0
  183. package/dist/utils2.js.map +1 -0
  184. package/dist/x.js +18 -0
  185. package/dist/x.js.map +1 -0
  186. package/package.json +22 -7
  187. package/dist/axios.js +0 -4228
  188. package/dist/axios.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.js","sources":["../../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/search.js","../../shadcn/shadcnMultiSelect/multi-select.tsx","../../lib/components/Select/hooks/useMultiSelect.ts","../../lib/components/Select/components/MultiSelect/MultiSelect.tsx","../../lib/components/Select/components/MultiSelect/MultiSelectFilter.tsx","../../shadcn/shadcnSingleSelect/single-select.tsx","../../lib/components/Select/hooks/useSingleSelect.ts","../../lib/components/Select/components/SingleSelect/SingleSelect.tsx","../../lib/components/Select/components/SingleSelect/SingleSelectFilter.tsx","../../node_modules/.pnpm/react-intersection-observer@10.0.2_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/react-intersection-observer/dist/index.mjs","../../lib/components/Select/hooks/useSelect.ts","../../lib/components/Select/Select.tsx","../../lib/components/Select/index.ts"],"sourcesContent":["/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n];\nconst Search = createLucideIcon(\"search\", __iconNode);\n\nexport { __iconNode, Search as default };\n//# sourceMappingURL=search.js.map\n","'use client';\n\nimport { ChevronDownIcon, SearchIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Checkbox } from '../shadcnCheckbox';\nimport { Popover, PopoverContent, PopoverTrigger } from '../shadcnPopover';\nimport { cn } from '../utils';\n\n// MultiSelectRoot — wraps Radix Popover to provide open/close state\ninterface MultiSelectRootProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n children: React.ReactNode;\n}\n\nfunction MultiSelectRoot({ open, onOpenChange, disabled, children }: MultiSelectRootProps) {\n return (\n <Popover data-slot=\"multi-select\" open={disabled ? false : open} onOpenChange={disabled ? undefined : onOpenChange}>\n {children}\n </Popover>\n );\n}\n\n// MultiSelectTrigger — styled trigger button that mirrors SelectTrigger\ninterface MultiSelectTriggerProps extends React.ComponentProps<'button'> {\n className?: string;\n open?: boolean;\n listboxId?: string;\n}\n\nconst MultiSelectTrigger = React.forwardRef<HTMLButtonElement, MultiSelectTriggerProps>(\n ({ className, children, disabled, open, listboxId, ...props }, ref) => {\n return (\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"multi-select-trigger\"\n role=\"combobox\"\n aria-expanded={open ?? false}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n disabled={disabled}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n 'min-h-9',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"size-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n );\n },\n);\n\nMultiSelectTrigger.displayName = 'MultiSelectTrigger';\n\n// MultiSelectContent — styled dropdown panel wrapping PopoverContent\ninterface MultiSelectContentProps extends React.ComponentProps<typeof PopoverContent> {\n className?: string;\n}\n\nfunction MultiSelectContent({ className, children, align = 'start', ...props }: MultiSelectContentProps) {\n return (\n <PopoverContent\n data-slot=\"multi-select-content\"\n align={align}\n className={cn('w-[var(--radix-popover-trigger-width)] p-0', className)}\n {...props}\n >\n {children}\n </PopoverContent>\n );\n}\n\n// MultiSelectSearch — search input for filtering options (stateless)\ninterface MultiSelectSearchProps {\n value: string;\n onValueChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n}\n\nfunction MultiSelectSearch({ value, onValueChange, placeholder = 'Search...', className }: MultiSelectSearchProps) {\n return (\n <div data-slot=\"multi-select-search\" className={cn('flex items-center gap-2 border-b px-3', className)}>\n <SearchIcon className=\"size-4 shrink-0 text-muted-foreground\" />\n <input\n type=\"text\"\n aria-label=\"Search options\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n placeholder={placeholder}\n className=\"flex h-9 w-full bg-transparent py-2 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\"\n />\n </div>\n );\n}\n\n// MultiSelectActions — Select All / Clear action bar\ninterface MultiSelectActionsProps {\n onSelectAll: () => void;\n onClear: () => void;\n disabled?: boolean;\n className?: string;\n}\n\nfunction MultiSelectActions({ onSelectAll, onClear, disabled, className }: MultiSelectActionsProps) {\n return (\n <div\n data-slot=\"multi-select-actions\"\n className={cn('flex items-center justify-between border-t px-3 py-1.5', className)}\n >\n <button\n type=\"button\"\n disabled={disabled}\n className=\"text-xs font-medium text-primary hover:text-primary/80 disabled:pointer-events-none disabled:opacity-50\"\n onClick={onSelectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n disabled={disabled}\n className=\"text-xs font-medium text-muted-foreground hover:text-foreground disabled:pointer-events-none disabled:opacity-50\"\n onClick={onClear}\n >\n Clear\n </button>\n </div>\n );\n}\n\n// MultiSelectList — scrollable listbox container for option rows\ninterface MultiSelectListProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction MultiSelectList({ className, children, ...props }: MultiSelectListProps) {\n return (\n <div\n data-slot=\"multi-select-list\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n className={cn('max-h-60 overflow-y-auto p-1', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// MultiSelectRow — a single option row with a checkbox\ninterface MultiSelectRowProps {\n name: string;\n checked: boolean;\n onToggle: () => void;\n disabled?: boolean;\n className?: string;\n}\n\nconst MultiSelectRow = React.memo(function MultiSelectRow({\n name,\n checked,\n onToggle,\n disabled,\n className,\n}: MultiSelectRowProps) {\n function handleClick() {\n if (!disabled) {\n onToggle();\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent) {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onToggle();\n }\n }\n\n return (\n <div\n data-slot=\"multi-select-row\"\n role=\"option\"\n aria-selected={checked}\n aria-disabled={disabled}\n tabIndex={disabled ? undefined : 0}\n className={cn(\n 'relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none',\n 'hover:bg-accent hover:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n data-disabled={disabled ? '' : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n <Checkbox\n checked={checked}\n onCheckedChange={() => onToggle()}\n disabled={disabled}\n tabIndex={-1}\n aria-hidden=\"true\"\n />\n <span className=\"truncate\">{name}</span>\n </div>\n );\n});\n\n// MultiSelectGroup — wraps a group of rows with a role=\"group\" container\ninterface MultiSelectGroupProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction MultiSelectGroup({ className, children, ...props }: MultiSelectGroupProps) {\n return (\n <div data-slot=\"multi-select-group\" role=\"group\" className={cn(className)} {...props}>\n {children}\n </div>\n );\n}\n\n// MultiSelectGroupLabel — styled label for a group header\ninterface MultiSelectGroupLabelProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction MultiSelectGroupLabel({ className, children, ...props }: MultiSelectGroupLabelProps) {\n return (\n <div\n data-slot=\"multi-select-group-label\"\n className={cn('text-muted-foreground px-2 py-1.5 text-xs', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// MultiSelectEmpty — displayed when no options match a search filter\ninterface MultiSelectEmptyProps {\n children?: React.ReactNode;\n className?: string;\n}\n\nfunction MultiSelectEmpty({ children, className }: MultiSelectEmptyProps) {\n return (\n <div\n data-slot=\"multi-select-empty\"\n className={cn('flex items-center justify-center py-6 text-sm text-muted-foreground', className)}\n >\n {children ?? 'No options found.'}\n </div>\n );\n}\n\nexport {\n MultiSelectActions,\n MultiSelectContent,\n MultiSelectEmpty,\n MultiSelectGroup,\n MultiSelectGroupLabel,\n MultiSelectList,\n MultiSelectRoot,\n MultiSelectRow,\n MultiSelectSearch,\n MultiSelectTrigger,\n};\n\nexport type {\n MultiSelectActionsProps,\n MultiSelectContentProps,\n MultiSelectEmptyProps,\n MultiSelectGroupLabelProps,\n MultiSelectGroupProps,\n MultiSelectListProps,\n MultiSelectRootProps,\n MultiSelectRowProps,\n MultiSelectSearchProps,\n MultiSelectTriggerProps,\n};\n","import { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport type { SelectGroup, SelectOption, SelectValue } from '../types';\n\ninterface UseMultiSelectStateProps {\n options: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue[];\n onChange?: (values: SelectValue[]) => void;\n defaultValue?: SelectValue[];\n remoteSearch?: boolean;\n}\n\n// Manages controlled/uncontrolled multi-select state, search filtering, and grouping\nexport function useMultiSelect({\n options,\n groups,\n value: controlledValue,\n onChange,\n defaultValue,\n remoteSearch,\n}: UseMultiSelectStateProps) {\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<SelectValue[]>(defaultValue ?? []);\n const selectedValues = isControlled ? controlledValue : internalValue;\n const selectedSet = useMemo(() => new Set<SelectValue>(selectedValues), [selectedValues]);\n\n // Ref to latest selectedValues so callbacks stay reference-stable\n const selectedValuesRef = useRef(selectedValues);\n selectedValuesRef.current = selectedValues;\n\n const [open, setOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const listboxId = useId();\n\n const optionMap = useMemo(() => {\n const map = new Map<SelectValue, SelectOption>();\n for (const option of options) {\n map.set(option.value, option);\n }\n return map;\n }, [options]);\n\n const filteredOptions = useMemo(() => {\n if (remoteSearch || !searchQuery) return options;\n const lower = searchQuery.toLowerCase();\n return options.filter((option) => option.label.toLowerCase().includes(lower));\n }, [options, searchQuery, remoteSearch]);\n\n const updateSelection = useCallback(\n (nextValues: SelectValue[]) => {\n if (!isControlled) {\n setInternalValue(nextValues);\n }\n onChange?.(nextValues);\n },\n [isControlled, onChange],\n );\n\n // Toggle a single option on or off\n const toggleOption = useCallback(\n (optionValue: SelectValue) => {\n const option = optionMap.get(optionValue);\n if (option?.disabled) return;\n const current = selectedValuesRef.current;\n const nextValues = current.includes(optionValue)\n ? current.filter((v) => v !== optionValue)\n : [...current, optionValue];\n updateSelection(nextValues);\n },\n [optionMap, updateSelection],\n );\n\n // Preserve already-selected disabled options when selecting all\n const selectAll = useCallback(() => {\n const enabledValues = options.filter((o) => !o.disabled).map((o) => o.value);\n const currentDisabledValues = selectedValuesRef.current.filter((v) => optionMap.get(v)?.disabled);\n updateSelection([...new Set([...currentDisabledValues, ...enabledValues])]);\n }, [options, optionMap, updateSelection]);\n\n // Retain disabled options that are currently selected when clearing\n const clearAll = useCallback(() => {\n const currentDisabledValues = selectedValuesRef.current.filter((v) => optionMap.get(v)?.disabled);\n updateSelection(currentDisabledValues);\n }, [optionMap, updateSelection]);\n\n // Reset search when popover closes\n useEffect(() => {\n if (!open) {\n setSearchQuery('');\n }\n }, [open]);\n\n // Map selected values to their option objects for display\n const selectedOptions = useMemo(\n () => selectedValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[],\n [selectedValues, optionMap],\n );\n\n // O(n + g) grouping — one pass over groups, one pass over options\n const grouped = useMemo(() => {\n if (!groups || groups.length === 0) return null;\n\n const buckets = new Map<string | number, SelectOption[]>();\n for (const g of groups) {\n buckets.set(g.id, []);\n }\n\n const ungrouped: SelectOption[] = [];\n for (const option of filteredOptions) {\n const bucket = option.groupId != null ? buckets.get(option.groupId) : undefined;\n if (bucket) {\n bucket.push(option);\n } else {\n ungrouped.push(option);\n }\n }\n\n const entries: Array<{ name: string; options: SelectOption[] }> = [];\n for (const g of groups) {\n const bucket = buckets.get(g.id);\n if (!bucket || bucket.length === 0) continue;\n entries.push({ name: g.name, options: bucket });\n }\n\n return { ungrouped, entries };\n }, [filteredOptions, groups]);\n\n return {\n selectedValues,\n selectedSet,\n selectedOptions,\n open,\n setOpen,\n searchQuery,\n setSearchQuery,\n listboxId,\n filteredOptions,\n grouped,\n toggleOption,\n selectAll,\n clearAll,\n };\n}\n","import { Loader2, X } from 'lucide-react';\nimport * as React from 'react';\nimport { Badge } from '../../../../../shadcn/shadcnBadge';\nimport {\n MultiSelectActions,\n MultiSelectContent,\n MultiSelectEmpty,\n MultiSelectGroup,\n MultiSelectGroupLabel,\n MultiSelectList,\n MultiSelectRoot,\n MultiSelectRow,\n MultiSelectSearch,\n MultiSelectTrigger,\n} from '../../../../../shadcn/shadcnMultiSelect';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '../../../Field';\nimport { useMultiSelect } from '../../hooks/useMultiSelect';\nimport type { AsyncSelectState, SelectGroup, SelectOption, SelectValue } from '../../types';\n\nexport interface MultiSelectProps {\n label?: string;\n description?: React.ReactNode;\n error?: string;\n placeholder?: string;\n options?: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue[];\n onChange?: (values: SelectValue[]) => void;\n onBlur?: () => void;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n className?: string;\n id?: string;\n defaultValue?: SelectValue[];\n maxDisplayedItems?: number;\n searchable?: boolean;\n searchPlaceholder?: string;\n asyncState?: AsyncSelectState;\n}\n\n// Multi-value select with checkbox options, search, and badge chips\nexport const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(\n (\n {\n label,\n description,\n error,\n placeholder = 'Select options',\n options,\n groups,\n value: controlledValue,\n onChange,\n onBlur,\n name,\n disabled = false,\n required,\n className,\n id,\n defaultValue,\n maxDisplayedItems = 3,\n searchable = false,\n searchPlaceholder = 'Search...',\n asyncState,\n },\n ref,\n ) => {\n const state = useMultiSelect({\n options: options ?? [],\n groups,\n value: controlledValue,\n onChange,\n defaultValue,\n remoteSearch: !!asyncState,\n });\n\n // Resolve search binding -- async delegates to parent, static uses local state\n const searchValue = asyncState ? asyncState.searchQuery : state.searchQuery;\n const setSearchValue = asyncState ? asyncState.setSearchQuery : state.setSearchQuery;\n const showSearch = !!asyncState || searchable;\n\n // Renders a single option row\n function renderRow(option: SelectOption) {\n return (\n <MultiSelectRow\n key={String(option.value)}\n name={option.label}\n checked={state.selectedSet.has(option.value)}\n onToggle={() => {\n state.toggleOption(option.value);\n }}\n disabled={option.disabled}\n />\n );\n }\n\n // Renders the option list content (flat or grouped)\n function renderOptions() {\n if (asyncState?.loading) {\n return (\n <div className=\"flex items-center justify-center gap-2 py-6\">\n <Loader2 className=\"size-4 animate-spin text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">Loading...</span>\n </div>\n );\n }\n\n if (state.filteredOptions.length === 0) {\n return <MultiSelectEmpty />;\n }\n\n if (!state.grouped) {\n return state.filteredOptions.map(renderRow);\n }\n\n return (\n <>\n {state.grouped.ungrouped.map(renderRow)}\n {state.grouped.entries.map((entry) => (\n <MultiSelectGroup key={entry.name}>\n <MultiSelectGroupLabel>{entry.name}</MultiSelectGroupLabel>\n {entry.options.map(renderRow)}\n </MultiSelectGroup>\n ))}\n </>\n );\n }\n\n // Renders badge chips, count summary, or placeholder inside the trigger\n function renderTriggerContent() {\n if (state.selectedOptions.length === 0) {\n return <span className=\"text-muted-foreground\">{placeholder}</span>;\n }\n\n if (state.selectedOptions.length > maxDisplayedItems) {\n return <span className=\"text-sm\">{state.selectedOptions.length} items selected</span>;\n }\n\n return (\n <span className=\"flex flex-wrap items-center gap-1\">\n {state.selectedOptions.map((option) => (\n <Badge key={String(option.value)} variant=\"secondary\" className=\"gap-1 pr-1\">\n {option.label}\n <button\n type=\"button\"\n aria-label={`Remove ${option.label}`}\n className=\"rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation();\n state.toggleOption(option.value);\n }}\n >\n <X className=\"size-3 text-muted-foreground hover:text-foreground\" />\n </button>\n </Badge>\n ))}\n </span>\n );\n }\n\n return (\n <Field>\n {label && <FieldLabel>{label}</FieldLabel>}\n\n <MultiSelectRoot open={state.open} onOpenChange={state.setOpen} disabled={disabled}>\n <MultiSelectTrigger\n ref={ref}\n id={id}\n open={state.open}\n listboxId={state.listboxId}\n aria-invalid={!!error}\n aria-required={required}\n disabled={disabled}\n onBlur={onBlur}\n className={className}\n >\n <span className=\"flex flex-1 flex-wrap items-center gap-1 overflow-hidden\">{renderTriggerContent()}</span>\n </MultiSelectTrigger>\n\n <MultiSelectContent>\n {showSearch && (\n <MultiSelectSearch value={searchValue} onValueChange={setSearchValue} placeholder={searchPlaceholder} />\n )}\n\n <MultiSelectList id={state.listboxId}>\n {renderOptions()}\n {asyncState?.hasMore && <div ref={asyncState.sentinelRef} className=\"h-1\" />}\n {asyncState?.loadingMore && (\n <div className=\"flex items-center justify-center gap-2 py-2\">\n <Loader2 className=\"size-3 animate-spin text-muted-foreground\" />\n <span className=\"text-xs text-muted-foreground\">Loading more...</span>\n </div>\n )}\n </MultiSelectList>\n\n <MultiSelectActions onSelectAll={state.selectAll} onClear={state.clearAll} disabled={disabled} />\n </MultiSelectContent>\n </MultiSelectRoot>\n\n {name && state.selectedValues.map((v) => <input key={String(v)} type=\"hidden\" name={name} value={String(v)} />)}\n\n {description && !error && <FieldDescription>{description}</FieldDescription>}\n {error && <FieldError>{error}</FieldError>}\n </Field>\n );\n },\n);\n\nMultiSelect.displayName = 'MultiSelect';\n","import { ChevronDownIcon, Loader2 } from 'lucide-react';\nimport * as React from 'react';\nimport {\n MultiSelectActions,\n MultiSelectContent,\n MultiSelectEmpty,\n MultiSelectGroup,\n MultiSelectGroupLabel,\n MultiSelectList,\n MultiSelectRoot,\n MultiSelectRow,\n MultiSelectSearch,\n} from '../../../../../shadcn/shadcnMultiSelect';\nimport { PopoverTrigger } from '../../../../../shadcn/shadcnPopover';\nimport { cn } from '../../../../../shadcn/utils';\nimport { useMultiSelect } from '../../hooks/useMultiSelect';\nimport type { AsyncSelectState, SelectGroup, SelectOption, SelectValue } from '../../types';\n\nexport interface MultiSelectFilterProps {\n label?: string;\n placeholder?: string;\n options?: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue[];\n onChange?: (values: SelectValue[]) => void;\n onBlur?: () => void;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n className?: string;\n id?: string;\n defaultValue?: SelectValue[];\n searchPlaceholder?: string;\n asyncState?: AsyncSelectState;\n}\n\n// Compact multi-select filter trigger with count-based label display\nexport const MultiSelectFilter = React.forwardRef<HTMLButtonElement, MultiSelectFilterProps>(\n (\n {\n label,\n placeholder,\n options,\n groups,\n value: controlledValue,\n onChange,\n onBlur,\n name,\n disabled = false,\n required,\n className,\n id,\n defaultValue,\n searchPlaceholder = 'Search...',\n asyncState,\n },\n ref,\n ) => {\n const state = useMultiSelect({\n options: options ?? [],\n groups,\n value: controlledValue,\n onChange,\n defaultValue,\n remoteSearch: !!asyncState,\n });\n\n // Resolve search binding -- async delegates to parent, filter always shows search\n const searchValue = asyncState ? asyncState.searchQuery : state.searchQuery;\n const setSearchValue = asyncState ? asyncState.setSearchQuery : state.setSearchQuery;\n\n // Renders a single option row\n function renderRow(option: SelectOption) {\n return (\n <MultiSelectRow\n key={String(option.value)}\n name={option.label}\n checked={state.selectedSet.has(option.value)}\n onToggle={() => {\n state.toggleOption(option.value);\n }}\n disabled={option.disabled}\n />\n );\n }\n\n // Renders the option list content (flat or grouped)\n function renderOptions() {\n if (asyncState?.loading) {\n return (\n <div className=\"flex items-center justify-center gap-2 py-6\">\n <Loader2 className=\"size-4 animate-spin text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">Loading...</span>\n </div>\n );\n }\n\n if (state.filteredOptions.length === 0) {\n return <MultiSelectEmpty />;\n }\n\n if (!state.grouped) {\n return state.filteredOptions.map(renderRow);\n }\n\n return (\n <>\n {state.grouped.ungrouped.map(renderRow)}\n {state.grouped.entries.map((entry) => (\n <MultiSelectGroup key={entry.name}>\n <MultiSelectGroupLabel>{entry.name}</MultiSelectGroupLabel>\n {entry.options.map(renderRow)}\n </MultiSelectGroup>\n ))}\n </>\n );\n }\n\n const hasValues = state.selectedValues.length > 0;\n\n const triggerText = hasValues ? `${label} = ${state.selectedValues.length} selected` : (label ?? placeholder);\n\n return (\n <>\n <MultiSelectRoot open={state.open} onOpenChange={state.setOpen} disabled={disabled}>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n id={id}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={state.open}\n aria-haspopup=\"listbox\"\n aria-controls={state.listboxId}\n aria-required={required}\n disabled={disabled}\n onBlur={onBlur}\n className={cn(\n 'inline-flex items-center gap-2 rounded-md border px-3 py-2 text-sm whitespace-nowrap shadow-xs outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-50',\n hasValues\n ? 'bg-primary text-primary-foreground border-primary hover:bg-primary/90'\n : 'border-input bg-transparent hover:bg-accent hover:text-accent-foreground',\n className,\n )}\n >\n <span className=\"truncate\">{triggerText}</span>\n <ChevronDownIcon className=\"size-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n\n <MultiSelectContent className=\"w-[250px]\">\n <MultiSelectSearch value={searchValue} onValueChange={setSearchValue} placeholder={searchPlaceholder} />\n\n <MultiSelectList id={state.listboxId}>\n {renderOptions()}\n {asyncState?.hasMore && <div ref={asyncState.sentinelRef} className=\"h-1\" />}\n {asyncState?.loadingMore && (\n <div className=\"flex items-center justify-center gap-2 py-2\">\n <Loader2 className=\"size-3 animate-spin text-muted-foreground\" />\n <span className=\"text-xs text-muted-foreground\">Loading more...</span>\n </div>\n )}\n </MultiSelectList>\n\n <MultiSelectActions onSelectAll={state.selectAll} onClear={state.clearAll} disabled={disabled} />\n </MultiSelectContent>\n </MultiSelectRoot>\n\n {name && state.selectedValues.map((v) => <input key={String(v)} type=\"hidden\" name={name} value={String(v)} />)}\n </>\n );\n },\n);\n\nMultiSelectFilter.displayName = 'MultiSelectFilter';\n","'use client';\n\nimport { CheckIcon, ChevronDownIcon, SearchIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Popover, PopoverContent, PopoverTrigger } from '../shadcnPopover';\nimport { cn } from '../utils';\n\n// SingleSelectRoot — wraps Radix Popover to provide open/close state\ninterface SingleSelectRootProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n children: React.ReactNode;\n}\n\nfunction SingleSelectRoot({ open, onOpenChange, disabled, children }: SingleSelectRootProps) {\n return (\n <Popover\n data-slot=\"single-select\"\n open={disabled ? false : open}\n onOpenChange={disabled ? undefined : onOpenChange}\n >\n {children}\n </Popover>\n );\n}\n\n// SingleSelectTrigger — styled trigger button that mirrors SelectTrigger\ninterface SingleSelectTriggerProps extends React.ComponentProps<'button'> {\n className?: string;\n open?: boolean;\n listboxId?: string;\n}\n\nconst SingleSelectTrigger = React.forwardRef<HTMLButtonElement, SingleSelectTriggerProps>(\n ({ className, children, disabled, open, listboxId, ...props }, ref) => {\n return (\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"single-select-trigger\"\n role=\"combobox\"\n aria-expanded={open ?? false}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n disabled={disabled}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n 'min-h-9',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"size-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n );\n },\n);\n\nSingleSelectTrigger.displayName = 'SingleSelectTrigger';\n\n// SingleSelectContent — styled dropdown panel wrapping PopoverContent\ninterface SingleSelectContentProps extends React.ComponentProps<typeof PopoverContent> {\n className?: string;\n}\n\nfunction SingleSelectContent({ className, children, align = 'start', ...props }: SingleSelectContentProps) {\n return (\n <PopoverContent\n data-slot=\"single-select-content\"\n align={align}\n className={cn('w-[var(--radix-popover-trigger-width)] p-0', className)}\n {...props}\n >\n {children}\n </PopoverContent>\n );\n}\n\n// SingleSelectSearch — search input for filtering options (stateless)\ninterface SingleSelectSearchProps {\n value: string;\n onValueChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n}\n\nfunction SingleSelectSearch({ value, onValueChange, placeholder = 'Search...', className }: SingleSelectSearchProps) {\n return (\n <div data-slot=\"single-select-search\" className={cn('flex items-center gap-2 border-b px-3', className)}>\n <SearchIcon className=\"size-4 shrink-0 text-muted-foreground\" />\n <input\n type=\"text\"\n aria-label=\"Search options\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n placeholder={placeholder}\n className=\"flex h-9 w-full bg-transparent py-2 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\"\n />\n </div>\n );\n}\n\n// SingleSelectClear — \"Clear\" text button in border-b bar\ninterface SingleSelectClearProps {\n onClear: () => void;\n disabled?: boolean;\n className?: string;\n}\n\nfunction SingleSelectClear({ onClear, disabled, className }: SingleSelectClearProps) {\n return (\n <div\n data-slot=\"single-select-clear\"\n className={cn('flex items-center justify-end border-t px-3 py-1.5', className)}\n >\n <button\n type=\"button\"\n disabled={disabled}\n className=\"text-xs font-medium text-muted-foreground hover:text-foreground disabled:pointer-events-none disabled:opacity-50\"\n onClick={onClear}\n >\n Clear\n </button>\n </div>\n );\n}\n\n// SingleSelectList — scrollable listbox container for option rows\ninterface SingleSelectListProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction SingleSelectList({ className, children, ...props }: SingleSelectListProps) {\n return (\n <div\n data-slot=\"single-select-list\"\n role=\"listbox\"\n className={cn('max-h-60 overflow-y-auto p-1', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// SingleSelectRow — a single option row with a check icon\ninterface SingleSelectRowProps {\n name: string;\n selected: boolean;\n onSelect: () => void;\n disabled?: boolean;\n className?: string;\n}\n\nconst SingleSelectRow = React.memo(function SingleSelectRow({\n name,\n selected,\n onSelect,\n disabled,\n className,\n}: SingleSelectRowProps) {\n function handleClick() {\n if (!disabled) {\n onSelect();\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent) {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect();\n }\n }\n\n return (\n <div\n data-slot=\"single-select-row\"\n role=\"option\"\n aria-selected={selected}\n aria-disabled={disabled}\n tabIndex={disabled ? undefined : 0}\n className={cn(\n 'relative flex w-full cursor-default items-center rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none',\n 'hover:bg-accent hover:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n data-disabled={disabled ? '' : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n <span className=\"truncate\">{name}</span>\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n {selected && <CheckIcon className=\"size-4\" />}\n </span>\n </div>\n );\n});\n\n// SingleSelectGroup — wraps a group of rows with a role=\"group\" container\ninterface SingleSelectGroupProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction SingleSelectGroup({ className, children, ...props }: SingleSelectGroupProps) {\n return (\n <div data-slot=\"single-select-group\" role=\"group\" className={cn(className)} {...props}>\n {children}\n </div>\n );\n}\n\n// SingleSelectGroupLabel — styled label for a group header\ninterface SingleSelectGroupLabelProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction SingleSelectGroupLabel({ className, children, ...props }: SingleSelectGroupLabelProps) {\n return (\n <div\n data-slot=\"single-select-group-label\"\n className={cn('text-muted-foreground px-2 py-1.5 text-xs', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// SingleSelectEmpty — displayed when no options match a search filter\ninterface SingleSelectEmptyProps {\n children?: React.ReactNode;\n className?: string;\n}\n\nfunction SingleSelectEmpty({ children, className }: SingleSelectEmptyProps) {\n return (\n <div\n data-slot=\"single-select-empty\"\n className={cn('flex items-center justify-center py-6 text-sm text-muted-foreground', className)}\n >\n {children ?? 'No options found.'}\n </div>\n );\n}\n\nexport {\n SingleSelectClear,\n SingleSelectContent,\n SingleSelectEmpty,\n SingleSelectGroup,\n SingleSelectGroupLabel,\n SingleSelectList,\n SingleSelectRoot,\n SingleSelectRow,\n SingleSelectSearch,\n SingleSelectTrigger,\n};\n\nexport type {\n SingleSelectClearProps,\n SingleSelectContentProps,\n SingleSelectEmptyProps,\n SingleSelectGroupLabelProps,\n SingleSelectGroupProps,\n SingleSelectListProps,\n SingleSelectRootProps,\n SingleSelectRowProps,\n SingleSelectSearchProps,\n SingleSelectTriggerProps,\n};\n","import { useCallback, useEffect, useId, useMemo, useState } from 'react';\nimport type { SelectGroup, SelectOption, SelectValue } from '../types';\n\ninterface UseSingleSelectStateProps {\n options: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue;\n onChange?: (value: SelectValue) => void;\n defaultValue?: SelectValue;\n remoteSearch?: boolean;\n}\n\n// Manages controlled/uncontrolled single-select state, search filtering, and grouping\n// No ref needed here — selectOption receives the value as an argument rather than reading current state\nexport function useSingleSelect({\n options,\n groups,\n value: controlledValue,\n onChange,\n defaultValue,\n remoteSearch,\n}: UseSingleSelectStateProps) {\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<SelectValue>(defaultValue ?? '');\n const selectedValue = isControlled ? controlledValue : internalValue;\n\n const [open, setOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const listboxId = useId();\n\n const optionMap = useMemo(() => {\n const map = new Map<SelectValue, SelectOption>();\n for (const option of options) {\n map.set(option.value, option);\n }\n return map;\n }, [options]);\n\n const filteredOptions = useMemo(() => {\n if (remoteSearch || !searchQuery) return options;\n const lower = searchQuery.toLowerCase();\n return options.filter((o) => o.label.toLowerCase().includes(lower));\n }, [options, searchQuery, remoteSearch]);\n\n const updateSelection = useCallback(\n (nextValue: SelectValue) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n onChange?.(nextValue);\n },\n [isControlled, onChange],\n );\n\n // Select an option and close the popover\n const selectOption = useCallback(\n (optionValue: SelectValue) => {\n const option = optionMap.get(optionValue);\n if (option?.disabled) return;\n updateSelection(optionValue);\n setOpen(false);\n },\n [optionMap, updateSelection],\n );\n\n // Clear the selection and close the popover\n const clearSelection = useCallback(() => {\n updateSelection('');\n setOpen(false);\n }, [updateSelection]);\n\n // Reset search when popover closes\n useEffect(() => {\n if (!open) {\n setSearchQuery('');\n }\n }, [open]);\n\n const selectedOption = selectedValue ? optionMap.get(selectedValue) : undefined;\n\n // O(n + g) grouping — one pass over groups, one pass over options\n const grouped = useMemo(() => {\n if (!groups || groups.length === 0) return null;\n\n const buckets = new Map<string | number, SelectOption[]>();\n for (const g of groups) {\n buckets.set(g.id, []);\n }\n\n const ungrouped: SelectOption[] = [];\n for (const option of filteredOptions) {\n const bucket = option.groupId != null ? buckets.get(option.groupId) : undefined;\n if (bucket) {\n bucket.push(option);\n } else {\n ungrouped.push(option);\n }\n }\n\n const entries: Array<{ name: string; options: SelectOption[] }> = [];\n for (const g of groups) {\n const bucket = buckets.get(g.id);\n if (!bucket || bucket.length === 0) continue;\n entries.push({ name: g.name, options: bucket });\n }\n\n return { ungrouped, entries };\n }, [filteredOptions, groups]);\n\n return {\n selectedValue,\n selectedOption,\n open,\n setOpen,\n searchQuery,\n setSearchQuery,\n listboxId,\n filteredOptions,\n grouped,\n selectOption,\n clearSelection,\n };\n}\n","import { Loader2 } from 'lucide-react';\nimport * as React from 'react';\nimport {\n SingleSelectClear,\n SingleSelectContent,\n SingleSelectEmpty,\n SingleSelectGroup,\n SingleSelectGroupLabel,\n SingleSelectList,\n SingleSelectRoot,\n SingleSelectRow,\n SingleSelectSearch,\n SingleSelectTrigger,\n} from '../../../../../shadcn/shadcnSingleSelect';\nimport { cn } from '../../../../../shadcn/utils';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '../../../Field';\nimport { useSingleSelect } from '../../hooks/useSingleSelect';\nimport type { AsyncSelectState, SelectGroup, SelectOption, SelectValue } from '../../types';\n\nexport interface SingleSelectProps {\n label?: string;\n description?: React.ReactNode;\n error?: string;\n placeholder?: string;\n options?: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue;\n onChange?: (value: SelectValue) => void;\n onBlur?: () => void;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n className?: string;\n id?: string;\n defaultValue?: SelectValue;\n searchable?: boolean;\n searchPlaceholder?: string;\n clearable?: boolean;\n asyncState?: AsyncSelectState;\n}\n\n// Single-value form field wrapper built on Popover primitives\nexport const SingleSelect = React.forwardRef<HTMLButtonElement, SingleSelectProps>(\n (\n {\n label,\n description,\n error,\n placeholder = 'Select an option',\n options,\n groups,\n value: controlledValue,\n onChange,\n onBlur,\n name,\n disabled = false,\n required,\n className,\n id,\n defaultValue,\n searchable = false,\n searchPlaceholder = 'Search...',\n clearable = false,\n asyncState,\n },\n ref,\n ) => {\n const state = useSingleSelect({\n options: options ?? [],\n groups,\n value: controlledValue,\n onChange,\n defaultValue,\n remoteSearch: !!asyncState,\n });\n\n // Resolve search binding -- async delegates to parent, static uses local state\n const searchValue = asyncState ? asyncState.searchQuery : state.searchQuery;\n const setSearchValue = asyncState ? asyncState.setSearchQuery : state.setSearchQuery;\n const showSearch = !!asyncState || searchable;\n\n // Renders a single option row\n function renderRow(option: SelectOption) {\n return (\n <SingleSelectRow\n key={String(option.value)}\n name={option.label}\n selected={state.selectedValue === option.value}\n onSelect={() => {\n state.selectOption(option.value);\n }}\n disabled={option.disabled}\n />\n );\n }\n\n // Renders the option list content (flat or grouped)\n function renderOptions() {\n if (asyncState?.loading) {\n return (\n <div className=\"flex items-center justify-center gap-2 py-6\">\n <Loader2 className=\"size-4 animate-spin text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">Loading...</span>\n </div>\n );\n }\n\n if (state.filteredOptions.length === 0) {\n return <SingleSelectEmpty />;\n }\n\n if (!state.grouped) {\n return state.filteredOptions.map(renderRow);\n }\n\n return (\n <>\n {state.grouped.ungrouped.map(renderRow)}\n {state.grouped.entries.map((entry) => (\n <SingleSelectGroup key={entry.name}>\n <SingleSelectGroupLabel>{entry.name}</SingleSelectGroupLabel>\n {entry.options.map(renderRow)}\n </SingleSelectGroup>\n ))}\n </>\n );\n }\n\n return (\n <Field>\n {label && <FieldLabel>{label}</FieldLabel>}\n\n <SingleSelectRoot open={state.open} onOpenChange={state.setOpen} disabled={disabled}>\n <SingleSelectTrigger\n ref={ref}\n id={id}\n open={state.open}\n listboxId={state.listboxId}\n aria-invalid={!!error}\n aria-required={required}\n disabled={disabled}\n onBlur={onBlur}\n className={cn('w-full', className)}\n >\n <span className=\"flex flex-1 items-center overflow-hidden\">\n {state.selectedOption ? (\n <span className=\"truncate\">{state.selectedOption.label}</span>\n ) : (\n <span className=\"text-muted-foreground\">{placeholder}</span>\n )}\n </span>\n </SingleSelectTrigger>\n\n <SingleSelectContent>\n {showSearch && (\n <SingleSelectSearch value={searchValue} onValueChange={setSearchValue} placeholder={searchPlaceholder} />\n )}\n\n <SingleSelectList id={state.listboxId}>\n {renderOptions()}\n {asyncState?.hasMore && <div ref={asyncState.sentinelRef} className=\"h-1\" />}\n {asyncState?.loadingMore && (\n <div className=\"flex items-center justify-center gap-2 py-2\">\n <Loader2 className=\"size-3 animate-spin text-muted-foreground\" />\n <span className=\"text-xs text-muted-foreground\">Loading more...</span>\n </div>\n )}\n </SingleSelectList>\n\n {clearable && <SingleSelectClear onClear={state.clearSelection} disabled={!state.selectedValue} />}\n </SingleSelectContent>\n </SingleSelectRoot>\n\n {name && state.selectedValue && <input type=\"hidden\" name={name} value={String(state.selectedValue)} />}\n\n {description && !error && <FieldDescription>{description}</FieldDescription>}\n {error && <FieldError>{error}</FieldError>}\n </Field>\n );\n },\n);\n\nSingleSelect.displayName = 'SingleSelect';\n","import { ChevronDownIcon, Loader2 } from 'lucide-react';\nimport * as React from 'react';\nimport { PopoverTrigger } from '../../../../../shadcn/shadcnPopover';\nimport {\n SingleSelectClear,\n SingleSelectContent,\n SingleSelectEmpty,\n SingleSelectGroup,\n SingleSelectGroupLabel,\n SingleSelectList,\n SingleSelectRoot,\n SingleSelectRow,\n SingleSelectSearch,\n} from '../../../../../shadcn/shadcnSingleSelect';\nimport { cn } from '../../../../../shadcn/utils';\nimport { useSingleSelect } from '../../hooks/useSingleSelect';\nimport type { AsyncSelectState, SelectGroup, SelectOption, SelectValue } from '../../types';\n\nexport interface SingleSelectFilterProps {\n label?: string;\n placeholder?: string;\n options?: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue;\n onChange?: (value: SelectValue) => void;\n onBlur?: () => void;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n className?: string;\n id?: string;\n defaultValue?: SelectValue;\n searchPlaceholder?: string;\n asyncState?: AsyncSelectState;\n}\n\n// Compact single-select filter trigger with inline label display\nexport const SingleSelectFilter = React.forwardRef<HTMLButtonElement, SingleSelectFilterProps>(\n (\n {\n label,\n placeholder,\n options,\n groups,\n value: controlledValue,\n onChange,\n onBlur,\n name,\n disabled = false,\n required,\n className,\n id,\n defaultValue,\n searchPlaceholder = 'Search...',\n asyncState,\n },\n ref,\n ) => {\n const state = useSingleSelect({\n options: options ?? [],\n groups,\n value: controlledValue,\n onChange,\n defaultValue,\n remoteSearch: !!asyncState,\n });\n\n // Resolve search binding -- async delegates to parent, filter always shows search\n const searchValue = asyncState ? asyncState.searchQuery : state.searchQuery;\n const setSearchValue = asyncState ? asyncState.setSearchQuery : state.setSearchQuery;\n\n // Renders a single option row\n function renderRow(option: SelectOption) {\n return (\n <SingleSelectRow\n key={String(option.value)}\n name={option.label}\n selected={state.selectedValue === option.value}\n onSelect={() => {\n state.selectOption(option.value);\n }}\n disabled={option.disabled}\n />\n );\n }\n\n // Renders the option list content (flat or grouped)\n function renderOptions() {\n if (asyncState?.loading) {\n return (\n <div className=\"flex items-center justify-center gap-2 py-6\">\n <Loader2 className=\"size-4 animate-spin text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">Loading...</span>\n </div>\n );\n }\n\n if (state.filteredOptions.length === 0) {\n return <SingleSelectEmpty />;\n }\n\n if (!state.grouped) {\n return state.filteredOptions.map(renderRow);\n }\n\n return (\n <>\n {state.grouped.ungrouped.map(renderRow)}\n {state.grouped.entries.map((entry) => (\n <SingleSelectGroup key={entry.name}>\n <SingleSelectGroupLabel>{entry.name}</SingleSelectGroupLabel>\n {entry.options.map(renderRow)}\n </SingleSelectGroup>\n ))}\n </>\n );\n }\n\n const triggerText = state.selectedOption ? `${label} = ${state.selectedOption.label}` : (label ?? placeholder);\n\n return (\n <>\n <SingleSelectRoot open={state.open} onOpenChange={state.setOpen} disabled={disabled}>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n id={id}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={state.open}\n aria-haspopup=\"listbox\"\n aria-controls={state.listboxId}\n aria-required={required}\n disabled={disabled}\n onBlur={onBlur}\n className={cn(\n 'inline-flex items-center gap-2 rounded-md border px-3 py-2 text-sm whitespace-nowrap shadow-xs outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-50',\n state.selectedOption\n ? 'bg-primary text-primary-foreground border-primary hover:bg-primary/90'\n : 'border-input bg-transparent hover:bg-accent hover:text-accent-foreground',\n className,\n )}\n >\n <span className=\"truncate\">{triggerText}</span>\n <ChevronDownIcon className=\"size-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n\n <SingleSelectContent className=\"w-[250px]\">\n <SingleSelectSearch value={searchValue} onValueChange={setSearchValue} placeholder={searchPlaceholder} />\n\n <SingleSelectList id={state.listboxId}>\n {renderOptions()}\n {asyncState?.hasMore && <div ref={asyncState.sentinelRef} className=\"h-1\" />}\n {asyncState?.loadingMore && (\n <div className=\"flex items-center justify-center gap-2 py-2\">\n <Loader2 className=\"size-3 animate-spin text-muted-foreground\" />\n <span className=\"text-xs text-muted-foreground\">Loading more...</span>\n </div>\n )}\n </SingleSelectList>\n\n <SingleSelectClear onClear={state.clearSelection} disabled={!state.selectedValue} />\n </SingleSelectContent>\n </SingleSelectRoot>\n\n {name && state.selectedValue && <input type=\"hidden\" name={name} value={String(state.selectedValue)} />}\n </>\n );\n },\n);\n\nSingleSelectFilter.displayName = 'SingleSelectFilter';\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\n// src/InView.tsx\nimport * as React from \"react\";\n\n// src/observe.ts\nvar observerMap = /* @__PURE__ */ new Map();\nvar RootIds = /* @__PURE__ */ new WeakMap();\nvar rootId = 0;\nvar unsupportedValue;\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\nfunction getRootId(root) {\n if (!root) return \"0\";\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(\n (key) => options[key] !== void 0\n ).map((key) => {\n return `${key}_${key === \"root\" ? getRootId(options.root) : options[key]}`;\n }).toString();\n}\nfunction createObserver(options) {\n const id = optionsToId(options);\n let instance = observerMap.get(id);\n if (!instance) {\n const elements = /* @__PURE__ */ new Map();\n let thresholds;\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n var _a2;\n const inView = entry.isIntersecting && thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n if (options.trackVisibility && typeof entry.isVisible === \"undefined\") {\n entry.isVisible = inView;\n }\n (_a2 = elements.get(entry.target)) == null ? void 0 : _a2.forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id,\n observer,\n elements\n };\n observerMap.set(id, instance);\n }\n return instance;\n}\nfunction observe(element, callback, options = {}, fallbackInView = unsupportedValue) {\n if (typeof window.IntersectionObserver === \"undefined\" && fallbackInView !== void 0) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === \"number\" ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return () => {\n };\n }\n const { id, observer, elements } = createObserver(options);\n const callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n callbacks.splice(callbacks.indexOf(callback), 1);\n if (callbacks.length === 0) {\n elements.delete(element);\n observer.unobserve(element);\n }\n if (elements.size === 0) {\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n\n// src/InView.tsx\nfunction isPlainChildren(props) {\n return typeof props.children !== \"function\";\n}\nvar InView = class extends React.Component {\n constructor(props) {\n super(props);\n __publicField(this, \"node\", null);\n __publicField(this, \"_unobserveCb\", null);\n __publicField(this, \"lastInView\");\n __publicField(this, \"handleNode\", (node) => {\n if (this.node) {\n this.unobserve();\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n this.setState({ inView: !!this.props.initialInView, entry: void 0 });\n this.lastInView = this.props.initialInView;\n }\n }\n this.node = node ? node : null;\n this.observeNode();\n });\n __publicField(this, \"handleChange\", (inView, entry) => {\n const previousInView = this.lastInView;\n this.lastInView = inView;\n if (previousInView === void 0 && !inView) {\n return;\n }\n if (inView && this.props.triggerOnce) {\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n this.props.onChange(inView, entry);\n }\n });\n this.state = {\n inView: !!props.initialInView,\n entry: void 0\n };\n this.lastInView = props.initialInView;\n }\n componentDidMount() {\n this.unobserve();\n this.observeNode();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n }\n componentWillUnmount() {\n this.unobserve();\n }\n observeNode() {\n if (!this.node || this.props.skip) return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView\n } = this.props;\n if (this.lastInView === void 0) {\n this.lastInView = this.props.initialInView;\n }\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-expect-error\n trackVisibility,\n delay\n },\n fallbackInView\n );\n }\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n render() {\n const { children } = this.props;\n if (typeof children === \"function\") {\n const { inView, entry } = this.state;\n return children({ inView, entry, ref: this.handleNode });\n }\n const {\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props;\n return React.createElement(\n as || \"div\",\n { ref: this.handleNode, ...props },\n children\n );\n }\n};\n\n// src/useInView.tsx\nimport * as React2 from \"react\";\nfunction useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange\n} = {}) {\n var _a2;\n const [ref, setRef] = React2.useState(null);\n const callback = React2.useRef(onChange);\n const lastInViewRef = React2.useRef(initialInView);\n const [state, setState] = React2.useState({\n inView: !!initialInView,\n entry: void 0\n });\n callback.current = onChange;\n React2.useEffect(\n () => {\n if (lastInViewRef.current === void 0) {\n lastInViewRef.current = initialInView;\n }\n if (skip || !ref) return;\n let unobserve;\n unobserve = observe(\n ref,\n (inView, entry) => {\n const previousInView = lastInViewRef.current;\n lastInViewRef.current = inView;\n if (previousInView === void 0 && !inView) {\n return;\n }\n setState({\n inView,\n entry\n });\n if (callback.current) callback.current(inView, entry);\n if (entry.isIntersecting && triggerOnce && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-expect-error\n trackVisibility,\n delay\n },\n fallbackInView\n );\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay\n ]\n );\n const entryTarget = (_a2 = state.entry) == null ? void 0 : _a2.target;\n const previousEntryTarget = React2.useRef(void 0);\n if (!ref && entryTarget && !triggerOnce && !skip && previousEntryTarget.current !== entryTarget) {\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: void 0\n });\n lastInViewRef.current = initialInView;\n }\n const result = [setRef, state.inView, state.entry];\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\n\n// src/useOnInView.tsx\nimport * as React3 from \"react\";\nvar _a, _b;\nvar useSyncEffect = (_b = (_a = \"useInsertionEffect\" in React3 ? React3.useInsertionEffect : void 0) != null ? _a : React3.useLayoutEffect) != null ? _b : React3.useEffect;\nvar useOnInView = (onIntersectionChange, {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n triggerOnce,\n skip\n} = {}) => {\n const onIntersectionChangeRef = React3.useRef(onIntersectionChange);\n const observedElementRef = React3.useRef(null);\n const observerCleanupRef = React3.useRef(void 0);\n const lastInViewRef = React3.useRef(void 0);\n useSyncEffect(() => {\n onIntersectionChangeRef.current = onIntersectionChange;\n }, [onIntersectionChange]);\n return React3.useCallback(\n (element) => {\n const cleanupExisting = () => {\n if (observerCleanupRef.current) {\n const cleanup = observerCleanupRef.current;\n observerCleanupRef.current = void 0;\n cleanup();\n }\n };\n if (element === observedElementRef.current) {\n return observerCleanupRef.current;\n }\n if (!element || skip) {\n cleanupExisting();\n observedElementRef.current = null;\n lastInViewRef.current = void 0;\n return;\n }\n cleanupExisting();\n observedElementRef.current = element;\n let destroyed = false;\n const destroyObserver = observe(\n element,\n (inView, entry) => {\n const previousInView = lastInViewRef.current;\n lastInViewRef.current = inView;\n if (previousInView === void 0 && !inView) {\n return;\n }\n onIntersectionChangeRef.current(\n inView,\n entry\n );\n if (triggerOnce && inView) {\n stopObserving();\n }\n },\n {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay\n }\n );\n function stopObserving() {\n if (destroyed) return;\n destroyed = true;\n destroyObserver();\n observedElementRef.current = null;\n observerCleanupRef.current = void 0;\n lastInViewRef.current = void 0;\n }\n observerCleanupRef.current = stopObserving;\n return observerCleanupRef.current;\n },\n [\n Array.isArray(threshold) ? threshold.toString() : threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n triggerOnce,\n skip\n ]\n );\n};\nexport {\n InView,\n defaultFallbackInView,\n observe,\n useInView,\n useOnInView\n};\n//# sourceMappingURL=index.mjs.map","import { keepPreviousData, useInfiniteQuery, useQuery } from '@tanstack/react-query';\nimport { useEffect, useId, useMemo, useRef, useState } from 'react';\nimport { useInView } from 'react-intersection-observer';\nimport { axios } from '../../../utils/axios';\nimport type { SelectFieldKeys, SelectGroup, SelectOption, SelectOptionsResponse, SelectValue } from '../types';\n\nexport interface UseSelectProps {\n options?: SelectOption[];\n groups?: SelectGroup[];\n optionsEndpoint?: string;\n searchDebounceMs?: number;\n limit?: number;\n fieldKeys?: SelectFieldKeys;\n params?: Record<string, string | number | boolean>;\n selectedValues?: SelectValue[];\n}\n\nexport interface UseSelectReturn {\n options: SelectOption[];\n groups: SelectGroup[];\n loading: boolean;\n loadingMore: boolean;\n hasMore: boolean;\n searchQuery: string;\n setSearchQuery: (q: string) => void;\n sentinelRef: (node?: Element | null) => void;\n}\n\nconst NOOP_REF = () => {};\n\n// Stable JSON serialization for query keys (order-independent)\nfunction stableStringify(obj: object | undefined): string {\n if (!obj) return '';\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n// Manages async option fetching with debounced search, sentinel-based infinite scroll, and selected value resolution\nexport function useSelect({\n options: staticOptions,\n groups: staticGroups,\n optionsEndpoint,\n searchDebounceMs = 300,\n limit = 20,\n fieldKeys,\n params,\n selectedValues,\n}: UseSelectProps): UseSelectReturn {\n const isAsync = !!optionsEndpoint;\n const instanceId = useId();\n const [searchQuery, setSearchQuery] = useState('');\n const [debouncedSearch, setDebouncedSearch] = useState('');\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Debounce search input\n useEffect(() => {\n if (!isAsync) return;\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n setDebouncedSearch(searchQuery);\n }, searchDebounceMs);\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, [searchQuery, searchDebounceMs, isAsync]);\n\n // Serialize selected values to a comma-separated string of IDs (filters out booleans)\n const serializedValues = useMemo(\n () =>\n selectedValues && selectedValues.length > 0\n ? selectedValues.filter((v): v is string | number => typeof v !== 'boolean').join(',')\n : undefined,\n [selectedValues],\n );\n\n // Query 1: Resolve selected values to full option objects\n const { data: resolvedSelected } = useQuery({\n queryKey: ['select-resolve', instanceId, optionsEndpoint, JSON.stringify(selectedValues)],\n queryFn: () =>\n axios\n .get<SelectOptionsResponse>(optionsEndpoint ?? '', {\n params: { values: serializedValues, ...fieldKeys, ...params },\n showSuccessToast: false,\n showErrorToast: false,\n })\n .then((r) => r.data),\n enabled: isAsync && (selectedValues?.length ?? 0) > 0,\n staleTime: 5 * 60_000,\n placeholderData: keepPreviousData,\n });\n\n // Query 2: Paginated search results, excluding selected IDs\n const { data, isFetching, isFetchingNextPage, fetchNextPage, hasNextPage } = useInfiniteQuery({\n queryKey: [\n 'select-search',\n instanceId,\n optionsEndpoint,\n debouncedSearch,\n stableStringify(fieldKeys),\n stableStringify(params),\n ],\n queryFn: ({ pageParam = 0 }) =>\n axios\n .get<SelectOptionsResponse>(optionsEndpoint ?? '', {\n params: {\n search: debouncedSearch || undefined,\n limit,\n offset: pageParam,\n excludeIds: serializedValues,\n ...fieldKeys,\n ...params,\n },\n showSuccessToast: false,\n showErrorToast: false,\n })\n .then((r) => r.data),\n getNextPageParam: (lastPage, _allPages, lastPageParam) => (lastPage.hasMore ? lastPageParam + limit : undefined),\n initialPageParam: 0,\n enabled: isAsync,\n placeholderData: keepPreviousData,\n });\n\n // Merge: resolved selected first, then search results (Set-based dedup)\n const fetchedOptions = useMemo(() => {\n const searchResults = data?.pages.flatMap((p) => p.options) ?? [];\n const selected = resolvedSelected?.options ?? [];\n if (selected.length === 0) return searchResults;\n\n const selectedIdSet = new Set(selected.map((o) => o.value));\n const dedupedSearch = searchResults.filter((o) => !selectedIdSet.has(o.value));\n return [...selected, ...dedupedSearch];\n }, [resolvedSelected, data]);\n\n const fetchedGroups = data?.pages[0]?.groups ?? staticGroups ?? [];\n\n // IntersectionObserver sentinel for infinite scroll\n const { ref: sentinelRef, inView } = useInView();\n useEffect(() => {\n if (inView && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n }, [inView, hasNextPage, isFetchingNextPage, fetchNextPage]);\n\n // Static mode\n if (!isAsync) {\n return {\n options: staticOptions ?? [],\n groups: staticGroups ?? [],\n loading: false,\n loadingMore: false,\n hasMore: false,\n searchQuery,\n setSearchQuery,\n sentinelRef: NOOP_REF,\n };\n }\n\n return {\n options: fetchedOptions,\n groups: fetchedGroups,\n loading: isFetching && !isFetchingNextPage,\n loadingMore: isFetchingNextPage,\n hasMore: hasNextPage ?? false,\n searchQuery,\n setSearchQuery,\n sentinelRef,\n };\n}\n","import * as React from 'react';\nimport { MultiSelect, type MultiSelectProps } from './components/MultiSelect/MultiSelect';\nimport { MultiSelectFilter, type MultiSelectFilterProps } from './components/MultiSelect/MultiSelectFilter';\nimport { SingleSelect, type SingleSelectProps } from './components/SingleSelect/SingleSelect';\nimport { SingleSelectFilter, type SingleSelectFilterProps } from './components/SingleSelect/SingleSelectFilter';\nimport { useSelect } from './hooks/useSelect';\nimport type { AsyncSelectState, SelectFieldKeys, SelectVariant } from './types';\n\ninterface SelectBaseProps {\n optionsEndpoint?: string;\n searchDebounceMs?: number;\n limit?: number;\n fieldKeys?: SelectFieldKeys;\n params?: Record<string, string | number | boolean>;\n}\n\ninterface SelectSingleProps extends SingleSelectProps, SelectBaseProps {\n multiple?: false;\n type?: SelectVariant;\n}\n\ninterface SelectMultiProps extends MultiSelectProps, SelectBaseProps {\n multiple: true;\n type?: SelectVariant;\n}\n\nexport type SelectProps = SelectSingleProps | SelectMultiProps;\n\n// Unified select field supporting single/multi selection and default/filter variants\nexport const Select = React.forwardRef<HTMLButtonElement, SelectProps>((props, ref) => {\n const { multiple, type = 'default', optionsEndpoint, searchDebounceMs, limit, fieldKeys, params, ...rest } = props;\n\n const selectData = useSelect({\n options: rest.options,\n groups: rest.groups,\n optionsEndpoint,\n searchDebounceMs,\n limit,\n fieldKeys,\n params,\n selectedValues: rest.value != null ? (Array.isArray(rest.value) ? rest.value : [rest.value]) : undefined,\n });\n\n const isAsync = !!optionsEndpoint;\n\n const asyncState: AsyncSelectState | undefined = isAsync\n ? {\n loading: selectData.loading,\n loadingMore: selectData.loadingMore,\n hasMore: selectData.hasMore,\n searchQuery: selectData.searchQuery,\n setSearchQuery: selectData.setSearchQuery,\n sentinelRef: selectData.sentinelRef,\n }\n : undefined;\n\n const childProps = {\n ...rest,\n options: selectData.options,\n groups: selectData.groups,\n asyncState,\n };\n\n if (multiple) {\n if (type === 'filter') return <MultiSelectFilter ref={ref} {...(childProps as MultiSelectFilterProps)} />;\n return <MultiSelect ref={ref} {...(childProps as MultiSelectProps)} />;\n }\n if (type === 'filter') return <SingleSelectFilter ref={ref} {...(childProps as SingleSelectFilterProps)} />;\n return <SingleSelect ref={ref} {...(childProps as SingleSelectProps)} />;\n}) as React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLButtonElement>>;\n\nSelect.displayName = 'Select';\n","export type { MultiSelectProps } from './components/MultiSelect/MultiSelect';\nexport { MultiSelect } from './components/MultiSelect/MultiSelect';\nexport type { MultiSelectFilterProps } from './components/MultiSelect/MultiSelectFilter';\nexport { MultiSelectFilter } from './components/MultiSelect/MultiSelectFilter';\nexport type { SingleSelectProps } from './components/SingleSelect/SingleSelect';\nexport { SingleSelect } from './components/SingleSelect/SingleSelect';\nexport type { SingleSelectFilterProps } from './components/SingleSelect/SingleSelectFilter';\nexport { SingleSelectFilter } from './components/SingleSelect/SingleSelectFilter';\nexport type { UseSelectProps, UseSelectReturn } from './hooks/useSelect';\nexport { useSelect } from './hooks/useSelect';\nexport type { SelectProps } from './Select';\nexport { Select } from './Select';\nexport type {\n AsyncSelectState,\n SelectFieldKeys,\n SelectGroup,\n SelectOption,\n SelectOptionsResponse,\n SelectValue,\n SelectVariant,\n} from './types';\n\n// Compound primitives for custom multi-select layouts\nimport {\n MultiSelectActions as ShadcnMultiSelectActions,\n MultiSelectContent as ShadcnMultiSelectContent,\n MultiSelectEmpty as ShadcnMultiSelectEmpty,\n MultiSelectGroup as ShadcnMultiSelectGroup,\n MultiSelectGroupLabel as ShadcnMultiSelectGroupLabel,\n MultiSelectList as ShadcnMultiSelectList,\n MultiSelectRoot as ShadcnMultiSelectRoot,\n MultiSelectRow as ShadcnMultiSelectRow,\n MultiSelectSearch as ShadcnMultiSelectSearch,\n MultiSelectTrigger as ShadcnMultiSelectTrigger,\n} from '../../../shadcn/shadcnMultiSelect';\n\nexport const MultiSelectRoot = ShadcnMultiSelectRoot;\nexport const MultiSelectTrigger = ShadcnMultiSelectTrigger;\nexport const MultiSelectContent = ShadcnMultiSelectContent;\nexport const MultiSelectSearch = ShadcnMultiSelectSearch;\nexport const MultiSelectActions = ShadcnMultiSelectActions;\nexport const MultiSelectGroup = ShadcnMultiSelectGroup;\nexport const MultiSelectGroupLabel = ShadcnMultiSelectGroupLabel;\nexport const MultiSelectList = ShadcnMultiSelectList;\nexport const MultiSelectRow = ShadcnMultiSelectRow;\nexport const MultiSelectEmpty = ShadcnMultiSelectEmpty;\n\nexport type {\n MultiSelectActionsProps,\n MultiSelectContentProps,\n MultiSelectEmptyProps,\n MultiSelectGroupLabelProps,\n MultiSelectGroupProps,\n MultiSelectListProps,\n MultiSelectRootProps,\n MultiSelectRowProps,\n MultiSelectSearchProps,\n MultiSelectTriggerProps,\n} from '../../../shadcn/shadcnMultiSelect';\n\n// Compound primitives for custom single-select layouts\nimport {\n SingleSelectClear as ShadcnSingleSelectClear,\n SingleSelectContent as ShadcnSingleSelectContent,\n SingleSelectEmpty as ShadcnSingleSelectEmpty,\n SingleSelectGroup as ShadcnSingleSelectGroup,\n SingleSelectGroupLabel as ShadcnSingleSelectGroupLabel,\n SingleSelectList as ShadcnSingleSelectList,\n SingleSelectRoot as ShadcnSingleSelectRoot,\n SingleSelectRow as ShadcnSingleSelectRow,\n SingleSelectSearch as ShadcnSingleSelectSearch,\n SingleSelectTrigger as ShadcnSingleSelectTrigger,\n} from '../../../shadcn/shadcnSingleSelect';\n\nexport const SingleSelectRoot = ShadcnSingleSelectRoot;\nexport const SingleSelectTrigger = ShadcnSingleSelectTrigger;\nexport const SingleSelectContent = ShadcnSingleSelectContent;\nexport const SingleSelectSearch = ShadcnSingleSelectSearch;\nexport const SingleSelectClear = ShadcnSingleSelectClear;\nexport const SingleSelectGroup = ShadcnSingleSelectGroup;\nexport const SingleSelectGroupLabel = ShadcnSingleSelectGroupLabel;\nexport const SingleSelectList = ShadcnSingleSelectList;\nexport const SingleSelectRow = ShadcnSingleSelectRow;\nexport const SingleSelectEmpty = ShadcnSingleSelectEmpty;\n\nexport type {\n SingleSelectClearProps,\n SingleSelectContentProps,\n SingleSelectEmptyProps,\n SingleSelectGroupLabelProps,\n SingleSelectGroupProps,\n SingleSelectListProps,\n SingleSelectRootProps,\n SingleSelectRowProps,\n SingleSelectSearchProps,\n SingleSelectTriggerProps,\n} from '../../../shadcn/shadcnSingleSelect';\n"],"names":["MultiSelectRoot","MultiSelectTrigger","ChevronDownIcon","MultiSelectContent","MultiSelectSearch","SearchIcon","MultiSelectActions","MultiSelectList","MultiSelectRow","MultiSelectGroup","MultiSelectGroupLabel","MultiSelectEmpty","Loader2","SingleSelectRoot","SingleSelectTrigger","SingleSelectContent","SingleSelectSearch","SingleSelectClear","SingleSelectList","SingleSelectRow","CheckIcon","SingleSelectGroup","SingleSelectGroupLabel","SingleSelectEmpty","React2","ShadcnMultiSelectRoot","ShadcnMultiSelectTrigger","ShadcnMultiSelectContent","ShadcnMultiSelectSearch","ShadcnMultiSelectActions","ShadcnMultiSelectGroup","ShadcnMultiSelectGroupLabel","ShadcnMultiSelectList","ShadcnMultiSelectRow","ShadcnMultiSelectEmpty","ShadcnSingleSelectRoot","ShadcnSingleSelectTrigger","ShadcnSingleSelectContent","ShadcnSingleSelectSearch","ShadcnSingleSelectClear","ShadcnSingleSelectGroup","ShadcnSingleSelectGroupLabel","ShadcnSingleSelectList","ShadcnSingleSelectRow","ShadcnSingleSelectEmpty"],"mappings":"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","x_google_ignoreList":[0,9]}
package/dist/field.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { c as cva } from './index8.js';
2
+ import { c as cva } from './index5.js';
3
3
  import { useMemo } from 'react';
4
- import { c as cn } from './utils.js';
4
+ import { c as cn } from './utils2.js';
5
5
  import { L as Label } from './Label.js';
6
6
  import { S as Separator } from './separator2.js';
7
7
 
@@ -1,2 +1,3 @@
1
+ export { u as useSSE } from '../useSSE.js';
1
2
  export { u as useTheme } from '../useTheme.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/index.js CHANGED
@@ -1,14 +1,19 @@
1
- export { c as cn } from './utils.js';
2
- export { u as useTheme } from './useTheme.js';
1
+ export { c as cn } from './utils2.js';
2
+ export { c as configureQuantumUI, d as defineConfig, g as getConfig, r as resetConfig } from './index2.js';
3
3
  export { T as ThemeContext, a as ThemeProvider } from './ThemeContext.js';
4
- export { a as axios, b as cancelTokenRefresh, e as clearCsrfToken, f as clearToken, c as configureQuantumUI, d as defineConfig, g as getConfig, h as getCsrfToken, i as getToken, j as recoverToken, r as resetConfig, s as scheduleTokenRefresh, k as setCsrfToken, l as setToken } from './axios.js';
4
+ export { u as useSSE } from './useSSE.js';
5
+ export { u as useTheme } from './useTheme.js';
6
+ export { axios, cancelTokenRefresh, clearCsrfToken, clearToken, getCsrfToken, getToken, recoverToken, scheduleTokenRefresh, setCsrfToken, setToken } from './utils/axios.js';
7
+ export { A as Alert } from './Alert.js';
5
8
  export { A as Avatar, a as AvatarBadge, b as AvatarFallback, c as AvatarGroup, d as AvatarGroupCount, e as AvatarImage } from './Avatar.js';
6
- export { B as Badge, b as badgeVariants } from './Badge.js';
9
+ export { B as Badge } from './Badge.js';
10
+ export { b as badgeVariants } from './Badge2.js';
7
11
  export { B as Button } from './Button.js';
8
12
  export { b as buttonVariants } from './Button2.js';
9
13
  export { C as Card, a as CardContent, b as CardDescription, c as CardFooter, d as CardHeader, e as CardTitle } from './Card.js';
10
14
  export { C as ChartContainer, a as ChartLegend, b as ChartLegendContent, c as ChartStyle, d as ChartTooltip, e as ChartTooltipContent, u as useChart } from './Chart.js';
11
15
  export { C as Checkbox } from './Checkbox.js';
16
+ export { e as DataTable, D as DataTableColumnHeader, a as DataTableEmpty, b as DataTablePagination, c as DataTableToolbar, d as DataTableViewOptions, g as getSelectionColumn, u as useDataTable } from './utils.js';
12
17
  export { D as DatePicker } from './DatePicker.js';
13
18
  export { o as DropdownMenu, a as DropdownMenuCheckboxItem, b as DropdownMenuContent, c as DropdownMenuGroup, d as DropdownMenuItem, e as DropdownMenuLabel, f as DropdownMenuPortal, g as DropdownMenuRadioGroup, h as DropdownMenuRadioItem, D as DropdownMenuRoot, i as DropdownMenuSeparator, j as DropdownMenuShortcut, k as DropdownMenuSub, l as DropdownMenuSubContent, m as DropdownMenuSubTrigger, n as DropdownMenuTrigger } from './DropdownMenu.js';
14
19
  export { F as Field, a as FieldContent, b as FieldDescription, c as FieldError, d as FieldGroup, e as FieldLabel, f as FieldLegend, g as FieldSeparator, h as FieldSet, i as FieldTitle } from './field.js';
@@ -17,6 +22,7 @@ export { O as OTPField } from './OTPField.js';
17
22
  export { P as PasswordField } from './PasswordField.js';
18
23
  export { P as PhoneField, i as isValidPhoneNumber } from './PhoneField.js';
19
24
  export { P as Progress } from './Progress.js';
25
+ export { MultiSelect, MultiSelectActions, MultiSelectContent, MultiSelectEmpty, MultiSelectFilter, MultiSelectGroup, MultiSelectGroupLabel, MultiSelectList, MultiSelectRoot, MultiSelectRow, MultiSelectSearch, MultiSelectTrigger, Select, SingleSelect, SingleSelectClear, SingleSelectContent, SingleSelectEmpty, SingleSelectFilter, SingleSelectGroup, SingleSelectGroupLabel, SingleSelectList, SingleSelectRoot, SingleSelectRow, SingleSelectSearch, SingleSelectTrigger, useSelect } from './components/Select.js';
20
26
  export { S as Separator } from './Separator.js';
21
27
  export { S as Skeleton } from './Skeleton.js';
22
28
  export { T as Toaster } from './Sonner.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index10.js CHANGED
@@ -1,105 +1,16 @@
1
1
  import * as React from 'react';
2
- import { c as composeRefs } from './index5.js';
3
- import { jsx } from 'react/jsx-runtime';
4
2
 
5
- // src/slot.tsx
6
- var REACT_LAZY_TYPE = Symbol.for("react.lazy");
7
- var use = React[" use ".trim().toString()];
8
- function isPromiseLike(value) {
9
- return typeof value === "object" && value !== null && "then" in value;
10
- }
11
- function isLazyComponent(element) {
12
- return element != null && typeof element === "object" && "$$typeof" in element && element.$$typeof === REACT_LAZY_TYPE && "_payload" in element && isPromiseLike(element._payload);
13
- }
14
- // @__NO_SIDE_EFFECTS__
15
- function createSlot(ownerName) {
16
- const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);
17
- const Slot2 = React.forwardRef((props, forwardedRef) => {
18
- let { children, ...slotProps } = props;
19
- if (isLazyComponent(children) && typeof use === "function") {
20
- children = use(children._payload);
21
- }
22
- const childrenArray = React.Children.toArray(children);
23
- const slottable = childrenArray.find(isSlottable);
24
- if (slottable) {
25
- const newElement = slottable.props.children;
26
- const newChildren = childrenArray.map((child) => {
27
- if (child === slottable) {
28
- if (React.Children.count(newElement) > 1) return React.Children.only(null);
29
- return React.isValidElement(newElement) ? newElement.props.children : null;
30
- } else {
31
- return child;
32
- }
33
- });
34
- return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });
35
- }
36
- return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });
37
- });
38
- Slot2.displayName = `${ownerName}.Slot`;
39
- return Slot2;
40
- }
41
- var Slot = /* @__PURE__ */ createSlot("Slot");
42
- // @__NO_SIDE_EFFECTS__
43
- function createSlotClone(ownerName) {
44
- const SlotClone = React.forwardRef((props, forwardedRef) => {
45
- let { children, ...slotProps } = props;
46
- if (isLazyComponent(children) && typeof use === "function") {
47
- children = use(children._payload);
3
+ // packages/react/use-previous/src/use-previous.tsx
4
+ function usePrevious(value) {
5
+ const ref = React.useRef({ value, previous: value });
6
+ return React.useMemo(() => {
7
+ if (ref.current.value !== value) {
8
+ ref.current.previous = ref.current.value;
9
+ ref.current.value = value;
48
10
  }
49
- if (React.isValidElement(children)) {
50
- const childrenRef = getElementRef(children);
51
- const props2 = mergeProps(slotProps, children.props);
52
- if (children.type !== React.Fragment) {
53
- props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;
54
- }
55
- return React.cloneElement(children, props2);
56
- }
57
- return React.Children.count(children) > 1 ? React.Children.only(null) : null;
58
- });
59
- SlotClone.displayName = `${ownerName}.SlotClone`;
60
- return SlotClone;
61
- }
62
- var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
63
- function isSlottable(child) {
64
- return React.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
65
- }
66
- function mergeProps(slotProps, childProps) {
67
- const overrideProps = { ...childProps };
68
- for (const propName in childProps) {
69
- const slotPropValue = slotProps[propName];
70
- const childPropValue = childProps[propName];
71
- const isHandler = /^on[A-Z]/.test(propName);
72
- if (isHandler) {
73
- if (slotPropValue && childPropValue) {
74
- overrideProps[propName] = (...args) => {
75
- const result = childPropValue(...args);
76
- slotPropValue(...args);
77
- return result;
78
- };
79
- } else if (slotPropValue) {
80
- overrideProps[propName] = slotPropValue;
81
- }
82
- } else if (propName === "style") {
83
- overrideProps[propName] = { ...slotPropValue, ...childPropValue };
84
- } else if (propName === "className") {
85
- overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
86
- }
87
- }
88
- return { ...slotProps, ...overrideProps };
89
- }
90
- function getElementRef(element) {
91
- let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
92
- let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
93
- if (mayWarn) {
94
- return element.ref;
95
- }
96
- getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
97
- mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
98
- if (mayWarn) {
99
- return element.props.ref;
100
- }
101
- return element.props.ref || element.ref;
11
+ return ref.current.previous;
12
+ }, [value]);
102
13
  }
103
14
 
104
- export { Slot as S, createSlot as c };
15
+ export { usePrevious as u };
105
16
  //# sourceMappingURL=index10.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index10.js","sources":["../node_modules/.pnpm/@radix-ui+react-slot@1.2.4_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-slot/dist/index.mjs"],"sourcesContent":["// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index10.js","sources":["../node_modules/.pnpm/@radix-ui+react-use-previous@1.1.1_@types+react@19.2.9_react@19.2.3/node_modules/@radix-ui/react-use-previous/dist/index.mjs"],"sourcesContent":["// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":[],"mappings":";;AAAA;AAEA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACtD,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM;AAC7B,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;AACrC,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK;AAC9C,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;AAC/B,IAAI;AACJ,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ;AAC/B,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACb;;;;","x_google_ignoreList":[0]}