@tribepad/themis 1.5.8 → 1.6.0

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 (233) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/elements/AlertDialog/index.js +1 -1
  3. package/dist/elements/AlertDialog/index.js.map +1 -1
  4. package/dist/elements/AlertDialog/index.mjs +1 -1
  5. package/dist/elements/AlertDialog/index.mjs.map +1 -1
  6. package/dist/elements/Badge/index.js +1 -1
  7. package/dist/elements/Badge/index.js.map +1 -1
  8. package/dist/elements/Badge/index.mjs +1 -1
  9. package/dist/elements/Badge/index.mjs.map +1 -1
  10. package/dist/elements/Breadcrumbs/index.js +1 -1
  11. package/dist/elements/Breadcrumbs/index.js.map +1 -1
  12. package/dist/elements/Breadcrumbs/index.mjs +1 -1
  13. package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
  14. package/dist/elements/Button/index.js +1 -1
  15. package/dist/elements/Button/index.js.map +1 -1
  16. package/dist/elements/Button/index.mjs +1 -1
  17. package/dist/elements/Button/index.mjs.map +1 -1
  18. package/dist/elements/Card/index.js +1 -1
  19. package/dist/elements/Card/index.js.map +1 -1
  20. package/dist/elements/Card/index.mjs +1 -1
  21. package/dist/elements/Card/index.mjs.map +1 -1
  22. package/dist/elements/Carousel/index.js +1 -1
  23. package/dist/elements/Carousel/index.js.map +1 -1
  24. package/dist/elements/Carousel/index.mjs +1 -1
  25. package/dist/elements/Carousel/index.mjs.map +1 -1
  26. package/dist/elements/Chart/index.js +1 -1
  27. package/dist/elements/Chart/index.js.map +1 -1
  28. package/dist/elements/Chart/index.mjs +1 -1
  29. package/dist/elements/Chart/index.mjs.map +1 -1
  30. package/dist/elements/ChatInterface/index.js +1 -1
  31. package/dist/elements/ChatInterface/index.js.map +1 -1
  32. package/dist/elements/ChatInterface/index.mjs +1 -1
  33. package/dist/elements/ChatInterface/index.mjs.map +1 -1
  34. package/dist/elements/Checkbox/Checkbox.d.ts.map +1 -1
  35. package/dist/elements/Checkbox/index.js +1 -1
  36. package/dist/elements/Checkbox/index.js.map +1 -1
  37. package/dist/elements/Checkbox/index.mjs +1 -1
  38. package/dist/elements/Checkbox/index.mjs.map +1 -1
  39. package/dist/elements/CheckboxGroup/index.js +1 -1
  40. package/dist/elements/CheckboxGroup/index.js.map +1 -1
  41. package/dist/elements/CheckboxGroup/index.mjs +1 -1
  42. package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
  43. package/dist/elements/ColorPicker/index.js +1 -1
  44. package/dist/elements/ColorPicker/index.js.map +1 -1
  45. package/dist/elements/ColorPicker/index.mjs +1 -1
  46. package/dist/elements/ColorPicker/index.mjs.map +1 -1
  47. package/dist/elements/Combobox/Combobox.styles.d.ts.map +1 -1
  48. package/dist/elements/Combobox/index.js +1 -1
  49. package/dist/elements/Combobox/index.js.map +1 -1
  50. package/dist/elements/Combobox/index.mjs +1 -1
  51. package/dist/elements/Combobox/index.mjs.map +1 -1
  52. package/dist/elements/DatePicker/index.js +1 -1
  53. package/dist/elements/DatePicker/index.js.map +1 -1
  54. package/dist/elements/DatePicker/index.mjs +1 -1
  55. package/dist/elements/DatePicker/index.mjs.map +1 -1
  56. package/dist/elements/Dropdown/index.js +1 -1
  57. package/dist/elements/Dropdown/index.js.map +1 -1
  58. package/dist/elements/Dropdown/index.mjs +1 -1
  59. package/dist/elements/Dropdown/index.mjs.map +1 -1
  60. package/dist/elements/FileField/index.js +1 -1
  61. package/dist/elements/FileField/index.js.map +1 -1
  62. package/dist/elements/FileField/index.mjs +1 -1
  63. package/dist/elements/FileField/index.mjs.map +1 -1
  64. package/dist/elements/Filters/AppliedFilters.d.ts +4 -0
  65. package/dist/elements/Filters/AppliedFilters.d.ts.map +1 -0
  66. package/dist/elements/Filters/FilterPopover.d.ts +33 -0
  67. package/dist/elements/Filters/FilterPopover.d.ts.map +1 -0
  68. package/dist/elements/Filters/Filters.d.ts +25 -0
  69. package/dist/elements/Filters/Filters.d.ts.map +1 -0
  70. package/dist/elements/Filters/Filters.styles.d.ts +24 -0
  71. package/dist/elements/Filters/Filters.styles.d.ts.map +1 -0
  72. package/dist/elements/Filters/Filters.types.d.ts +123 -0
  73. package/dist/elements/Filters/Filters.types.d.ts.map +1 -0
  74. package/dist/elements/Filters/FiltersContext.d.ts +36 -0
  75. package/dist/elements/Filters/FiltersContext.d.ts.map +1 -0
  76. package/dist/elements/Filters/index.css +2 -0
  77. package/dist/elements/Filters/index.css.map +1 -0
  78. package/dist/elements/Filters/index.d.ts +26 -0
  79. package/dist/elements/Filters/index.d.ts.map +1 -0
  80. package/dist/elements/Filters/index.js +3 -0
  81. package/dist/elements/Filters/index.js.map +1 -0
  82. package/dist/elements/Filters/index.mjs +3 -0
  83. package/dist/elements/Filters/index.mjs.map +1 -0
  84. package/dist/elements/Modal/Modal.styles.d.ts.map +1 -1
  85. package/dist/elements/Modal/index.js +1 -1
  86. package/dist/elements/Modal/index.js.map +1 -1
  87. package/dist/elements/Modal/index.mjs +1 -1
  88. package/dist/elements/Modal/index.mjs.map +1 -1
  89. package/dist/elements/NumberField/index.js +1 -1
  90. package/dist/elements/NumberField/index.js.map +1 -1
  91. package/dist/elements/NumberField/index.mjs +1 -1
  92. package/dist/elements/NumberField/index.mjs.map +1 -1
  93. package/dist/elements/PageTitle/PageTitle.d.ts.map +1 -1
  94. package/dist/elements/PageTitle/PageTitle.styles.d.ts.map +1 -1
  95. package/dist/elements/PageTitle/index.js +1 -1
  96. package/dist/elements/PageTitle/index.js.map +1 -1
  97. package/dist/elements/PageTitle/index.mjs +1 -1
  98. package/dist/elements/PageTitle/index.mjs.map +1 -1
  99. package/dist/elements/Pagination/index.js +1 -1
  100. package/dist/elements/Pagination/index.js.map +1 -1
  101. package/dist/elements/Pagination/index.mjs +1 -1
  102. package/dist/elements/Pagination/index.mjs.map +1 -1
  103. package/dist/elements/Panel/Panel.d.ts.map +1 -1
  104. package/dist/elements/Panel/index.js +1 -1
  105. package/dist/elements/Panel/index.js.map +1 -1
  106. package/dist/elements/Panel/index.mjs +1 -1
  107. package/dist/elements/Panel/index.mjs.map +1 -1
  108. package/dist/elements/PasswordField/PasswordField.types.d.ts +34 -34
  109. package/dist/elements/PasswordField/index.js +1 -1
  110. package/dist/elements/PasswordField/index.js.map +1 -1
  111. package/dist/elements/PasswordField/index.mjs +1 -1
  112. package/dist/elements/PasswordField/index.mjs.map +1 -1
  113. package/dist/elements/RadioGroup/index.js +1 -1
  114. package/dist/elements/RadioGroup/index.js.map +1 -1
  115. package/dist/elements/RadioGroup/index.mjs +1 -1
  116. package/dist/elements/RadioGroup/index.mjs.map +1 -1
  117. package/dist/elements/RatingScale/RatingScale.styles.d.ts.map +1 -1
  118. package/dist/elements/RatingScale/index.js +1 -1
  119. package/dist/elements/RatingScale/index.js.map +1 -1
  120. package/dist/elements/RatingScale/index.mjs +1 -1
  121. package/dist/elements/RatingScale/index.mjs.map +1 -1
  122. package/dist/elements/Resizable/components/ResizablePopover.d.ts.map +1 -1
  123. package/dist/elements/Resizable/index.js +1 -1
  124. package/dist/elements/Resizable/index.js.map +1 -1
  125. package/dist/elements/Resizable/index.mjs +1 -1
  126. package/dist/elements/Resizable/index.mjs.map +1 -1
  127. package/dist/elements/SearchField/index.js +1 -1
  128. package/dist/elements/SearchField/index.js.map +1 -1
  129. package/dist/elements/SearchField/index.mjs +1 -1
  130. package/dist/elements/SearchField/index.mjs.map +1 -1
  131. package/dist/elements/Select/Select.styles.d.ts.map +1 -1
  132. package/dist/elements/Select/index.js +1 -1
  133. package/dist/elements/Select/index.js.map +1 -1
  134. package/dist/elements/Select/index.mjs +1 -1
  135. package/dist/elements/Select/index.mjs.map +1 -1
  136. package/dist/elements/Sidebar/Sidebar.styles.d.ts +34 -3
  137. package/dist/elements/Sidebar/Sidebar.styles.d.ts.map +1 -1
  138. package/dist/elements/Sidebar/Sidebar.types.d.ts +6 -0
  139. package/dist/elements/Sidebar/Sidebar.types.d.ts.map +1 -1
  140. package/dist/elements/Sidebar/SidebarPanel.d.ts.map +1 -1
  141. package/dist/elements/Sidebar/SidebarRail.d.ts.map +1 -1
  142. package/dist/elements/Sidebar/index.js +1 -1
  143. package/dist/elements/Sidebar/index.js.map +1 -1
  144. package/dist/elements/Sidebar/index.mjs +1 -1
  145. package/dist/elements/Sidebar/index.mjs.map +1 -1
  146. package/dist/elements/SituationalJudgement/index.js +1 -1
  147. package/dist/elements/SituationalJudgement/index.js.map +1 -1
  148. package/dist/elements/SituationalJudgement/index.mjs +1 -1
  149. package/dist/elements/SituationalJudgement/index.mjs.map +1 -1
  150. package/dist/elements/Switch/index.js +1 -1
  151. package/dist/elements/Switch/index.js.map +1 -1
  152. package/dist/elements/Switch/index.mjs +1 -1
  153. package/dist/elements/Switch/index.mjs.map +1 -1
  154. package/dist/elements/Table/BulkActionBar.d.ts +5 -0
  155. package/dist/elements/Table/BulkActionBar.d.ts.map +1 -0
  156. package/dist/elements/Table/BulkActionBar.styles.d.ts +17 -0
  157. package/dist/elements/Table/BulkActionBar.styles.d.ts.map +1 -0
  158. package/dist/elements/Table/BulkActionBar.types.d.ts +136 -0
  159. package/dist/elements/Table/BulkActionBar.types.d.ts.map +1 -0
  160. package/dist/elements/Table/Table.d.ts.map +1 -1
  161. package/dist/elements/Table/Table.styles.d.ts +2 -2
  162. package/dist/elements/Table/Table.styles.d.ts.map +1 -1
  163. package/dist/elements/Table/Table.types.d.ts +14 -4
  164. package/dist/elements/Table/Table.types.d.ts.map +1 -1
  165. package/dist/elements/Table/TableCardList.d.ts +25 -0
  166. package/dist/elements/Table/TableCardList.d.ts.map +1 -0
  167. package/dist/elements/Table/TableCardList.styles.d.ts +15 -0
  168. package/dist/elements/Table/TableCardList.styles.d.ts.map +1 -0
  169. package/dist/elements/Table/TableCardList.types.d.ts +48 -0
  170. package/dist/elements/Table/TableCardList.types.d.ts.map +1 -0
  171. package/dist/elements/Table/index.d.ts +9 -0
  172. package/dist/elements/Table/index.d.ts.map +1 -1
  173. package/dist/elements/Table/index.js +1 -1
  174. package/dist/elements/Table/index.js.map +1 -1
  175. package/dist/elements/Table/index.mjs +1 -1
  176. package/dist/elements/Table/index.mjs.map +1 -1
  177. package/dist/elements/Table/resolveSelectedCount.d.ts +20 -0
  178. package/dist/elements/Table/resolveSelectedCount.d.ts.map +1 -0
  179. package/dist/elements/Table/useBulkActionShortcut.d.ts +29 -0
  180. package/dist/elements/Table/useBulkActionShortcut.d.ts.map +1 -0
  181. package/dist/elements/Tabs/Tabs.d.ts.map +1 -1
  182. package/dist/elements/Tabs/index.js +1 -1
  183. package/dist/elements/Tabs/index.js.map +1 -1
  184. package/dist/elements/Tabs/index.mjs +1 -1
  185. package/dist/elements/Tabs/index.mjs.map +1 -1
  186. package/dist/elements/TextField/TextField.types.d.ts +68 -68
  187. package/dist/elements/TextField/index.js +1 -1
  188. package/dist/elements/TextField/index.js.map +1 -1
  189. package/dist/elements/TextField/index.mjs +1 -1
  190. package/dist/elements/TextField/index.mjs.map +1 -1
  191. package/dist/elements/Toast/Toast.d.ts.map +1 -1
  192. package/dist/elements/Toast/index.js +1 -1
  193. package/dist/elements/Toast/index.js.map +1 -1
  194. package/dist/elements/Toast/index.mjs +1 -1
  195. package/dist/elements/Toast/index.mjs.map +1 -1
  196. package/dist/elements/Tooltip/index.js +1 -1
  197. package/dist/elements/Tooltip/index.js.map +1 -1
  198. package/dist/elements/Tooltip/index.mjs +1 -1
  199. package/dist/elements/Tooltip/index.mjs.map +1 -1
  200. package/dist/elements/Wizard/index.js +1 -1
  201. package/dist/elements/Wizard/index.js.map +1 -1
  202. package/dist/elements/Wizard/index.mjs +1 -1
  203. package/dist/elements/Wizard/index.mjs.map +1 -1
  204. package/dist/elements/index.d.ts +4 -1
  205. package/dist/elements/index.d.ts.map +1 -1
  206. package/dist/elements/index.js +1 -1
  207. package/dist/elements/index.js.map +1 -1
  208. package/dist/elements/index.mjs +1 -1
  209. package/dist/elements/index.mjs.map +1 -1
  210. package/dist/hooks/index.d.ts +1 -0
  211. package/dist/hooks/index.d.ts.map +1 -1
  212. package/dist/hooks/index.js +1 -1
  213. package/dist/hooks/index.js.map +1 -1
  214. package/dist/hooks/index.mjs +1 -1
  215. package/dist/hooks/index.mjs.map +1 -1
  216. package/dist/hooks/useContainerNarrow.d.ts +15 -0
  217. package/dist/hooks/useContainerNarrow.d.ts.map +1 -0
  218. package/dist/index.js +2 -2
  219. package/dist/index.js.map +1 -1
  220. package/dist/index.mjs +2 -2
  221. package/dist/index.mjs.map +1 -1
  222. package/dist/styles/defaults.css +15 -0
  223. package/dist/styles/index.js +1 -1
  224. package/dist/styles/index.js.map +1 -1
  225. package/dist/styles/index.mjs +1 -1
  226. package/dist/styles/index.mjs.map +1 -1
  227. package/dist/styles/interaction-states.d.ts +2 -2
  228. package/dist/styles/interaction-states.d.ts.map +1 -1
  229. package/package.json +6 -1
  230. package/src/elements/Filters/Filters.stories.tsx +148 -0
  231. package/src/elements/PageTitle/PageTitle.stories.tsx +15 -19
  232. package/src/elements/Sidebar/Sidebar.stories.tsx +13 -2
  233. package/src/elements/Table/Table.stories.tsx +467 -10
