@tribepad/themis 1.0.10 → 1.0.12

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 (237) hide show
  1. package/dist/elements/Accordion/Accordion.types.d.ts +44 -4
  2. package/dist/elements/Accordion/Accordion.types.d.ts.map +1 -1
  3. package/dist/elements/Accordion/index.js +1 -1
  4. package/dist/elements/Accordion/index.js.map +1 -1
  5. package/dist/elements/Accordion/index.mjs +1 -1
  6. package/dist/elements/Accordion/index.mjs.map +1 -1
  7. package/dist/elements/AlertDialog/AlertDialog.types.d.ts +19 -2
  8. package/dist/elements/AlertDialog/AlertDialog.types.d.ts.map +1 -1
  9. package/dist/elements/AlertDialog/index.js +1 -1
  10. package/dist/elements/AlertDialog/index.js.map +1 -1
  11. package/dist/elements/AlertDialog/index.mjs +1 -1
  12. package/dist/elements/AlertDialog/index.mjs.map +1 -1
  13. package/dist/elements/Avatar/Avatar.d.ts +1 -21
  14. package/dist/elements/Avatar/Avatar.d.ts.map +1 -1
  15. package/dist/elements/Avatar/Avatar.types.d.ts +30 -11
  16. package/dist/elements/Avatar/Avatar.types.d.ts.map +1 -1
  17. package/dist/elements/Avatar/AvatarGroup.d.ts +1 -17
  18. package/dist/elements/Avatar/AvatarGroup.d.ts.map +1 -1
  19. package/dist/elements/Avatar/index.js +1 -1
  20. package/dist/elements/Avatar/index.js.map +1 -1
  21. package/dist/elements/Avatar/index.mjs +1 -1
  22. package/dist/elements/Avatar/index.mjs.map +1 -1
  23. package/dist/elements/Badge/Badge.types.d.ts +16 -9
  24. package/dist/elements/Badge/Badge.types.d.ts.map +1 -1
  25. package/dist/elements/Badge/index.js +1 -1
  26. package/dist/elements/Badge/index.js.map +1 -1
  27. package/dist/elements/Badge/index.mjs +1 -1
  28. package/dist/elements/Badge/index.mjs.map +1 -1
  29. package/dist/elements/Breadcrumbs/Breadcrumbs.d.ts +2 -34
  30. package/dist/elements/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  31. package/dist/elements/Breadcrumbs/Breadcrumbs.types.d.ts +25 -2
  32. package/dist/elements/Breadcrumbs/Breadcrumbs.types.d.ts.map +1 -1
  33. package/dist/elements/Breadcrumbs/index.js +1 -1
  34. package/dist/elements/Breadcrumbs/index.js.map +1 -1
  35. package/dist/elements/Breadcrumbs/index.mjs +1 -1
  36. package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
  37. package/dist/elements/Button/Button.d.ts +1 -24
  38. package/dist/elements/Button/Button.d.ts.map +1 -1
  39. package/dist/elements/Button/Button.types.d.ts +28 -7
  40. package/dist/elements/Button/Button.types.d.ts.map +1 -1
  41. package/dist/elements/ButtonGroup/ButtonGroup.d.ts +3 -14
  42. package/dist/elements/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  43. package/dist/elements/ButtonGroup/ButtonGroup.types.d.ts +14 -5
  44. package/dist/elements/ButtonGroup/ButtonGroup.types.d.ts.map +1 -1
  45. package/dist/elements/ButtonGroup/index.js +1 -1
  46. package/dist/elements/ButtonGroup/index.js.map +1 -1
  47. package/dist/elements/ButtonGroup/index.mjs +1 -1
  48. package/dist/elements/ButtonGroup/index.mjs.map +1 -1
  49. package/dist/elements/Card/Card.d.ts +9 -94
  50. package/dist/elements/Card/Card.d.ts.map +1 -1
  51. package/dist/elements/Card/Card.types.d.ts +69 -17
  52. package/dist/elements/Card/Card.types.d.ts.map +1 -1
  53. package/dist/elements/Card/index.js +1 -1
  54. package/dist/elements/Card/index.js.map +1 -1
  55. package/dist/elements/Card/index.mjs +1 -1
  56. package/dist/elements/Card/index.mjs.map +1 -1
  57. package/dist/elements/Carousel/Carousel.types.d.ts +26 -7
  58. package/dist/elements/Carousel/Carousel.types.d.ts.map +1 -1
  59. package/dist/elements/Chart/Chart.d.ts +2 -40
  60. package/dist/elements/Chart/Chart.d.ts.map +1 -1
  61. package/dist/elements/Chart/Chart.types.d.ts +25 -10
  62. package/dist/elements/Chart/Chart.types.d.ts.map +1 -1
  63. package/dist/elements/Chart/index.js +1 -1
  64. package/dist/elements/Chart/index.js.map +1 -1
  65. package/dist/elements/Chart/index.mjs +1 -1
  66. package/dist/elements/Chart/index.mjs.map +1 -1
  67. package/dist/elements/Checkbox/Checkbox.d.ts +1 -31
  68. package/dist/elements/Checkbox/Checkbox.d.ts.map +1 -1
  69. package/dist/elements/Checkbox/Checkbox.types.d.ts +33 -1
  70. package/dist/elements/Checkbox/Checkbox.types.d.ts.map +1 -1
  71. package/dist/elements/Checkbox/index.js +1 -1
  72. package/dist/elements/Checkbox/index.js.map +1 -1
  73. package/dist/elements/Checkbox/index.mjs +1 -1
  74. package/dist/elements/Checkbox/index.mjs.map +1 -1
  75. package/dist/elements/CheckboxGroup/CheckboxGroup.d.ts +1 -26
  76. package/dist/elements/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
  77. package/dist/elements/CheckboxGroup/CheckboxGroup.types.d.ts +48 -4
  78. package/dist/elements/CheckboxGroup/CheckboxGroup.types.d.ts.map +1 -1
  79. package/dist/elements/CheckboxGroup/index.js +1 -1
  80. package/dist/elements/CheckboxGroup/index.js.map +1 -1
  81. package/dist/elements/CheckboxGroup/index.mjs +1 -1
  82. package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
  83. package/dist/elements/Combobox/Combobox.d.ts +1 -30
  84. package/dist/elements/Combobox/Combobox.d.ts.map +1 -1
  85. package/dist/elements/Combobox/Combobox.types.d.ts +38 -4
  86. package/dist/elements/Combobox/Combobox.types.d.ts.map +1 -1
  87. package/dist/elements/Combobox/index.js +1 -1
  88. package/dist/elements/Combobox/index.js.map +1 -1
  89. package/dist/elements/Combobox/index.mjs +1 -1
  90. package/dist/elements/Combobox/index.mjs.map +1 -1
  91. package/dist/elements/Dropdown/Dropdown.d.ts +10 -124
  92. package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -1
  93. package/dist/elements/Dropdown/Dropdown.types.d.ts +53 -8
  94. package/dist/elements/Dropdown/Dropdown.types.d.ts.map +1 -1
  95. package/dist/elements/FileField/FileField.d.ts +2 -39
  96. package/dist/elements/FileField/FileField.d.ts.map +1 -1
  97. package/dist/elements/FileField/FileField.types.d.ts +31 -13
  98. package/dist/elements/FileField/FileField.types.d.ts.map +1 -1
  99. package/dist/elements/FileField/index.js +1 -1
  100. package/dist/elements/FileField/index.js.map +1 -1
  101. package/dist/elements/FileField/index.mjs +1 -1
  102. package/dist/elements/FileField/index.mjs.map +1 -1
  103. package/dist/elements/FormLayout/FormLayout.d.ts +2 -37
  104. package/dist/elements/FormLayout/FormLayout.d.ts.map +1 -1
  105. package/dist/elements/FormLayout/FormLayout.types.d.ts +19 -3
  106. package/dist/elements/FormLayout/FormLayout.types.d.ts.map +1 -1
  107. package/dist/elements/MatrixGrid/MatrixGrid.d.ts +2 -29
  108. package/dist/elements/MatrixGrid/MatrixGrid.d.ts.map +1 -1
  109. package/dist/elements/MatrixGrid/MatrixGrid.types.d.ts +22 -1
  110. package/dist/elements/MatrixGrid/MatrixGrid.types.d.ts.map +1 -1
  111. package/dist/elements/MatrixGrid/index.js +1 -1
  112. package/dist/elements/MatrixGrid/index.js.map +1 -1
  113. package/dist/elements/MatrixGrid/index.mjs +1 -1
  114. package/dist/elements/MatrixGrid/index.mjs.map +1 -1
  115. package/dist/elements/Modal/Modal.types.d.ts +69 -9
  116. package/dist/elements/Modal/Modal.types.d.ts.map +1 -1
  117. package/dist/elements/Pagination/Pagination.d.ts +2 -28
  118. package/dist/elements/Pagination/Pagination.d.ts.map +1 -1
  119. package/dist/elements/Pagination/Pagination.types.d.ts +26 -1
  120. package/dist/elements/Pagination/Pagination.types.d.ts.map +1 -1
  121. package/dist/elements/Pagination/index.js +1 -1
  122. package/dist/elements/Pagination/index.js.map +1 -1
  123. package/dist/elements/Pagination/index.mjs +1 -1
  124. package/dist/elements/Pagination/index.mjs.map +1 -1
  125. package/dist/elements/Panel/Panel.types.d.ts +67 -9
  126. package/dist/elements/Panel/Panel.types.d.ts.map +1 -1
  127. package/dist/elements/PasswordField/PasswordField.d.ts +2 -26
  128. package/dist/elements/PasswordField/PasswordField.d.ts.map +1 -1
  129. package/dist/elements/PasswordField/PasswordField.types.d.ts +27 -2
  130. package/dist/elements/PasswordField/PasswordField.types.d.ts.map +1 -1
  131. package/dist/elements/PasswordField/index.js +1 -1
  132. package/dist/elements/PasswordField/index.js.map +1 -1
  133. package/dist/elements/PasswordField/index.mjs +1 -1
  134. package/dist/elements/PasswordField/index.mjs.map +1 -1
  135. package/dist/elements/Progress/Progress.types.d.ts +25 -3
  136. package/dist/elements/Progress/Progress.types.d.ts.map +1 -1
  137. package/dist/elements/Progress/index.js +1 -1
  138. package/dist/elements/Progress/index.js.map +1 -1
  139. package/dist/elements/Progress/index.mjs +1 -1
  140. package/dist/elements/Progress/index.mjs.map +1 -1
  141. package/dist/elements/RadioGroup/RadioGroup.d.ts +1 -26
  142. package/dist/elements/RadioGroup/RadioGroup.d.ts.map +1 -1
  143. package/dist/elements/RadioGroup/RadioGroup.types.d.ts +43 -4
  144. package/dist/elements/RadioGroup/RadioGroup.types.d.ts.map +1 -1
  145. package/dist/elements/RadioGroup/index.js +1 -1
  146. package/dist/elements/RadioGroup/index.js.map +1 -1
  147. package/dist/elements/RadioGroup/index.mjs +1 -1
  148. package/dist/elements/RadioGroup/index.mjs.map +1 -1
  149. package/dist/elements/RatingScale/RatingScale.d.ts +2 -30
  150. package/dist/elements/RatingScale/RatingScale.d.ts.map +1 -1
  151. package/dist/elements/RatingScale/RatingScale.types.d.ts +29 -1
  152. package/dist/elements/RatingScale/RatingScale.types.d.ts.map +1 -1
  153. package/dist/elements/RatingScale/index.js +1 -1
  154. package/dist/elements/RatingScale/index.js.map +1 -1
  155. package/dist/elements/RatingScale/index.mjs +1 -1
  156. package/dist/elements/RatingScale/index.mjs.map +1 -1
  157. package/dist/elements/SearchField/SearchField.d.ts +2 -26
  158. package/dist/elements/SearchField/SearchField.d.ts.map +1 -1
  159. package/dist/elements/SearchField/SearchField.types.d.ts +26 -2
  160. package/dist/elements/SearchField/SearchField.types.d.ts.map +1 -1
  161. package/dist/elements/SearchField/index.js +1 -1
  162. package/dist/elements/SearchField/index.js.map +1 -1
  163. package/dist/elements/SearchField/index.mjs +1 -1
  164. package/dist/elements/SearchField/index.mjs.map +1 -1
  165. package/dist/elements/Select/Select.d.ts +3 -61
  166. package/dist/elements/Select/Select.d.ts.map +1 -1
  167. package/dist/elements/Select/Select.types.d.ts +52 -4
  168. package/dist/elements/Select/Select.types.d.ts.map +1 -1
  169. package/dist/elements/Select/index.js +1 -1
  170. package/dist/elements/Select/index.js.map +1 -1
  171. package/dist/elements/Select/index.mjs +1 -1
  172. package/dist/elements/Select/index.mjs.map +1 -1
  173. package/dist/elements/SituationalJudgement/SituationalJudgement.d.ts +2 -28
  174. package/dist/elements/SituationalJudgement/SituationalJudgement.d.ts.map +1 -1
  175. package/dist/elements/SituationalJudgement/SituationalJudgement.types.d.ts +23 -1
  176. package/dist/elements/SituationalJudgement/SituationalJudgement.types.d.ts.map +1 -1
  177. package/dist/elements/SituationalJudgement/index.js +1 -1
  178. package/dist/elements/SituationalJudgement/index.js.map +1 -1
  179. package/dist/elements/SituationalJudgement/index.mjs +1 -1
  180. package/dist/elements/SituationalJudgement/index.mjs.map +1 -1
  181. package/dist/elements/Skeleton/Skeleton.types.d.ts +11 -6
  182. package/dist/elements/Skeleton/Skeleton.types.d.ts.map +1 -1
  183. package/dist/elements/Skeleton/index.js +1 -1
  184. package/dist/elements/Skeleton/index.js.map +1 -1
  185. package/dist/elements/Skeleton/index.mjs +1 -1
  186. package/dist/elements/Skeleton/index.mjs.map +1 -1
  187. package/dist/elements/Switch/Switch.types.d.ts +31 -7
  188. package/dist/elements/Switch/Switch.types.d.ts.map +1 -1
  189. package/dist/elements/Switch/index.js +1 -1
  190. package/dist/elements/Switch/index.js.map +1 -1
  191. package/dist/elements/Switch/index.mjs +1 -1
  192. package/dist/elements/Switch/index.mjs.map +1 -1
  193. package/dist/elements/Table/Table.d.ts +7 -79
  194. package/dist/elements/Table/Table.d.ts.map +1 -1
  195. package/dist/elements/Table/Table.types.d.ts +82 -17
  196. package/dist/elements/Table/Table.types.d.ts.map +1 -1
  197. package/dist/elements/Table/index.js +1 -1
  198. package/dist/elements/Table/index.js.map +1 -1
  199. package/dist/elements/Table/index.mjs +1 -1
  200. package/dist/elements/Table/index.mjs.map +1 -1
  201. package/dist/elements/Tabs/Tabs.types.d.ts +61 -5
  202. package/dist/elements/Tabs/Tabs.types.d.ts.map +1 -1
  203. package/dist/elements/Tabs/index.js +1 -1
  204. package/dist/elements/Tabs/index.js.map +1 -1
  205. package/dist/elements/Tabs/index.mjs +1 -1
  206. package/dist/elements/Tabs/index.mjs.map +1 -1
  207. package/dist/elements/TextField/TextField.d.ts +6 -71
  208. package/dist/elements/TextField/TextField.d.ts.map +1 -1
  209. package/dist/elements/TextField/TextField.types.d.ts +76 -12
  210. package/dist/elements/TextField/TextField.types.d.ts.map +1 -1
  211. package/dist/elements/TextField/index.js +1 -1
  212. package/dist/elements/TextField/index.js.map +1 -1
  213. package/dist/elements/TextField/index.mjs +1 -1
  214. package/dist/elements/TextField/index.mjs.map +1 -1
  215. package/dist/elements/Toast/Toast.types.d.ts +12 -20
  216. package/dist/elements/Toast/Toast.types.d.ts.map +1 -1
  217. package/dist/elements/Toast/Toaster.d.ts +2 -5
  218. package/dist/elements/Toast/Toaster.d.ts.map +1 -1
  219. package/dist/elements/Toast/index.js +1 -1
  220. package/dist/elements/Toast/index.js.map +1 -1
  221. package/dist/elements/Toast/index.mjs +1 -1
  222. package/dist/elements/Toast/index.mjs.map +1 -1
  223. package/dist/elements/Tooltip/Tooltip.types.d.ts +39 -4
  224. package/dist/elements/Tooltip/Tooltip.types.d.ts.map +1 -1
  225. package/dist/elements/Tooltip/index.js +1 -1
  226. package/dist/elements/Tooltip/index.js.map +1 -1
  227. package/dist/elements/Tooltip/index.mjs +1 -1
  228. package/dist/elements/Tooltip/index.mjs.map +1 -1
  229. package/dist/elements/index.js +1 -1
  230. package/dist/elements/index.js.map +1 -1
  231. package/dist/elements/index.mjs +1 -1
  232. package/dist/elements/index.mjs.map +1 -1
  233. package/dist/index.js +2 -2
  234. package/dist/index.js.map +1 -1
  235. package/dist/index.mjs +2 -2
  236. package/dist/index.mjs.map +1 -1
  237. package/package.json +1 -1
@@ -45,11 +45,35 @@ export declare const ComboboxPropsSchema: z.ZodObject<{
45
45
  defaultSelectedKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
46
46
  selectedKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodNull]>>;
47
47
  }, z.core.$strip>;
48
- export type ComboboxProps = z.infer<typeof ComboboxPropsSchema> & Omit<AriaComboBoxProps<object>, keyof z.infer<typeof ComboboxPropsSchema>> & {
48
+ export interface ComboboxPropsOwn {
49
+ className?: string;
50
+ id?: string;
51
+ 'aria-label'?: string;
52
+ 'aria-labelledby'?: string;
53
+ 'aria-describedby'?: string;
54
+ 'aria-live'?: 'off' | 'polite' | 'assertive';
55
+ 'aria-hidden'?: boolean;
56
+ 'data-testid'?: string;
57
+ label?: string;
58
+ description?: string;
59
+ errorMessage?: string;
60
+ size?: ComboboxSize;
61
+ placeholder?: string;
62
+ isRequired?: boolean;
63
+ isDisabled?: boolean;
64
+ isReadOnly?: boolean;
65
+ name?: string;
66
+ allowsCustomValue?: boolean;
67
+ menuTrigger?: 'input' | 'focus' | 'manual';
68
+ defaultInputValue?: string;
69
+ inputValue?: string;
70
+ defaultSelectedKey?: string | number;
71
+ selectedKey?: string | number | null;
49
72
  children: ReactNode;
50
73
  onInputChange?: (value: string) => void;
51
74
  onSelectionChange?: (key: string | number | null) => void;
52
- };
75
+ }
76
+ export type ComboboxProps = ComboboxPropsOwn & Omit<AriaComboBoxProps<object>, keyof ComboboxPropsOwn>;
53
77
  export declare const ComboboxItemPropsSchema: z.ZodObject<{
54
78
  id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
55
79
  textValue: z.ZodOptional<z.ZodString>;
@@ -57,11 +81,21 @@ export declare const ComboboxItemPropsSchema: z.ZodObject<{
57
81
  children: z.ZodCustom<ReactNode, ReactNode>;
58
82
  className: z.ZodOptional<z.ZodString>;
59
83
  }, z.core.$strip>;
60
- export type ComboboxItemProps = z.infer<typeof ComboboxItemPropsSchema>;
84
+ export interface ComboboxItemProps {
85
+ id?: string | number;
86
+ textValue?: string;
87
+ isDisabled?: boolean;
88
+ children?: ReactNode;
89
+ className?: string;
90
+ }
61
91
  export declare const ComboboxSectionPropsSchema: z.ZodObject<{
62
92
  header: z.ZodOptional<z.ZodString>;
63
93
  children: z.ZodCustom<ReactNode, ReactNode>;
64
94
  className: z.ZodOptional<z.ZodString>;
65
95
  }, z.core.$strip>;
66
- export type ComboboxSectionProps = z.infer<typeof ComboboxSectionPropsSchema>;
96
+ export interface ComboboxSectionProps {
97
+ header?: string;
98
+ children?: ReactNode;
99
+ className?: string;
100
+ }
67
101
  //# sourceMappingURL=Combobox.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.types.d.ts","sourceRoot":"","sources":["../../../src/elements/Combobox/Combobox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,eAAO,MAAM,kBAAkB;;;;EAAkC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6C9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GAC7D,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC,GAAG;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3D,CAAC;AAEJ,eAAO,MAAM,uBAAuB;;;;;;iBAUlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,0BAA0B;;;;iBAMrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
1
+ {"version":3,"file":"Combobox.types.d.ts","sourceRoot":"","sources":["../../../src/elements/Combobox/Combobox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,eAAO,MAAM,kBAAkB;;;;EAAkC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6C9B,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAC1C,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,uBAAuB;;;;;;iBAUlC,CAAC;AAEH,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,0BAA0B;;;;iBAMrC,CAAC;AAEH,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- 'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),zod=require('zod');function p(...r){return tailwindMerge.twMerge(clsx.clsx(r))}var x=classVarianceAuthority.cva("group flex flex-col gap-1.5 w-full",{variants:{size:{sm:"",default:"",lg:""}},defaultVariants:{size:"default"}}),c=classVarianceAuthority.cva("text-[var(--text-primary)] font-medium",{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),d=classVarianceAuthority.cva(["flex-1 bg-transparent outline-none","placeholder:text-[var(--muted-foreground)]","disabled:cursor-not-allowed"],{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),u=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:"h-8 px-2 gap-1 min-h-[44px]",default:"h-10 px-3 gap-2 min-h-[44px]",lg:"h-12 px-4 gap-2 min-h-[44px]"}},defaultVariants:{size:"default"}}),f=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"}}),g=classVarianceAuthority.cva(["w-[var(--trigger-width)] overflow-auto","rounded-md border border-[var(--border)]","bg-[var(--content-background)] text-[var(--content-foreground)]","shadow-md","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"]),C=classVarianceAuthority.cva("p-1 outline-none max-h-[300px] overflow-auto"),h=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"}}),V=classVarianceAuthority.cva("pt-1"),v=classVarianceAuthority.cva("px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]"),y=classVarianceAuthority.cva("text-[var(--muted-foreground)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}}),S=classVarianceAuthority.cva("text-[var(--destructive-background)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}});var B=react.forwardRef(({className:r,size:a="default",label:i,description:l,errorMessage:s,isRequired:b,isDisabled:R,isReadOnly:k,placeholder:E,name:T,allowsCustomValue:D=false,menuTrigger:H="input",defaultInputValue:j,inputValue:K,defaultSelectedKey:O,selectedKey:W,onInputChange:q,onSelectionChange:M,children:G,"aria-label":P,"aria-labelledby":w,"data-testid":U,..._},F)=>(process.env.NODE_ENV!=="production"&&!i&&!P&&!w&&console.warn("[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)"),jsxRuntime.jsxs(reactAriaComponents.ComboBox,{ref:F,className:p(x({size:a}),r),isRequired:b,isDisabled:R,isReadOnly:k,name:T,allowsCustomValue:D,menuTrigger:H,defaultInputValue:j,inputValue:K,defaultSelectedKey:O,selectedKey:W,onInputChange:q,onSelectionChange:M,"aria-label":i?void 0:P,"aria-labelledby":w,"data-testid":U,..._,children:[i&&jsxRuntime.jsxs(reactAriaComponents.Label,{className:c({size:a}),children:[i,b&&jsxRuntime.jsx("span",{className:"text-[var(--destructive-background)] ml-1","aria-hidden":"true",children:"*"})]}),jsxRuntime.jsxs("div",{className:u({size:a}),children:[jsxRuntime.jsx(reactAriaComponents.Input,{className:d({size:a}),placeholder:E}),jsxRuntime.jsx(reactAriaComponents.Button,{className:f({size:a}),children:jsxRuntime.jsx(lucideReact.ChevronsUpDown,{className:"h-full w-full","aria-hidden":"true"})})]}),l&&!s&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:y({size:a}),children:l}),s&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"errorMessage",className:S({size:a}),children:s}),jsxRuntime.jsx(reactAriaComponents.Popover,{className:g(),children:jsxRuntime.jsx(reactAriaComponents.ListBox,{className:C(),children:G})})]})));B.displayName="Combobox";function z({children:r,className:a,textValue:i,...l}){let s=i||(typeof r=="string"?r:void 0);return jsxRuntime.jsx(reactAriaComponents.ListBoxItem,{className:p(h({size:"default"}),a),textValue:s,...l,children:({isSelected:b})=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("span",{className:"flex-1",children:r}),b&&jsxRuntime.jsx(lucideReact.Check,{className:"h-4 w-4 shrink-0 text-[var(--primary)]","aria-hidden":"true"})]})})}z.displayName="ComboboxItem";function I({header:r,children:a,className:i}){return jsxRuntime.jsxs(reactAriaComponents.ListBoxSection,{className:p(V(),i),children:[r&&jsxRuntime.jsx(reactAriaComponents.Header,{className:v(),children:r}),a]})}I.displayName="ComboboxSection";var A=zod.z.object({className:zod.z.string().optional(),children:zod.z.any().optional(),id:zod.z.string().optional(),"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),"aria-describedby":zod.z.string().optional(),"aria-live":zod.z.enum(["off","polite","assertive"]).optional(),"aria-hidden":zod.z.boolean().optional(),"data-testid":zod.z.string().optional()});var L=zod.z.enum(["sm","default","lg"]),lo=A.extend({label:zod.z.string().optional(),description:zod.z.string().optional(),errorMessage:zod.z.string().optional(),size:L.optional().default("default"),placeholder:zod.z.string().optional(),isRequired:zod.z.boolean().optional(),isDisabled:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),name:zod.z.string().optional(),allowsCustomValue:zod.z.boolean().optional().default(false),menuTrigger:zod.z.enum(["input","focus","manual"]).optional().default("input"),defaultInputValue:zod.z.string().optional(),inputValue:zod.z.string().optional(),defaultSelectedKey:zod.z.union([zod.z.string(),zod.z.number()]).optional(),selectedKey:zod.z.union([zod.z.string(),zod.z.number(),zod.z.null()]).optional()}),bo=zod.z.object({id:zod.z.union([zod.z.string(),zod.z.number()]).optional(),textValue:zod.z.string().optional(),isDisabled:zod.z.boolean().optional(),children:zod.z.custom(),className:zod.z.string().optional()}),po=zod.z.object({header:zod.z.string().optional(),children:zod.z.custom(),className:zod.z.string().optional()});exports.Combobox=B;exports.ComboboxItem=z;exports.ComboboxItemPropsSchema=bo;exports.ComboboxPropsSchema=lo;exports.ComboboxSection=I;exports.ComboboxSectionPropsSchema=po;exports.ComboboxSizeSchema=L;exports.comboboxButtonVariants=f;exports.comboboxDescriptionVariants=y;exports.comboboxErrorVariants=S;exports.comboboxInputVariants=d;exports.comboboxItemVariants=h;exports.comboboxLabelVariants=c;exports.comboboxListBoxVariants=C;exports.comboboxPopoverVariants=g;exports.comboboxSectionHeaderVariants=v;exports.comboboxSectionVariants=V;exports.comboboxTriggerWrapperVariants=u;exports.comboboxVariants=x;//# sourceMappingURL=index.js.map
2
+ 'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),zod=require('zod');function p(...r){return tailwindMerge.twMerge(clsx.clsx(r))}var c=classVarianceAuthority.cva("group flex flex-col gap-1.5 w-full",{variants:{size:{sm:"",default:"",lg:""}},defaultVariants:{size:"default"}}),x=classVarianceAuthority.cva("text-[var(--text-primary)] font-medium",{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),d=classVarianceAuthority.cva(["flex-1 bg-transparent outline-none","placeholder:text-[var(--muted-foreground)]","disabled:cursor-not-allowed"],{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),u=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:"h-8 px-2 gap-1 min-h-[44px]",default:"h-10 px-3 gap-2 min-h-[44px]",lg:"h-12 px-4 gap-2 min-h-[44px]"}},defaultVariants:{size:"default"}}),f=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"}}),g=classVarianceAuthority.cva(["w-[var(--trigger-width)] overflow-auto","rounded-md border border-[var(--border)]","bg-[var(--content-background)] text-[var(--content-foreground)]","shadow-md","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"]),C=classVarianceAuthority.cva("p-1 outline-none max-h-[300px] overflow-auto"),V=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"}}),h=classVarianceAuthority.cva("pt-1"),v=classVarianceAuthority.cva("px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]"),y=classVarianceAuthority.cva("text-[var(--muted-foreground)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}}),S=classVarianceAuthority.cva("text-[var(--destructive-background)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}});var B=react.forwardRef(({className:r,size:a="default",label:n,description:m,errorMessage:s,isRequired:b,isDisabled:R,isReadOnly:T,placeholder:k,name:D,allowsCustomValue:E=false,menuTrigger:O="input",defaultInputValue:H,inputValue:K,defaultSelectedKey:j,selectedKey:W,onInputChange:q,onSelectionChange:M,children:G,"aria-label":P,"aria-labelledby":N,"data-testid":U,..._},F)=>(process.env.NODE_ENV!=="production"&&!n&&!P&&!N&&console.warn("[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)"),jsxRuntime.jsxs(reactAriaComponents.ComboBox,{ref:F,className:p(c({size:a}),r),isRequired:b,isDisabled:R,isReadOnly:T,name:D,allowsCustomValue:E,menuTrigger:O,defaultInputValue:H,inputValue:K,defaultSelectedKey:j,selectedKey:W,onInputChange:q,onSelectionChange:M,"aria-label":n?void 0:P,"aria-labelledby":N,"data-testid":U,..._,children:[n&&jsxRuntime.jsxs(reactAriaComponents.Label,{className:x({size:a}),children:[n,b&&jsxRuntime.jsx("span",{className:"text-[var(--destructive-background)] ml-1","aria-hidden":"true",children:"*"})]}),jsxRuntime.jsxs("div",{className:u({size:a}),children:[jsxRuntime.jsx(reactAriaComponents.Input,{className:d({size:a}),placeholder:k}),jsxRuntime.jsx(reactAriaComponents.Button,{className:f({size:a}),children:jsxRuntime.jsx(lucideReact.ChevronsUpDown,{className:"h-full w-full","aria-hidden":"true"})})]}),m&&!s&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:y({size:a}),children:m}),s&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"errorMessage",className:S({size:a}),children:s}),jsxRuntime.jsx(reactAriaComponents.Popover,{className:g(),children:jsxRuntime.jsx(reactAriaComponents.ListBox,{className:C(),children:G})})]})));B.displayName="Combobox";function I({children:r,className:a,textValue:n,...m}){let s=n||(typeof r=="string"?r:void 0);return jsxRuntime.jsx(reactAriaComponents.ListBoxItem,{className:p(V({size:"default"}),a),textValue:s,...m,children:({isSelected:b})=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("span",{className:"flex-1",children:r}),b&&jsxRuntime.jsx(lucideReact.Check,{className:"h-4 w-4 shrink-0 text-[var(--primary)]","aria-hidden":"true"})]})})}I.displayName="ComboboxItem";function z({header:r,children:a,className:n}){return jsxRuntime.jsxs(reactAriaComponents.ListBoxSection,{className:p(h(),n),children:[r&&jsxRuntime.jsx(reactAriaComponents.Header,{className:v(),children:r}),a]})}z.displayName="ComboboxSection";var A=zod.z.object({className:zod.z.string().optional(),children:zod.z.any().optional(),id:zod.z.string().optional(),"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),"aria-describedby":zod.z.string().optional(),"aria-live":zod.z.enum(["off","polite","assertive"]).optional(),"aria-hidden":zod.z.boolean().optional(),"data-testid":zod.z.string().optional()});var L=zod.z.enum(["sm","default","lg"]),mo=A.extend({label:zod.z.string().optional(),description:zod.z.string().optional(),errorMessage:zod.z.string().optional(),size:L.optional().default("default"),placeholder:zod.z.string().optional(),isRequired:zod.z.boolean().optional(),isDisabled:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),name:zod.z.string().optional(),allowsCustomValue:zod.z.boolean().optional().default(false),menuTrigger:zod.z.enum(["input","focus","manual"]).optional().default("input"),defaultInputValue:zod.z.string().optional(),inputValue:zod.z.string().optional(),defaultSelectedKey:zod.z.union([zod.z.string(),zod.z.number()]).optional(),selectedKey:zod.z.union([zod.z.string(),zod.z.number(),zod.z.null()]).optional()}),bo=zod.z.object({id:zod.z.union([zod.z.string(),zod.z.number()]).optional(),textValue:zod.z.string().optional(),isDisabled:zod.z.boolean().optional(),children:zod.z.custom(),className:zod.z.string().optional()}),po=zod.z.object({header:zod.z.string().optional(),children:zod.z.custom(),className:zod.z.string().optional()});exports.Combobox=B;exports.ComboboxItem=I;exports.ComboboxItemPropsSchema=bo;exports.ComboboxPropsSchema=mo;exports.ComboboxSection=z;exports.ComboboxSectionPropsSchema=po;exports.ComboboxSizeSchema=L;exports.comboboxButtonVariants=f;exports.comboboxDescriptionVariants=y;exports.comboboxErrorVariants=S;exports.comboboxInputVariants=d;exports.comboboxItemVariants=V;exports.comboboxLabelVariants=x;exports.comboboxListBoxVariants=C;exports.comboboxPopoverVariants=g;exports.comboboxSectionHeaderVariants=v;exports.comboboxSectionVariants=h;exports.comboboxTriggerWrapperVariants=u;exports.comboboxVariants=c;//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Combobox/Combobox.styles.ts","../../../src/elements/Combobox/Combobox.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Combobox/Combobox.types.ts"],"names":["cn","inputs","twMerge","clsx","comboboxVariants","cva","comboboxLabelVariants","comboboxInputVariants","comboboxTriggerWrapperVariants","comboboxButtonVariants","comboboxPopoverVariants","comboboxListBoxVariants","comboboxItemVariants","comboboxSectionVariants","comboboxSectionHeaderVariants","comboboxDescriptionVariants","comboboxErrorVariants","Combobox","forwardRef","className","size","label","description","errorMessage","isRequired","isDisabled","isReadOnly","placeholder","name","allowsCustomValue","menuTrigger","defaultInputValue","inputValue","defaultSelectedKey","selectedKey","onInputChange","onSelectionChange","children","ariaLabel","ariaLabelledBy","dataTestId","props","ref","jsxs","AriaComboBox","AriaLabel","jsx","AriaInput","AriaButton","ChevronsUpDown","AriaText","AriaPopover","AriaListBox","ComboboxItem","textValue","computedTextValue","AriaListBoxItem","isSelected","Fragment","Check","ComboboxSection","header","AriaListBoxSection","AriaHeader","BaseComponentPropsSchema","z","ComboboxSizeSchema","ComboboxPropsSchema","ComboboxItemPropsSchema","ComboboxSectionPropsSchema"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { cva } from 'class-variance-authority';\n\nexport const comboboxVariants = cva(\n 'group flex flex-col gap-1.5 w-full',\n {\n variants: {\n size: {\n sm: '',\n default: '',\n lg: '',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxLabelVariants = cva(\n 'text-[var(--text-primary)] font-medium',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxInputVariants = cva(\n [\n 'flex-1 bg-transparent outline-none',\n 'placeholder:text-[var(--muted-foreground)]',\n 'disabled:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxTriggerWrapperVariants = cva(\n [\n 'flex items-center w-full rounded-md border',\n 'bg-[var(--input-background)] text-[var(--content-foreground)]',\n 'border-[var(--input-border)]',\n 'transition-colors duration-[var(--transition-fast)]',\n 'focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n 'data-[invalid]:border-[var(--destructive-background)]',\n ],\n {\n variants: {\n size: {\n sm: 'h-8 px-2 gap-1 min-h-[44px]',\n default: 'h-10 px-3 gap-2 min-h-[44px]',\n lg: 'h-12 px-4 gap-2 min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxButtonVariants = cva(\n [\n 'flex items-center justify-center shrink-0',\n 'text-[var(--muted-foreground)]',\n 'hover:text-[var(--text-primary)]',\n 'transition-colors',\n 'focus:outline-none',\n ],\n {\n variants: {\n size: {\n sm: 'h-4 w-4 min-h-[44px] min-w-[44px]',\n default: 'h-5 w-5 min-h-[44px] min-w-[44px]',\n lg: 'h-6 w-6 min-h-[44px] min-w-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxPopoverVariants = cva(\n [\n 'w-[var(--trigger-width)] overflow-auto',\n 'rounded-md border border-[var(--border)]',\n 'bg-[var(--content-background)] text-[var(--content-foreground)]',\n 'shadow-md',\n 'data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0',\n 'data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0',\n ]\n);\n\nexport const comboboxListBoxVariants = cva(\n 'p-1 outline-none max-h-[300px] overflow-auto'\n);\n\nexport const comboboxItemVariants = cva(\n [\n 'flex items-center gap-2 w-full rounded-sm px-2 py-1.5',\n 'text-[var(--content-foreground)]',\n 'cursor-pointer outline-none',\n 'data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]',\n 'data-[selected]:font-medium',\n 'data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs min-h-[44px]',\n default: 'text-sm min-h-[44px]',\n lg: 'text-base min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxSectionVariants = cva('pt-1');\n\nexport const comboboxSectionHeaderVariants = cva(\n 'px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]'\n);\n\nexport const comboboxDescriptionVariants = cva(\n 'text-[var(--muted-foreground)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxErrorVariants = cva(\n 'text-[var(--destructive-background)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n","'use client';\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n ComboBox as AriaComboBox,\n Label as AriaLabel,\n Input as AriaInput,\n Button as AriaButton,\n Popover as AriaPopover,\n ListBox as AriaListBox,\n ListBoxItem as AriaListBoxItem,\n ListBoxSection as AriaListBoxSection,\n Header as AriaHeader,\n Text as AriaText,\n} from 'react-aria-components';\nimport { ChevronsUpDown, Check } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type {\n ComboboxProps,\n ComboboxItemProps,\n ComboboxSectionProps,\n} from './Combobox.types';\nimport {\n comboboxVariants,\n comboboxLabelVariants,\n comboboxInputVariants,\n comboboxTriggerWrapperVariants,\n comboboxButtonVariants,\n comboboxPopoverVariants,\n comboboxListBoxVariants,\n comboboxItemVariants,\n comboboxSectionVariants,\n comboboxSectionHeaderVariants,\n comboboxDescriptionVariants,\n comboboxErrorVariants,\n} from './Combobox.styles';\n\n// ============================================================================\n// Combobox\n// ============================================================================\n\n/**\n * Combobox Component\n *\n * A filterable select/autocomplete component built on React Aria's ComboBox.\n * Supports type-to-filter, keyboard navigation, and optional custom values.\n *\n * @example\n * ```tsx\n * <Combobox label=\"Framework\">\n * <ComboboxItem id=\"react\">React</ComboboxItem>\n * <ComboboxItem id=\"vue\">Vue</ComboboxItem>\n * <ComboboxItem id=\"angular\">Angular</ComboboxItem>\n * </Combobox>\n * ```\n */\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (\n {\n className,\n size = 'default',\n label,\n description,\n errorMessage,\n isRequired,\n isDisabled,\n isReadOnly,\n placeholder,\n name,\n allowsCustomValue = false,\n menuTrigger = 'input',\n defaultInputValue,\n inputValue,\n defaultSelectedKey,\n selectedKey,\n onInputChange,\n onSelectionChange,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'data-testid': dataTestId,\n ...props\n },\n ref\n ): ReactElement => {\n // Warn if no accessible label\n if (process.env.NODE_ENV !== 'production') {\n if (!label && !ariaLabel && !ariaLabelledBy) {\n console.warn(\n '[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)'\n );\n }\n }\n\n return (\n <AriaComboBox\n ref={ref}\n className={cn(comboboxVariants({ size }), className)}\n isRequired={isRequired}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n name={name}\n allowsCustomValue={allowsCustomValue}\n menuTrigger={menuTrigger}\n defaultInputValue={defaultInputValue}\n inputValue={inputValue}\n defaultSelectedKey={defaultSelectedKey}\n selectedKey={selectedKey}\n onInputChange={onInputChange}\n onSelectionChange={onSelectionChange}\n aria-label={!label ? ariaLabel : undefined}\n aria-labelledby={ariaLabelledBy}\n data-testid={dataTestId}\n {...props}\n >\n {label && (\n <AriaLabel className={comboboxLabelVariants({ size })}>\n {label}\n {isRequired && (\n <span className=\"text-[var(--destructive-background)] ml-1\" aria-hidden=\"true\">\n *\n </span>\n )}\n </AriaLabel>\n )}\n\n <div className={comboboxTriggerWrapperVariants({ size })}>\n <AriaInput\n className={comboboxInputVariants({ size })}\n placeholder={placeholder}\n />\n <AriaButton className={comboboxButtonVariants({ size })}>\n <ChevronsUpDown className=\"h-full w-full\" aria-hidden=\"true\" />\n </AriaButton>\n </div>\n\n {description && !errorMessage && (\n <AriaText slot=\"description\" className={comboboxDescriptionVariants({ size })}>\n {description}\n </AriaText>\n )}\n\n {errorMessage && (\n <AriaText slot=\"errorMessage\" className={comboboxErrorVariants({ size })}>\n {errorMessage}\n </AriaText>\n )}\n\n <AriaPopover className={comboboxPopoverVariants()}>\n <AriaListBox className={comboboxListBoxVariants()}>\n {children}\n </AriaListBox>\n </AriaPopover>\n </AriaComboBox>\n );\n }\n);\n\nCombobox.displayName = 'Combobox';\n\n// ============================================================================\n// ComboboxItem\n// ============================================================================\n\nexport function ComboboxItem({\n children,\n className,\n textValue,\n ...props\n}: ComboboxItemProps): ReactElement {\n // Compute textValue from string children if not explicitly provided\n const computedTextValue = textValue || (typeof children === 'string' ? children : undefined);\n\n return (\n <AriaListBoxItem\n className={cn(comboboxItemVariants({ size: 'default' }), className)}\n textValue={computedTextValue}\n {...props}\n >\n {({ isSelected }) => (\n <>\n <span className=\"flex-1\">{children}</span>\n {isSelected && (\n <Check className=\"h-4 w-4 shrink-0 text-[var(--primary)]\" aria-hidden=\"true\" />\n )}\n </>\n )}\n </AriaListBoxItem>\n );\n}\n\nComboboxItem.displayName = 'ComboboxItem';\n\n// ============================================================================\n// ComboboxSection\n// ============================================================================\n\nexport function ComboboxSection({\n header,\n children,\n className,\n}: ComboboxSectionProps): ReactElement {\n return (\n <AriaListBoxSection className={cn(comboboxSectionVariants(), className)}>\n {header && (\n <AriaHeader className={comboboxSectionHeaderVariants()}>\n {header}\n </AriaHeader>\n )}\n {children}\n </AriaListBoxSection>\n );\n}\n\nComboboxSection.displayName = 'ComboboxSection';\n","import { z } from 'zod';\n\n/**\n * Base props schema for all Themis components\n * Ensures consistent accessibility and styling APIs across the library\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\nexport const BaseComponentPropsSchema = z.object({\n // Styling\n className: z.string().optional(),\n\n // React\n children: z.any().optional(), // ReactNode not directly supported by Zod\n id: z.string().optional(),\n\n // Accessibility (WCAG 2.2 AA requirements)\n 'aria-label': z.string().optional(),\n 'aria-labelledby': z.string().optional(),\n 'aria-describedby': z.string().optional(),\n 'aria-live': z.enum(['off', 'polite', 'assertive']).optional(),\n 'aria-hidden': z.boolean().optional(),\n\n // Testing & Development\n 'data-testid': z.string().optional(),\n});\n\nexport type BaseComponentProps = z.infer<typeof BaseComponentPropsSchema>;\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode } from 'react';\nimport type { ComboBoxProps as AriaComboBoxProps } from 'react-aria-components';\n\nexport const ComboboxSizeSchema = z.enum(['sm', 'default', 'lg']);\nexport type ComboboxSize = z.infer<typeof ComboboxSizeSchema>;\n\nexport const ComboboxPropsSchema = BaseComponentPropsSchema.extend({\n /** Label text */\n label: z.string().optional(),\n\n /** Description/help text */\n description: z.string().optional(),\n\n /** Error message */\n errorMessage: z.string().optional(),\n\n /** Size variant */\n size: ComboboxSizeSchema.optional().default('default'),\n\n /** Placeholder text */\n placeholder: z.string().optional(),\n\n /** Whether the field is required */\n isRequired: z.boolean().optional(),\n\n /** Whether the field is disabled */\n isDisabled: z.boolean().optional(),\n\n /** Whether the field is read-only */\n isReadOnly: z.boolean().optional(),\n\n /** Field name for form submission */\n name: z.string().optional(),\n\n /** Whether to allow custom values (not in the list) */\n allowsCustomValue: z.boolean().optional().default(false),\n\n /** The menu trigger behavior */\n menuTrigger: z.enum(['input', 'focus', 'manual']).optional().default('input'),\n\n /** Default input value (uncontrolled) */\n defaultInputValue: z.string().optional(),\n\n /** Input value (controlled) */\n inputValue: z.string().optional(),\n\n /** Default selected key (uncontrolled) */\n defaultSelectedKey: z.union([z.string(), z.number()]).optional(),\n\n /** Selected key (controlled) */\n selectedKey: z.union([z.string(), z.number(), z.null()]).optional(),\n});\n\nexport type ComboboxProps = z.infer<typeof ComboboxPropsSchema> &\n Omit<AriaComboBoxProps<object>, keyof z.infer<typeof ComboboxPropsSchema>> & {\n children: ReactNode;\n onInputChange?: (value: string) => void;\n onSelectionChange?: (key: string | number | null) => void;\n };\n\nexport const ComboboxItemPropsSchema = z.object({\n /** Unique key/value for the item */\n id: z.union([z.string(), z.number()]).optional(),\n /** Text value for filtering */\n textValue: z.string().optional(),\n /** Whether this item is disabled */\n isDisabled: z.boolean().optional(),\n /** Item content */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport type ComboboxItemProps = z.infer<typeof ComboboxItemPropsSchema>;\n\nexport const ComboboxSectionPropsSchema = z.object({\n /** Section header text */\n header: z.string().optional(),\n /** Section items */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport type ComboboxSectionProps = z.infer<typeof ComboboxSectionPropsSchema>;\n"]}
1
+ {"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Combobox/Combobox.styles.ts","../../../src/elements/Combobox/Combobox.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Combobox/Combobox.types.ts"],"names":["cn","inputs","twMerge","clsx","comboboxVariants","cva","comboboxLabelVariants","comboboxInputVariants","comboboxTriggerWrapperVariants","comboboxButtonVariants","comboboxPopoverVariants","comboboxListBoxVariants","comboboxItemVariants","comboboxSectionVariants","comboboxSectionHeaderVariants","comboboxDescriptionVariants","comboboxErrorVariants","Combobox","forwardRef","className","size","label","description","errorMessage","isRequired","isDisabled","isReadOnly","placeholder","name","allowsCustomValue","menuTrigger","defaultInputValue","inputValue","defaultSelectedKey","selectedKey","onInputChange","onSelectionChange","children","ariaLabel","ariaLabelledBy","dataTestId","props","ref","jsxs","AriaComboBox","AriaLabel","jsx","AriaInput","AriaButton","ChevronsUpDown","AriaText","AriaPopover","AriaListBox","ComboboxItem","textValue","computedTextValue","AriaListBoxItem","isSelected","Fragment","Check","ComboboxSection","header","AriaListBoxSection","AriaHeader","BaseComponentPropsSchema","z","ComboboxSizeSchema","ComboboxPropsSchema","ComboboxItemPropsSchema","ComboboxSectionPropsSchema"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { cva } from 'class-variance-authority';\n\nexport const comboboxVariants = cva(\n 'group flex flex-col gap-1.5 w-full',\n {\n variants: {\n size: {\n sm: '',\n default: '',\n lg: '',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxLabelVariants = cva(\n 'text-[var(--text-primary)] font-medium',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxInputVariants = cva(\n [\n 'flex-1 bg-transparent outline-none',\n 'placeholder:text-[var(--muted-foreground)]',\n 'disabled:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxTriggerWrapperVariants = cva(\n [\n 'flex items-center w-full rounded-md border',\n 'bg-[var(--input-background)] text-[var(--content-foreground)]',\n 'border-[var(--input-border)]',\n 'transition-colors duration-[var(--transition-fast)]',\n 'focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n 'data-[invalid]:border-[var(--destructive-background)]',\n ],\n {\n variants: {\n size: {\n sm: 'h-8 px-2 gap-1 min-h-[44px]',\n default: 'h-10 px-3 gap-2 min-h-[44px]',\n lg: 'h-12 px-4 gap-2 min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxButtonVariants = cva(\n [\n 'flex items-center justify-center shrink-0',\n 'text-[var(--muted-foreground)]',\n 'hover:text-[var(--text-primary)]',\n 'transition-colors',\n 'focus:outline-none',\n ],\n {\n variants: {\n size: {\n sm: 'h-4 w-4 min-h-[44px] min-w-[44px]',\n default: 'h-5 w-5 min-h-[44px] min-w-[44px]',\n lg: 'h-6 w-6 min-h-[44px] min-w-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxPopoverVariants = cva(\n [\n 'w-[var(--trigger-width)] overflow-auto',\n 'rounded-md border border-[var(--border)]',\n 'bg-[var(--content-background)] text-[var(--content-foreground)]',\n 'shadow-md',\n 'data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0',\n 'data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0',\n ]\n);\n\nexport const comboboxListBoxVariants = cva(\n 'p-1 outline-none max-h-[300px] overflow-auto'\n);\n\nexport const comboboxItemVariants = cva(\n [\n 'flex items-center gap-2 w-full rounded-sm px-2 py-1.5',\n 'text-[var(--content-foreground)]',\n 'cursor-pointer outline-none',\n 'data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]',\n 'data-[selected]:font-medium',\n 'data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs min-h-[44px]',\n default: 'text-sm min-h-[44px]',\n lg: 'text-base min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxSectionVariants = cva('pt-1');\n\nexport const comboboxSectionHeaderVariants = cva(\n 'px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]'\n);\n\nexport const comboboxDescriptionVariants = cva(\n 'text-[var(--muted-foreground)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxErrorVariants = cva(\n 'text-[var(--destructive-background)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n","'use client';\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n ComboBox as AriaComboBox,\n Label as AriaLabel,\n Input as AriaInput,\n Button as AriaButton,\n Popover as AriaPopover,\n ListBox as AriaListBox,\n ListBoxItem as AriaListBoxItem,\n ListBoxSection as AriaListBoxSection,\n Header as AriaHeader,\n Text as AriaText,\n} from 'react-aria-components';\nimport { ChevronsUpDown, Check } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type {\n ComboboxProps,\n ComboboxItemProps,\n ComboboxSectionProps,\n} from './Combobox.types';\nimport {\n comboboxVariants,\n comboboxLabelVariants,\n comboboxInputVariants,\n comboboxTriggerWrapperVariants,\n comboboxButtonVariants,\n comboboxPopoverVariants,\n comboboxListBoxVariants,\n comboboxItemVariants,\n comboboxSectionVariants,\n comboboxSectionHeaderVariants,\n comboboxDescriptionVariants,\n comboboxErrorVariants,\n} from './Combobox.styles';\n\n// ============================================================================\n// Combobox\n// ============================================================================\n\n/**\n * Combobox Component\n *\n * A filterable select/autocomplete component built on React Aria's ComboBox.\n * Supports type-to-filter, keyboard navigation, and optional custom values.\n *\n * @example\n * ```tsx\n * <Combobox label=\"Framework\">\n * <ComboboxItem id=\"react\">React</ComboboxItem>\n * <ComboboxItem id=\"vue\">Vue</ComboboxItem>\n * <ComboboxItem id=\"angular\">Angular</ComboboxItem>\n * </Combobox>\n * ```\n */\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (\n {\n className,\n size = 'default',\n label,\n description,\n errorMessage,\n isRequired,\n isDisabled,\n isReadOnly,\n placeholder,\n name,\n allowsCustomValue = false,\n menuTrigger = 'input',\n defaultInputValue,\n inputValue,\n defaultSelectedKey,\n selectedKey,\n onInputChange,\n onSelectionChange,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'data-testid': dataTestId,\n ...props\n },\n ref\n ): ReactElement => {\n // Warn if no accessible label\n if (process.env.NODE_ENV !== 'production') {\n if (!label && !ariaLabel && !ariaLabelledBy) {\n console.warn(\n '[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)'\n );\n }\n }\n\n return (\n <AriaComboBox\n ref={ref}\n className={cn(comboboxVariants({ size }), className)}\n isRequired={isRequired}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n name={name}\n allowsCustomValue={allowsCustomValue}\n menuTrigger={menuTrigger}\n defaultInputValue={defaultInputValue}\n inputValue={inputValue}\n defaultSelectedKey={defaultSelectedKey}\n selectedKey={selectedKey}\n onInputChange={onInputChange}\n onSelectionChange={onSelectionChange}\n aria-label={!label ? ariaLabel : undefined}\n aria-labelledby={ariaLabelledBy}\n data-testid={dataTestId}\n {...props}\n >\n {label && (\n <AriaLabel className={comboboxLabelVariants({ size })}>\n {label}\n {isRequired && (\n <span className=\"text-[var(--destructive-background)] ml-1\" aria-hidden=\"true\">\n *\n </span>\n )}\n </AriaLabel>\n )}\n\n <div className={comboboxTriggerWrapperVariants({ size })}>\n <AriaInput\n className={comboboxInputVariants({ size })}\n placeholder={placeholder}\n />\n <AriaButton className={comboboxButtonVariants({ size })}>\n <ChevronsUpDown className=\"h-full w-full\" aria-hidden=\"true\" />\n </AriaButton>\n </div>\n\n {description && !errorMessage && (\n <AriaText slot=\"description\" className={comboboxDescriptionVariants({ size })}>\n {description}\n </AriaText>\n )}\n\n {errorMessage && (\n <AriaText slot=\"errorMessage\" className={comboboxErrorVariants({ size })}>\n {errorMessage}\n </AriaText>\n )}\n\n <AriaPopover className={comboboxPopoverVariants()}>\n <AriaListBox className={comboboxListBoxVariants()}>\n {children}\n </AriaListBox>\n </AriaPopover>\n </AriaComboBox>\n );\n }\n);\n\nCombobox.displayName = 'Combobox';\n\n// ============================================================================\n// ComboboxItem\n// ============================================================================\n\nexport function ComboboxItem({\n children,\n className,\n textValue,\n ...props\n}: ComboboxItemProps): ReactElement {\n // Compute textValue from string children if not explicitly provided\n const computedTextValue = textValue || (typeof children === 'string' ? children : undefined);\n\n return (\n <AriaListBoxItem\n className={cn(comboboxItemVariants({ size: 'default' }), className)}\n textValue={computedTextValue}\n {...props}\n >\n {({ isSelected }) => (\n <>\n <span className=\"flex-1\">{children}</span>\n {isSelected && (\n <Check className=\"h-4 w-4 shrink-0 text-[var(--primary)]\" aria-hidden=\"true\" />\n )}\n </>\n )}\n </AriaListBoxItem>\n );\n}\n\nComboboxItem.displayName = 'ComboboxItem';\n\n// ============================================================================\n// ComboboxSection\n// ============================================================================\n\nexport function ComboboxSection({\n header,\n children,\n className,\n}: ComboboxSectionProps): ReactElement {\n return (\n <AriaListBoxSection className={cn(comboboxSectionVariants(), className)}>\n {header && (\n <AriaHeader className={comboboxSectionHeaderVariants()}>\n {header}\n </AriaHeader>\n )}\n {children}\n </AriaListBoxSection>\n );\n}\n\nComboboxSection.displayName = 'ComboboxSection';\n","import { z } from 'zod';\n\n/**\n * Base props schema for all Themis components\n * Ensures consistent accessibility and styling APIs across the library\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\nexport const BaseComponentPropsSchema = z.object({\n // Styling\n className: z.string().optional(),\n\n // React\n children: z.any().optional(), // ReactNode not directly supported by Zod\n id: z.string().optional(),\n\n // Accessibility (WCAG 2.2 AA requirements)\n 'aria-label': z.string().optional(),\n 'aria-labelledby': z.string().optional(),\n 'aria-describedby': z.string().optional(),\n 'aria-live': z.enum(['off', 'polite', 'assertive']).optional(),\n 'aria-hidden': z.boolean().optional(),\n\n // Testing & Development\n 'data-testid': z.string().optional(),\n});\n\nexport type BaseComponentProps = z.infer<typeof BaseComponentPropsSchema>;\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode } from 'react';\nimport type { ComboBoxProps as AriaComboBoxProps } from 'react-aria-components';\n\nexport const ComboboxSizeSchema = z.enum(['sm', 'default', 'lg']);\nexport type ComboboxSize = z.infer<typeof ComboboxSizeSchema>;\n\nexport const ComboboxPropsSchema = BaseComponentPropsSchema.extend({\n /** Label text */\n label: z.string().optional(),\n\n /** Description/help text */\n description: z.string().optional(),\n\n /** Error message */\n errorMessage: z.string().optional(),\n\n /** Size variant */\n size: ComboboxSizeSchema.optional().default('default'),\n\n /** Placeholder text */\n placeholder: z.string().optional(),\n\n /** Whether the field is required */\n isRequired: z.boolean().optional(),\n\n /** Whether the field is disabled */\n isDisabled: z.boolean().optional(),\n\n /** Whether the field is read-only */\n isReadOnly: z.boolean().optional(),\n\n /** Field name for form submission */\n name: z.string().optional(),\n\n /** Whether to allow custom values (not in the list) */\n allowsCustomValue: z.boolean().optional().default(false),\n\n /** The menu trigger behavior */\n menuTrigger: z.enum(['input', 'focus', 'manual']).optional().default('input'),\n\n /** Default input value (uncontrolled) */\n defaultInputValue: z.string().optional(),\n\n /** Input value (controlled) */\n inputValue: z.string().optional(),\n\n /** Default selected key (uncontrolled) */\n defaultSelectedKey: z.union([z.string(), z.number()]).optional(),\n\n /** Selected key (controlled) */\n selectedKey: z.union([z.string(), z.number(), z.null()]).optional(),\n});\n\nexport interface ComboboxPropsOwn {\n className?: string;\n id?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-live'?: 'off' | 'polite' | 'assertive';\n 'aria-hidden'?: boolean;\n 'data-testid'?: string;\n label?: string;\n description?: string;\n errorMessage?: string;\n size?: ComboboxSize;\n placeholder?: string;\n isRequired?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n name?: string;\n allowsCustomValue?: boolean;\n menuTrigger?: 'input' | 'focus' | 'manual';\n defaultInputValue?: string;\n inputValue?: string;\n defaultSelectedKey?: string | number;\n selectedKey?: string | number | null;\n children: ReactNode;\n onInputChange?: (value: string) => void;\n onSelectionChange?: (key: string | number | null) => void;\n}\n\nexport type ComboboxProps = ComboboxPropsOwn &\n Omit<AriaComboBoxProps<object>, keyof ComboboxPropsOwn>;\n\nexport const ComboboxItemPropsSchema = z.object({\n /** Unique key/value for the item */\n id: z.union([z.string(), z.number()]).optional(),\n /** Text value for filtering */\n textValue: z.string().optional(),\n /** Whether this item is disabled */\n isDisabled: z.boolean().optional(),\n /** Item content */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport interface ComboboxItemProps {\n id?: string | number;\n textValue?: string;\n isDisabled?: boolean;\n children?: ReactNode;\n className?: string;\n}\n\nexport const ComboboxSectionPropsSchema = z.object({\n /** Section header text */\n header: z.string().optional(),\n /** Section items */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport interface ComboboxSectionProps {\n header?: string;\n children?: ReactNode;\n className?: string;\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import {forwardRef}from'react';import {ComboBox,Label,Input,Button,Text,Popover,ListBox,ListBoxItem,ListBoxSection,Header}from'react-aria-components';import {ChevronsUpDown,Check}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {z as z$1}from'zod';function p(...r){return twMerge(clsx(r))}var x=cva("group flex flex-col gap-1.5 w-full",{variants:{size:{sm:"",default:"",lg:""}},defaultVariants:{size:"default"}}),c=cva("text-[var(--text-primary)] font-medium",{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),d=cva(["flex-1 bg-transparent outline-none","placeholder:text-[var(--muted-foreground)]","disabled:cursor-not-allowed"],{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),u=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:"h-8 px-2 gap-1 min-h-[44px]",default:"h-10 px-3 gap-2 min-h-[44px]",lg:"h-12 px-4 gap-2 min-h-[44px]"}},defaultVariants:{size:"default"}}),f=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"}}),g=cva(["w-[var(--trigger-width)] overflow-auto","rounded-md border border-[var(--border)]","bg-[var(--content-background)] text-[var(--content-foreground)]","shadow-md","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"]),C=cva("p-1 outline-none max-h-[300px] overflow-auto"),h=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"}}),V=cva("pt-1"),v=cva("px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]"),y=cva("text-[var(--muted-foreground)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}}),S=cva("text-[var(--destructive-background)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}});var B=forwardRef(({className:r,size:a="default",label:i,description:l,errorMessage:s,isRequired:b,isDisabled:R,isReadOnly:k,placeholder:E,name:T,allowsCustomValue:D=false,menuTrigger:H="input",defaultInputValue:j,inputValue:K,defaultSelectedKey:O,selectedKey:W,onInputChange:q,onSelectionChange:M,children:G,"aria-label":P,"aria-labelledby":w,"data-testid":U,..._},F)=>(process.env.NODE_ENV!=="production"&&!i&&!P&&!w&&console.warn("[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)"),jsxs(ComboBox,{ref:F,className:p(x({size:a}),r),isRequired:b,isDisabled:R,isReadOnly:k,name:T,allowsCustomValue:D,menuTrigger:H,defaultInputValue:j,inputValue:K,defaultSelectedKey:O,selectedKey:W,onInputChange:q,onSelectionChange:M,"aria-label":i?void 0:P,"aria-labelledby":w,"data-testid":U,..._,children:[i&&jsxs(Label,{className:c({size:a}),children:[i,b&&jsx("span",{className:"text-[var(--destructive-background)] ml-1","aria-hidden":"true",children:"*"})]}),jsxs("div",{className:u({size:a}),children:[jsx(Input,{className:d({size:a}),placeholder:E}),jsx(Button,{className:f({size:a}),children:jsx(ChevronsUpDown,{className:"h-full w-full","aria-hidden":"true"})})]}),l&&!s&&jsx(Text,{slot:"description",className:y({size:a}),children:l}),s&&jsx(Text,{slot:"errorMessage",className:S({size:a}),children:s}),jsx(Popover,{className:g(),children:jsx(ListBox,{className:C(),children:G})})]})));B.displayName="Combobox";function z({children:r,className:a,textValue:i,...l}){let s=i||(typeof r=="string"?r:void 0);return jsx(ListBoxItem,{className:p(h({size:"default"}),a),textValue:s,...l,children:({isSelected:b})=>jsxs(Fragment,{children:[jsx("span",{className:"flex-1",children:r}),b&&jsx(Check,{className:"h-4 w-4 shrink-0 text-[var(--primary)]","aria-hidden":"true"})]})})}z.displayName="ComboboxItem";function I({header:r,children:a,className:i}){return jsxs(ListBoxSection,{className:p(V(),i),children:[r&&jsx(Header,{className:v(),children:r}),a]})}I.displayName="ComboboxSection";var A=z$1.object({className:z$1.string().optional(),children:z$1.any().optional(),id:z$1.string().optional(),"aria-label":z$1.string().optional(),"aria-labelledby":z$1.string().optional(),"aria-describedby":z$1.string().optional(),"aria-live":z$1.enum(["off","polite","assertive"]).optional(),"aria-hidden":z$1.boolean().optional(),"data-testid":z$1.string().optional()});var L=z$1.enum(["sm","default","lg"]),lo=A.extend({label:z$1.string().optional(),description:z$1.string().optional(),errorMessage:z$1.string().optional(),size:L.optional().default("default"),placeholder:z$1.string().optional(),isRequired:z$1.boolean().optional(),isDisabled:z$1.boolean().optional(),isReadOnly:z$1.boolean().optional(),name:z$1.string().optional(),allowsCustomValue:z$1.boolean().optional().default(false),menuTrigger:z$1.enum(["input","focus","manual"]).optional().default("input"),defaultInputValue:z$1.string().optional(),inputValue:z$1.string().optional(),defaultSelectedKey:z$1.union([z$1.string(),z$1.number()]).optional(),selectedKey:z$1.union([z$1.string(),z$1.number(),z$1.null()]).optional()}),bo=z$1.object({id:z$1.union([z$1.string(),z$1.number()]).optional(),textValue:z$1.string().optional(),isDisabled:z$1.boolean().optional(),children:z$1.custom(),className:z$1.string().optional()}),po=z$1.object({header:z$1.string().optional(),children:z$1.custom(),className:z$1.string().optional()});export{B as Combobox,z as ComboboxItem,bo as ComboboxItemPropsSchema,lo as ComboboxPropsSchema,I as ComboboxSection,po as ComboboxSectionPropsSchema,L as ComboboxSizeSchema,f as comboboxButtonVariants,y as comboboxDescriptionVariants,S as comboboxErrorVariants,d as comboboxInputVariants,h as comboboxItemVariants,c as comboboxLabelVariants,C as comboboxListBoxVariants,g as comboboxPopoverVariants,v as comboboxSectionHeaderVariants,V as comboboxSectionVariants,u as comboboxTriggerWrapperVariants,x as comboboxVariants};//# sourceMappingURL=index.mjs.map
2
+ import {forwardRef}from'react';import {ComboBox,Label,Input,Button,Text,Popover,ListBox,ListBoxItem,ListBoxSection,Header}from'react-aria-components';import {ChevronsUpDown,Check}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {z as z$1}from'zod';function p(...r){return twMerge(clsx(r))}var c=cva("group flex flex-col gap-1.5 w-full",{variants:{size:{sm:"",default:"",lg:""}},defaultVariants:{size:"default"}}),x=cva("text-[var(--text-primary)] font-medium",{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),d=cva(["flex-1 bg-transparent outline-none","placeholder:text-[var(--muted-foreground)]","disabled:cursor-not-allowed"],{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),u=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:"h-8 px-2 gap-1 min-h-[44px]",default:"h-10 px-3 gap-2 min-h-[44px]",lg:"h-12 px-4 gap-2 min-h-[44px]"}},defaultVariants:{size:"default"}}),f=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"}}),g=cva(["w-[var(--trigger-width)] overflow-auto","rounded-md border border-[var(--border)]","bg-[var(--content-background)] text-[var(--content-foreground)]","shadow-md","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"]),C=cva("p-1 outline-none max-h-[300px] overflow-auto"),V=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"}}),h=cva("pt-1"),v=cva("px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]"),y=cva("text-[var(--muted-foreground)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}}),S=cva("text-[var(--destructive-background)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}});var B=forwardRef(({className:r,size:a="default",label:n,description:m,errorMessage:s,isRequired:b,isDisabled:R,isReadOnly:T,placeholder:k,name:D,allowsCustomValue:E=false,menuTrigger:O="input",defaultInputValue:H,inputValue:K,defaultSelectedKey:j,selectedKey:W,onInputChange:q,onSelectionChange:M,children:G,"aria-label":P,"aria-labelledby":N,"data-testid":U,..._},F)=>(process.env.NODE_ENV!=="production"&&!n&&!P&&!N&&console.warn("[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)"),jsxs(ComboBox,{ref:F,className:p(c({size:a}),r),isRequired:b,isDisabled:R,isReadOnly:T,name:D,allowsCustomValue:E,menuTrigger:O,defaultInputValue:H,inputValue:K,defaultSelectedKey:j,selectedKey:W,onInputChange:q,onSelectionChange:M,"aria-label":n?void 0:P,"aria-labelledby":N,"data-testid":U,..._,children:[n&&jsxs(Label,{className:x({size:a}),children:[n,b&&jsx("span",{className:"text-[var(--destructive-background)] ml-1","aria-hidden":"true",children:"*"})]}),jsxs("div",{className:u({size:a}),children:[jsx(Input,{className:d({size:a}),placeholder:k}),jsx(Button,{className:f({size:a}),children:jsx(ChevronsUpDown,{className:"h-full w-full","aria-hidden":"true"})})]}),m&&!s&&jsx(Text,{slot:"description",className:y({size:a}),children:m}),s&&jsx(Text,{slot:"errorMessage",className:S({size:a}),children:s}),jsx(Popover,{className:g(),children:jsx(ListBox,{className:C(),children:G})})]})));B.displayName="Combobox";function I({children:r,className:a,textValue:n,...m}){let s=n||(typeof r=="string"?r:void 0);return jsx(ListBoxItem,{className:p(V({size:"default"}),a),textValue:s,...m,children:({isSelected:b})=>jsxs(Fragment,{children:[jsx("span",{className:"flex-1",children:r}),b&&jsx(Check,{className:"h-4 w-4 shrink-0 text-[var(--primary)]","aria-hidden":"true"})]})})}I.displayName="ComboboxItem";function z({header:r,children:a,className:n}){return jsxs(ListBoxSection,{className:p(h(),n),children:[r&&jsx(Header,{className:v(),children:r}),a]})}z.displayName="ComboboxSection";var A=z$1.object({className:z$1.string().optional(),children:z$1.any().optional(),id:z$1.string().optional(),"aria-label":z$1.string().optional(),"aria-labelledby":z$1.string().optional(),"aria-describedby":z$1.string().optional(),"aria-live":z$1.enum(["off","polite","assertive"]).optional(),"aria-hidden":z$1.boolean().optional(),"data-testid":z$1.string().optional()});var L=z$1.enum(["sm","default","lg"]),mo=A.extend({label:z$1.string().optional(),description:z$1.string().optional(),errorMessage:z$1.string().optional(),size:L.optional().default("default"),placeholder:z$1.string().optional(),isRequired:z$1.boolean().optional(),isDisabled:z$1.boolean().optional(),isReadOnly:z$1.boolean().optional(),name:z$1.string().optional(),allowsCustomValue:z$1.boolean().optional().default(false),menuTrigger:z$1.enum(["input","focus","manual"]).optional().default("input"),defaultInputValue:z$1.string().optional(),inputValue:z$1.string().optional(),defaultSelectedKey:z$1.union([z$1.string(),z$1.number()]).optional(),selectedKey:z$1.union([z$1.string(),z$1.number(),z$1.null()]).optional()}),bo=z$1.object({id:z$1.union([z$1.string(),z$1.number()]).optional(),textValue:z$1.string().optional(),isDisabled:z$1.boolean().optional(),children:z$1.custom(),className:z$1.string().optional()}),po=z$1.object({header:z$1.string().optional(),children:z$1.custom(),className:z$1.string().optional()});export{B as Combobox,I as ComboboxItem,bo as ComboboxItemPropsSchema,mo as ComboboxPropsSchema,z as ComboboxSection,po as ComboboxSectionPropsSchema,L as ComboboxSizeSchema,f as comboboxButtonVariants,y as comboboxDescriptionVariants,S as comboboxErrorVariants,d as comboboxInputVariants,V as comboboxItemVariants,x as comboboxLabelVariants,C as comboboxListBoxVariants,g as comboboxPopoverVariants,v as comboboxSectionHeaderVariants,h as comboboxSectionVariants,u as comboboxTriggerWrapperVariants,c as comboboxVariants};//# sourceMappingURL=index.mjs.map
3
3
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Combobox/Combobox.styles.ts","../../../src/elements/Combobox/Combobox.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Combobox/Combobox.types.ts"],"names":["cn","inputs","twMerge","clsx","comboboxVariants","cva","comboboxLabelVariants","comboboxInputVariants","comboboxTriggerWrapperVariants","comboboxButtonVariants","comboboxPopoverVariants","comboboxListBoxVariants","comboboxItemVariants","comboboxSectionVariants","comboboxSectionHeaderVariants","comboboxDescriptionVariants","comboboxErrorVariants","Combobox","forwardRef","className","size","label","description","errorMessage","isRequired","isDisabled","isReadOnly","placeholder","name","allowsCustomValue","menuTrigger","defaultInputValue","inputValue","defaultSelectedKey","selectedKey","onInputChange","onSelectionChange","children","ariaLabel","ariaLabelledBy","dataTestId","props","ref","jsxs","AriaComboBox","AriaLabel","jsx","AriaInput","AriaButton","ChevronsUpDown","AriaText","AriaPopover","AriaListBox","ComboboxItem","textValue","computedTextValue","AriaListBoxItem","isSelected","Fragment","Check","ComboboxSection","header","AriaListBoxSection","AriaHeader","BaseComponentPropsSchema","z","ComboboxSizeSchema","ComboboxPropsSchema","ComboboxItemPropsSchema","ComboboxSectionPropsSchema"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { cva } from 'class-variance-authority';\n\nexport const comboboxVariants = cva(\n 'group flex flex-col gap-1.5 w-full',\n {\n variants: {\n size: {\n sm: '',\n default: '',\n lg: '',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxLabelVariants = cva(\n 'text-[var(--text-primary)] font-medium',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxInputVariants = cva(\n [\n 'flex-1 bg-transparent outline-none',\n 'placeholder:text-[var(--muted-foreground)]',\n 'disabled:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxTriggerWrapperVariants = cva(\n [\n 'flex items-center w-full rounded-md border',\n 'bg-[var(--input-background)] text-[var(--content-foreground)]',\n 'border-[var(--input-border)]',\n 'transition-colors duration-[var(--transition-fast)]',\n 'focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n 'data-[invalid]:border-[var(--destructive-background)]',\n ],\n {\n variants: {\n size: {\n sm: 'h-8 px-2 gap-1 min-h-[44px]',\n default: 'h-10 px-3 gap-2 min-h-[44px]',\n lg: 'h-12 px-4 gap-2 min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxButtonVariants = cva(\n [\n 'flex items-center justify-center shrink-0',\n 'text-[var(--muted-foreground)]',\n 'hover:text-[var(--text-primary)]',\n 'transition-colors',\n 'focus:outline-none',\n ],\n {\n variants: {\n size: {\n sm: 'h-4 w-4 min-h-[44px] min-w-[44px]',\n default: 'h-5 w-5 min-h-[44px] min-w-[44px]',\n lg: 'h-6 w-6 min-h-[44px] min-w-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxPopoverVariants = cva(\n [\n 'w-[var(--trigger-width)] overflow-auto',\n 'rounded-md border border-[var(--border)]',\n 'bg-[var(--content-background)] text-[var(--content-foreground)]',\n 'shadow-md',\n 'data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0',\n 'data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0',\n ]\n);\n\nexport const comboboxListBoxVariants = cva(\n 'p-1 outline-none max-h-[300px] overflow-auto'\n);\n\nexport const comboboxItemVariants = cva(\n [\n 'flex items-center gap-2 w-full rounded-sm px-2 py-1.5',\n 'text-[var(--content-foreground)]',\n 'cursor-pointer outline-none',\n 'data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]',\n 'data-[selected]:font-medium',\n 'data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs min-h-[44px]',\n default: 'text-sm min-h-[44px]',\n lg: 'text-base min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxSectionVariants = cva('pt-1');\n\nexport const comboboxSectionHeaderVariants = cva(\n 'px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]'\n);\n\nexport const comboboxDescriptionVariants = cva(\n 'text-[var(--muted-foreground)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxErrorVariants = cva(\n 'text-[var(--destructive-background)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n","'use client';\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n ComboBox as AriaComboBox,\n Label as AriaLabel,\n Input as AriaInput,\n Button as AriaButton,\n Popover as AriaPopover,\n ListBox as AriaListBox,\n ListBoxItem as AriaListBoxItem,\n ListBoxSection as AriaListBoxSection,\n Header as AriaHeader,\n Text as AriaText,\n} from 'react-aria-components';\nimport { ChevronsUpDown, Check } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type {\n ComboboxProps,\n ComboboxItemProps,\n ComboboxSectionProps,\n} from './Combobox.types';\nimport {\n comboboxVariants,\n comboboxLabelVariants,\n comboboxInputVariants,\n comboboxTriggerWrapperVariants,\n comboboxButtonVariants,\n comboboxPopoverVariants,\n comboboxListBoxVariants,\n comboboxItemVariants,\n comboboxSectionVariants,\n comboboxSectionHeaderVariants,\n comboboxDescriptionVariants,\n comboboxErrorVariants,\n} from './Combobox.styles';\n\n// ============================================================================\n// Combobox\n// ============================================================================\n\n/**\n * Combobox Component\n *\n * A filterable select/autocomplete component built on React Aria's ComboBox.\n * Supports type-to-filter, keyboard navigation, and optional custom values.\n *\n * @example\n * ```tsx\n * <Combobox label=\"Framework\">\n * <ComboboxItem id=\"react\">React</ComboboxItem>\n * <ComboboxItem id=\"vue\">Vue</ComboboxItem>\n * <ComboboxItem id=\"angular\">Angular</ComboboxItem>\n * </Combobox>\n * ```\n */\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (\n {\n className,\n size = 'default',\n label,\n description,\n errorMessage,\n isRequired,\n isDisabled,\n isReadOnly,\n placeholder,\n name,\n allowsCustomValue = false,\n menuTrigger = 'input',\n defaultInputValue,\n inputValue,\n defaultSelectedKey,\n selectedKey,\n onInputChange,\n onSelectionChange,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'data-testid': dataTestId,\n ...props\n },\n ref\n ): ReactElement => {\n // Warn if no accessible label\n if (process.env.NODE_ENV !== 'production') {\n if (!label && !ariaLabel && !ariaLabelledBy) {\n console.warn(\n '[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)'\n );\n }\n }\n\n return (\n <AriaComboBox\n ref={ref}\n className={cn(comboboxVariants({ size }), className)}\n isRequired={isRequired}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n name={name}\n allowsCustomValue={allowsCustomValue}\n menuTrigger={menuTrigger}\n defaultInputValue={defaultInputValue}\n inputValue={inputValue}\n defaultSelectedKey={defaultSelectedKey}\n selectedKey={selectedKey}\n onInputChange={onInputChange}\n onSelectionChange={onSelectionChange}\n aria-label={!label ? ariaLabel : undefined}\n aria-labelledby={ariaLabelledBy}\n data-testid={dataTestId}\n {...props}\n >\n {label && (\n <AriaLabel className={comboboxLabelVariants({ size })}>\n {label}\n {isRequired && (\n <span className=\"text-[var(--destructive-background)] ml-1\" aria-hidden=\"true\">\n *\n </span>\n )}\n </AriaLabel>\n )}\n\n <div className={comboboxTriggerWrapperVariants({ size })}>\n <AriaInput\n className={comboboxInputVariants({ size })}\n placeholder={placeholder}\n />\n <AriaButton className={comboboxButtonVariants({ size })}>\n <ChevronsUpDown className=\"h-full w-full\" aria-hidden=\"true\" />\n </AriaButton>\n </div>\n\n {description && !errorMessage && (\n <AriaText slot=\"description\" className={comboboxDescriptionVariants({ size })}>\n {description}\n </AriaText>\n )}\n\n {errorMessage && (\n <AriaText slot=\"errorMessage\" className={comboboxErrorVariants({ size })}>\n {errorMessage}\n </AriaText>\n )}\n\n <AriaPopover className={comboboxPopoverVariants()}>\n <AriaListBox className={comboboxListBoxVariants()}>\n {children}\n </AriaListBox>\n </AriaPopover>\n </AriaComboBox>\n );\n }\n);\n\nCombobox.displayName = 'Combobox';\n\n// ============================================================================\n// ComboboxItem\n// ============================================================================\n\nexport function ComboboxItem({\n children,\n className,\n textValue,\n ...props\n}: ComboboxItemProps): ReactElement {\n // Compute textValue from string children if not explicitly provided\n const computedTextValue = textValue || (typeof children === 'string' ? children : undefined);\n\n return (\n <AriaListBoxItem\n className={cn(comboboxItemVariants({ size: 'default' }), className)}\n textValue={computedTextValue}\n {...props}\n >\n {({ isSelected }) => (\n <>\n <span className=\"flex-1\">{children}</span>\n {isSelected && (\n <Check className=\"h-4 w-4 shrink-0 text-[var(--primary)]\" aria-hidden=\"true\" />\n )}\n </>\n )}\n </AriaListBoxItem>\n );\n}\n\nComboboxItem.displayName = 'ComboboxItem';\n\n// ============================================================================\n// ComboboxSection\n// ============================================================================\n\nexport function ComboboxSection({\n header,\n children,\n className,\n}: ComboboxSectionProps): ReactElement {\n return (\n <AriaListBoxSection className={cn(comboboxSectionVariants(), className)}>\n {header && (\n <AriaHeader className={comboboxSectionHeaderVariants()}>\n {header}\n </AriaHeader>\n )}\n {children}\n </AriaListBoxSection>\n );\n}\n\nComboboxSection.displayName = 'ComboboxSection';\n","import { z } from 'zod';\n\n/**\n * Base props schema for all Themis components\n * Ensures consistent accessibility and styling APIs across the library\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\nexport const BaseComponentPropsSchema = z.object({\n // Styling\n className: z.string().optional(),\n\n // React\n children: z.any().optional(), // ReactNode not directly supported by Zod\n id: z.string().optional(),\n\n // Accessibility (WCAG 2.2 AA requirements)\n 'aria-label': z.string().optional(),\n 'aria-labelledby': z.string().optional(),\n 'aria-describedby': z.string().optional(),\n 'aria-live': z.enum(['off', 'polite', 'assertive']).optional(),\n 'aria-hidden': z.boolean().optional(),\n\n // Testing & Development\n 'data-testid': z.string().optional(),\n});\n\nexport type BaseComponentProps = z.infer<typeof BaseComponentPropsSchema>;\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode } from 'react';\nimport type { ComboBoxProps as AriaComboBoxProps } from 'react-aria-components';\n\nexport const ComboboxSizeSchema = z.enum(['sm', 'default', 'lg']);\nexport type ComboboxSize = z.infer<typeof ComboboxSizeSchema>;\n\nexport const ComboboxPropsSchema = BaseComponentPropsSchema.extend({\n /** Label text */\n label: z.string().optional(),\n\n /** Description/help text */\n description: z.string().optional(),\n\n /** Error message */\n errorMessage: z.string().optional(),\n\n /** Size variant */\n size: ComboboxSizeSchema.optional().default('default'),\n\n /** Placeholder text */\n placeholder: z.string().optional(),\n\n /** Whether the field is required */\n isRequired: z.boolean().optional(),\n\n /** Whether the field is disabled */\n isDisabled: z.boolean().optional(),\n\n /** Whether the field is read-only */\n isReadOnly: z.boolean().optional(),\n\n /** Field name for form submission */\n name: z.string().optional(),\n\n /** Whether to allow custom values (not in the list) */\n allowsCustomValue: z.boolean().optional().default(false),\n\n /** The menu trigger behavior */\n menuTrigger: z.enum(['input', 'focus', 'manual']).optional().default('input'),\n\n /** Default input value (uncontrolled) */\n defaultInputValue: z.string().optional(),\n\n /** Input value (controlled) */\n inputValue: z.string().optional(),\n\n /** Default selected key (uncontrolled) */\n defaultSelectedKey: z.union([z.string(), z.number()]).optional(),\n\n /** Selected key (controlled) */\n selectedKey: z.union([z.string(), z.number(), z.null()]).optional(),\n});\n\nexport type ComboboxProps = z.infer<typeof ComboboxPropsSchema> &\n Omit<AriaComboBoxProps<object>, keyof z.infer<typeof ComboboxPropsSchema>> & {\n children: ReactNode;\n onInputChange?: (value: string) => void;\n onSelectionChange?: (key: string | number | null) => void;\n };\n\nexport const ComboboxItemPropsSchema = z.object({\n /** Unique key/value for the item */\n id: z.union([z.string(), z.number()]).optional(),\n /** Text value for filtering */\n textValue: z.string().optional(),\n /** Whether this item is disabled */\n isDisabled: z.boolean().optional(),\n /** Item content */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport type ComboboxItemProps = z.infer<typeof ComboboxItemPropsSchema>;\n\nexport const ComboboxSectionPropsSchema = z.object({\n /** Section header text */\n header: z.string().optional(),\n /** Section items */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport type ComboboxSectionProps = z.infer<typeof ComboboxSectionPropsSchema>;\n"]}
1
+ {"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Combobox/Combobox.styles.ts","../../../src/elements/Combobox/Combobox.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Combobox/Combobox.types.ts"],"names":["cn","inputs","twMerge","clsx","comboboxVariants","cva","comboboxLabelVariants","comboboxInputVariants","comboboxTriggerWrapperVariants","comboboxButtonVariants","comboboxPopoverVariants","comboboxListBoxVariants","comboboxItemVariants","comboboxSectionVariants","comboboxSectionHeaderVariants","comboboxDescriptionVariants","comboboxErrorVariants","Combobox","forwardRef","className","size","label","description","errorMessage","isRequired","isDisabled","isReadOnly","placeholder","name","allowsCustomValue","menuTrigger","defaultInputValue","inputValue","defaultSelectedKey","selectedKey","onInputChange","onSelectionChange","children","ariaLabel","ariaLabelledBy","dataTestId","props","ref","jsxs","AriaComboBox","AriaLabel","jsx","AriaInput","AriaButton","ChevronsUpDown","AriaText","AriaPopover","AriaListBox","ComboboxItem","textValue","computedTextValue","AriaListBoxItem","isSelected","Fragment","Check","ComboboxSection","header","AriaListBoxSection","AriaHeader","BaseComponentPropsSchema","z","ComboboxSizeSchema","ComboboxPropsSchema","ComboboxItemPropsSchema","ComboboxSectionPropsSchema"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { cva } from 'class-variance-authority';\n\nexport const comboboxVariants = cva(\n 'group flex flex-col gap-1.5 w-full',\n {\n variants: {\n size: {\n sm: '',\n default: '',\n lg: '',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxLabelVariants = cva(\n 'text-[var(--text-primary)] font-medium',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxInputVariants = cva(\n [\n 'flex-1 bg-transparent outline-none',\n 'placeholder:text-[var(--muted-foreground)]',\n 'disabled:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxTriggerWrapperVariants = cva(\n [\n 'flex items-center w-full rounded-md border',\n 'bg-[var(--input-background)] text-[var(--content-foreground)]',\n 'border-[var(--input-border)]',\n 'transition-colors duration-[var(--transition-fast)]',\n 'focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n 'data-[invalid]:border-[var(--destructive-background)]',\n ],\n {\n variants: {\n size: {\n sm: 'h-8 px-2 gap-1 min-h-[44px]',\n default: 'h-10 px-3 gap-2 min-h-[44px]',\n lg: 'h-12 px-4 gap-2 min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxButtonVariants = cva(\n [\n 'flex items-center justify-center shrink-0',\n 'text-[var(--muted-foreground)]',\n 'hover:text-[var(--text-primary)]',\n 'transition-colors',\n 'focus:outline-none',\n ],\n {\n variants: {\n size: {\n sm: 'h-4 w-4 min-h-[44px] min-w-[44px]',\n default: 'h-5 w-5 min-h-[44px] min-w-[44px]',\n lg: 'h-6 w-6 min-h-[44px] min-w-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxPopoverVariants = cva(\n [\n 'w-[var(--trigger-width)] overflow-auto',\n 'rounded-md border border-[var(--border)]',\n 'bg-[var(--content-background)] text-[var(--content-foreground)]',\n 'shadow-md',\n 'data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0',\n 'data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0',\n ]\n);\n\nexport const comboboxListBoxVariants = cva(\n 'p-1 outline-none max-h-[300px] overflow-auto'\n);\n\nexport const comboboxItemVariants = cva(\n [\n 'flex items-center gap-2 w-full rounded-sm px-2 py-1.5',\n 'text-[var(--content-foreground)]',\n 'cursor-pointer outline-none',\n 'data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]',\n 'data-[selected]:font-medium',\n 'data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs min-h-[44px]',\n default: 'text-sm min-h-[44px]',\n lg: 'text-base min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxSectionVariants = cva('pt-1');\n\nexport const comboboxSectionHeaderVariants = cva(\n 'px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]'\n);\n\nexport const comboboxDescriptionVariants = cva(\n 'text-[var(--muted-foreground)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxErrorVariants = cva(\n 'text-[var(--destructive-background)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n","'use client';\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n ComboBox as AriaComboBox,\n Label as AriaLabel,\n Input as AriaInput,\n Button as AriaButton,\n Popover as AriaPopover,\n ListBox as AriaListBox,\n ListBoxItem as AriaListBoxItem,\n ListBoxSection as AriaListBoxSection,\n Header as AriaHeader,\n Text as AriaText,\n} from 'react-aria-components';\nimport { ChevronsUpDown, Check } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type {\n ComboboxProps,\n ComboboxItemProps,\n ComboboxSectionProps,\n} from './Combobox.types';\nimport {\n comboboxVariants,\n comboboxLabelVariants,\n comboboxInputVariants,\n comboboxTriggerWrapperVariants,\n comboboxButtonVariants,\n comboboxPopoverVariants,\n comboboxListBoxVariants,\n comboboxItemVariants,\n comboboxSectionVariants,\n comboboxSectionHeaderVariants,\n comboboxDescriptionVariants,\n comboboxErrorVariants,\n} from './Combobox.styles';\n\n// ============================================================================\n// Combobox\n// ============================================================================\n\n/**\n * Combobox Component\n *\n * A filterable select/autocomplete component built on React Aria's ComboBox.\n * Supports type-to-filter, keyboard navigation, and optional custom values.\n *\n * @example\n * ```tsx\n * <Combobox label=\"Framework\">\n * <ComboboxItem id=\"react\">React</ComboboxItem>\n * <ComboboxItem id=\"vue\">Vue</ComboboxItem>\n * <ComboboxItem id=\"angular\">Angular</ComboboxItem>\n * </Combobox>\n * ```\n */\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (\n {\n className,\n size = 'default',\n label,\n description,\n errorMessage,\n isRequired,\n isDisabled,\n isReadOnly,\n placeholder,\n name,\n allowsCustomValue = false,\n menuTrigger = 'input',\n defaultInputValue,\n inputValue,\n defaultSelectedKey,\n selectedKey,\n onInputChange,\n onSelectionChange,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'data-testid': dataTestId,\n ...props\n },\n ref\n ): ReactElement => {\n // Warn if no accessible label\n if (process.env.NODE_ENV !== 'production') {\n if (!label && !ariaLabel && !ariaLabelledBy) {\n console.warn(\n '[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)'\n );\n }\n }\n\n return (\n <AriaComboBox\n ref={ref}\n className={cn(comboboxVariants({ size }), className)}\n isRequired={isRequired}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n name={name}\n allowsCustomValue={allowsCustomValue}\n menuTrigger={menuTrigger}\n defaultInputValue={defaultInputValue}\n inputValue={inputValue}\n defaultSelectedKey={defaultSelectedKey}\n selectedKey={selectedKey}\n onInputChange={onInputChange}\n onSelectionChange={onSelectionChange}\n aria-label={!label ? ariaLabel : undefined}\n aria-labelledby={ariaLabelledBy}\n data-testid={dataTestId}\n {...props}\n >\n {label && (\n <AriaLabel className={comboboxLabelVariants({ size })}>\n {label}\n {isRequired && (\n <span className=\"text-[var(--destructive-background)] ml-1\" aria-hidden=\"true\">\n *\n </span>\n )}\n </AriaLabel>\n )}\n\n <div className={comboboxTriggerWrapperVariants({ size })}>\n <AriaInput\n className={comboboxInputVariants({ size })}\n placeholder={placeholder}\n />\n <AriaButton className={comboboxButtonVariants({ size })}>\n <ChevronsUpDown className=\"h-full w-full\" aria-hidden=\"true\" />\n </AriaButton>\n </div>\n\n {description && !errorMessage && (\n <AriaText slot=\"description\" className={comboboxDescriptionVariants({ size })}>\n {description}\n </AriaText>\n )}\n\n {errorMessage && (\n <AriaText slot=\"errorMessage\" className={comboboxErrorVariants({ size })}>\n {errorMessage}\n </AriaText>\n )}\n\n <AriaPopover className={comboboxPopoverVariants()}>\n <AriaListBox className={comboboxListBoxVariants()}>\n {children}\n </AriaListBox>\n </AriaPopover>\n </AriaComboBox>\n );\n }\n);\n\nCombobox.displayName = 'Combobox';\n\n// ============================================================================\n// ComboboxItem\n// ============================================================================\n\nexport function ComboboxItem({\n children,\n className,\n textValue,\n ...props\n}: ComboboxItemProps): ReactElement {\n // Compute textValue from string children if not explicitly provided\n const computedTextValue = textValue || (typeof children === 'string' ? children : undefined);\n\n return (\n <AriaListBoxItem\n className={cn(comboboxItemVariants({ size: 'default' }), className)}\n textValue={computedTextValue}\n {...props}\n >\n {({ isSelected }) => (\n <>\n <span className=\"flex-1\">{children}</span>\n {isSelected && (\n <Check className=\"h-4 w-4 shrink-0 text-[var(--primary)]\" aria-hidden=\"true\" />\n )}\n </>\n )}\n </AriaListBoxItem>\n );\n}\n\nComboboxItem.displayName = 'ComboboxItem';\n\n// ============================================================================\n// ComboboxSection\n// ============================================================================\n\nexport function ComboboxSection({\n header,\n children,\n className,\n}: ComboboxSectionProps): ReactElement {\n return (\n <AriaListBoxSection className={cn(comboboxSectionVariants(), className)}>\n {header && (\n <AriaHeader className={comboboxSectionHeaderVariants()}>\n {header}\n </AriaHeader>\n )}\n {children}\n </AriaListBoxSection>\n );\n}\n\nComboboxSection.displayName = 'ComboboxSection';\n","import { z } from 'zod';\n\n/**\n * Base props schema for all Themis components\n * Ensures consistent accessibility and styling APIs across the library\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\nexport const BaseComponentPropsSchema = z.object({\n // Styling\n className: z.string().optional(),\n\n // React\n children: z.any().optional(), // ReactNode not directly supported by Zod\n id: z.string().optional(),\n\n // Accessibility (WCAG 2.2 AA requirements)\n 'aria-label': z.string().optional(),\n 'aria-labelledby': z.string().optional(),\n 'aria-describedby': z.string().optional(),\n 'aria-live': z.enum(['off', 'polite', 'assertive']).optional(),\n 'aria-hidden': z.boolean().optional(),\n\n // Testing & Development\n 'data-testid': z.string().optional(),\n});\n\nexport type BaseComponentProps = z.infer<typeof BaseComponentPropsSchema>;\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode } from 'react';\nimport type { ComboBoxProps as AriaComboBoxProps } from 'react-aria-components';\n\nexport const ComboboxSizeSchema = z.enum(['sm', 'default', 'lg']);\nexport type ComboboxSize = z.infer<typeof ComboboxSizeSchema>;\n\nexport const ComboboxPropsSchema = BaseComponentPropsSchema.extend({\n /** Label text */\n label: z.string().optional(),\n\n /** Description/help text */\n description: z.string().optional(),\n\n /** Error message */\n errorMessage: z.string().optional(),\n\n /** Size variant */\n size: ComboboxSizeSchema.optional().default('default'),\n\n /** Placeholder text */\n placeholder: z.string().optional(),\n\n /** Whether the field is required */\n isRequired: z.boolean().optional(),\n\n /** Whether the field is disabled */\n isDisabled: z.boolean().optional(),\n\n /** Whether the field is read-only */\n isReadOnly: z.boolean().optional(),\n\n /** Field name for form submission */\n name: z.string().optional(),\n\n /** Whether to allow custom values (not in the list) */\n allowsCustomValue: z.boolean().optional().default(false),\n\n /** The menu trigger behavior */\n menuTrigger: z.enum(['input', 'focus', 'manual']).optional().default('input'),\n\n /** Default input value (uncontrolled) */\n defaultInputValue: z.string().optional(),\n\n /** Input value (controlled) */\n inputValue: z.string().optional(),\n\n /** Default selected key (uncontrolled) */\n defaultSelectedKey: z.union([z.string(), z.number()]).optional(),\n\n /** Selected key (controlled) */\n selectedKey: z.union([z.string(), z.number(), z.null()]).optional(),\n});\n\nexport interface ComboboxPropsOwn {\n className?: string;\n id?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-live'?: 'off' | 'polite' | 'assertive';\n 'aria-hidden'?: boolean;\n 'data-testid'?: string;\n label?: string;\n description?: string;\n errorMessage?: string;\n size?: ComboboxSize;\n placeholder?: string;\n isRequired?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n name?: string;\n allowsCustomValue?: boolean;\n menuTrigger?: 'input' | 'focus' | 'manual';\n defaultInputValue?: string;\n inputValue?: string;\n defaultSelectedKey?: string | number;\n selectedKey?: string | number | null;\n children: ReactNode;\n onInputChange?: (value: string) => void;\n onSelectionChange?: (key: string | number | null) => void;\n}\n\nexport type ComboboxProps = ComboboxPropsOwn &\n Omit<AriaComboBoxProps<object>, keyof ComboboxPropsOwn>;\n\nexport const ComboboxItemPropsSchema = z.object({\n /** Unique key/value for the item */\n id: z.union([z.string(), z.number()]).optional(),\n /** Text value for filtering */\n textValue: z.string().optional(),\n /** Whether this item is disabled */\n isDisabled: z.boolean().optional(),\n /** Item content */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport interface ComboboxItemProps {\n id?: string | number;\n textValue?: string;\n isDisabled?: boolean;\n children?: ReactNode;\n className?: string;\n}\n\nexport const ComboboxSectionPropsSchema = z.object({\n /** Section header text */\n header: z.string().optional(),\n /** Section items */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport interface ComboboxSectionProps {\n header?: string;\n children?: ReactNode;\n className?: string;\n}\n"]}
@@ -25,92 +25,35 @@ interface InternalDropdownProps extends DropdownProps {
25
25
  *
26
26
  * @see spec.md FR-008 to FR-012
27
27
  */
28
- declare const DropdownTrigger: import("react").ForwardRefExoticComponent<{
29
- children: ReactNode;
30
- className?: string | undefined;
31
- id?: string | undefined;
32
- 'aria-label'?: string | undefined;
33
- 'aria-labelledby'?: string | undefined;
34
- 'aria-describedby'?: string | undefined;
35
- 'aria-live'?: "off" | "polite" | "assertive" | undefined;
36
- 'aria-hidden'?: boolean | undefined;
37
- 'data-testid'?: string | undefined;
38
- } & import("react").RefAttributes<HTMLButtonElement>>;
28
+ declare const DropdownTrigger: import("react").ForwardRefExoticComponent<DropdownTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
39
29
  /**
40
30
  * Dropdown.Menu Component
41
31
  * Renders menu with positioning, collision detection, and focus management
42
32
  *
43
33
  * @see spec.md FR-014 to FR-024
44
34
  */
45
- declare const DropdownMenu: import("react").ForwardRefExoticComponent<{
46
- align: "end" | "center" | "start";
47
- side: "top" | "bottom" | "left" | "right";
48
- children: ReactNode;
49
- id?: string | undefined;
50
- 'aria-label'?: string | undefined;
51
- 'aria-labelledby'?: string | undefined;
52
- 'aria-describedby'?: string | undefined;
53
- 'aria-live'?: "off" | "polite" | "assertive" | undefined;
54
- 'aria-hidden'?: boolean | undefined;
55
- 'data-testid'?: string | undefined;
56
- className?: string | undefined;
57
- } & import("react").RefAttributes<HTMLDivElement>>;
35
+ declare const DropdownMenu: import("react").ForwardRefExoticComponent<DropdownMenuProps & import("react").RefAttributes<HTMLDivElement>>;
58
36
  /**
59
37
  * Dropdown.Item Component
60
38
  * Menu item with action callbacks, disabled state, shortcuts, icons, and nested submenu support
61
39
  *
62
40
  * @see spec.md FR-025 to FR-034
63
41
  */
64
- declare const DropdownItem: import("react").ForwardRefExoticComponent<{
65
- isDisabled: boolean;
66
- id?: string | undefined;
67
- 'aria-labelledby'?: string | undefined;
68
- 'aria-describedby'?: string | undefined;
69
- 'aria-live'?: "off" | "polite" | "assertive" | undefined;
70
- 'aria-hidden'?: boolean | undefined;
71
- 'data-testid'?: string | undefined;
72
- children?: ReactNode;
73
- onAction?: import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut> | undefined;
74
- shortcut?: string | undefined;
75
- icon?: ReactNode;
76
- iconRight?: ReactNode;
77
- 'aria-label'?: string | undefined;
78
- className?: string | undefined;
79
- } & import("react").RefAttributes<HTMLDivElement>>;
42
+ declare const DropdownItem: import("react").ForwardRefExoticComponent<DropdownItemProps & import("react").RefAttributes<HTMLDivElement>>;
80
43
  /**
81
44
  * Dropdown.Separator Component
82
45
  * Non-focusable visual divider
83
46
  *
84
47
  * @see spec.md FR-043 to FR-045
85
48
  */
86
- declare const DropdownSeparator: import("react").NamedExoticComponent<{
87
- children?: any;
88
- id?: string | undefined;
89
- 'aria-label'?: string | undefined;
90
- 'aria-labelledby'?: string | undefined;
91
- 'aria-describedby'?: string | undefined;
92
- 'aria-live'?: "off" | "polite" | "assertive" | undefined;
93
- 'aria-hidden'?: boolean | undefined;
94
- 'data-testid'?: string | undefined;
95
- className?: string | undefined;
96
- } & import("react").RefAttributes<HTMLDivElement>>;
49
+ declare const DropdownSeparator: import("react").NamedExoticComponent<DropdownSeparatorProps & import("react").RefAttributes<HTMLDivElement>>;
97
50
  /**
98
51
  * Dropdown.Label Component
99
52
  * Non-interactive section header
100
53
  *
101
54
  * @see spec.md FR-046 to FR-048
102
55
  */
103
- declare const DropdownLabel: import("react").NamedExoticComponent<{
104
- children: ReactNode;
105
- id?: string | undefined;
106
- 'aria-label'?: string | undefined;
107
- 'aria-labelledby'?: string | undefined;
108
- 'aria-describedby'?: string | undefined;
109
- 'aria-live'?: "off" | "polite" | "assertive" | undefined;
110
- 'aria-hidden'?: boolean | undefined;
111
- 'data-testid'?: string | undefined;
112
- className?: string | undefined;
113
- } & import("react").RefAttributes<HTMLDivElement>>;
56
+ declare const DropdownLabel: import("react").NamedExoticComponent<DropdownLabelProps & import("react").RefAttributes<HTMLDivElement>>;
114
57
  /**
115
58
  * Export compound component via Object.assign for backwards compatibility.
116
59
  * Enables `<Dropdown.Trigger>`, `<Dropdown.Menu>`, etc.
@@ -120,68 +63,11 @@ declare const DropdownLabel: import("react").NamedExoticComponent<{
120
63
  * for better tree-shaking. See named exports below.
121
64
  */
122
65
  export declare const Dropdown: import("react").ForwardRefExoticComponent<InternalDropdownProps & import("react").RefAttributes<HTMLDivElement>> & {
123
- Trigger: import("react").ForwardRefExoticComponent<{
124
- children: ReactNode;
125
- className?: string | undefined;
126
- id?: string | undefined;
127
- 'aria-label'?: string | undefined;
128
- 'aria-labelledby'?: string | undefined;
129
- 'aria-describedby'?: string | undefined;
130
- 'aria-live'?: "off" | "polite" | "assertive" | undefined;
131
- 'aria-hidden'?: boolean | undefined;
132
- 'data-testid'?: string | undefined;
133
- } & import("react").RefAttributes<HTMLButtonElement>>;
134
- Menu: import("react").ForwardRefExoticComponent<{
135
- align: "end" | "center" | "start";
136
- side: "top" | "bottom" | "left" | "right";
137
- children: ReactNode;
138
- id?: string | undefined;
139
- 'aria-label'?: string | undefined;
140
- 'aria-labelledby'?: string | undefined;
141
- 'aria-describedby'?: string | undefined;
142
- 'aria-live'?: "off" | "polite" | "assertive" | undefined;
143
- 'aria-hidden'?: boolean | undefined;
144
- 'data-testid'?: string | undefined;
145
- className?: string | undefined;
146
- } & import("react").RefAttributes<HTMLDivElement>>;
147
- Item: import("react").ForwardRefExoticComponent<{
148
- isDisabled: boolean;
149
- id?: string | undefined;
150
- 'aria-labelledby'?: string | undefined;
151
- 'aria-describedby'?: string | undefined;
152
- 'aria-live'?: "off" | "polite" | "assertive" | undefined;
153
- 'aria-hidden'?: boolean | undefined;
154
- 'data-testid'?: string | undefined;
155
- children?: ReactNode;
156
- onAction?: import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut> | undefined;
157
- shortcut?: string | undefined;
158
- icon?: ReactNode;
159
- iconRight?: ReactNode;
160
- 'aria-label'?: string | undefined;
161
- className?: string | undefined;
162
- } & import("react").RefAttributes<HTMLDivElement>>;
163
- Separator: import("react").NamedExoticComponent<{
164
- children?: any;
165
- id?: string | undefined;
166
- 'aria-label'?: string | undefined;
167
- 'aria-labelledby'?: string | undefined;
168
- 'aria-describedby'?: string | undefined;
169
- 'aria-live'?: "off" | "polite" | "assertive" | undefined;
170
- 'aria-hidden'?: boolean | undefined;
171
- 'data-testid'?: string | undefined;
172
- className?: string | undefined;
173
- } & import("react").RefAttributes<HTMLDivElement>>;
174
- Label: import("react").NamedExoticComponent<{
175
- children: ReactNode;
176
- id?: string | undefined;
177
- 'aria-label'?: string | undefined;
178
- 'aria-labelledby'?: string | undefined;
179
- 'aria-describedby'?: string | undefined;
180
- 'aria-live'?: "off" | "polite" | "assertive" | undefined;
181
- 'aria-hidden'?: boolean | undefined;
182
- 'data-testid'?: string | undefined;
183
- className?: string | undefined;
184
- } & import("react").RefAttributes<HTMLDivElement>>;
66
+ Trigger: import("react").ForwardRefExoticComponent<DropdownTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
67
+ Menu: import("react").ForwardRefExoticComponent<DropdownMenuProps & import("react").RefAttributes<HTMLDivElement>>;
68
+ Item: import("react").ForwardRefExoticComponent<DropdownItemProps & import("react").RefAttributes<HTMLDivElement>>;
69
+ Separator: import("react").NamedExoticComponent<DropdownSeparatorProps & import("react").RefAttributes<HTMLDivElement>>;
70
+ Label: import("react").NamedExoticComponent<DropdownLabelProps & import("react").RefAttributes<HTMLDivElement>>;
185
71
  };
186
72
  export { DropdownTrigger, DropdownMenu, DropdownItem, DropdownSeparator, DropdownLabel };
187
73
  export { menuVariants, menuItemVariants };
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../src/elements/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,EAA8C,KAAK,SAAS,EAAuD,MAAM,OAAO,CAAC;AAcxI,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAY1B;;;;;GAKG;AACH,UAAU,qBAAsB,SAAQ,aAAa;IACnD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAmCD;;;;;GAKG;AACH,QAAA,MAAM,eAAe;;;;;;;;;;qDAiBpB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;kDAgBjB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;kDAkEjB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB;;;;;;;;;;kDAYrB,CAAC;AAIH;;;;;GAKG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;kDAcjB,CAAC;AAIH;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnB,CAAC;AAGH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAGzF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAG1C,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,GACnB,CAAC"}
1
+ {"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../src/elements/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,EAA8C,KAAK,SAAS,EAAuD,MAAM,OAAO,CAAC;AAcxI,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAY1B;;;;;GAKG;AACH,UAAU,qBAAsB,SAAQ,aAAa;IACnD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAmCD;;;;;GAKG;AACH,QAAA,MAAM,eAAe,oHAiBpB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,YAAY,8GAgBjB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,YAAY,8GAkEjB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,8GAYrB,CAAC;AAIH;;;;;GAKG;AACH,QAAA,MAAM,aAAa,0GAcjB,CAAC;AAIH;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ;;;;;;CAMnB,CAAC;AAGH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAGzF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAG1C,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,GACnB,CAAC"}