@@ -0,0 +1,4 @@
1
+ import type { AppliedFiltersProps } from './Filters.types';
2
+ declare const AppliedFilters: import("react").ForwardRefExoticComponent<AppliedFiltersProps & import("react").RefAttributes<HTMLDivElement>>;
3
+ export { AppliedFilters };
4
+ //# sourceMappingURL=AppliedFilters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppliedFilters.d.ts","sourceRoot":"","sources":["../../../src/elements/Filters/AppliedFilters.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAc,MAAM,iBAAiB,CAAC;AAOvE,QAAA,MAAM,cAAc,gHAkGnB,CAAC;AAIF,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * FilterPopover — a NON-MODAL disclosure popover for a single filter control.
3
+ *
4
+ * Built on the React-Aria `DialogTrigger` + `Popover` + `Dialog` precedent (see
5
+ * DatePicker). Crucially NON-modal: there is no `ModalOverlay`, so the page
6
+ * behind stays interactive. React-Aria's `Popover` supplies outside-dismiss,
7
+ * Esc, return-focus-to-trigger and auto-flip; `Dialog` is only a labelled
8
+ * focus-scope (focus moves in on open, Tab is contained, no `aria-modal`).
9
+ *
10
+ * No hand-rolled focus-on-open effect — RAC's `Dialog` autofocus handles it
11
+ * (focusing the checked control of a RadioGroup/CheckboxGroup when present).
12
+ */
13
+ import { type ReactNode } from 'react';
14
+ export interface FilterPopoverProps {
15
+ /** Pill label (and the popover's accessible name). */
16
+ label: string;
17
+ /** Badge content (e.g. a count) shown when the filter is active. */
18
+ badge?: string | number | null;
19
+ /** Whether the filter is active (drives the pill's emphasis). */
20
+ isActive?: boolean;
21
+ /**
22
+ * Popover body. Use the function form to receive `close` (single-choice
23
+ * controls call it to close on select).
24
+ */
25
+ children: ReactNode | ((close: () => void) => ReactNode);
26
+ /** Show a "Done" button in the header (multi-select). Omit for close-on-select. */
27
+ doneLabel?: string;
28
+ /** Popover alignment relative to the trigger. */
29
+ align?: 'start' | 'end';
30
+ className?: string;
31
+ }
32
+ export declare function FilterPopover({ label, badge, isActive, children, doneLabel, align, className, }: FilterPopoverProps): ReactNode;
33
+ //# sourceMappingURL=FilterPopover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterPopover.d.ts","sourceRoot":"","sources":["../../../src/elements/Filters/FilterPopover.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAYvC,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC,CAAC;IACzD,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,QAAgB,EAChB,QAAQ,EACR,SAAS,EACT,KAAe,EACf,SAAS,GACV,EAAE,kBAAkB,GAAG,SAAS,CAsChC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Filters — a compositional, spec-light filter bar.
3
+ *
4
+ * `<Filters values onChange labels>` owns one controlled values map and shares it
5
+ * via context. Controls are composed as children — `<FilterSearch>`,
6
+ * `<FilterSelect>`, `<FilterMulti>`, `<FilterToggle>`, `<FilterWithin>`,
7
+ * `<FilterCombobox>` (API-backed type-ahead) — plus an optional `<FilterChips>`
8
+ * for removable applied-filter chips. Importing only the controls you use keeps
9
+ * unused ones out of your bundle (named exports, no dot-namespace).
10
+ *
11
+ * Domain-free (labels-as-props), non-modal popovers, WCAG 2.2 AAA (44px targets,
12
+ * focus-managed chip removal, labelled region).
13
+ */
14
+ import { type ReactNode } from 'react';
15
+ import type { FiltersProps, FilterSearchProps, FilterSelectProps, FilterMultiProps, FilterToggleProps, FilterWithinProps, FilterComboboxProps, FilterChipsProps } from './Filters.types';
16
+ declare const Filters: import("react").ForwardRefExoticComponent<FiltersProps & import("react").RefAttributes<HTMLDivElement>>;
17
+ declare function FilterSearch({ name, label, placeholder, chipGroup, className }: FilterSearchProps): ReactNode;
18
+ declare function FilterToggle({ name, label, className }: FilterToggleProps): ReactNode;
19
+ declare function FilterSelect({ name, label, options, allLabel, className }: FilterSelectProps): ReactNode;
20
+ declare function FilterWithin({ name, label, presets, className }: FilterWithinProps): ReactNode;
21
+ declare function FilterMulti({ name, label, options, className }: FilterMultiProps): ReactNode;
22
+ declare function FilterCombobox({ name, label, options, onSearch, isLoading, placeholder, className, }: FilterComboboxProps): ReactNode;
23
+ declare function FilterChips({ clearAllLabel, removeChipLabel, 'aria-label': ariaLabel, className, 'data-testid': dataTestId, }: FilterChipsProps): ReactNode;
24
+ export { Filters, FilterSearch, FilterSelect, FilterMulti, FilterToggle, FilterWithin, FilterCombobox, FilterChips, };
25
+ //# sourceMappingURL=Filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filters.d.ts","sourceRoot":"","sources":["../../../src/elements/Filters/Filters.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AA6Bf,OAAO,KAAK,EAKV,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAMzB,QAAA,MAAM,OAAO,yGA4MZ,CAAC;AA4BF,iBAAS,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,iBAAiB,GAAG,SAAS,CA4BtG;AAMD,iBAAS,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,iBAAiB,GAAG,SAAS,CAuB9E;AAQD,iBAAS,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,iBAAiB,GAAG,SAAS,CA8DjG;AAMD,iBAAS,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,iBAAiB,GAAG,SAAS,CA+CvF;AAMD,iBAAS,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,gBAAgB,GAAG,SAAS,CA8DrF;AAMD,iBAAS,cAAc,CAAC,EACtB,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,GACV,EAAE,mBAAmB,GAAG,SAAS,CAwCjC;AAMD,iBAAS,WAAW,CAAC,EACnB,aAAa,EACb,eAAe,EACf,YAAY,EAAE,SAAS,EACvB,SAAS,EACT,aAAa,EAAE,UAAU,GAC1B,EAAE,gBAAgB,GAAG,SAAS,CA2C9B;AAED,OAAO,EACL,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,CAAC"}
@@ -0,0 +1,24 @@
1
+ /** The filter bar — a horizontal, wrapping row of controls. */
2
+ export declare const filtersBarVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
3
+ /** A filter pill trigger (the button that opens a popover). */
4
+ export declare const filterPillVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
5
+ /** The popover panel surface. */
6
+ export declare const filterPopoverVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
7
+ /** The popover header (label + Done). */
8
+ export declare const filterPopoverHeaderVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
9
+ /** Chips region. */
10
+ export declare const appliedFiltersVariants: (props?: ({
11
+ scrollable?: boolean | null | undefined;
12
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
+ /** Backdrop behind the bottom-sheet. */
14
+ export declare const filterSheetBackdropVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
15
+ /** The bottom-sheet panel itself. */
16
+ export declare const filterSheetVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
17
+ export declare const filterSheetHeaderVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
18
+ export declare const filterSheetBodyVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
19
+ export declare const filterSheetFooterVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
20
+ /** Grab handle at the top of the sheet. */
21
+ export declare const filterSheetGrabVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
22
+ /** A single removable chip (a button). */
23
+ export declare const filterChipVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
24
+ //# sourceMappingURL=Filters.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filters.styles.d.ts","sourceRoot":"","sources":["../../../src/elements/Filters/Filters.styles.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB,oFAE7B,CAAC;AAEH,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB,oFAE7B,CAAC;AAEH,iCAAiC;AACjC,eAAO,MAAM,qBAAqB,oFAKhC,CAAC;AAEH,yCAAyC;AACzC,eAAO,MAAM,2BAA2B,oFAGtC,CAAC;AAEH,oBAAoB;AACpB,eAAO,MAAM,sBAAsB;;8EASjC,CAAC;AAIH,wCAAwC;AACxC,eAAO,MAAM,2BAA2B,oFAItC,CAAC;AAEH,qCAAqC;AACrC,eAAO,MAAM,mBAAmB,oFAK9B,CAAC;AAEH,eAAO,MAAM,yBAAyB,oFAEpC,CAAC;AAEH,eAAO,MAAM,uBAAuB,oFAIlC,CAAC;AAEH,eAAO,MAAM,yBAAyB,oFAGpC,CAAC;AAEH,2CAA2C;AAC3C,eAAO,MAAM,uBAAuB,oFAElC,CAAC;AAEH,0CAA0C;AAC1C,eAAO,MAAM,kBAAkB,oFAO7B,CAAC"}
@@ -0,0 +1,123 @@
1
+ import { z } from 'zod';
2
+ import type { ReactNode } from 'react';
3
+ /** A selectable option for select / multi / within / combobox controls. */
4
+ export interface FilterOption {
5
+ /** Stable value persisted in the values map + chips. */
6
+ value: string;
7
+ /** Visible label (consumer-translated). */
8
+ label: string;
9
+ }
10
+ export declare const FilterOptionSchema: z.ZodObject<{
11
+ value: z.ZodString;
12
+ label: z.ZodString;
13
+ }, z.core.$strip>;
14
+ export type FilterValue = string | string[] | boolean;
15
+ export type FilterValues = Record<string, FilterValue>;
16
+ /**
17
+ * A derived, removable applied-filter chip — pure data (no `onRemove`).
18
+ * `FilterChips` / `AppliedFilters` call back with the chip; the surrounding
19
+ * `Filters` resets the value.
20
+ */
21
+ export interface FilterChip {
22
+ /** `${name}` for scalar filters, `${name}:${optionValue}` for one multi option. */
23
+ id: string;
24
+ /** The owning control's `name`. */
25
+ key: string;
26
+ /** For `multi`: the specific option this chip represents. */
27
+ optionValue?: string;
28
+ /** Human value, e.g. "Open", "“senior”", "Last 7 days". */
29
+ label: string;
30
+ /** Group label, e.g. the control label / "Search". */
31
+ group?: string;
32
+ }
33
+ export interface FiltersLabels {
34
+ /** "Done" button inside multi-select popovers + the mobile sheet's apply button. */
35
+ done: string;
36
+ /** "Clear" link inside a multi-select popover. */
37
+ clear: string;
38
+ /** Mobile (narrow) "Filters" trigger button. Required when `narrow` is used. */
39
+ filtersButton?: string;
40
+ /** Mobile sheet footer "Clear all" button. Falls back to `clear`. */
41
+ clearAll?: string;
42
+ /** Mobile sheet header close-button aria-label. Falls back to "Close". */
43
+ close?: string;
44
+ }
45
+ export interface FiltersProps {
46
+ /** Current values (controlled). Missing keys fall back to each control's default. */
47
+ values: FilterValues;
48
+ /** Called with the full next values map on any change. */
49
+ onChange: (next: FilterValues) => void;
50
+ /** i18n strings shared by the controls. */
51
+ labels: FiltersLabels;
52
+ /**
53
+ * Narrow (mobile) layout. When `true`, the bar collapses to a "Filters" button
54
+ * that opens a bottom-sheet of stacked controls. Measure once at the page level
55
+ * (e.g. `useContainerNarrow`) and pass the same value here and to your table /
56
+ * `TableCardList` switch so they reflow together. Default `false`.
57
+ */
58
+ narrow?: boolean;
59
+ /** The filter controls (`<FilterSearch>`, `<FilterSelect>`, …) and optionally `<FilterChips>`. */
60
+ children: ReactNode;
61
+ /** Region `aria-label`, e.g. "Filters". */
62
+ 'aria-label'?: string;
63
+ className?: string;
64
+ 'data-testid'?: string;
65
+ }
66
+ interface BaseControlProps {
67
+ /** Unique key — indexes into the values map and namespaces chip ids. */
68
+ name: string;
69
+ /** Pill / field label (consumer-translated). */
70
+ label: string;
71
+ className?: string;
72
+ }
73
+ export interface FilterSearchProps extends BaseControlProps {
74
+ placeholder?: string;
75
+ /** Chip group label override; defaults to `label`. */
76
+ chipGroup?: string;
77
+ }
78
+ export interface FilterSelectProps extends BaseControlProps {
79
+ options: FilterOption[];
80
+ /** Label for the "all / none" radio. Defaults to "All". */
81
+ allLabel?: string;
82
+ }
83
+ export interface FilterMultiProps extends BaseControlProps {
84
+ options: FilterOption[];
85
+ }
86
+ export type FilterToggleProps = BaseControlProps;
87
+ export interface FilterWithinProps extends BaseControlProps {
88
+ /** Ordered presets; `presets[0]` is the "any time" reset sentinel. */
89
+ presets: FilterOption[];
90
+ }
91
+ export interface FilterComboboxProps extends BaseControlProps {
92
+ /** Current options. For API-backed search, update these in response to `onSearch`. */
93
+ options: FilterOption[];
94
+ /** Called (debounce in the consumer) as the user types — fetch + update `options`. */
95
+ onSearch?: (query: string) => void;
96
+ /** Show a loading state in the menu while options are being fetched. */
97
+ isLoading?: boolean;
98
+ placeholder?: string;
99
+ }
100
+ export interface FilterChipsProps {
101
+ /** Label for the "Clear all" control (shown when >1 chip). */
102
+ clearAllLabel: string;
103
+ /** Accessible-name builder for each chip's remove button, e.g. `(l) => "Remove ${l}"`. */
104
+ removeChipLabel: (chipLabel: string) => string;
105
+ /** Region `aria-label`, e.g. "Active filters". */
106
+ 'aria-label'?: string;
107
+ className?: string;
108
+ 'data-testid'?: string;
109
+ }
110
+ export interface AppliedFiltersProps {
111
+ chips: FilterChip[];
112
+ onRemove: (chip: FilterChip) => void;
113
+ onClearAll: () => void;
114
+ clearAllLabel: string;
115
+ removeChipLabel: (chipLabel: string) => string;
116
+ /** Scroll chips horizontally instead of wrapping (mobile). Default `false`. */
117
+ scrollable?: boolean;
118
+ 'aria-label'?: string;
119
+ className?: string;
120
+ 'data-testid'?: string;
121
+ }
122
+ export {};
123
+ //# sourceMappingURL=Filters.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filters.types.d.ts","sourceRoot":"","sources":["../../../src/elements/Filters/Filters.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;AACtD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAMvD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,mFAAmF;IACnF,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,aAAa;IAC5B,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,YAAY;IAC3B,qFAAqF;IACrF,MAAM,EAAE,YAAY,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,2CAA2C;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kGAAkG;IAClG,QAAQ,EAAE,SAAS,CAAC;IACpB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,gBAAgB;IACxB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAEjD,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,sEAAsE;IACtE,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,sFAAsF;IACtF,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,0FAA0F;IAC1F,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAGD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,+EAA+E;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,36 @@
1
+ import { type MutableRefObject } from 'react';
2
+ import type { FilterValue, FilterValues, FiltersLabels, FilterChip } from './Filters.types';
3
+ /**
4
+ * Each control registers how to interpret its value: whether it's active, the
5
+ * chips it produces, and the value that clears it. `FilterChips` reads the
6
+ * registry to derive removable chips without the consumer re-declaring metadata.
7
+ */
8
+ export interface RegisteredControl {
9
+ name: string;
10
+ isActive: (value: FilterValue | undefined) => boolean;
11
+ toChips: (value: FilterValue | undefined) => FilterChip[];
12
+ clearedValue: FilterValue;
13
+ }
14
+ export interface FiltersContextValue {
15
+ values: FilterValues;
16
+ /**
17
+ * Narrow (mobile) layout: controls render stacked (full-width labelled fields)
18
+ * for the bottom-sheet instead of inline pills.
19
+ */
20
+ narrow: boolean;
21
+ /** Set a single key (spreads the latest values). */
22
+ setValue: (name: string, value: FilterValue) => void;
23
+ /** Replace the whole values map (used by "Clear all"). */
24
+ replaceValues: (next: FilterValues) => void;
25
+ labels: FiltersLabels;
26
+ /** Live registry of mounted controls (insertion order ≈ DOM order). */
27
+ registry: MutableRefObject<Map<string, RegisteredControl>>;
28
+ /** Bumps whenever the registry changes — forces chip-consumers to re-read it. */
29
+ registryVersion: number;
30
+ /** Called by a control on mount / meta-change / unmount to refresh chips. */
31
+ syncControl: (name: string, control: RegisteredControl | null) => void;
32
+ }
33
+ declare const FiltersContext: import("react").Context<FiltersContextValue | null>;
34
+ export declare function useFiltersContext(componentName: string): FiltersContextValue;
35
+ export { FiltersContext };
36
+ //# sourceMappingURL=FiltersContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FiltersContext.d.ts","sourceRoot":"","sources":["../../../src/elements/Filters/FiltersContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,iBAAiB,CAAC;AAEzB;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,KAAK,OAAO,CAAC;IACtD,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,KAAK,UAAU,EAAE,CAAC;IAC1D,YAAY,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACrD,0DAA0D;IAC1D,aAAa,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,aAAa,CAAC;IACtB,uEAAuE;IACvE,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC3D,iFAAiF;IACjF,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC;CACxE;AAED,QAAA,MAAM,cAAc,qDAAkD,CAAC;AAEvE,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,mBAAmB,CAM5E;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ @keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-4px)}20%,40%,60%,80%{transform:translate(4px)}}.shake{animation:shake .25s ease-in-out}@media(prefers-reduced-motion:reduce){.shake{animation:none;border-color:var(--destructive);transition:border-color .1s}}
2
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/elements/TextField/TextField.css"],"sourcesContent":["/**\n * TextField Component Styles\n * Additional CSS for animations and effects\n */\n\n/* Shake animation for paste prevention (Phase 3) */\n@keyframes shake {\n 0%, 100% { transform: translateX(0); }\n 10%, 30%, 50%, 70%, 90% { transform: translateX(-4px); }\n 20%, 40%, 60%, 80% { transform: translateX(4px); }\n}\n\n.shake {\n animation: shake 250ms ease-in-out;\n}\n\n/* Respect reduced motion preference (WCAG 2.2) */\n@media (prefers-reduced-motion: reduce) {\n .shake {\n animation: none;\n /* Alternative: brief border color flash */\n border-color: var(--destructive);\n transition: border-color 100ms;\n }\n}\n"],"mappings":"AAMA,WAAW,MACT,MAAW,UAAW,UAAW,EAAI,CACrC,oBAA0B,UAAW,UAAW,KAAO,CACvD,gBAAqB,UAAW,UAAW,IAAM,CACnD,CAEA,CANW,MAOT,UAAW,MAAM,KAAM,WACzB,CAGA,OAAO,uBAAyB,QAC9B,CAZS,MAaP,UAAW,KAEX,aAAc,IAAI,eAClB,WAAY,aAAa,GAC3B,CACF","names":[]}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Filters — compositional filter bar + removable applied-filter chips.
3
+ *
4
+ * Import only the controls you use (named exports → unused ones tree-shake):
5
+ * @example
6
+ * import { Filters, FilterSearch, FilterSelect, FilterChips } from '@tribepad/themis/elements/Filters';
7
+ *
8
+ * // Pass controls + <FilterChips> as direct children — Filters lays them out
9
+ * // (pill row + chips row on desktop; full-width stacked sheet on mobile via `narrow`).
10
+ * <Filters values={values} onChange={setValues} labels={{ done: 'Done', clear: 'Clear' }}>
11
+ * <FilterSearch name="q" label="Search" />
12
+ * <FilterSelect name="status" label="Status" options={statusOptions} />
13
+ * <FilterCombobox name="assignee" label="Assignee" options={users} onSearch={fetchUsers} />
14
+ * <FilterChips clearAllLabel="Clear all" removeChipLabel={(l) => `Remove ${l}`} />
15
+ * </Filters>
16
+ */
17
+ export { Filters, FilterSearch, FilterSelect, FilterMulti, FilterToggle, FilterWithin, FilterCombobox, FilterChips, } from './Filters';
18
+ export { AppliedFilters } from './AppliedFilters';
19
+ export { FilterPopover } from './FilterPopover';
20
+ export type { FilterPopoverProps } from './FilterPopover';
21
+ export { useFiltersContext } from './FiltersContext';
22
+ export type { FiltersContextValue, RegisteredControl } from './FiltersContext';
23
+ export { filtersBarVariants, filterPillVariants, filterPopoverVariants, filterPopoverHeaderVariants, appliedFiltersVariants, filterChipVariants, } from './Filters.styles';
24
+ export { FilterOptionSchema } from './Filters.types';
25
+ export type { FilterOption, FilterValue, FilterValues, FilterChip, FiltersLabels, FiltersProps, FilterSearchProps, FilterSelectProps, FilterMultiProps, FilterToggleProps, FilterWithinProps, FilterComboboxProps, FilterChipsProps, AppliedFiltersProps, } from './Filters.types';
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Filters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EACL,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG/E,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGrD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ 'use strict';var react=require('react'),reactAria=require('react-aria'),lucideReact=require('lucide-react'),reactAriaComponents=require('react-aria-components'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),zod=require('zod');function m(...e){return tailwindMerge.twMerge(clsx.clsx(e))}var te="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2",me="data-[pressed]:scale-[0.97]";var Z="hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground",re="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",ae="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground",Xe="disabled:pointer-events-none disabled:opacity-50",wt=`${te} ${me} ${Z} ${re} ${ae}`;var Ze={sm:"text-xs",default:"text-sm",lg:"text-base"};var Te={sm:"h-9",default:"h-10",lg:"h-11"},D={sm:`${Te.sm} px-2 text-xs`,default:`${Te.default} px-3 text-sm`,lg:`${Te.lg} px-4 text-base`},K="min-h-[44px] flex items-center";var Ke=classVarianceAuthority.cva("inline-flex justify-center min-h-[44px] min-w-[44px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",{variants:{fullWidth:{true:"w-full",false:""},inVerticalGroup:{true:"items-stretch",false:"items-center"}},defaultVariants:{fullWidth:false,inVerticalGroup:false}}),Qe=classVarianceAuthority.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-normal ring-offset-background motion-safe:transition-transform motion-safe:duration-200 motion-safe:[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)] motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 relative cursor-pointer",{variants:{variant:{default:"bg-[var(--primary-action)] text-[var(--primary-action-foreground)] shadow-md hover:bg-[var(--primary-action-hover)] hover:-translate-y-1",destructive:"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] hover:bg-[var(--destructive-background-hover,var(--destructive-background))] motion-safe:hover:btn-warn-shake",outline:"border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)]",secondary:"bg-[var(--secondary)] text-[var(--secondary-foreground)] hover:bg-[var(--secondary-hover,var(--secondary))]",ghost:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]",link:"text-[var(--text-link)] underline underline-offset-4 hover:bg-[var(--accent)] hover:text-[var(--text-link-hover)]"},fullWidth:{true:"w-full",false:""},visualSize:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3 text-xs",lg:"h-11 rounded-md px-6 text-base",icon:"h-10 w-10",dot:"h-5 w-5 rounded-full p-0 min-h-0 min-w-0"},paywall:{true:"!bg-[var(--paywall)] !text-[var(--paywall-foreground)] hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",false:""}},defaultVariants:{variant:"default",visualSize:"default",paywall:false}});var Bt=react.createContext(null);Bt.displayName="ButtonGroupContext";function Dt(){return react.useContext(Bt)}var Ot=react.createContext(null);Ot.displayName="ButtonGroupItemContext";function Gt(){return react.useContext(Ot)}classVarianceAuthority.cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var Mt=classVarianceAuthority.cva("",{variants:{orientation:{horizontal:"min-w-[44px]",vertical:"flex min-h-[44px]"},position:{first:"",middle:"",last:"",only:""}},compoundVariants:[{orientation:"horizontal",position:"first",className:"rounded-r-none border-r-0"},{orientation:"horizontal",position:"middle",className:"rounded-none border-r-0"},{orientation:"horizontal",position:"last",className:"rounded-l-none"},{orientation:"vertical",position:"first",className:"rounded-b-none border-b-0"},{orientation:"vertical",position:"middle",className:"rounded-none border-b-0"},{orientation:"vertical",position:"last",className:"rounded-t-none"}],defaultVariants:{orientation:"horizontal",position:"only"}});classVarianceAuthority.cva("bg-[var(--border)]",{variants:{orientation:{horizontal:"w-px h-6 mx-1",vertical:"h-px w-full my-1"}},defaultVariants:{orientation:"horizontal"}});var _=react.memo(react.forwardRef(({className:e,buttonVisualClassName:t,variant:r,size:a,visualSize:n,fullWidth:s,loading:d=false,loadingText:i="Loading...",shortcut:u,children:p,isDisabled:f,paywall:l=false,paywallRedirect:o,paywallDescription:c,onPress:b,...g},y)=>{let h=react.useId(),C=Dt(),N=Gt(),v=r??C?.variant??"default",E=a??C?.size,w=f??C?.isDisabled??false,T=C?.orientation==="vertical",F=s||T,M=N?Mt({orientation:C?.orientation??"horizontal",position:N.position}):"",k=n??E??"default";return process.env.NODE_ENV!=="production"&&(k==="dot"||k==="icon")&&!g["aria-label"]&&!p&&console.warn('[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'),jsxRuntime.jsx(reactAriaComponents.Button,{ref:y,isDisabled:w||d||void 0,"aria-disabled":l?true:void 0,"aria-describedby":l?h:void 0,onPress:x=>{if(l){o&&window.open(o,"_blank","noopener,noreferrer");return}b?.(x);},className:m(Ke({fullWidth:F,inVerticalGroup:T}),e),...g,children:x=>jsxRuntime.jsxs("span",{className:m(Qe({variant:v,visualSize:k,paywall:l,fullWidth:F}),M,t,me,"",re,ae),"data-pressed":x.isPressed||void 0,children:[d&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(lucideReact.Loader2,{className:"motion-safe:animate-spin","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:"sr-only","aria-live":"polite",children:i})]}),!d&&p,l&&jsxRuntime.jsx(lucideReact.Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),l&&jsxRuntime.jsxs("span",{id:h,className:"sr-only",children:["Premium feature: ",c||"Upgrade required to access this feature"]}),x.isFocusVisible&&u&&jsxRuntime.jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:u})]})})}));_.displayName="Button";var Ht=()=>jsxRuntime.jsxs("svg",{"data-testid":"password-toggle-icon-show",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("path",{d:"M1 8s3-5 7-5 7 5 7 5-3 5-7 5-7-5-7-5z"}),jsxRuntime.jsx("circle",{cx:"8",cy:"8",r:"2"})]}),zt=()=>jsxRuntime.jsxs("svg",{"data-testid":"password-toggle-icon-hide",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntime.jsx("path",{d:"M10.5 5.5l-5 5"}),jsxRuntime.jsx("path",{d:"M1 8s3-5 7-5c1.5 0 2.8.6 4 1.5M15 8s-1.5 2.5-4 4"}),jsxRuntime.jsx("path",{d:"M3 13l2-2m7-7l2-2"}),jsxRuntime.jsx("circle",{cx:"8",cy:"8",r:"2"})]});var rt=classVarianceAuthority.cva("flex w-full rounded-md border bg-[var(--content-background)] px-3 py-2 text-sm ring-offset-[var(--content-background)] file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--content-foreground)] placeholder:text-[var(--menu-muted)] transition-all duration-200",{variants:{size:{sm:`${D.sm} py-1`,default:`${D.default} py-2`,lg:`${D.lg} py-3`},state:{default:"border-[var(--input-border)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2",error:"border-[var(--destructive-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--destructive-background)] focus-visible:ring-offset-2",success:"border-[var(--success-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--success-ring)] focus-visible:ring-offset-2",disabled:"cursor-not-allowed opacity-50",readonly:"cursor-default bg-[var(--content-background)] opacity-70"}},defaultVariants:{size:"default",state:"default"}}),at=classVarianceAuthority.cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",{variants:{state:{default:"text-[var(--content-foreground)]",disabled:"opacity-50 cursor-not-allowed"}},defaultVariants:{state:"default"}}),ot=classVarianceAuthority.cva("text-sm text-[var(--content-foreground)]"),Ut=classVarianceAuthority.cva("text-sm text-[var(--destructive-background)] font-medium"),nt=classVarianceAuthority.cva("text-sm text-[var(--success-foreground)] font-medium");function Wt({expandOnFocus:e,collapsedWidth:t,value:r,defaultValue:a,userOnFocus:n,userOnBlur:s}){let[d,i]=react.useState(false),u=react.useCallback(l=>{e&&i(true),n?.(l);},[e,n]),p=react.useCallback(l=>{e&&l.target.value===""&&i(false),s?.(l);},[e,s]),f=react.useMemo(()=>e?d||(r!==void 0?r!=="":a!==void 0&&a!=="")?"100%":t:void 0,[e,d,r,a,t]);return {handleFocus:u,handleBlur:p,inputWidth:f}}function Yt({disableCopyPaste:e}){let[t,r]=react.useState(false),[a,n]=react.useState("");react.useEffect(()=>{e&&typeof process<"u"&&process.env.NODE_ENV==="development"&&console.warn("[TextField] Copy/paste prevention should only be used for security-critical fields like password confirmation. This feature can break assistive technology workflows and password managers.");},[e]);let s=react.useCallback(d=>{e&&(d.preventDefault(),r(true),n("Pasting is not allowed in this field. Please type your entry."),setTimeout(()=>{r(false),n("");},250));},[e]);return {isShaking:t,screenReaderMessage:a,handlePaste:s}}function qt({type:e,showPasswordToggle:t}){let[r,a]=react.useState(false),n=react.useCallback(()=>{a(d=>!d);},[]),s=react.useMemo(()=>e==="password"&&t&&r?"text":e,[e,t,r]);return {showPassword:r,actualType:s,handlePasswordToggle:n}}var Aa=react.forwardRef(({className:e,state:t="default",children:r,...a},n)=>jsxRuntime.jsx(reactAriaComponents.Label,{ref:n,className:m(at({state:t}),e),...a,children:r}));Aa.displayName="TextFieldLabel";var wa=react.forwardRef(({className:e,size:t="default",state:r="default",...a},n)=>jsxRuntime.jsx(reactAriaComponents.Input,{ref:n,className:m(rt({size:t,state:r}),Xe,e),...a}));wa.displayName="TextFieldInput";var ka=react.forwardRef(({className:e,children:t,...r},a)=>jsxRuntime.jsx(reactAriaComponents.Text,{ref:a,slot:"description",className:m(ot(),e),...r,children:t}));ka.displayName="TextFieldDescription";var Qt=react.forwardRef(({className:e,children:t,...r},a)=>jsxRuntime.jsx(reactAriaComponents.FieldError,{ref:a,...r,className:m(Ut(),e),children:t}));Qt.displayName="TextFieldError";var La=react.forwardRef(({className:e,children:t,...r},a)=>jsxRuntime.jsx(reactAriaComponents.Text,{ref:a,slot:"description",className:m(nt(),e),...r,children:t}));La.displayName="TextFieldSuccess";var st=react.forwardRef(({className:e,size:t="default",label:r,labelHint:a,description:n,errorMessage:s,successMessage:d,type:i="text",isRequired:u=false,isReadOnly:p=false,isDisabled:f=false,isInvalid:l=false,isValid:o=false,id:c,autoComplete:b,disableCopyPaste:g=false,pattern:y,patternDescription:h,expandOnFocus:C=false,collapsedWidth:N="200px",prefix:v,suffix:E,prefixSize:w=16,suffixSize:T=16,showPasswordToggle:F,isIconHidden:M=false,onSubmit:k,onClear:P,value:B,defaultValue:x,onFocus:R,onBlur:V,...G},We)=>{let Ee=react.useId(),ra=react.useId(),aa=c||ra,{handleFocus:oa,handleBlur:na,inputWidth:ia}=Wt({expandOnFocus:C,collapsedWidth:N,value:B,defaultValue:x,userOnFocus:R,userOnBlur:V}),{isShaking:sa,screenReaderMessage:Et,handlePaste:la}=Yt({disableCopyPaste:g}),{showPassword:Ye,actualType:da,handlePasswordToggle:Rt}=qt({type:i,showPasswordToggle:F}),j=i==="search",[ca,Tt]=react.useState(x??""),fe=B!==void 0,Y=fe?B:ca,ua=react.useCallback(L=>{fe||Tt(L),G.onChange?.(L);},[fe,G]),Re=react.useCallback(()=>{fe||Tt(""),G.onChange?.(""),P?.();},[fe,G,P]),pa=react.useCallback(L=>{L.key==="Enter"&&k&&k(Y),L.key==="Escape"&&Y&&(L.preventDefault(),Re());},[Y,k,Re]),fa=react.useMemo(()=>f?"disabled":p?"readonly":l?"error":o?"success":"default",[f,p,l,o]),ma=react.useMemo(()=>f?"disabled":"default",[f]),Ft=react.useMemo(()=>n&&h?`${n} ${h}`:n||h,[n,h]),ee=react.useMemo(()=>j&&!M&&!v?jsxRuntime.jsx(lucideReact.Search,{className:t==="sm"?"h-3.5 w-3.5":t==="lg"?"h-5 w-5":"h-4 w-4"}):v,[j,M,v,t]),Pt=react.useMemo(()=>{let L={left:12,right:12};if(ee){let qe=typeof ee=="string"?ee.length*8+16:w+16;L.left=qe;}if(i==="password"&&F)L.right=32;else if(j&&Y)L.right=44;else if(E){let qe=typeof E=="string"?E.length*8+16:T+16;L.right=qe;}return L},[ee,v,E,w,T,i,F,j,Y]),It=react.useMemo(()=>i==="password"&&F?jsxRuntime.jsx(_,{variant:"ghost",visualSize:"icon",onPress:Rt,"aria-label":Ye?"Hide password":"Show password",className:"!min-h-0 !min-w-0 h-8 w-8",children:Ye?jsxRuntime.jsx(zt,{}):jsxRuntime.jsx(Ht,{})}):j&&Y?jsxRuntime.jsx(_,{variant:"ghost",visualSize:"icon",onPress:Re,"aria-label":"Clear search",className:"!min-h-0 !min-w-0 h-8 w-8",children:jsxRuntime.jsx(lucideReact.X,{className:t==="sm"?"h-3 w-3":t==="lg"?"h-5 w-5":"h-4 w-4"})}):E,[i,F,Ye,E,Rt,j,Y,t,Re]),At=i==="password"&&F||j&&!!Y;return jsxRuntime.jsxs(reactAriaComponents.TextField,{ref:We,className:m("flex flex-col gap-1.5",e),isRequired:u,isReadOnly:p,isDisabled:f,isInvalid:l,value:j?Y:B,defaultValue:j?void 0:x,onChange:j?ua:void 0,...G,children:[r&&jsxRuntime.jsxs(reactAriaComponents.Label,{className:m(at({state:ma}),a&&"flex items-baseline justify-between"),children:[jsxRuntime.jsxs("span",{children:[r,u&&jsxRuntime.jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:jsxRuntime.jsx("strong",{children:"*"})})]}),a&&jsxRuntime.jsx("span",{className:"text-xs font-normal text-[var(--muted-foreground)]",children:a})]}),Ft&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:m(ot()),children:Ft}),jsxRuntime.jsxs("div",{className:m(K,"relative cursor-text motion-safe:transition-colors motion-safe:duration-200"),style:{width:ia},onClick:L=>{L.target===L.currentTarget&&L.currentTarget.querySelector("input")?.focus();},children:[ee&&jsxRuntime.jsx("div",{"data-testid":"textfield-prefix",className:"absolute left-3 flex items-center justify-center pointer-events-none text-[var(--content-foreground)]","aria-hidden":"true",children:ee}),jsxRuntime.jsx(reactAriaComponents.Input,{type:da,id:aa,className:m(rt({size:t,state:fa}),Xe,sa&&"shake"),style:{width:"100%",paddingLeft:`${Pt.left}px`,paddingRight:`${Pt.right}px`},autoComplete:b,pattern:y,onPaste:la,onFocus:oa,onBlur:na,onKeyDown:j?pa:void 0,"aria-required":u?"true":void 0,"aria-readonly":p?"true":void 0,"aria-errormessage":l&&s?Ee:void 0}),It&&jsxRuntime.jsx("div",{"data-testid":"textfield-suffix",className:m("absolute right-3 flex items-center justify-center text-[var(--content-foreground)]",At?"":"pointer-events-none"),"aria-hidden":At?void 0:"true",children:It})]}),o&&d&&!l&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:m(nt()),children:d}),l&&s&&jsxRuntime.jsx(Qt,{id:Ee,children:s}),Et&&jsxRuntime.jsx("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:Et})]})});st.displayName="TextField";var we=react.forwardRef(({label:e,description:t,errorMessage:r,"aria-label":a,"aria-labelledby":n,...s},d)=>(process.env.NODE_ENV!=="production"&&!e&&!a&&!n&&console.warn("[SearchField] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)"),jsxRuntime.jsx(st,{ref:d,type:"search",label:e,description:r?void 0:t,errorMessage:r,isInvalid:!!r,"aria-label":e?void 0:a,"aria-labelledby":n,...s})));we.displayName="SearchField";function Jt(e,t){return !(e===false||t)}var er="(prefers-reduced-motion: reduce)";function Ga(){return typeof window>"u"?false:window.matchMedia(er).matches}function tr(){let[e,t]=react.useState(Ga);return react.useEffect(()=>{let r=window.matchMedia(er);t(r.matches);let a=n=>{t(n.matches);};return r.addEventListener("change",a),()=>r.removeEventListener("change",a)},[]),e}var ge;function ja(){return ge!==void 0?Promise.resolve(ge):import('motion').then(e=>(ge=e.animate,ge)).catch(()=>(ge=null,null))}var Wa={stiffness:500,damping:30},ar=classVarianceAuthority.cva("inline-flex shrink-0 cursor-pointer items-center justify-center min-h-[44px] min-w-[44px] disabled:cursor-not-allowed disabled:opacity-50 data-[readonly]:cursor-default",{variants:{},defaultVariants:{}}),or=classVarianceAuthority.cva("relative inline-flex shrink-0 items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background",{variants:{variant:{default:"bg-[var(--border)] data-[selected]:bg-[var(--primary)]",destructive:"bg-[var(--border)] data-[selected]:bg-[var(--destructive-background)]"},size:{sm:"h-6 w-10",default:"h-7 w-12",lg:"h-8 w-14"}},defaultVariants:{variant:"default",size:"default"}}),nr=classVarianceAuthority.cva("pointer-events-none absolute left-0.5 rounded-full bg-[var(--content-background)] ring-0",{variants:{size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"},animated:{false:"transition-transform data-[selected]:translate-x-full",true:""}},defaultVariants:{size:"default",animated:false}}),Le=react.memo(react.forwardRef(({className:e,variant:t,size:r,label:a,description:n,isDisabled:s,isReadOnly:d,animated:i,springConfig:u=Wa,onChange:p,...f},l)=>{let o=tr(),c=Jt(i,o),b=react.useRef(null),g=react.useRef(false),y=react.useRef(null),h=react.useRef(null);react.useEffect(()=>{c&&ja().then(v=>{if(v&&(y.current=v,g.current=true,b.current)){let E=b.current.hasAttribute("data-selected");b.current.style.transform=E?"translateX(100%)":"translateX(0)";}});},[c]);let C=react.useCallback(v=>{p?.(v),c&&g.current&&y.current&&b.current&&(h.current?.stop(),h.current=y.current(b.current,{x:v?"100%":"0%"},{type:"spring",stiffness:u.stiffness,damping:u.damping}));},[c,u.stiffness,u.damping,p]),N=c;return jsxRuntime.jsx(reactAriaComponents.Switch,{ref:l,isDisabled:s,isReadOnly:d,onChange:C,className:v=>m("group inline-flex items-center gap-2",s&&"cursor-not-allowed opacity-50",e),...f,children:v=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:m(ar()),"data-selected":v.isSelected||void 0,"data-readonly":d||void 0,children:jsxRuntime.jsx("div",{className:m(or({variant:t,size:r}),wt),"data-selected":v.isSelected||void 0,children:jsxRuntime.jsx("div",{ref:b,className:m(nr({size:r,animated:N})),"data-selected":v.isSelected||void 0})})}),(a||n)&&jsxRuntime.jsxs("div",{className:"flex flex-col",children:[a&&jsxRuntime.jsx("span",{className:"text-sm font-medium text-[var(--content-foreground)]",children:a}),n&&jsxRuntime.jsx("span",{className:"text-xs text-[var(--menu-muted)]",children:n})]})]})})}));Le.displayName="Switch";var ir=react.createContext({variant:"default",size:"default",isInvalid:false}),ao=classVarianceAuthority.cva("flex",{variants:{orientation:{vertical:"flex-col gap-2",horizontal:"flex-row flex-wrap gap-2"}},defaultVariants:{orientation:"vertical"}}),oo=classVarianceAuthority.cva(["flex items-center gap-3 rounded-md border cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",te,Z].join(" "),{variants:{variant:{default:["border-[var(--border)]","data-[hovered]:bg-[var(--accent)]/10","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]/10"].join(" "),destructive:["border-[var(--border)]","data-[hovered]:bg-[var(--destructive-background)]/10","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]/10"].join(" ")},size:{sm:"min-h-[44px] py-2 px-3 text-sm",default:"min-h-[48px] py-3 px-4 text-sm",lg:"min-h-[56px] py-4 px-5 text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""},isInvalid:{true:"border-[var(--destructive-background)]",false:""}},defaultVariants:{variant:"default",size:"default",isDisabled:false,isInvalid:false}}),no=classVarianceAuthority.cva("flex-shrink-0 rounded-full border-2 flex items-center justify-center transition-colors duration-200",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive-background)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"}},defaultVariants:{variant:"default",size:"default"}}),io=classVarianceAuthority.cva(["rounded-full transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100"].join(" "),{variants:{variant:{default:"bg-[var(--primary)]",destructive:"bg-[var(--destructive-background)]"},size:{sm:"h-2 w-2",default:"h-2.5 w-2.5",lg:"h-3 w-3"}},defaultVariants:{variant:"default",size:"default"}});function sr({children:e,className:t}){return jsxRuntime.jsx("span",{className:m("font-medium text-[var(--content-foreground)]",t),children:e})}sr.displayName="Radio.Label";function lr({children:e,className:t}){return jsxRuntime.jsx("span",{className:m("text-sm text-[var(--menu-muted)]",t),children:e})}lr.displayName="Radio.Description";function so({value:e,isDisabled:t,children:r,className:a}){let{variant:n,size:s,isInvalid:d}=react.useContext(ir);return jsxRuntime.jsx(reactAriaComponents.Radio,{value:e,isDisabled:t,className:i=>m(oo({variant:n,size:s,isDisabled:i.isDisabled,isInvalid:d}),a),children:i=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:no({variant:n,size:s}),"data-selected":i.isSelected||void 0,children:jsxRuntime.jsx("div",{className:io({variant:n,size:s}),"data-selected":i.isSelected||void 0})}),jsxRuntime.jsx("div",{className:"flex-1 flex flex-col",children:r})]})})}var le=Object.assign(so,{Label:sr,Description:lr});le.displayName="Radio";var ve=react.forwardRef(function(t,r){let{label:a,description:n,errorMessage:s,value:d,defaultValue:i,isDisabled:u=false,isReadOnly:p=false,isRequired:f=false,isInvalid:l=false,orientation:o="vertical",variant:c="default",size:b="default",name:g,onChange:y,onFocusChange:h,className:C,children:N,id:v,"aria-label":E,"aria-labelledby":w,"aria-describedby":T,"data-testid":F,...M}=t,k=react.useId(),P=v??k,B=`${P}-label`,x=`${P}-description`,R=`${P}-error`,V=[];T&&V.push(T),n&&V.push(x),l&&s&&V.push(R);let G=V.length>0?V.join(" "):void 0;return jsxRuntime.jsx(ir.Provider,{value:{variant:c,size:b,isInvalid:l},children:jsxRuntime.jsxs(reactAriaComponents.RadioGroup,{ref:r,id:P,name:g,value:d??void 0,defaultValue:i??void 0,isDisabled:u,isReadOnly:p,isRequired:f,isInvalid:l,orientation:o,onChange:y,onFocusChange:h,"aria-label":E,"aria-labelledby":a?B:w,"aria-describedby":G,"data-testid":F,"data-orientation":o,className:m("flex flex-col gap-1.5",C),...M,children:[a&&jsxRuntime.jsxs(reactAriaComponents.Label,{id:B,className:"text-sm font-medium text-[var(--content-foreground)]",children:[a,f&&jsxRuntime.jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:"*"})]}),n&&jsxRuntime.jsx(reactAriaComponents.Text,{id:x,slot:"description",className:"text-sm text-[var(--menu-muted)]",children:n}),jsxRuntime.jsx("div",{className:ao({orientation:o}),children:N}),l&&s&&jsxRuntime.jsx(reactAriaComponents.FieldError,{id:R,className:"text-sm text-[var(--destructive-background)]",children:jsxRuntime.jsx("span",{role:"alert",children:s})})]})})});ve.displayName="RadioGroup";var cr=react.createContext({variant:"default",size:"default",isInvalid:false,isDisabled:false,isReadOnly:false}),ur=classVarianceAuthority.cva("flex",{variants:{orientation:{vertical:"flex-col gap-2",horizontal:"flex-row flex-wrap gap-2"}},defaultVariants:{orientation:"vertical"}}),pr=classVarianceAuthority.cva(["flex items-center gap-3 rounded-md border cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",te,Z].join(" "),{variants:{variant:{default:["border-[var(--border)]","data-[hovered]:bg-[var(--accent)]/10","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]/10"].join(" "),destructive:["border-[var(--border)]","data-[hovered]:bg-[var(--destructive-background)]/10","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]/10"].join(" ")},size:{sm:"min-h-[44px] py-2 px-3 text-sm",default:"min-h-[48px] py-3 px-4 text-sm",lg:"min-h-[56px] py-4 px-5 text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""},isReadOnly:{true:"cursor-default",false:""},isInvalid:{true:"border-[var(--destructive-background)]",false:""}},defaultVariants:{variant:"default",size:"default",isDisabled:false,isReadOnly:false,isInvalid:false}}),fr=classVarianceAuthority.cva("flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"}},defaultVariants:{variant:"default",size:"default"}}),mr=classVarianceAuthority.cva(["transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100"].join(" "),{variants:{variant:{default:"text-[var(--primary-foreground)]",destructive:"text-[var(--destructive-foreground)]"},size:{sm:"h-3 w-3",default:"h-3.5 w-3.5",lg:"h-4 w-4"}},defaultVariants:{variant:"default",size:"default"}});function br({className:e,...t}){return jsxRuntime.jsx("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:jsxRuntime.jsx("polyline",{points:"20 6 9 17 4 12"})})}function xr({children:e,className:t}){return jsxRuntime.jsx("span",{className:m("font-medium text-[var(--content-foreground)]",t),children:e})}xr.displayName="Checkbox.Label";function gr({children:e,className:t}){return jsxRuntime.jsx("span",{className:m("text-sm text-[var(--menu-muted)]",t),children:e})}gr.displayName="Checkbox.Description";function yo({value:e,isDisabled:t,children:r,className:a,selectedIcon:n}){let{variant:s,size:d,isInvalid:i,isDisabled:u,isReadOnly:p}=react.useContext(cr),f=t||u,l=o=>{let c=m(mr({variant:s,size:d})),b=o||void 0;if(n){if(react.isValidElement(n)){let g=n;return react.cloneElement(g,{className:m(c,g.props.className),"data-selected":b})}return jsxRuntime.jsx("span",{className:c,"data-selected":b,children:n})}return jsxRuntime.jsx(br,{className:c,"data-selected":b})};return jsxRuntime.jsx(reactAriaComponents.Checkbox,{value:e,isDisabled:f,className:o=>m(pr({variant:s,size:d,isDisabled:o.isDisabled,isReadOnly:p,isInvalid:i}),a),children:o=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:fr({variant:s,size:d}),"data-selected":o.isSelected||void 0,children:l(o.isSelected)}),jsxRuntime.jsx("div",{className:"flex-1 flex flex-col",children:r})]})})}var De=Object.assign(yo,{Label:xr,Description:gr});De.displayName="Checkbox";function dr(e,t){if(!e)return e;let r=[...new Set(e)];return process.env.NODE_ENV!=="production"&&r.length!==e.length&&console.warn(`[${t}] Received duplicate values in value/defaultValue prop. Original: [${e.join(", ")}], Deduplicated: [${r.join(", ")}]. Duplicate values are automatically removed.`),r}var Oe=react.forwardRef(function(t,r){let{label:a,description:n,errorMessage:s,value:d,defaultValue:i,isDisabled:u=false,isReadOnly:p=false,isRequired:f=false,isInvalid:l=false,orientation:o="vertical",variant:c="default",size:b="default",name:g,onChange:y,onFocusChange:h,className:C,children:N,id:v,"aria-label":E,"aria-labelledby":w,"aria-describedby":T,"data-testid":F,...M}=t,k=react.useId(),P=v??k,B=`${P}-label`,x=`${P}-description`,R=`${P}-error`,V=[];T&&V.push(T),n&&V.push(x),l&&s&&V.push(R);let G=V.length>0?V.join(" "):void 0,We=dr(d,"CheckboxGroup"),Ee=dr(i,"CheckboxGroup");return jsxRuntime.jsx(cr.Provider,{value:{variant:c,size:b,isInvalid:l,isDisabled:u,isReadOnly:p},children:jsxRuntime.jsxs(reactAriaComponents.CheckboxGroup,{ref:r,id:P,name:g,value:We,defaultValue:Ee,isDisabled:u,isReadOnly:p,isRequired:f,isInvalid:l,onChange:y,onFocusChange:h,"aria-label":E,"aria-labelledby":a?B:w,"aria-describedby":G,"aria-orientation":o,"aria-required":f||void 0,"aria-invalid":l||void 0,"data-testid":F,className:m("flex flex-col gap-1.5",C),...M,children:[a&&jsxRuntime.jsxs(reactAriaComponents.Label,{id:B,className:"text-sm font-medium text-[var(--content-foreground)]",children:[a,f&&jsxRuntime.jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:"*"})]}),n&&jsxRuntime.jsx(reactAriaComponents.Text,{id:x,slot:"description",className:"text-sm text-[var(--menu-muted)]",children:n}),jsxRuntime.jsx("div",{className:ur({orientation:o}),children:N}),l&&s&&jsxRuntime.jsx(reactAriaComponents.FieldError,{id:R,className:"text-sm text-[var(--destructive-background)]",children:jsxRuntime.jsx("span",{role:"alert",children:s})})]})})});Oe.displayName="CheckboxGroup";var vr=classVarianceAuthority.cva("group flex flex-col gap-1.5 w-full",{variants:{size:{sm:"",default:"",lg:""}},defaultVariants:{size:"default"}}),hr=classVarianceAuthority.cva("text-[var(--text-primary)] font-medium",{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),Sr=classVarianceAuthority.cva(["flex-1 bg-transparent outline-none","placeholder:text-[var(--muted-foreground)]","disabled:cursor-not-allowed"],{variants:{size:Ze},defaultVariants:{size:"default"}}),yr=classVarianceAuthority.cva(["flex items-center w-full rounded-md border","bg-[var(--input-background)] text-[var(--content-foreground)]","border-[var(--input-border)]","transition-colors duration-[var(--transition-fast)]","focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]","data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50","data-[invalid]:border-[var(--destructive-background)]"],{variants:{size:{sm:`${D.sm} gap-1`,default:`${D.default} gap-2`,lg:`${D.lg} gap-2`}},defaultVariants:{size:"default"}}),Cr=classVarianceAuthority.cva(["flex items-center justify-center shrink-0","text-[var(--muted-foreground)]","hover:text-[var(--text-primary)]","transition-colors","focus:outline-none"],{variants:{size:{sm:"h-4 w-4 min-h-[44px] min-w-[44px]",default:"h-5 w-5 min-h-[44px] min-w-[44px]",lg:"h-6 w-6 min-h-[44px] min-w-[44px]"}},defaultVariants:{size:"default"}}),Nr=classVarianceAuthority.cva(["w-[var(--trigger-width)] overflow-auto","rounded-md border border-[var(--border)]","bg-[var(--content-background)] text-[var(--content-foreground)]","data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0","data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0"]),Vr=classVarianceAuthority.cva("p-1 outline-none max-h-[300px] overflow-auto"),Er=classVarianceAuthority.cva(["flex items-center gap-2 w-full rounded-sm px-2 py-1.5","text-[var(--content-foreground)]","cursor-pointer outline-none","data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]","data-[selected]:font-medium","data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed"],{variants:{size:{sm:"text-xs min-h-[44px]",default:"text-sm min-h-[44px]",lg:"text-base min-h-[44px]"}},defaultVariants:{size:"default"}});classVarianceAuthority.cva("pt-1");classVarianceAuthority.cva("px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]");var Fr=classVarianceAuthority.cva("text-[var(--muted-foreground)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}}),Pr=classVarianceAuthority.cva("text-[var(--destructive-background)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}});var Ge=react.forwardRef(({className:e,size:t="default",label:r,description:a,errorMessage:n,isRequired:s,isDisabled:d,isReadOnly:i,placeholder:u,name:p,allowsCustomValue:f=false,menuTrigger:l="input",defaultInputValue:o,inputValue:c,defaultSelectedKey:b,selectedKey:g,onInputChange:y,onSelectionChange:h,children:C,"aria-label":N,"aria-labelledby":v,"data-testid":E,...w},T)=>(process.env.NODE_ENV!=="production"&&!r&&!N&&!v&&console.warn("[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)"),jsxRuntime.jsxs(reactAriaComponents.ComboBox,{ref:T,className:m(vr({size:t}),e),isRequired:s,isDisabled:d,isReadOnly:i,name:p,allowsCustomValue:f,menuTrigger:l,defaultInputValue:o,inputValue:c,defaultSelectedKey:b,selectedKey:g,onInputChange:y,onSelectionChange:h,"aria-label":r?void 0:N,"aria-labelledby":v,"data-testid":E,...w,children:[r&&jsxRuntime.jsxs(reactAriaComponents.Label,{className:hr({size:t}),children:[r,s&&jsxRuntime.jsx("span",{className:"text-[var(--destructive-background)] ml-1","aria-hidden":"true",children:"*"})]}),jsxRuntime.jsxs("div",{className:m(K,yr({size:t})),children:[jsxRuntime.jsx(reactAriaComponents.Input,{className:Sr({size:t}),placeholder:u}),jsxRuntime.jsx(reactAriaComponents.Button,{className:Cr({size:t}),children:jsxRuntime.jsx(lucideReact.ChevronsUpDown,{className:"h-full w-full","aria-hidden":"true"})})]}),a&&!n&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:Fr({size:t}),children:a}),n&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"errorMessage",className:Pr({size:t}),children:n}),jsxRuntime.jsx(reactAriaComponents.Popover,{className:Nr(),children:jsxRuntime.jsx(reactAriaComponents.ListBox,{className:Vr(),children:C})})]})));Ge.displayName="Combobox";function Se({children:e,className:t,textValue:r,...a}){let n=r||(typeof e=="string"?e:void 0);return jsxRuntime.jsx(reactAriaComponents.ListBoxItem,{className:m(Er({size:"default"}),t),textValue:n,...a,children:({isSelected:s})=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("span",{className:"flex-1",children:e}),s&&jsxRuntime.jsx(lucideReact.Check,{className:"h-4 w-4 shrink-0 text-[var(--primary)]","aria-hidden":"true"})]})})}Se.displayName="ComboboxItem";var wr=classVarianceAuthority.cva(["flex","w-full","items-center","justify-between","gap-2","rounded-md","border","bg-[var(--content-background)]","text-[var(--content-foreground)]","transition-colors","duration-200","outline-none","focus-visible:ring-2","focus-visible:ring-[var(--ring)]","focus-visible:ring-offset-2","hover:bg-[var(--accent)]/10","disabled:cursor-not-allowed","disabled:opacity-50","data-[loading=true]:cursor-wait","truncate"],{variants:{size:{sm:`${D.sm} pr-1`,default:`${D.default} pr-1.5`,lg:`${D.lg} pr-2`},isInvalid:{true:"border-[var(--destructive-background)]",false:"border-[var(--input-border)] hover:border-[var(--input-border)]/80"}},defaultVariants:{size:"default",isInvalid:false}}),kr=classVarianceAuthority.cva(["relative","flex","w-full","cursor-pointer","select-none","items-center","rounded-sm","outline-none","transition-colors","pl-8","pr-2","hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]","focus:bg-[var(--accent)]","focus:text-[var(--accent-foreground)]","data-[selected=true]:bg-[var(--accent)]","data-[selected=true]:text-[var(--accent-foreground)]","data-[disabled=true]:pointer-events-none","data-[disabled=true]:opacity-50","data-[disabled=true]:text-[var(--menu-muted)]"],{variants:{size:{sm:`${D.sm} py-1`,default:`${D.default} py-2`,lg:`${D.lg} py-3`}},defaultVariants:{size:"default"}}),Lr=classVarianceAuthority.cva(["z-50","w-[--trigger-width]","rounded-md","border","border-[var(--menu-border)]","bg-[var(--menu-background)]","text-[var(--menu-foreground)]","outline-none","overflow-auto","data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:zoom-in-95","data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:zoom-out-95"],{variants:{size:{sm:"max-h-[200px] p-1",default:"max-h-[300px] p-1",lg:"max-h-[400px] p-1"}},defaultVariants:{size:"default"}}),_r=classVarianceAuthority.cva(["px-2","py-1.5","text-xs","font-semibold","text-[var(--menu-muted)]","uppercase","tracking-wider"],{variants:{size:{sm:"px-2 py-1 text-[10px]",default:"px-2 py-1 text-xs",lg:"px-2 py-1.5 text-xs"}},defaultVariants:{size:"default"}}),Br=classVarianceAuthority.cva(["flex","items-center","gap-1.5","text-sm","font-medium","text-[var(--destructive-background)]","mt-1"],{variants:{size:{sm:"text-xs mt-1",default:"text-sm mt-1",lg:"text-base mt-1"}},defaultVariants:{size:"default"}});var Qo=Array.from({length:3}).map((e,t)=>jsxRuntime.jsx("div",{className:"h-11 px-4 py-2",children:jsxRuntime.jsx("div",{className:"h-4 bg-[var(--accent-background)] rounded animate-pulse"})},`skeleton-${t}`));function Mr({ariaSelectProps:e,triggerContent:t,triggerRef:r,label:a,description:n,isRequired:s,isDisabled:d,isLoading:i,errorMessage:u,size:p,emptyStateMessage:f,childCount:l,children:o}){let c=react.useId(),b=react.useId(),g=react.useId(),y=!!u;return jsxRuntime.jsxs(reactAriaComponents.Select,{...e,isInvalid:y,children:[jsxRuntime.jsxs(reactAriaComponents.Label,{id:c,className:"text-sm font-medium text-[var(--content-foreground)]",children:[a,s&&jsxRuntime.jsx("span",{className:"text-[var(--destructive-background)] ml-1",children:"*"})]}),n&&jsxRuntime.jsx(reactAriaComponents.Text,{id:b,slot:"description",className:"text-sm text-[var(--menu-muted)] mt-1",children:n}),jsxRuntime.jsx("div",{className:K,children:jsxRuntime.jsxs(reactAriaComponents.Button,{ref:r,className:wr({size:p,isInvalid:y}),"aria-labelledby":c,"aria-describedby":n?b:u?g:void 0,"data-loading":i,...s&&{"aria-required":"true"},...i&&{"aria-busy":"true"},...(d||i)&&{"aria-disabled":"true"},children:[t,i?jsxRuntime.jsx(lucideReact.Loader2,{className:"ml-auto h-4 w-4 shrink-0 animate-spin text-[var(--menu-muted)]","aria-hidden":"true"}):jsxRuntime.jsx(lucideReact.ChevronDown,{className:"ml-auto h-4 w-4 shrink-0 text-[var(--menu-muted)]","aria-hidden":"true"})]})}),jsxRuntime.jsx(reactAriaComponents.FieldError,{id:g,className:Br({size:p}),children:({validationErrors:h})=>{let C=u||h.join(" ");return C?jsxRuntime.jsx(jsxRuntime.Fragment,{children:C}):null}}),jsxRuntime.jsx(reactAriaComponents.Popover,{className:Lr({size:p}),children:jsxRuntime.jsxs(reactAriaComponents.ListBox,{className:"outline-none",children:[i&&l>0&&Qo,!i&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[o,l===0&&jsxRuntime.jsx(reactAriaComponents.ListBoxItem,{id:"__empty__",textValue:"empty",isDisabled:true,className:"py-6 text-center text-sm text-[var(--menu-muted)] cursor-default pointer-events-none",children:jsxRuntime.jsx("span",{role:"status",children:f||"No options available"})})]})]})})]})}var Hr=react.forwardRef(({label:e,placeholder:t,description:r,value:a,defaultValue:n,isOpen:s,isDisabled:d=false,isRequired:i=false,disabledKeys:u,validate:p,validationBehavior:f="aria",errorMessage:l,isLoading:o=false,emptyStateMessage:c,name:b,size:g="default",onChange:y,onOpenChange:h,className:C,children:N,...v},E)=>{let w=react.Children.count(N);return w>1e3&&console.warn("Select has >1000 items. Consider using Autocomplete component for better performance."),jsxRuntime.jsx(Mr,{ariaSelectProps:{value:a,defaultValue:n,onChange:T=>{y&&y(T);},placeholder:t,disabledKeys:u,isOpen:s,onOpenChange:h,isDisabled:d||o,isRequired:i,name:b,validate:p,validationBehavior:f,className:C,...v},triggerContent:jsxRuntime.jsx(reactAriaComponents.SelectValue,{className:"flex-1 text-left truncate"}),triggerRef:E,label:e,description:r,isRequired:i,isDisabled:d,isLoading:o,errorMessage:l,size:g,emptyStateMessage:c,childCount:w,children:N})});Hr.displayName="Select";var zr=react.forwardRef(({label:e,placeholder:t,description:r,value:a,defaultValue:n,selectionMode:s="multiple",isOpen:d,isDisabled:i=false,isRequired:u=false,disabledKeys:p,validate:f,validationBehavior:l="aria",errorMessage:o,isLoading:c=false,emptyStateMessage:b,name:g,size:y="default",onChange:h,onOpenChange:C,className:N,children:v,...E},w)=>{let T=react.Children.count(v);T>1e3&&console.warn("Select has >1000 items. Consider using Autocomplete component for better performance.");let F=react.useMemo(()=>{let k=new Map,P=B=>{react.Children.forEach(B,x=>{if(react.isValidElement(x)){let R=x;if(R.type===Me||R.props?.value){let V=R.props.value,G=R.props.children;V&&typeof G=="string"&&k.set(V,G);}R.props?.children&&P(R.props.children);}});};return P(v),k},[v]),M=react.useMemo(()=>!a||!Array.isArray(a)||a.length===0?t||"":a.length<=2?a.map(P=>F.get(P)||P).join(", "):`${a.length} items selected`,[a,F,t]);return jsxRuntime.jsx(Mr,{ariaSelectProps:{value:a,defaultValue:n,onChange:k=>{h&&h(k);},selectionMode:"multiple",disabledKeys:p,isOpen:d,onOpenChange:C,isDisabled:i||c,isRequired:u,name:g,validate:f,validationBehavior:l,className:N,...E},triggerContent:jsxRuntime.jsx("span",{className:"flex-1 text-left truncate",children:M}),triggerRef:w,label:e,description:r,isRequired:u,isDisabled:i,isLoading:c,errorMessage:o,size:y,emptyStateMessage:b,childCount:T,children:v})});zr.displayName="MultiSelect";var Me=react.memo(function({children:t,textValue:r,value:a,isDisabled:n=false,className:s,...d}){if(!r&&typeof t!="string"){let i="Select.Item with custom children requires textValue prop for accessibility";if(process.env.NODE_ENV==="development")throw new Error(i);console.warn(i);}return jsxRuntime.jsx(reactAriaComponents.ListBoxItem,{id:a,textValue:r||(typeof t=="string"?t:void 0),className:`${kr({size:"default"})} ${s||""}`,isDisabled:n,...d,children:({isSelected:i,selectionMode:u,isDisabled:p})=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[u==="multiple"?jsxRuntime.jsx(lucideReact.CheckSquare,{className:`absolute left-2 h-4 w-4 ${i?"visible":"invisible"}`,"aria-hidden":"true"}):i&&jsxRuntime.jsx(lucideReact.Check,{className:"absolute left-2 h-4 w-4","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:p?"text-[var(--menu-muted)]":"",children:t})]})})});Me.displayName="SelectItem";function mt({children:e,className:t,...r}){return jsxRuntime.jsx(reactAriaComponents.ListBoxSection,{className:`border-t border-[var(--border)] first:border-t-0 ${t||""}`,...r,children:e})}mt.displayName="SelectSection";function bt({children:e,className:t,...r}){return jsxRuntime.jsx(reactAriaComponents.Header,{className:`${_r({size:"default"})} ${t||""}`,...r,children:e})}bt.displayName="SelectHeader";var Ce=Object.assign(Hr,{Item:Me,Section:mt,Header:bt});Object.assign(zr,{Item:Me,Section:mt,Header:bt});var Ur=classVarianceAuthority.cva(["relative inline-flex items-center justify-center","min-h-[44px] min-w-[44px]","focus-visible:outline-none","focus-visible:ring-2","focus-visible:ring-[var(--ring)]","focus-visible:ring-offset-2","focus-visible:ring-offset-[var(--page-background)]","disabled:pointer-events-none","disabled:opacity-50"],{variants:{},defaultVariants:{}}),jr=classVarianceAuthority.cva(["inline-flex items-center justify-center","gap-1","rounded-full","font-medium","whitespace-nowrap","transition-colors"],{variants:{variant:{primary:["bg-[var(--primary-action)]","text-[var(--primary-action-foreground)]","hover:bg-[var(--primary-action)]/90","data-[pressed]:bg-[var(--primary-action)]/80"],accent:["bg-[var(--accent-background)]","text-[var(--accent-foreground)]","hover:bg-[var(--accent-background)]/90","data-[pressed]:bg-[var(--accent-background)]/80"],destructive:["bg-[var(--destructive-background)]","text-[var(--destructive-foreground)]","hover:bg-[var(--destructive-background)]/90","data-[pressed]:bg-[var(--destructive-background)]/80"],content:["bg-[var(--accent-background)]","text-[var(--accent-foreground)]","hover:bg-[var(--accent-background)]/90","data-[pressed]:bg-[var(--accent-background)]/80"]},size:{sm:"h-5 px-2 text-xs",default:"h-6 px-2.5 text-xs",lg:"h-7 px-3 text-sm"}},defaultVariants:{variant:"primary",size:"default"}});var an={sm:"[&_svg]:h-2.5 [&_svg]:w-2.5",default:"[&_svg]:h-3 [&_svg]:w-3",lg:"[&_svg]:h-3.5 [&_svg]:w-3.5"},ce=react.memo(react.forwardRef(({className:e,variant:t="primary",size:r="default",children:a,icon:n,iconPosition:s="start",count:d,onPress:i,isDisabled:u,id:p,"aria-label":f,"aria-labelledby":l,"aria-describedby":o,"data-testid":c,...b},g)=>{let y=m(jr({variant:t,size:r}),an[r],e),v=[!!n,d!==void 0,!!a].filter(Boolean).length>1,E=()=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[n&&s==="start"&&jsxRuntime.jsx("span",{className:"shrink-0","aria-hidden":"true",children:n}),a&&(v?jsxRuntime.jsx("span",{children:a}):a),d!==void 0&&jsxRuntime.jsx("span",{className:"font-mono tabular-nums",children:d}),n&&s==="end"&&jsxRuntime.jsx("span",{className:"shrink-0","aria-hidden":"true",children:n})]});return i?jsxRuntime.jsx(reactAriaComponents.Button,{ref:g,isDisabled:u,onPress:i,className:Ur(),id:p,"aria-label":f,"aria-labelledby":l,"aria-describedby":o,"data-testid":c,...b,children:w=>jsxRuntime.jsx("span",{className:m(y,me,"",re,ae),"data-pressed":w.isPressed||void 0,children:E()})}):jsxRuntime.jsx("span",{ref:g,className:y,id:p,"aria-label":f,"aria-labelledby":l,"aria-describedby":o,"data-testid":c,...b,children:E()})}));ce.displayName="Badge";var xt=classVarianceAuthority.cva(["flex flex-wrap items-center gap-2"]),Ne=classVarianceAuthority.cva(["inline-flex items-center gap-2"]),gt=classVarianceAuthority.cva(["min-w-[14rem] max-w-[20rem] rounded-md border border-[var(--border)]","bg-[var(--content-background)] p-2 shadow-md","motion-safe:data-[entering]:animate-in motion-safe:data-[entering]:fade-in-0","motion-safe:data-[exiting]:animate-out motion-safe:data-[exiting]:fade-out-0"]),vt=classVarianceAuthority.cva(["flex items-center justify-between gap-2 px-1 pb-2 mb-1","border-b border-[var(--border)]"]),ht=classVarianceAuthority.cva(["flex items-center gap-2"],{variants:{scrollable:{true:"flex-nowrap overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&>*]:flex-none",false:"flex-wrap"}},defaultVariants:{scrollable:false}}),Wr=classVarianceAuthority.cva(["fixed inset-0 z-[80] bg-[rgb(23_23_23_/_0.42)]","motion-safe:data-[entering]:animate-in motion-safe:data-[entering]:fade-in-0","motion-safe:data-[exiting]:animate-out motion-safe:data-[exiting]:fade-out-0"]),Yr=classVarianceAuthority.cva(["fixed inset-x-0 bottom-0 z-[81] flex max-h-[88vh] flex-col","rounded-t-3xl border-t border-[var(--border)] bg-[var(--content-background)]","motion-safe:data-[entering]:animate-in motion-safe:data-[entering]:slide-in-from-bottom","motion-safe:data-[exiting]:animate-out motion-safe:data-[exiting]:slide-out-to-bottom"]),qr=classVarianceAuthority.cva(["flex items-center justify-between gap-2 px-5 py-3 border-b border-[var(--border)] flex-none"]),Xr=classVarianceAuthority.cva(["flex flex-col gap-5 overflow-auto p-5 flex-1","[&>*]:w-full"]),Zr=classVarianceAuthority.cva(["flex items-center justify-between gap-3 px-5 pt-3 flex-none","pb-[calc(0.75rem+env(safe-area-inset-bottom))] border-t border-[var(--border)]"]),Kr=classVarianceAuthority.cva(["mx-auto mt-2.5 mb-0.5 h-1.5 w-10 flex-none rounded-full bg-[var(--border)]"]),sn=classVarianceAuthority.cva(["inline-flex items-center gap-1.5 min-h-[44px] px-3 rounded-full","border border-[var(--border)] bg-[var(--accent-background)]","text-sm text-[var(--content-foreground)]","hover:bg-[var(--accent)] motion-safe:transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2","cursor-pointer"]);function Ve({label:e,badge:t,isActive:r=false,children:a,doneLabel:n,align:s="start",className:d}){let i=t!=null&&t!=="";return jsxRuntime.jsxs(reactAriaComponents.DialogTrigger,{children:[jsxRuntime.jsxs(_,{variant:r?"secondary":"outline",className:m(Ne(),d),children:[jsxRuntime.jsx("span",{children:e}),i&&jsxRuntime.jsx(ce,{size:"sm",children:String(t)}),jsxRuntime.jsx(lucideReact.ChevronDown,{"aria-hidden":"true",className:"h-4 w-4 opacity-60"})]}),jsxRuntime.jsx(reactAriaComponents.Popover,{isNonModal:true,placement:s==="end"?"bottom end":"bottom start",className:gt(),children:jsxRuntime.jsx(reactAriaComponents.Dialog,{"aria-label":e,className:"outline-none",children:({close:u})=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[n&&jsxRuntime.jsxs("div",{className:vt(),children:[jsxRuntime.jsx("span",{className:"text-xs font-bold uppercase tracking-wide text-[var(--menu-muted)]",children:e}),jsxRuntime.jsx(_,{variant:"link",onPress:u,children:n})]}),typeof a=="function"?a(u):a]})})})]})}function xn(e,t){typeof e=="function"?e(t):e&&(e.current=t);}var $e=react.forwardRef(({chips:e,onRemove:t,onClearAll:r,clearAllLabel:a,removeChipLabel:n,scrollable:s=false,"aria-label":d="Active filters",className:i,"data-testid":u="applied-filters"},p)=>{let f=react.useRef(null);if(e.length===0)return null;let l='button,a[href],input,select,textarea,[tabindex]:not([tabindex="-1"])',o=(c,b)=>{let g=f.current;if(e.length<=1&&g){let h=g.previousElementSibling;((h?.matches(l)?h:h?.querySelector(l))??g).focus(),t(c);return}t(c),requestAnimationFrame(()=>{let h=f.current;if(!h)return;let C=h.querySelectorAll("[data-chip]");C.length>0?C[Math.min(b,C.length-1)]?.focus():h.focus();});};return jsxRuntime.jsxs("div",{ref:c=>{f.current=c,xn(p,c);},role:"region","aria-label":d,tabIndex:-1,className:m(ht({scrollable:s}),"outline-none",i),"data-testid":u,children:[e.map((c,b)=>jsxRuntime.jsxs(_,{variant:"outline","data-chip":true,"aria-label":n(`${c.group?`${c.group} `:""}${c.label}`),onPress:()=>o(c,b),children:[c.group&&jsxRuntime.jsx("span",{className:"text-xs font-bold uppercase tracking-wide opacity-60",children:c.group}),jsxRuntime.jsx("span",{className:"font-semibold",children:c.label}),jsxRuntime.jsx(lucideReact.X,{"aria-hidden":"true",className:"h-3.5 w-3.5 opacity-60"})]},c.id)),e.length>1&&jsxRuntime.jsx(_,{variant:"link",onPress:()=>{r(),requestAnimationFrame(()=>f.current?.focus());},children:a})]})});$e.displayName="AppliedFilters";var Ue=react.createContext(null);function W(e){let t=react.useContext(Ue);if(!t)throw new Error(`<${e}> must be rendered inside <Filters>.`);return t}var ea=react.forwardRef(({values:e,onChange:t,labels:r,narrow:a=false,children:n,"aria-label":s="Filters",className:d,"data-testid":i="filters"},u)=>{let p=react.useRef(new Map),[f,l]=react.useState(0),o=react.useRef(e);o.current=e;let c=react.useCallback((x,R)=>{t({...o.current,[x]:R});},[t]),b=react.useCallback(x=>t(x),[t]),g=react.useCallback((x,R)=>{R?p.current.set(x,R):p.current.delete(x),l(V=>V+1);},[]),y=react.useMemo(()=>({values:e,narrow:a,setValue:c,replaceValues:b,labels:r,registry:p,registryVersion:f,syncControl:g}),[e,a,c,b,r,f,g]),h=react.useMemo(()=>{let x=0;for(let[R,V]of p.current)V.isActive(e[R])&&(x+=1);return x},[e,f]),C=()=>{let x={...o.current};for(let[R,V]of p.current)x[R]=V.clearedValue;b(x);},[N,v]=react.useState(false),E=react.useRef(null),w=react.useRef(null),T=react.useRef(null),F=react.useCallback(()=>{v(false),requestAnimationFrame(()=>E.current?.focus());},[]);react.useEffect(()=>{if(!N)return;w.current?.querySelector('button,a[href],input,select,textarea,[tabindex]:not([tabindex="-1"])')?.focus();},[N]),react.useEffect(()=>{if(!N)return;let x=V=>{let G=V.target;T.current&&T.current.contains(G)&&F();},R=V=>{V.key==="Escape"&&(V.preventDefault(),F());};return document.addEventListener("pointerdown",x,true),document.addEventListener("keydown",R),()=>{document.removeEventListener("pointerdown",x,true),document.removeEventListener("keydown",R);}},[N,F]);let M=react.Children.toArray(n),k=x=>react.isValidElement(x)&&x.type===ta,P=M.filter(k),B=M.filter(x=>!k(x));return a?jsxRuntime.jsx(Ue.Provider,{value:y,children:jsxRuntime.jsxs("div",{ref:u,role:"region","aria-label":s,className:m("flex flex-col gap-3",d),"data-testid":i,children:[jsxRuntime.jsx("div",{children:jsxRuntime.jsxs(_,{ref:E,variant:"outline",className:Ne(),"aria-haspopup":"dialog","aria-expanded":N,onPress:()=>v(true),children:[jsxRuntime.jsx(lucideReact.SlidersHorizontal,{"aria-hidden":"true",className:"h-4 w-4"}),jsxRuntime.jsx("span",{children:r.filtersButton??s}),h>0&&jsxRuntime.jsx(ce,{size:"sm",children:String(h)})]})}),N&&jsxRuntime.jsx("div",{ref:T,className:Wr(),"aria-hidden":"true"}),jsxRuntime.jsx(reactAria.FocusScope,{contain:N,restoreFocus:true,children:jsxRuntime.jsxs("div",{ref:w,role:"dialog","aria-modal":N||void 0,"aria-label":s,className:N?Yr():"hidden",children:[jsxRuntime.jsx("span",{className:Kr(),"aria-hidden":"true"}),jsxRuntime.jsxs("div",{className:qr(),children:[jsxRuntime.jsx("span",{className:"text-lg font-semibold",children:r.filtersButton??s}),jsxRuntime.jsx(_,{variant:"ghost",visualSize:"icon","aria-label":r.close??"Close",onPress:F,children:jsxRuntime.jsx(lucideReact.X,{"aria-hidden":"true"})})]}),jsxRuntime.jsx("div",{className:Xr(),children:B}),jsxRuntime.jsxs("div",{className:Zr(),children:[jsxRuntime.jsx(_,{variant:"link",onPress:C,children:r.clearAll??r.clear}),jsxRuntime.jsx(_,{variant:"default",onPress:F,children:r.done})]})]})}),P]})}):jsxRuntime.jsx(Ue.Provider,{value:y,children:jsxRuntime.jsxs("div",{ref:u,role:"region","aria-label":s,className:m("flex flex-col gap-3",d),"data-testid":i,children:[jsxRuntime.jsx("div",{className:xt(),children:B}),P]})})});ea.displayName="Filters";function pe(e,t){let{syncControl:r}=W("Filter control");react.useEffect(()=>(r(e,t),()=>r(e,null)),[e,t,r]);}function Ct(e){return e.map(t=>`${t.value}\0${t.label}`).join("")}function Nt(e,t){return e.find(r=>r.value===t)?.label??t}function En({name:e,label:t,placeholder:r,chipGroup:a,className:n}){let{values:s,setValue:d}=W("FilterSearch"),i=typeof s[e]=="string"?s[e]:"",u=react.useMemo(()=>({name:e,clearedValue:"",isActive:p=>typeof p=="string"&&p.trim()!=="",toChips:p=>typeof p=="string"&&p.trim()!==""?[{id:e,key:e,label:`\u201C${p}\u201D`,group:a??t}]:[]}),[e,t,a]);return pe(e,u),jsxRuntime.jsx(we,{"aria-label":t,placeholder:r,value:i,onChange:p=>d(e,p),onClear:()=>d(e,""),className:m("min-w-[14rem]",n)})}function Rn({name:e,label:t,className:r}){let{values:a,setValue:n}=W("FilterToggle"),s=a[e]===true,d=react.useMemo(()=>({name:e,clearedValue:false,isActive:i=>i===true,toChips:i=>i===true?[{id:e,key:e,label:t}]:[]}),[e,t]);return pe(e,d),jsxRuntime.jsx(Le,{label:t,isSelected:s,onChange:i=>n(e,!!i),className:r})}var St="__all__";function Tn({name:e,label:t,options:r,allLabel:a,className:n}){let{values:s,setValue:d,narrow:i}=W("FilterSelect"),u=typeof s[e]=="string"?s[e]:"",p=Ct(r),f=react.useMemo(()=>({name:e,clearedValue:"",isActive:l=>typeof l=="string"&&l!=="",toChips:l=>typeof l=="string"&&l!==""?[{id:e,key:e,label:Nt(r,l),group:t}]:[]}),[e,t,p]);return pe(e,f),i?jsxRuntime.jsxs(Ce,{label:t,value:u===""?St:u,onChange:l=>{let o=Array.isArray(l)?l[0]:l;d(e,!o||o===St?"":o);},className:n,children:[jsxRuntime.jsx(Ce.Item,{value:St,children:a??"All"}),r.map(l=>jsxRuntime.jsx(Ce.Item,{value:l.value,children:l.label},l.value))]}):jsxRuntime.jsx(Ve,{label:t,isActive:u!=="",className:n,children:l=>jsxRuntime.jsxs(ve,{"aria-label":t,value:u,onChange:o=>{d(e,o),l();},children:[jsxRuntime.jsx(le,{value:"",children:a??"All"}),r.map(o=>jsxRuntime.jsx(le,{value:o.value,children:o.label},o.value))]})})}function Fn({name:e,label:t,presets:r,className:a}){let{values:n,setValue:s,narrow:d}=W("FilterWithin"),i=r[0]?.value??"",u=typeof n[e]=="string"?n[e]:i,p=Ct(r),f=react.useMemo(()=>({name:e,clearedValue:i,isActive:o=>typeof o=="string"&&o!==i,toChips:o=>typeof o=="string"&&o!==i?[{id:e,key:e,label:Nt(r,o),group:t}]:[]}),[e,t,i,p]);pe(e,f);let l=o=>jsxRuntime.jsx(ve,{label:d?t:void 0,"aria-label":d?void 0:t,value:u,onChange:c=>{s(e,c),o?.();},className:d?a:void 0,children:r.map(c=>jsxRuntime.jsx(le,{value:c.value,children:c.label},c.value))});return d?l():jsxRuntime.jsx(Ve,{label:t,isActive:u!==i,className:a,children:o=>l(o)})}function Pn({name:e,label:t,options:r,className:a}){let{values:n,setValue:s,labels:d,narrow:i}=W("FilterMulti"),u=Array.isArray(n[e])?n[e]:[],p=Ct(r),f=react.useMemo(()=>({name:e,clearedValue:[],isActive:o=>Array.isArray(o)&&o.length>0,toChips:o=>Array.isArray(o)?o.map(c=>({id:`${e}:${c}`,key:e,optionValue:c,label:Nt(r,c),group:t})):[]}),[e,t,p]);pe(e,f);let l=jsxRuntime.jsx(Oe,{label:i?t:void 0,"aria-label":i?void 0:t,value:u,onChange:o=>s(e,o),className:i?a:void 0,children:r.map(o=>jsxRuntime.jsx(De,{value:o.value,children:o.label},o.value))});return i?l:jsxRuntime.jsxs(Ve,{label:t,badge:u.length||null,isActive:u.length>0,doneLabel:d.done,className:a,children:[l,u.length>0&&jsxRuntime.jsx("div",{className:"pt-1",children:jsxRuntime.jsx(_,{variant:"link",onPress:()=>s(e,[]),children:d.clear})})]})}function In({name:e,label:t,options:r,onSearch:a,isLoading:n,placeholder:s,className:d}){let{values:i,setValue:u}=W("FilterCombobox"),p=typeof i[e]=="string"?i[e]:"",f=react.useRef(new Map);for(let o of r)f.current.set(o.value,o.label);let l=react.useMemo(()=>({name:e,clearedValue:"",isActive:o=>typeof o=="string"&&o!=="",toChips:o=>typeof o=="string"&&o!==""?[{id:e,key:e,label:f.current.get(o)??o,group:t}]:[]}),[e,t]);return pe(e,l),jsxRuntime.jsx(Ge,{"aria-label":t,placeholder:s,selectedKey:p||null,onSelectionChange:o=>u(e,o==null?"":String(o)),onInputChange:a,className:m("min-w-[14rem]",d),children:r.length===0&&n?jsxRuntime.jsx(Se,{id:"__loading",isDisabled:true,children:"Loading\u2026"}):r.map(o=>jsxRuntime.jsx(Se,{id:o.value,children:o.label},o.value))})}function ta({clearAllLabel:e,removeChipLabel:t,"aria-label":r,className:a,"data-testid":n}){let{values:s,setValue:d,replaceValues:i,registry:u,narrow:p}=W("FilterChips"),f=[];for(let[c,b]of u.current)f.push(...b.toChips(s[c]));return jsxRuntime.jsx($e,{chips:f,onRemove:c=>{if(c.optionValue!==void 0){let b=s[c.key],g=Array.isArray(b)?b:[];d(c.key,g.filter(y=>y!==c.optionValue));}else {let b=u.current.get(c.key);d(c.key,b?b.clearedValue:"");}},onClearAll:()=>{let c={...s};for(let[b,g]of u.current)c[b]=g.clearedValue;i(c);},clearAllLabel:e,removeChipLabel:t,scrollable:p,"aria-label":r,className:a,"data-testid":n})}var An=zod.z.object({value:zod.z.string(),label:zod.z.string()});exports.AppliedFilters=$e;exports.FilterChips=ta;exports.FilterCombobox=In;exports.FilterMulti=Pn;exports.FilterOptionSchema=An;exports.FilterPopover=Ve;exports.FilterSearch=En;exports.FilterSelect=Tn;exports.FilterToggle=Rn;exports.FilterWithin=Fn;exports.Filters=ea;exports.appliedFiltersVariants=ht;exports.filterChipVariants=sn;exports.filterPillVariants=Ne;exports.filterPopoverHeaderVariants=vt;exports.filterPopoverVariants=gt;exports.filtersBarVariants=xt;exports.useFiltersContext=W;//# sourceMappingURL=index.js.map
3
+ //# sourceMappingURL=index.js.map