@tribepad/themis 1.0.0 → 1.0.2

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 (482) hide show
  1. package/dist/elements/Accordion/index.js +2 -77
  2. package/dist/elements/Accordion/index.js.map +1 -1
  3. package/dist/elements/Accordion/index.mjs +2 -4
  4. package/dist/elements/Accordion/index.mjs.map +1 -1
  5. package/dist/elements/AlertDialog/AlertDialog.d.ts +43 -0
  6. package/dist/elements/AlertDialog/AlertDialog.d.ts.map +1 -0
  7. package/dist/elements/AlertDialog/AlertDialog.styles.d.ts +15 -0
  8. package/dist/elements/AlertDialog/AlertDialog.styles.d.ts.map +1 -0
  9. package/dist/elements/AlertDialog/AlertDialog.types.d.ts +72 -0
  10. package/dist/elements/AlertDialog/AlertDialog.types.d.ts.map +1 -0
  11. package/dist/elements/AlertDialog/index.d.ts +25 -0
  12. package/dist/elements/AlertDialog/index.d.ts.map +1 -0
  13. package/dist/elements/AlertDialog/index.js +3 -0
  14. package/dist/elements/AlertDialog/index.js.map +1 -0
  15. package/dist/elements/AlertDialog/index.mjs +3 -0
  16. package/dist/elements/AlertDialog/index.mjs.map +1 -0
  17. package/dist/elements/Avatar/index.js +2 -53
  18. package/dist/elements/Avatar/index.js.map +1 -1
  19. package/dist/elements/Avatar/index.mjs +2 -4
  20. package/dist/elements/Avatar/index.mjs.map +1 -1
  21. package/dist/elements/Badge/index.js +2 -42
  22. package/dist/elements/Badge/index.js.map +1 -1
  23. package/dist/elements/Badge/index.mjs +2 -5
  24. package/dist/elements/Badge/index.mjs.map +1 -1
  25. package/dist/elements/Breadcrumbs/index.js +2 -53
  26. package/dist/elements/Breadcrumbs/index.js.map +1 -1
  27. package/dist/elements/Breadcrumbs/index.mjs +2 -8
  28. package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
  29. package/dist/elements/Button/Button.d.ts +26 -81
  30. package/dist/elements/Button/Button.d.ts.map +1 -1
  31. package/dist/elements/Button/Button.styles.d.ts +35 -0
  32. package/dist/elements/Button/Button.styles.d.ts.map +1 -0
  33. package/dist/elements/Button/Button.types.d.ts +20 -8
  34. package/dist/elements/Button/Button.types.d.ts.map +1 -1
  35. package/dist/elements/Button/index.js +2 -26
  36. package/dist/elements/Button/index.js.map +1 -1
  37. package/dist/elements/Button/index.mjs +2 -5
  38. package/dist/elements/Button/index.mjs.map +1 -1
  39. package/dist/elements/ButtonGroup/index.js +2 -65
  40. package/dist/elements/ButtonGroup/index.js.map +1 -1
  41. package/dist/elements/ButtonGroup/index.mjs +2 -4
  42. package/dist/elements/ButtonGroup/index.mjs.map +1 -1
  43. package/dist/elements/Card/Card.d.ts.map +1 -1
  44. package/dist/elements/Card/index.js +2 -84
  45. package/dist/elements/Card/index.js.map +1 -1
  46. package/dist/elements/Card/index.mjs +2 -7
  47. package/dist/elements/Card/index.mjs.map +1 -1
  48. package/dist/elements/Carousel/Carousel.d.ts +1 -11
  49. package/dist/elements/Carousel/Carousel.d.ts.map +1 -1
  50. package/dist/elements/Carousel/LazyCarousel.d.ts +1 -1
  51. package/dist/elements/Carousel/LazyCarousel.d.ts.map +1 -1
  52. package/dist/elements/Carousel/index.js +2 -22
  53. package/dist/elements/Carousel/index.js.map +1 -1
  54. package/dist/elements/Carousel/index.mjs +2 -9
  55. package/dist/elements/Carousel/index.mjs.map +1 -1
  56. package/dist/elements/Chart/ChartContext.d.ts.map +1 -1
  57. package/dist/elements/Chart/index.js +2 -46
  58. package/dist/elements/Chart/index.js.map +1 -1
  59. package/dist/elements/Chart/index.mjs +2 -5
  60. package/dist/elements/Chart/index.mjs.map +1 -1
  61. package/dist/elements/Checkbox/index.js +2 -46
  62. package/dist/elements/Checkbox/index.js.map +1 -1
  63. package/dist/elements/Checkbox/index.mjs +2 -5
  64. package/dist/elements/Checkbox/index.mjs.map +1 -1
  65. package/dist/elements/CheckboxGroup/index.js +2 -70
  66. package/dist/elements/CheckboxGroup/index.js.map +1 -1
  67. package/dist/elements/CheckboxGroup/index.mjs +2 -5
  68. package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
  69. package/dist/elements/Combobox/Combobox.d.ts +56 -0
  70. package/dist/elements/Combobox/Combobox.d.ts.map +1 -0
  71. package/dist/elements/Combobox/Combobox.styles.d.ts +29 -0
  72. package/dist/elements/Combobox/Combobox.styles.d.ts.map +1 -0
  73. package/dist/elements/Combobox/Combobox.types.d.ts +67 -0
  74. package/dist/elements/Combobox/Combobox.types.d.ts.map +1 -0
  75. package/dist/elements/Combobox/index.d.ts +20 -0
  76. package/dist/elements/Combobox/index.d.ts.map +1 -0
  77. package/dist/elements/Combobox/index.js +3 -0
  78. package/dist/elements/Combobox/index.js.map +1 -0
  79. package/dist/elements/Combobox/index.mjs +3 -0
  80. package/dist/elements/Combobox/index.mjs.map +1 -0
  81. package/dist/elements/DatePicker/DatePicker.d.ts +1 -1
  82. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  83. package/dist/elements/DatePicker/index.js +2 -122
  84. package/dist/elements/DatePicker/index.js.map +1 -1
  85. package/dist/elements/DatePicker/index.mjs +2 -5
  86. package/dist/elements/DatePicker/index.mjs.map +1 -1
  87. package/dist/elements/Dropdown/Dropdown.d.ts +7 -15
  88. package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -1
  89. package/dist/elements/Dropdown/Dropdown.styles.d.ts +22 -0
  90. package/dist/elements/Dropdown/Dropdown.styles.d.ts.map +1 -0
  91. package/dist/elements/Dropdown/index.d.ts +1 -0
  92. package/dist/elements/Dropdown/index.d.ts.map +1 -1
  93. package/dist/elements/Dropdown/index.js +2 -40
  94. package/dist/elements/Dropdown/index.js.map +1 -1
  95. package/dist/elements/Dropdown/index.mjs +2 -3
  96. package/dist/elements/Dropdown/index.mjs.map +1 -1
  97. package/dist/elements/FileField/index.js +2 -137
  98. package/dist/elements/FileField/index.js.map +1 -1
  99. package/dist/elements/FileField/index.mjs +2 -8
  100. package/dist/elements/FileField/index.mjs.map +1 -1
  101. package/dist/elements/FormLayout/index.js +2 -16
  102. package/dist/elements/FormLayout/index.js.map +1 -1
  103. package/dist/elements/FormLayout/index.mjs +2 -3
  104. package/dist/elements/FormLayout/index.mjs.map +1 -1
  105. package/dist/elements/Modal/Modal.d.ts +9 -14
  106. package/dist/elements/Modal/Modal.d.ts.map +1 -1
  107. package/dist/elements/Modal/Modal.styles.d.ts +29 -0
  108. package/dist/elements/Modal/Modal.styles.d.ts.map +1 -0
  109. package/dist/elements/Modal/index.d.ts +1 -0
  110. package/dist/elements/Modal/index.d.ts.map +1 -1
  111. package/dist/elements/Modal/index.js +2 -51
  112. package/dist/elements/Modal/index.js.map +1 -1
  113. package/dist/elements/Modal/index.mjs +2 -2
  114. package/dist/elements/Modal/index.mjs.map +1 -1
  115. package/dist/elements/NumberField/index.js +2 -56
  116. package/dist/elements/NumberField/index.js.map +1 -1
  117. package/dist/elements/NumberField/index.mjs +2 -7
  118. package/dist/elements/NumberField/index.mjs.map +1 -1
  119. package/dist/elements/OTPInput/OTPInput.d.ts.map +1 -1
  120. package/dist/elements/OTPInput/index.js +2 -12
  121. package/dist/elements/OTPInput/index.js.map +1 -1
  122. package/dist/elements/OTPInput/index.mjs +2 -3
  123. package/dist/elements/OTPInput/index.mjs.map +1 -1
  124. package/dist/elements/Pagination/Pagination.d.ts +45 -0
  125. package/dist/elements/Pagination/Pagination.d.ts.map +1 -0
  126. package/dist/elements/Pagination/Pagination.styles.d.ts +10 -0
  127. package/dist/elements/Pagination/Pagination.styles.d.ts.map +1 -0
  128. package/dist/elements/Pagination/Pagination.types.d.ts +55 -0
  129. package/dist/elements/Pagination/Pagination.types.d.ts.map +1 -0
  130. package/dist/elements/Pagination/index.d.ts +21 -0
  131. package/dist/elements/Pagination/index.d.ts.map +1 -0
  132. package/dist/elements/Pagination/index.js +3 -0
  133. package/dist/elements/Pagination/index.js.map +1 -0
  134. package/dist/elements/Pagination/index.mjs +3 -0
  135. package/dist/elements/Pagination/index.mjs.map +1 -0
  136. package/dist/elements/Panel/index.js +2 -32
  137. package/dist/elements/Panel/index.js.map +1 -1
  138. package/dist/elements/Panel/index.mjs +2 -3
  139. package/dist/elements/Panel/index.mjs.map +1 -1
  140. package/dist/elements/PasswordField/PasswordField.d.ts +27 -0
  141. package/dist/elements/PasswordField/PasswordField.d.ts.map +1 -0
  142. package/dist/elements/PasswordField/PasswordField.styles.d.ts +32 -0
  143. package/dist/elements/PasswordField/PasswordField.styles.d.ts.map +1 -0
  144. package/dist/elements/PasswordField/PasswordField.types.d.ts +100 -0
  145. package/dist/elements/PasswordField/PasswordField.types.d.ts.map +1 -0
  146. package/dist/elements/PasswordField/index.css +2 -0
  147. package/dist/elements/PasswordField/index.css.map +1 -0
  148. package/dist/elements/PasswordField/index.d.ts +20 -0
  149. package/dist/elements/PasswordField/index.d.ts.map +1 -0
  150. package/dist/elements/PasswordField/index.js +3 -0
  151. package/dist/elements/PasswordField/index.js.map +1 -0
  152. package/dist/elements/PasswordField/index.mjs +3 -0
  153. package/dist/elements/PasswordField/index.mjs.map +1 -0
  154. package/dist/elements/Progress/index.js +2 -29
  155. package/dist/elements/Progress/index.js.map +1 -1
  156. package/dist/elements/Progress/index.mjs +2 -4
  157. package/dist/elements/Progress/index.mjs.map +1 -1
  158. package/dist/elements/RadioGroup/index.js +2 -46
  159. package/dist/elements/RadioGroup/index.js.map +1 -1
  160. package/dist/elements/RadioGroup/index.mjs +2 -5
  161. package/dist/elements/RadioGroup/index.mjs.map +1 -1
  162. package/dist/elements/Resizable/components/ResizableHandle.d.ts +0 -8
  163. package/dist/elements/Resizable/components/ResizableHandle.d.ts.map +1 -1
  164. package/dist/elements/Resizable/components/ResizablePanel.d.ts +0 -8
  165. package/dist/elements/Resizable/components/ResizablePanel.d.ts.map +1 -1
  166. package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts +0 -8
  167. package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts.map +1 -1
  168. package/dist/elements/Resizable/components/ResizablePopover.d.ts +0 -8
  169. package/dist/elements/Resizable/components/ResizablePopover.d.ts.map +1 -1
  170. package/dist/elements/Resizable/index.js +2 -64
  171. package/dist/elements/Resizable/index.js.map +1 -1
  172. package/dist/elements/Resizable/index.mjs +2 -7
  173. package/dist/elements/Resizable/index.mjs.map +1 -1
  174. package/dist/elements/SearchField/SearchField.d.ts +27 -0
  175. package/dist/elements/SearchField/SearchField.d.ts.map +1 -0
  176. package/dist/elements/SearchField/SearchField.styles.d.ts +32 -0
  177. package/dist/elements/SearchField/SearchField.styles.d.ts.map +1 -0
  178. package/dist/elements/SearchField/SearchField.types.d.ts +45 -0
  179. package/dist/elements/SearchField/SearchField.types.d.ts.map +1 -0
  180. package/dist/elements/SearchField/index.css +2 -0
  181. package/dist/elements/SearchField/index.css.map +1 -0
  182. package/dist/elements/SearchField/index.d.ts +21 -0
  183. package/dist/elements/SearchField/index.d.ts.map +1 -0
  184. package/dist/elements/SearchField/index.js +3 -0
  185. package/dist/elements/SearchField/index.js.map +1 -0
  186. package/dist/elements/SearchField/index.mjs +3 -0
  187. package/dist/elements/SearchField/index.mjs.map +1 -0
  188. package/dist/elements/Select/Select.d.ts +19 -48
  189. package/dist/elements/Select/Select.d.ts.map +1 -1
  190. package/dist/elements/Select/Select.styles.d.ts +55 -0
  191. package/dist/elements/Select/Select.styles.d.ts.map +1 -0
  192. package/dist/elements/Select/index.js +2 -32
  193. package/dist/elements/Select/index.js.map +1 -1
  194. package/dist/elements/Select/index.mjs +2 -3
  195. package/dist/elements/Select/index.mjs.map +1 -1
  196. package/dist/elements/Skeleton/index.js +2 -21
  197. package/dist/elements/Skeleton/index.js.map +1 -1
  198. package/dist/elements/Skeleton/index.mjs +2 -4
  199. package/dist/elements/Skeleton/index.mjs.map +1 -1
  200. package/dist/elements/Switch/index.js +2 -48
  201. package/dist/elements/Switch/index.js.map +1 -1
  202. package/dist/elements/Switch/index.mjs +2 -30
  203. package/dist/elements/Switch/index.mjs.map +1 -1
  204. package/dist/elements/Table/Table.d.ts +3 -24
  205. package/dist/elements/Table/Table.d.ts.map +1 -1
  206. package/dist/elements/Table/Table.styles.d.ts +24 -0
  207. package/dist/elements/Table/Table.styles.d.ts.map +1 -0
  208. package/dist/elements/Table/index.js +2 -75
  209. package/dist/elements/Table/index.js.map +1 -1
  210. package/dist/elements/Table/index.mjs +2 -6
  211. package/dist/elements/Table/index.mjs.map +1 -1
  212. package/dist/elements/Tabs/index.js +2 -73
  213. package/dist/elements/Tabs/index.js.map +1 -1
  214. package/dist/elements/Tabs/index.mjs +2 -4
  215. package/dist/elements/Tabs/index.mjs.map +1 -1
  216. package/dist/elements/TextField/TextField.d.ts +6 -42
  217. package/dist/elements/TextField/TextField.d.ts.map +1 -1
  218. package/dist/elements/TextField/TextField.hooks.d.ts +63 -0
  219. package/dist/elements/TextField/TextField.hooks.d.ts.map +1 -0
  220. package/dist/elements/TextField/TextField.icons.d.ts +19 -0
  221. package/dist/elements/TextField/TextField.icons.d.ts.map +1 -0
  222. package/dist/elements/TextField/TextField.styles.d.ts +37 -0
  223. package/dist/elements/TextField/TextField.styles.d.ts.map +1 -0
  224. package/dist/elements/TextField/TextField.types.d.ts +3 -0
  225. package/dist/elements/TextField/TextField.types.d.ts.map +1 -1
  226. package/dist/elements/TextField/index.css +1 -22
  227. package/dist/elements/TextField/index.css.map +1 -1
  228. package/dist/elements/TextField/index.js +2 -259
  229. package/dist/elements/TextField/index.js.map +1 -1
  230. package/dist/elements/TextField/index.mjs +2 -206
  231. package/dist/elements/TextField/index.mjs.map +1 -1
  232. package/dist/elements/TimeField/index.js +2 -44
  233. package/dist/elements/TimeField/index.js.map +1 -1
  234. package/dist/elements/TimeField/index.mjs +2 -3
  235. package/dist/elements/TimeField/index.mjs.map +1 -1
  236. package/dist/elements/Toast/Toast.d.ts +0 -22
  237. package/dist/elements/Toast/Toast.d.ts.map +1 -1
  238. package/dist/elements/Toast/index.js +2 -59
  239. package/dist/elements/Toast/index.js.map +1 -1
  240. package/dist/elements/Toast/index.mjs +2 -6
  241. package/dist/elements/Toast/index.mjs.map +1 -1
  242. package/dist/elements/Tooltip/index.js +2 -58
  243. package/dist/elements/Tooltip/index.js.map +1 -1
  244. package/dist/elements/Tooltip/index.mjs +2 -5
  245. package/dist/elements/Tooltip/index.mjs.map +1 -1
  246. package/dist/elements/index.css +1 -22
  247. package/dist/elements/index.css.map +1 -1
  248. package/dist/elements/index.d.ts +13 -1
  249. package/dist/elements/index.d.ts.map +1 -1
  250. package/dist/elements/index.js +2 -838
  251. package/dist/elements/index.js.map +1 -1
  252. package/dist/elements/index.mjs +2 -41
  253. package/dist/elements/index.mjs.map +1 -1
  254. package/dist/index.css +1 -22
  255. package/dist/index.css.map +1 -1
  256. package/dist/index.js +3 -864
  257. package/dist/index.js.map +1 -1
  258. package/dist/index.mjs +3 -43
  259. package/dist/index.mjs.map +1 -1
  260. package/dist/schemas/index.js +2 -28
  261. package/dist/schemas/index.js.map +1 -1
  262. package/dist/schemas/index.mjs +2 -3
  263. package/dist/schemas/index.mjs.map +1 -1
  264. package/dist/styles/defaults.css +151 -0
  265. package/dist/styles/index.js +1 -152
  266. package/dist/styles/index.js.map +1 -1
  267. package/dist/styles/index.mjs +1 -3
  268. package/dist/styles/index.mjs.map +1 -1
  269. package/dist/utils/index.js +1 -12
  270. package/dist/utils/index.js.map +1 -1
  271. package/dist/utils/index.mjs +1 -3
  272. package/dist/utils/index.mjs.map +1 -1
  273. package/package.json +9 -7
  274. package/src/elements/Accordion/Accordion.stories.tsx +1 -1
  275. package/src/elements/AlertDialog/AlertDialog.stories.tsx +124 -0
  276. package/src/elements/Avatar/Avatar.stories.tsx +1 -1
  277. package/src/elements/Badge/Badge.stories.tsx +1 -1
  278. package/src/elements/Breadcrumbs/Breadcrumbs.stories.tsx +1 -1
  279. package/src/elements/Button/Button.stories.tsx +1 -1
  280. package/src/elements/ButtonGroup/ButtonGroup.stories.tsx +1 -1
  281. package/src/elements/Card/Card.stories.tsx +1 -1
  282. package/src/elements/Carousel/Carousel.stories.tsx +1 -1
  283. package/src/elements/Chart/Chart.stories.tsx +1 -1
  284. package/src/elements/Checkbox/Checkbox.stories.tsx +1 -1
  285. package/src/elements/CheckboxGroup/CheckboxGroup.stories.tsx +1 -1
  286. package/src/elements/Combobox/Combobox.stories.tsx +133 -0
  287. package/src/elements/DatePicker/DatePicker.stories.tsx +1 -1
  288. package/src/elements/Dropdown/Dropdown.stories.tsx +1 -1
  289. package/src/elements/FileField/FileField.stories.tsx +1 -1
  290. package/src/elements/FileField/FileProgress.stories.tsx +1 -1
  291. package/src/elements/FormLayout/FormLayout.stories.tsx +1 -1
  292. package/src/elements/Modal/Modal.stories.tsx +1 -1
  293. package/src/elements/NumberField/NumberField.stories.tsx +1 -1
  294. package/src/elements/OTPInput/OTPInput.stories.tsx +1 -1
  295. package/src/elements/Pagination/Pagination.stories.tsx +203 -0
  296. package/src/elements/Panel/Panel.stories.tsx +1 -1
  297. package/src/elements/PasswordField/PasswordField.stories.tsx +167 -0
  298. package/src/elements/Progress/Progress.stories.tsx +1 -1
  299. package/src/elements/RadioGroup/RadioGroup.stories.tsx +1 -1
  300. package/src/elements/Resizable/Resizable.stories.tsx +1 -1
  301. package/src/elements/SearchField/SearchField.stories.tsx +146 -0
  302. package/src/elements/Select/Select.stories.tsx +1 -1
  303. package/src/elements/Skeleton/Skeleton.stories.tsx +1 -1
  304. package/src/elements/Switch/Switch.stories.tsx +1 -1
  305. package/src/elements/Table/Table.stories.tsx +1 -1
  306. package/src/elements/Tabs/Tabs.stories.tsx +1 -1
  307. package/src/elements/TextField/TextField.stories.tsx +1 -1
  308. package/src/elements/TimeField/TimeField.stories.tsx +1 -1
  309. package/src/elements/Toast/Toast.stories.tsx +1 -1
  310. package/src/elements/Tooltip/Tooltip.stories.tsx +1 -1
  311. package/dist/Carousel-NTZX5TOW.js +0 -16
  312. package/dist/Carousel-NTZX5TOW.js.map +0 -1
  313. package/dist/Carousel-YH3DOQJU.mjs +0 -7
  314. package/dist/Carousel-YH3DOQJU.mjs.map +0 -1
  315. package/dist/chunk-2HIUTHMU.mjs +0 -234
  316. package/dist/chunk-2HIUTHMU.mjs.map +0 -1
  317. package/dist/chunk-34GTFTDO.js +0 -431
  318. package/dist/chunk-34GTFTDO.js.map +0 -1
  319. package/dist/chunk-3H7ASYR7.js +0 -250
  320. package/dist/chunk-3H7ASYR7.js.map +0 -1
  321. package/dist/chunk-3IEN7JOP.js +0 -316
  322. package/dist/chunk-3IEN7JOP.js.map +0 -1
  323. package/dist/chunk-3JHN4GAL.js +0 -326
  324. package/dist/chunk-3JHN4GAL.js.map +0 -1
  325. package/dist/chunk-3MJPASQU.js +0 -232
  326. package/dist/chunk-3MJPASQU.js.map +0 -1
  327. package/dist/chunk-3XD2JUL3.js +0 -572
  328. package/dist/chunk-3XD2JUL3.js.map +0 -1
  329. package/dist/chunk-3YOY2VJ6.js +0 -189
  330. package/dist/chunk-3YOY2VJ6.js.map +0 -1
  331. package/dist/chunk-4DU5JSXB.js +0 -408
  332. package/dist/chunk-4DU5JSXB.js.map +0 -1
  333. package/dist/chunk-4E4E2GSS.js +0 -352
  334. package/dist/chunk-4E4E2GSS.js.map +0 -1
  335. package/dist/chunk-4NHAP4AN.mjs +0 -3
  336. package/dist/chunk-4NHAP4AN.mjs.map +0 -1
  337. package/dist/chunk-4S33J5NY.mjs +0 -415
  338. package/dist/chunk-4S33J5NY.mjs.map +0 -1
  339. package/dist/chunk-5SMGRT3G.mjs +0 -354
  340. package/dist/chunk-5SMGRT3G.mjs.map +0 -1
  341. package/dist/chunk-5SVLJN2C.mjs +0 -22
  342. package/dist/chunk-5SVLJN2C.mjs.map +0 -1
  343. package/dist/chunk-66WTU4EB.mjs +0 -299
  344. package/dist/chunk-66WTU4EB.mjs.map +0 -1
  345. package/dist/chunk-6S25NMOT.mjs +0 -335
  346. package/dist/chunk-6S25NMOT.mjs.map +0 -1
  347. package/dist/chunk-6SP7UB3D.js +0 -4
  348. package/dist/chunk-6SP7UB3D.js.map +0 -1
  349. package/dist/chunk-6TYWWQHM.mjs +0 -565
  350. package/dist/chunk-6TYWWQHM.mjs.map +0 -1
  351. package/dist/chunk-A3YUJA6W.mjs +0 -384
  352. package/dist/chunk-A3YUJA6W.mjs.map +0 -1
  353. package/dist/chunk-A6KEDVUR.js +0 -61
  354. package/dist/chunk-A6KEDVUR.js.map +0 -1
  355. package/dist/chunk-A77RUEWL.js +0 -730
  356. package/dist/chunk-A77RUEWL.js.map +0 -1
  357. package/dist/chunk-AA4IKMPE.mjs +0 -3
  358. package/dist/chunk-AA4IKMPE.mjs.map +0 -1
  359. package/dist/chunk-AKIA6GW6.mjs +0 -163
  360. package/dist/chunk-AKIA6GW6.mjs.map +0 -1
  361. package/dist/chunk-AL6P275L.mjs +0 -435
  362. package/dist/chunk-AL6P275L.mjs.map +0 -1
  363. package/dist/chunk-AZ3RJYTB.js +0 -37
  364. package/dist/chunk-AZ3RJYTB.js.map +0 -1
  365. package/dist/chunk-B5Q4UPL6.js +0 -32
  366. package/dist/chunk-B5Q4UPL6.js.map +0 -1
  367. package/dist/chunk-B6DHPMDP.mjs +0 -335
  368. package/dist/chunk-B6DHPMDP.mjs.map +0 -1
  369. package/dist/chunk-BDXKKMBZ.mjs +0 -184
  370. package/dist/chunk-BDXKKMBZ.mjs.map +0 -1
  371. package/dist/chunk-BL6E2DLZ.mjs +0 -52
  372. package/dist/chunk-BL6E2DLZ.mjs.map +0 -1
  373. package/dist/chunk-CGFDS4XS.mjs +0 -121
  374. package/dist/chunk-CGFDS4XS.mjs.map +0 -1
  375. package/dist/chunk-CJIW5TKI.js +0 -139
  376. package/dist/chunk-CJIW5TKI.js.map +0 -1
  377. package/dist/chunk-CKNISJOQ.js +0 -314
  378. package/dist/chunk-CKNISJOQ.js.map +0 -1
  379. package/dist/chunk-D6CBOECS.mjs +0 -1757
  380. package/dist/chunk-D6CBOECS.mjs.map +0 -1
  381. package/dist/chunk-DDWEVC2S.js +0 -166
  382. package/dist/chunk-DDWEVC2S.js.map +0 -1
  383. package/dist/chunk-DZ556D2F.mjs +0 -176
  384. package/dist/chunk-DZ556D2F.mjs.map +0 -1
  385. package/dist/chunk-E2KQFV3O.mjs +0 -10
  386. package/dist/chunk-E2KQFV3O.mjs.map +0 -1
  387. package/dist/chunk-EMMLADSC.js +0 -126
  388. package/dist/chunk-EMMLADSC.js.map +0 -1
  389. package/dist/chunk-EP4WOI5D.mjs +0 -926
  390. package/dist/chunk-EP4WOI5D.mjs.map +0 -1
  391. package/dist/chunk-FJRXLJC2.mjs +0 -160
  392. package/dist/chunk-FJRXLJC2.mjs.map +0 -1
  393. package/dist/chunk-FKQI434R.js +0 -345
  394. package/dist/chunk-FKQI434R.js.map +0 -1
  395. package/dist/chunk-FPKEAJRZ.mjs +0 -100
  396. package/dist/chunk-FPKEAJRZ.mjs.map +0 -1
  397. package/dist/chunk-FWQYB22U.js +0 -183
  398. package/dist/chunk-FWQYB22U.js.map +0 -1
  399. package/dist/chunk-GD5GHTMA.js +0 -189
  400. package/dist/chunk-GD5GHTMA.js.map +0 -1
  401. package/dist/chunk-GE5XTSDZ.js +0 -447
  402. package/dist/chunk-GE5XTSDZ.js.map +0 -1
  403. package/dist/chunk-GVE47ZAX.mjs +0 -32
  404. package/dist/chunk-GVE47ZAX.mjs.map +0 -1
  405. package/dist/chunk-HK46BT5U.mjs +0 -18
  406. package/dist/chunk-HK46BT5U.mjs.map +0 -1
  407. package/dist/chunk-HQVRMR6N.js +0 -365
  408. package/dist/chunk-HQVRMR6N.js.map +0 -1
  409. package/dist/chunk-HSGBJPJO.mjs +0 -398
  410. package/dist/chunk-HSGBJPJO.mjs.map +0 -1
  411. package/dist/chunk-I3AUTOMZ.mjs +0 -125
  412. package/dist/chunk-I3AUTOMZ.mjs.map +0 -1
  413. package/dist/chunk-IEI5LD5C.mjs +0 -1161
  414. package/dist/chunk-IEI5LD5C.mjs.map +0 -1
  415. package/dist/chunk-IIPTC2X7.mjs +0 -118
  416. package/dist/chunk-IIPTC2X7.mjs.map +0 -1
  417. package/dist/chunk-J7TLHF2Q.js +0 -4
  418. package/dist/chunk-J7TLHF2Q.js.map +0 -1
  419. package/dist/chunk-JJOWXFXQ.mjs +0 -765
  420. package/dist/chunk-JJOWXFXQ.mjs.map +0 -1
  421. package/dist/chunk-JPTSS2OA.mjs +0 -3
  422. package/dist/chunk-JPTSS2OA.mjs.map +0 -1
  423. package/dist/chunk-KFXXRLTP.js +0 -396
  424. package/dist/chunk-KFXXRLTP.js.map +0 -1
  425. package/dist/chunk-KPRRBSG6.mjs +0 -272
  426. package/dist/chunk-KPRRBSG6.mjs.map +0 -1
  427. package/dist/chunk-NFSBGRDB.mjs +0 -57
  428. package/dist/chunk-NFSBGRDB.mjs.map +0 -1
  429. package/dist/chunk-NGJVCFTM.js +0 -219
  430. package/dist/chunk-NGJVCFTM.js.map +0 -1
  431. package/dist/chunk-NSQ6MZJ6.mjs +0 -728
  432. package/dist/chunk-NSQ6MZJ6.mjs.map +0 -1
  433. package/dist/chunk-NYQYHT76.mjs +0 -296
  434. package/dist/chunk-NYQYHT76.mjs.map +0 -1
  435. package/dist/chunk-OLJJGI5B.js +0 -1193
  436. package/dist/chunk-OLJJGI5B.js.map +0 -1
  437. package/dist/chunk-Q3572X2J.js +0 -292
  438. package/dist/chunk-Q3572X2J.js.map +0 -1
  439. package/dist/chunk-QH7N7D4I.mjs +0 -210
  440. package/dist/chunk-QH7N7D4I.mjs.map +0 -1
  441. package/dist/chunk-R7XUIV25.js +0 -466
  442. package/dist/chunk-R7XUIV25.js.map +0 -1
  443. package/dist/chunk-RFFO4KPM.js +0 -135
  444. package/dist/chunk-RFFO4KPM.js.map +0 -1
  445. package/dist/chunk-RFX7QKA7.mjs +0 -180
  446. package/dist/chunk-RFX7QKA7.mjs.map +0 -1
  447. package/dist/chunk-SN5LFAP3.js +0 -940
  448. package/dist/chunk-SN5LFAP3.js.map +0 -1
  449. package/dist/chunk-T4COXKQ3.js +0 -24
  450. package/dist/chunk-T4COXKQ3.js.map +0 -1
  451. package/dist/chunk-TS54QM27.js +0 -125
  452. package/dist/chunk-TS54QM27.js.map +0 -1
  453. package/dist/chunk-UE2S4PCX.mjs +0 -220
  454. package/dist/chunk-UE2S4PCX.mjs.map +0 -1
  455. package/dist/chunk-UTW3QX2A.mjs +0 -282
  456. package/dist/chunk-UTW3QX2A.mjs.map +0 -1
  457. package/dist/chunk-V74LGMAE.js +0 -1767
  458. package/dist/chunk-V74LGMAE.js.map +0 -1
  459. package/dist/chunk-VIREG536.js +0 -12
  460. package/dist/chunk-VIREG536.js.map +0 -1
  461. package/dist/chunk-VY7M7346.js +0 -4
  462. package/dist/chunk-VY7M7346.js.map +0 -1
  463. package/dist/chunk-W3TJOO7H.mjs +0 -319
  464. package/dist/chunk-W3TJOO7H.mjs.map +0 -1
  465. package/dist/chunk-WIUOB36M.js +0 -54
  466. package/dist/chunk-WIUOB36M.js.map +0 -1
  467. package/dist/chunk-WJGLM4CY.js +0 -291
  468. package/dist/chunk-WJGLM4CY.js.map +0 -1
  469. package/dist/chunk-WNURH5OO.mjs +0 -453
  470. package/dist/chunk-WNURH5OO.mjs.map +0 -1
  471. package/dist/chunk-X25TNRSD.mjs +0 -364
  472. package/dist/chunk-X25TNRSD.mjs.map +0 -1
  473. package/dist/chunk-Y3GT7ETK.js +0 -108
  474. package/dist/chunk-Y3GT7ETK.js.map +0 -1
  475. package/dist/chunk-Z4FRNOF6.mjs +0 -115
  476. package/dist/chunk-Z4FRNOF6.mjs.map +0 -1
  477. package/dist/chunk-ZMYLD3BN.js +0 -166
  478. package/dist/chunk-ZMYLD3BN.js.map +0 -1
  479. package/dist/chunk-ZP2KV6EX.js +0 -815
  480. package/dist/chunk-ZP2KV6EX.js.map +0 -1
  481. package/dist/chunk-ZVKXFELU.js +0 -366
  482. package/dist/chunk-ZVKXFELU.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
1
+ {"version":3,"sources":["../../../src/utils/cn.ts","../../../src/styles/interaction-states.ts","../../../src/elements/Checkbox/Checkbox.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Checkbox/Checkbox.types.ts"],"names":["cn","inputs","twMerge","clsx","FOCUS_STYLES","HIGH_CONTRAST_FOCUS","checkboxContainerVariants","cva","checkboxIndicatorVariants","checkmarkVariants","CheckmarkIcon","className","props","jsx","MinusIcon","Checkbox","forwardRef","isSelected","defaultSelected","isDisabled","isReadOnly","isIndeterminate","isInvalid","isRequired","onChange","onFocusChange","value","name","size","variant","label","description","selectedIcon","id","ariaLabel","ariaLabelledby","ariaDescribedby","dataTestId","slot","ref","computedIsDisabled","computedIsReadOnly","computedIsIndeterminate","renderIcon","isChecked","isIndet","iconClassName","dataSelected","dataIndeterminate","isValidElement","iconElement","cloneElement","AriaCheckbox","renderProps","jsxs","Fragment","BaseComponentPropsSchema","z","CheckboxSizeSchema","CheckboxVariantSchema","CheckboxPropsSchema"],"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","/**\n * Global Interaction State Styles\n *\n * Consistent interaction patterns across all Themis components.\n * These styles ensure WCAG 2.2 AAA compliance and predictable UX.\n *\n * @see spec.md FR-010 (Visible focus ring for keyboard navigation)\n * @see spec.md FR-031 (Pressed state feedback)\n * @see spec.md FR-012 (High contrast mode support)\n * @see constitution.md Principle IV (Accessibility First)\n */\n\n/**\n * Focus state styles (FR-010)\n * Visible focus ring for keyboard navigation - WCAG 2.2 Level AAA\n *\n * Components can override by extending these styles:\n * @example\n * cn(FOCUS_STYLES, \"ring-4\") // Increases ring width to 4px\n */\nexport const FOCUS_STYLES = \"data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2\";\n\n/**\n * Pressed/Active state styles (FR-031)\n * Visual feedback for press interactions\n *\n * Components can override the scale amount:\n * @example\n * cn(PRESSED_STYLES_BASE, \"data-[pressed]:scale-[0.95]\") // More pronounced scale\n */\nexport const PRESSED_STYLES = \"data-[pressed]:scale-[0.97]\";\n\n/**\n * Base pressed styles without scale (for components that need different feedback)\n */\nexport const PRESSED_STYLES_BASE = \"data-[pressed]:transition-transform data-[pressed]:duration-100\";\n\n/**\n * Hover state styles\n * Elevation change on hover for better affordance\n *\n * Components can override shadow depth:\n * @example\n * cn(HOVER_STYLES_BASE, \"data-[hovered]:shadow-lg\") // Larger shadow\n */\nexport const HOVER_STYLES = \"data-[hovered]:shadow-md\";\n\n/**\n * Base hover styles without shadow (for components that use different hover effects)\n */\nexport const HOVER_STYLES_BASE = \"data-[hovered]:transition-shadow data-[hovered]:duration-200\";\n\n/**\n * High contrast mode focus (FR-012)\n * Enhanced outlines for users requiring high contrast\n *\n * Uses 'hc:' prefix for prefers-contrast: more media query\n */\nexport const HIGH_CONTRAST_FOCUS = \"hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground\";\n\n/**\n * High contrast mode hover (FR-012)\n * Enhanced outlines for hover in high contrast mode\n */\nexport const HIGH_CONTRAST_HOVER = \"hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground\";\n\n/**\n * High contrast mode pressed state\n * Enhanced outlines for pressed state in high contrast mode\n */\nexport const HIGH_CONTRAST_PRESSED = \"hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground\";\n\n/**\n * Combined high contrast styles\n * Use this for components that need all high contrast interaction states\n */\nexport const HIGH_CONTRAST_INTERACTIONS = `${HIGH_CONTRAST_FOCUS} ${HIGH_CONTRAST_HOVER} ${HIGH_CONTRAST_PRESSED}`;\n\n/**\n * Disabled state styles\n * Consistent disabled appearance across all components\n */\nexport const DISABLED_STYLES = \"disabled:pointer-events-none disabled:opacity-50\";\n\n/**\n * Default interaction bundle\n * Most common combination for interactive components\n *\n * Includes: focus ring, pressed scale, hover shadow, high contrast enhancements\n *\n * @example\n * <button className={cn(DEFAULT_INTERACTIONS, \"bg-primary\")}>Click</button>\n */\nexport const DEFAULT_INTERACTIONS = `${FOCUS_STYLES} ${PRESSED_STYLES} ${HOVER_STYLES} ${HIGH_CONTRAST_FOCUS} ${HIGH_CONTRAST_HOVER} ${HIGH_CONTRAST_PRESSED}`;\n\n/**\n * Subtle interaction bundle\n * For components that need less pronounced feedback\n *\n * Includes: focus ring and high contrast, but no hover shadow or pressed scale\n */\nexport const SUBTLE_INTERACTIONS = `${FOCUS_STYLES} ${HIGH_CONTRAST_FOCUS}`;\n\n/**\n * Non-interactive element styles\n * For elements that should indicate they are not interactive\n */\nexport const NON_INTERACTIVE = \"cursor-default select-none\";\n","\"use client\";\n\n/**\n * Checkbox Component\n * Standalone accessible checkbox with React Aria primitives and CVA styling\n *\n * Key Features:\n * - Standalone checkbox (not requiring CheckboxGroup)\n * - 44px+ touch targets (WCAG 2.2 AAA)\n * - 2 variants: default, destructive\n * - 3 sizes: sm, default, lg\n * - Indeterminate state support\n * - Spring animation for checkmark\n * - RTL support\n * - Works with React Aria slot system (for Table integration)\n *\n * @see React Aria Checkbox: https://react-spectrum.adobe.com/react-aria/Checkbox.html\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AAA)\n */\n\nimport {\n forwardRef,\n cloneElement,\n isValidElement,\n type ReactNode,\n type ReactElement,\n} from 'react';\nimport { Checkbox as AriaCheckbox } from 'react-aria-components';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { FOCUS_STYLES, HIGH_CONTRAST_FOCUS } from '../../styles/interaction-states';\nimport type { CheckboxProps } from './Checkbox.types';\n\n// ============================================================================\n// CVA Variants\n// ============================================================================\n\n/**\n * Checkbox container variants\n * Controls the overall checkbox layout with touch target\n */\nconst checkboxContainerVariants = cva(\n [\n \"group inline-flex items-center gap-2 cursor-pointer\",\n \"transition-colors duration-200\",\n \"rtl:flex-row-reverse\",\n FOCUS_STYLES,\n HIGH_CONTRAST_FOCUS,\n ].join(\" \"),\n {\n variants: {\n size: {\n sm: \"min-h-[44px] text-sm\",\n default: \"min-h-[44px] text-sm\",\n lg: \"min-h-[48px] text-base\",\n },\n isDisabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"default\",\n isDisabled: false,\n },\n }\n);\n\n/**\n * Checkbox indicator (the box) variants\n */\nconst checkboxIndicatorVariants = cva(\n \"flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200\",\n {\n variants: {\n variant: {\n default: [\n \"border-[var(--border)]\",\n \"data-[selected]:border-[var(--primary)]\",\n \"data-[selected]:bg-[var(--primary)]\",\n \"data-[indeterminate]:border-[var(--primary)]\",\n \"data-[indeterminate]:bg-[var(--primary)]\",\n ].join(\" \"),\n destructive: [\n \"border-[var(--border)]\",\n \"data-[selected]:border-[var(--destructive)]\",\n \"data-[selected]:bg-[var(--destructive)]\",\n \"data-[indeterminate]:border-[var(--destructive)]\",\n \"data-[indeterminate]:bg-[var(--destructive)]\",\n ].join(\" \"),\n },\n size: {\n sm: \"h-4 w-4\",\n default: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n isInvalid: {\n true: \"border-[var(--destructive)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n isInvalid: false,\n },\n }\n);\n\n/**\n * Checkmark icon variants with spring animation\n */\nconst checkmarkVariants = cva(\n [\n \"transition-transform duration-200\",\n \"[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]\",\n \"motion-reduce:transition-none\",\n \"scale-0 data-[selected]:scale-100 data-[indeterminate]:scale-100\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n default: \"text-[var(--primary-foreground)]\",\n destructive: \"text-[var(--destructive-foreground)]\",\n },\n size: {\n sm: \"h-3 w-3\",\n default: \"h-3.5 w-3.5\",\n lg: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n// ============================================================================\n// Icon Components\n// ============================================================================\n\n/**\n * Checkmark SVG icon\n */\nfunction CheckmarkIcon({ className, ...props }: { className?: string; 'data-selected'?: boolean; 'data-indeterminate'?: boolean }): ReactNode {\n return (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\n/**\n * Minus (indeterminate) SVG icon\n */\nfunction MinusIcon({ className, ...props }: { className?: string; 'data-selected'?: boolean; 'data-indeterminate'?: boolean }): ReactNode {\n return (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n}\n\n// ============================================================================\n// Checkbox Component\n// ============================================================================\n\n/**\n * Standalone Checkbox component\n * Accessible checkbox that can be used independently or within Table\n */\nconst Checkbox = forwardRef<HTMLLabelElement, CheckboxProps>(\n (\n {\n isSelected,\n defaultSelected,\n isDisabled,\n isReadOnly,\n isIndeterminate,\n isInvalid = false,\n isRequired = false,\n onChange,\n onFocusChange,\n value,\n name,\n size = 'default',\n variant = 'default',\n label,\n description,\n selectedIcon,\n className,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'data-testid': dataTestId,\n slot,\n },\n ref\n ) => {\n // Only set these props when explicitly true to allow slot system to control them\n // (e.g., Table's selection slot injects isIndeterminate for partial selection)\n const computedIsDisabled = isDisabled || undefined;\n const computedIsReadOnly = isReadOnly || undefined;\n const computedIsIndeterminate = isIndeterminate || undefined;\n // Render the icon based on state\n const renderIcon = (isChecked: boolean, isIndet: boolean) => {\n const iconClassName = cn(checkmarkVariants({ variant, size }));\n const dataSelected = isChecked || undefined;\n const dataIndeterminate = isIndet || undefined;\n\n // For indeterminate state, always show minus\n if (isIndet) {\n return (\n <MinusIcon\n className={iconClassName}\n data-selected={dataSelected}\n data-indeterminate={dataIndeterminate}\n />\n );\n }\n\n // Custom icon support\n if (selectedIcon && isChecked) {\n if (isValidElement(selectedIcon)) {\n const iconElement = selectedIcon as ReactElement<{ className?: string; 'data-selected'?: boolean }>;\n return cloneElement(iconElement, {\n className: cn(iconClassName, iconElement.props.className),\n 'data-selected': dataSelected,\n });\n }\n return <span className={iconClassName} data-selected={dataSelected}>{selectedIcon}</span>;\n }\n\n // Default checkmark\n return (\n <CheckmarkIcon\n className={iconClassName}\n data-selected={dataSelected}\n data-indeterminate={dataIndeterminate}\n />\n );\n };\n\n return (\n <AriaCheckbox\n ref={ref}\n id={id}\n isSelected={isSelected}\n defaultSelected={defaultSelected}\n isDisabled={computedIsDisabled}\n isReadOnly={computedIsReadOnly}\n isIndeterminate={computedIsIndeterminate}\n isInvalid={isInvalid}\n isRequired={isRequired}\n onChange={onChange}\n onFocusChange={onFocusChange}\n value={value}\n name={name}\n slot={slot}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-describedby={ariaDescribedby}\n data-testid={dataTestId}\n className={(renderProps) =>\n cn(\n checkboxContainerVariants({\n size,\n isDisabled: renderProps.isDisabled,\n }),\n className\n )\n }\n >\n {(renderProps) => (\n <>\n {/* Checkbox indicator (the box) */}\n <div\n className={checkboxIndicatorVariants({\n variant,\n size,\n isInvalid: renderProps.isInvalid,\n })}\n data-selected={renderProps.isSelected || undefined}\n data-indeterminate={renderProps.isIndeterminate || undefined}\n >\n {renderIcon(renderProps.isSelected, renderProps.isIndeterminate)}\n </div>\n\n {/* Label and description */}\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <span className=\"font-medium text-[var(--content-foreground)]\">\n {label}\n </span>\n )}\n {description && (\n <span className=\"text-sm text-[var(--menu-muted)]\">\n {description}\n </span>\n )}\n </div>\n )}\n </>\n )}\n </AriaCheckbox>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport {\n Checkbox,\n checkboxContainerVariants,\n checkboxIndicatorVariants,\n checkmarkVariants,\n CheckmarkIcon,\n MinusIcon,\n};\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","/**\n * Checkbox Component Types\n * Standalone accessible checkbox with Zod schema validation\n *\n * @see React Aria Checkbox: https://react-spectrum.adobe.com/react-aria/Checkbox.html\n * @see constitution.md Principle II (Type Safety - Zod schema validation)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AAA)\n */\n\nimport { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { CheckboxProps as AriaCheckboxProps } from 'react-aria-components';\n\n/**\n * Checkbox size schema\n * All sizes maintain 44px minimum height for WCAG 2.2 AAA compliance\n */\nexport const CheckboxSizeSchema = z.enum(['sm', 'default', 'lg']);\nexport type CheckboxSize = z.infer<typeof CheckboxSizeSchema>;\n\n/**\n * Checkbox variant schema\n * 2 variants: default and destructive\n */\nexport const CheckboxVariantSchema = z.enum(['default', 'destructive']);\nexport type CheckboxVariant = z.infer<typeof CheckboxVariantSchema>;\n\n/**\n * Checkbox props schema extending BaseComponentProps\n *\n * Note: We use .optional() without .default() to allow the component to handle defaults.\n * This ensures compatibility with React Aria's type system and allows partial props.\n *\n * @see React Aria Checkbox: https://react-spectrum.adobe.com/react-aria/Checkbox.html\n * @see constitution.md Principle IV (Accessibility First)\n */\nexport const CheckboxPropsSchema = BaseComponentPropsSchema.extend({\n // State management (controlled/uncontrolled)\n isSelected: z.boolean().optional(),\n defaultSelected: z.boolean().optional(),\n onChange: z.custom<(isSelected: boolean) => void>().optional(),\n\n // Variants (matching Switch/Button pattern)\n variant: CheckboxVariantSchema.optional(),\n size: CheckboxSizeSchema.optional(),\n\n // States\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n isIndeterminate: z.boolean().optional(),\n isInvalid: z.boolean().optional(),\n isRequired: z.boolean().optional(),\n\n // Labels (optional built-in labeling)\n label: z.string().optional(),\n description: z.string().optional(),\n\n // Form integration\n value: z.string().optional(),\n name: z.string().optional(),\n\n // Custom icon\n selectedIcon: z.any().optional(), // ReactNode\n\n // React Aria slot integration (e.g., for Table)\n slot: z.string().optional(),\n\n // React Aria CheckboxProps integration\n onFocus: z.custom<() => void>().optional(),\n onBlur: z.custom<() => void>().optional(),\n onFocusChange: z.custom<(isFocused: boolean) => void>().optional(),\n autoFocus: z.boolean().optional(),\n});\n\nexport type CheckboxProps = z.infer<typeof CheckboxPropsSchema> &\n Omit<AriaCheckboxProps, keyof z.infer<typeof CheckboxPropsSchema>>;\n"]}
@@ -1,71 +1,3 @@
1
- 'use strict';
2
-
3
- var chunk34GTFTDO_js = require('../../chunk-34GTFTDO.js');
4
- require('../../chunk-B5Q4UPL6.js');
5
- require('../../chunk-VIREG536.js');
6
- require('../../chunk-T4COXKQ3.js');
7
-
8
-
9
-
10
- Object.defineProperty(exports, "Checkbox", {
11
- enumerable: true,
12
- get: function () { return chunk34GTFTDO_js.Checkbox; }
13
- });
14
- Object.defineProperty(exports, "CheckboxDescriptionPropsSchema", {
15
- enumerable: true,
16
- get: function () { return chunk34GTFTDO_js.CheckboxDescriptionPropsSchema; }
17
- });
18
- Object.defineProperty(exports, "CheckboxGroup", {
19
- enumerable: true,
20
- get: function () { return chunk34GTFTDO_js.CheckboxGroup; }
21
- });
22
- Object.defineProperty(exports, "CheckboxGroupOrientationSchema", {
23
- enumerable: true,
24
- get: function () { return chunk34GTFTDO_js.CheckboxGroupOrientationSchema; }
25
- });
26
- Object.defineProperty(exports, "CheckboxGroupPropsSchema", {
27
- enumerable: true,
28
- get: function () { return chunk34GTFTDO_js.CheckboxGroupPropsSchema; }
29
- });
30
- Object.defineProperty(exports, "CheckboxGroupSizeSchema", {
31
- enumerable: true,
32
- get: function () { return chunk34GTFTDO_js.CheckboxGroupSizeSchema; }
33
- });
34
- Object.defineProperty(exports, "CheckboxGroupVariantSchema", {
35
- enumerable: true,
36
- get: function () { return chunk34GTFTDO_js.CheckboxGroupVariantSchema; }
37
- });
38
- Object.defineProperty(exports, "CheckboxLabelPropsSchema", {
39
- enumerable: true,
40
- get: function () { return chunk34GTFTDO_js.CheckboxLabelPropsSchema; }
41
- });
42
- Object.defineProperty(exports, "CheckboxPropsSchema", {
43
- enumerable: true,
44
- get: function () { return chunk34GTFTDO_js.CheckboxPropsSchema; }
45
- });
46
- Object.defineProperty(exports, "CheckmarkIcon", {
47
- enumerable: true,
48
- get: function () { return chunk34GTFTDO_js.CheckmarkIcon; }
49
- });
50
- Object.defineProperty(exports, "TimesIcon", {
51
- enumerable: true,
52
- get: function () { return chunk34GTFTDO_js.TimesIcon; }
53
- });
54
- Object.defineProperty(exports, "checkboxGroupVariants", {
55
- enumerable: true,
56
- get: function () { return chunk34GTFTDO_js.checkboxGroupVariants; }
57
- });
58
- Object.defineProperty(exports, "checkboxIndicatorVariants", {
59
- enumerable: true,
60
- get: function () { return chunk34GTFTDO_js.checkboxIndicatorVariants; }
61
- });
62
- Object.defineProperty(exports, "checkboxItemVariants", {
63
- enumerable: true,
64
- get: function () { return chunk34GTFTDO_js.checkboxItemVariants; }
65
- });
66
- Object.defineProperty(exports, "checkmarkVariants", {
67
- enumerable: true,
68
- get: function () { return chunk34GTFTDO_js.checkmarkVariants; }
69
- });
70
- //# sourceMappingURL=index.js.map
1
+ "use client";
2
+ 'use strict';var zod=require('zod'),react=require('react'),reactAriaComponents=require('react-aria-components'),classVarianceAuthority=require('class-variance-authority'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');var P=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 T=zod.z.enum(["default","destructive"]),I=zod.z.enum(["sm","default","lg"]),O=zod.z.enum(["vertical","horizontal"]),se=P.extend({label:zod.z.string().optional(),description:zod.z.string().optional(),errorMessage:zod.z.string().optional(),value:zod.z.array(zod.z.string()).optional(),defaultValue:zod.z.array(zod.z.string()).optional(),isDisabled:zod.z.boolean().optional().default(false),isReadOnly:zod.z.boolean().optional().default(false),isRequired:zod.z.boolean().optional().default(false),isInvalid:zod.z.boolean().optional().default(false),orientation:O.optional().default("vertical"),variant:T.optional().default("default"),size:I.optional().default("default"),name:zod.z.string().optional(),onChange:zod.z.custom().optional(),onFocusChange:zod.z.custom().optional(),children:zod.z.custom()}),ne=P.extend({value:zod.z.string(),isDisabled:zod.z.boolean().optional().default(false),children:zod.z.custom(),className:zod.z.string().optional(),selectedIcon:zod.z.custom().optional()}),ce=zod.z.object({children:zod.z.custom(),className:zod.z.string().optional()}),le=zod.z.object({children:zod.z.custom(),className:zod.z.string().optional()});function d(...o){return tailwindMerge.twMerge(clsx.clsx(o))}var S="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2";var m="hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground";var A=react.createContext({variant:"default",size:"default",isInvalid:false,isDisabled:false,isReadOnly:false}),w=classVarianceAuthority.cva("flex",{variants:{orientation:{vertical:"flex-col gap-2",horizontal:"flex-row flex-wrap gap-2"}},defaultVariants:{orientation:"vertical"}}),$=classVarianceAuthority.cva(["flex items-center gap-3 rounded-md border cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",S,m].join(" "),{variants:{variant:{default:["border-[var(--border)]","data-[hovered]:bg-[var(--accent)]/10","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]/10"].join(" "),destructive:["border-[var(--border)]","data-[hovered]:bg-[var(--destructive)]/10","data-[selected]:border-[var(--destructive)]","data-[selected]:bg-[var(--destructive)]/10"].join(" ")},size:{sm:"min-h-[44px] py-2 px-3 text-sm",default:"min-h-[48px] py-3 px-4 text-sm",lg:"min-h-[56px] py-4 px-5 text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""},isReadOnly:{true:"cursor-default",false:""},isInvalid:{true:"border-[var(--destructive)]",false:""}},defaultVariants:{variant:"default",size:"default",isDisabled:false,isReadOnly:false,isInvalid:false}}),j=classVarianceAuthority.cva("flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive)]","data-[selected]:bg-[var(--destructive)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"}},defaultVariants:{variant:"default",size:"default"}}),H=classVarianceAuthority.cva(["transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100"].join(" "),{variants:{variant:{default:"text-[var(--primary-foreground)]",destructive:"text-[var(--destructive-foreground)]"},size:{sm:"h-3 w-3",default:"h-3.5 w-3.5",lg:"h-4 w-4"}},defaultVariants:{variant:"default",size:"default"}});function F({className:o,...t}){return jsxRuntime.jsx("svg",{className:o,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:jsxRuntime.jsx("polyline",{points:"20 6 9 17 4 12"})})}function Ne({className:o,...t}){return jsxRuntime.jsxs("svg",{className:o,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:[jsxRuntime.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntime.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}function B({children:o,className:t}){return jsxRuntime.jsx("span",{className:d("font-medium text-[var(--content-foreground)]",t),children:o})}B.displayName="Checkbox.Label";function Y({children:o,className:t}){return jsxRuntime.jsx("span",{className:d("text-sm text-[var(--menu-muted)]",t),children:o})}Y.displayName="Checkbox.Description";function Pe({value:o,isDisabled:t,children:n,className:p,selectedIcon:s}){let{variant:c,size:u,isInvalid:N,isDisabled:C,isReadOnly:k}=react.useContext(A),b=t||C,l=i=>{let h=d(H({variant:c,size:u})),x=i||void 0;if(s){if(react.isValidElement(s)){let v=s;return react.cloneElement(v,{className:d(h,v.props.className),"data-selected":x})}return jsxRuntime.jsx("span",{className:h,"data-selected":x,children:s})}return jsxRuntime.jsx(F,{className:h,"data-selected":x})};return jsxRuntime.jsx(reactAriaComponents.Checkbox,{value:o,isDisabled:b,className:i=>d($({variant:c,size:u,isDisabled:i.isDisabled,isReadOnly:k,isInvalid:N}),p),children:i=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:j({variant:c,size:u}),"data-selected":i.isSelected||void 0,children:l(i.isSelected)}),jsxRuntime.jsx("div",{className:"flex-1 flex flex-col",children:n})]})})}var U=Object.assign(Pe,{Label:B,Description:Y});U.displayName="Checkbox";function _(o,t){if(!o)return o;let n=[...new Set(o)];return process.env.NODE_ENV!=="production"&&n.length!==o.length&&console.warn(`[${t}] Received duplicate values in value/defaultValue prop. Original: [${o.join(", ")}], Deduplicated: [${n.join(", ")}]. Duplicate values are automatically removed.`),n}var q=react.forwardRef(function(t,n){let{label:p,description:s,errorMessage:c,value:u,defaultValue:N,isDisabled:C=false,isReadOnly:k=false,isRequired:b=false,isInvalid:l=false,orientation:i="vertical",variant:h="default",size:x="default",name:v,onChange:M,onFocusChange:W,className:J,children:K,id:Q,"aria-label":X,"aria-labelledby":Z,"aria-describedby":R,"data-testid":ee,...oe}=t,ae=react.useId(),y=Q??ae,D=`${y}-label`,V=`${y}-description`,E=`${y}-error`,f=[];R&&f.push(R),s&&f.push(V),l&&c&&f.push(E);let te=f.length>0?f.join(" "):void 0,re=_(u,"CheckboxGroup"),ie=_(N,"CheckboxGroup");return jsxRuntime.jsx(A.Provider,{value:{variant:h,size:x,isInvalid:l,isDisabled:C,isReadOnly:k},children:jsxRuntime.jsxs(reactAriaComponents.CheckboxGroup,{ref:n,id:y,name:v,value:re,defaultValue:ie,isDisabled:C,isReadOnly:k,isRequired:b,isInvalid:l,onChange:M,onFocusChange:W,"aria-label":X,"aria-labelledby":p?D:Z,"aria-describedby":te,"aria-orientation":i,"aria-required":b||void 0,"aria-invalid":l||void 0,"data-testid":ee,className:d("flex flex-col gap-1.5",J),...oe,children:[p&&jsxRuntime.jsxs(reactAriaComponents.Label,{id:D,className:"text-sm font-medium text-[var(--content-foreground)]",children:[p,b&&jsxRuntime.jsx("span",{className:"ml-1 text-[var(--destructive)]","aria-hidden":"true",children:"*"})]}),s&&jsxRuntime.jsx(reactAriaComponents.Text,{id:V,slot:"description",className:"text-sm text-[var(--menu-muted)]",children:s}),jsxRuntime.jsx("div",{className:w({orientation:i}),children:K}),l&&c&&jsxRuntime.jsx(reactAriaComponents.FieldError,{id:E,className:"text-sm text-[var(--destructive)]",children:jsxRuntime.jsx("span",{role:"alert",children:c})})]})})});q.displayName="CheckboxGroup";exports.Checkbox=U;exports.CheckboxDescriptionPropsSchema=le;exports.CheckboxGroup=q;exports.CheckboxGroupOrientationSchema=O;exports.CheckboxGroupPropsSchema=se;exports.CheckboxGroupSizeSchema=I;exports.CheckboxGroupVariantSchema=T;exports.CheckboxLabelPropsSchema=ce;exports.CheckboxPropsSchema=ne;exports.CheckmarkIcon=F;exports.TimesIcon=Ne;exports.checkboxGroupVariants=w;exports.checkboxIndicatorVariants=j;exports.checkboxItemVariants=$;exports.checkmarkVariants=H;//# sourceMappingURL=index.js.map
71
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/schemas/BaseComponentProps.ts","../../../src/elements/CheckboxGroup/CheckboxGroup.types.ts","../../../src/utils/cn.ts","../../../src/styles/interaction-states.ts","../../../src/elements/CheckboxGroup/CheckboxGroup.tsx"],"names":["BaseComponentPropsSchema","z","CheckboxGroupVariantSchema","CheckboxGroupSizeSchema","CheckboxGroupOrientationSchema","CheckboxGroupPropsSchema","CheckboxPropsSchema","CheckboxLabelPropsSchema","CheckboxDescriptionPropsSchema","cn","inputs","twMerge","clsx","FOCUS_STYLES","HIGH_CONTRAST_FOCUS","CheckboxGroupContext","createContext","checkboxGroupVariants","cva","checkboxItemVariants","checkboxIndicatorVariants","checkmarkVariants","CheckmarkIcon","className","props","jsx","TimesIcon","jsxs","CheckboxLabel","children","CheckboxDescription","CheckboxComponent","value","isDisabled","selectedIcon","variant","size","isInvalid","groupDisabled","isReadOnly","useContext","effectiveDisabled","renderSelectedIcon","isSelected","iconClassName","dataSelected","isValidElement","iconElement","cloneElement","AriaCheckbox","renderProps","Fragment","Checkbox","dedupeWithWarning","values","componentName","uniqueValues","CheckboxGroup","forwardRef","ref","label","description","errorMessage","defaultValue","isRequired","orientation","name","onChange","onFocusChange","id","ariaLabel","ariaLabelledby","ariaDescribedby","dataTestId","restProps","generatedId","useId","checkboxGroupId","labelId","descriptionId","errorId","describedByParts","computedAriaDescribedBy","dedupedValue","dedupedDefaultValue","AriaCheckboxGroup","Label","Text","FieldError"],"mappings":"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","file":"index.js","sourcesContent":["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 {\n CheckboxGroupProps as AriaCheckboxGroupProps,\n CheckboxProps as AriaCheckboxProps,\n} from 'react-aria-components';\n\n/**\n * CheckboxGroup variant schema\n * Only 2 variants: default and destructive (matching RadioGroup)\n *\n * @see checkboxgroup-prd.md US-2 (Style Variants)\n */\nexport const CheckboxGroupVariantSchema = z.enum(['default', 'destructive']);\nexport type CheckboxGroupVariant = z.infer<typeof CheckboxGroupVariantSchema>;\n\n/**\n * CheckboxGroup size schema\n * All sizes maintain 44px minimum height for WCAG 2.2 AAA compliance\n *\n * @see checkboxgroup-prd.md US-3 (Size Variants)\n * @see constitution.md Principle IV (Accessibility First)\n */\nexport const CheckboxGroupSizeSchema = z.enum(['sm', 'default', 'lg']);\nexport type CheckboxGroupSize = z.infer<typeof CheckboxGroupSizeSchema>;\n\n/**\n * CheckboxGroup orientation schema\n *\n * @see checkboxgroup-prd.md US-5 (Orientation Support)\n */\nexport const CheckboxGroupOrientationSchema = z.enum(['vertical', 'horizontal']);\nexport type CheckboxGroupOrientation = z.infer<typeof CheckboxGroupOrientationSchema>;\n\n/**\n * CheckboxGroup root component props schema\n *\n * Key difference from RadioGroup: value is string[] (multi-select)\n *\n * @see checkboxgroup-prd.md US-1 (Basic Multi-Selection)\n * @see checkboxgroup-prd.md US-4 (Labels, Descriptions, Errors)\n * @see checkboxgroup-prd.md US-6 (Validation States)\n */\nexport const CheckboxGroupPropsSchema = BaseComponentPropsSchema.extend({\n // Display props (US-4)\n label: z.string().optional(),\n description: z.string().optional(),\n errorMessage: z.string().optional(),\n\n // Selection props (US-1) - array for multi-select (key difference from RadioGroup)\n value: z.array(z.string()).optional(),\n defaultValue: z.array(z.string()).optional(),\n\n // State props (US-6)\n isDisabled: z.boolean().optional().default(false),\n isReadOnly: z.boolean().optional().default(false),\n isRequired: z.boolean().optional().default(false),\n isInvalid: z.boolean().optional().default(false),\n\n // Layout props (US-5)\n orientation: CheckboxGroupOrientationSchema.optional().default('vertical'),\n\n // Variant props (US-2, US-3)\n variant: CheckboxGroupVariantSchema.optional().default('default'),\n size: CheckboxGroupSizeSchema.optional().default('default'),\n\n // Form props (US-6)\n name: z.string().optional(),\n\n // Event handlers\n onChange: z.custom<(value: string[]) => void>().optional(),\n onFocusChange: z.custom<(isFocused: boolean) => void>().optional(),\n\n // Children (Checkbox components)\n children: z.custom<ReactNode>(),\n});\n\nexport type CheckboxGroupProps = z.infer<typeof CheckboxGroupPropsSchema> &\n Omit<AriaCheckboxGroupProps, keyof z.infer<typeof CheckboxGroupPropsSchema>>;\n\n/**\n * Checkbox item component props schema\n *\n * @see checkboxgroup-prd.md US-1 (Basic Multi-Selection)\n * @see checkboxgroup-prd.md US-7 (Rich Content Support)\n */\nexport const CheckboxPropsSchema = BaseComponentPropsSchema.extend({\n // Item value (required)\n value: z.string(),\n\n // Disabled state (individual item)\n isDisabled: z.boolean().optional().default(false),\n\n // Item content - accepts any ReactNode for flexible children\n children: z.custom<ReactNode>(),\n\n // Optional className for custom styling\n className: z.string().optional(),\n\n // Custom icon to display when selected (defaults to checkmark)\n // Useful for destructive variants where an X icon may be more appropriate\n selectedIcon: z.custom<ReactNode>().optional(),\n});\n\nexport type CheckboxProps = z.infer<typeof CheckboxPropsSchema> &\n Omit<AriaCheckboxProps, keyof z.infer<typeof CheckboxPropsSchema>>;\n\n/**\n * Checkbox.Label sub-component props schema\n * Helper component for styled label within Checkbox item\n *\n * @see checkboxgroup-prd.md US-7 (Rich Content Support)\n */\nexport const CheckboxLabelPropsSchema = z.object({\n // Label content\n children: z.custom<ReactNode>(),\n\n // Optional className for custom styling\n className: z.string().optional(),\n});\n\nexport type CheckboxLabelProps = z.infer<typeof CheckboxLabelPropsSchema>;\n\n/**\n * Checkbox.Description sub-component props schema\n * Helper component for styled description within Checkbox item (muted text)\n *\n * @see checkboxgroup-prd.md US-7 (Rich Content Support)\n */\nexport const CheckboxDescriptionPropsSchema = z.object({\n // Description content\n children: z.custom<ReactNode>(),\n\n // Optional className for custom styling\n className: z.string().optional(),\n});\n\nexport type CheckboxDescriptionProps = z.infer<typeof CheckboxDescriptionPropsSchema>;\n\n/**\n * CVA variant configuration types\n * Used for class-variance-authority integration\n */\nexport type CheckboxGroupVariantType = CheckboxGroupVariant;\nexport type CheckboxGroupSizeType = CheckboxGroupSize;\nexport type CheckboxGroupOrientationType = CheckboxGroupOrientation;\n","/**\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","/**\n * Global Interaction State Styles\n *\n * Consistent interaction patterns across all Themis components.\n * These styles ensure WCAG 2.2 AAA compliance and predictable UX.\n *\n * @see spec.md FR-010 (Visible focus ring for keyboard navigation)\n * @see spec.md FR-031 (Pressed state feedback)\n * @see spec.md FR-012 (High contrast mode support)\n * @see constitution.md Principle IV (Accessibility First)\n */\n\n/**\n * Focus state styles (FR-010)\n * Visible focus ring for keyboard navigation - WCAG 2.2 Level AAA\n *\n * Components can override by extending these styles:\n * @example\n * cn(FOCUS_STYLES, \"ring-4\") // Increases ring width to 4px\n */\nexport const FOCUS_STYLES = \"data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2\";\n\n/**\n * Pressed/Active state styles (FR-031)\n * Visual feedback for press interactions\n *\n * Components can override the scale amount:\n * @example\n * cn(PRESSED_STYLES_BASE, \"data-[pressed]:scale-[0.95]\") // More pronounced scale\n */\nexport const PRESSED_STYLES = \"data-[pressed]:scale-[0.97]\";\n\n/**\n * Base pressed styles without scale (for components that need different feedback)\n */\nexport const PRESSED_STYLES_BASE = \"data-[pressed]:transition-transform data-[pressed]:duration-100\";\n\n/**\n * Hover state styles\n * Elevation change on hover for better affordance\n *\n * Components can override shadow depth:\n * @example\n * cn(HOVER_STYLES_BASE, \"data-[hovered]:shadow-lg\") // Larger shadow\n */\nexport const HOVER_STYLES = \"data-[hovered]:shadow-md\";\n\n/**\n * Base hover styles without shadow (for components that use different hover effects)\n */\nexport const HOVER_STYLES_BASE = \"data-[hovered]:transition-shadow data-[hovered]:duration-200\";\n\n/**\n * High contrast mode focus (FR-012)\n * Enhanced outlines for users requiring high contrast\n *\n * Uses 'hc:' prefix for prefers-contrast: more media query\n */\nexport const HIGH_CONTRAST_FOCUS = \"hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground\";\n\n/**\n * High contrast mode hover (FR-012)\n * Enhanced outlines for hover in high contrast mode\n */\nexport const HIGH_CONTRAST_HOVER = \"hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground\";\n\n/**\n * High contrast mode pressed state\n * Enhanced outlines for pressed state in high contrast mode\n */\nexport const HIGH_CONTRAST_PRESSED = \"hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground\";\n\n/**\n * Combined high contrast styles\n * Use this for components that need all high contrast interaction states\n */\nexport const HIGH_CONTRAST_INTERACTIONS = `${HIGH_CONTRAST_FOCUS} ${HIGH_CONTRAST_HOVER} ${HIGH_CONTRAST_PRESSED}`;\n\n/**\n * Disabled state styles\n * Consistent disabled appearance across all components\n */\nexport const DISABLED_STYLES = \"disabled:pointer-events-none disabled:opacity-50\";\n\n/**\n * Default interaction bundle\n * Most common combination for interactive components\n *\n * Includes: focus ring, pressed scale, hover shadow, high contrast enhancements\n *\n * @example\n * <button className={cn(DEFAULT_INTERACTIONS, \"bg-primary\")}>Click</button>\n */\nexport const DEFAULT_INTERACTIONS = `${FOCUS_STYLES} ${PRESSED_STYLES} ${HOVER_STYLES} ${HIGH_CONTRAST_FOCUS} ${HIGH_CONTRAST_HOVER} ${HIGH_CONTRAST_PRESSED}`;\n\n/**\n * Subtle interaction bundle\n * For components that need less pronounced feedback\n *\n * Includes: focus ring and high contrast, but no hover shadow or pressed scale\n */\nexport const SUBTLE_INTERACTIONS = `${FOCUS_STYLES} ${HIGH_CONTRAST_FOCUS}`;\n\n/**\n * Non-interactive element styles\n * For elements that should indicate they are not interactive\n */\nexport const NON_INTERACTIVE = \"cursor-default select-none\";\n","\"use client\";\n\n/**\n * CheckboxGroup Component\n * Accessible multi-selection checkbox group with React Aria primitives and CVA styling\n *\n * Key Features:\n * - Bordered container design with explicit 44px+ touch targets\n * - 2 variants: default, destructive (no outline per clarification)\n * - 3 sizes: sm (44px), default (48px), lg (56px)\n * - Tab moves focus between checkboxes, Space toggles (standard checkbox behavior)\n * - Error styling on ALL items (cognitive accessibility)\n * - Spring animation for checkmark indicator\n * - RTL support (indicator auto-flips)\n * - Checkbox.Label and Checkbox.Description sub-components\n * - value: string[] for multi-select (key difference from RadioGroup)\n *\n * @see checkboxgroup-prd.md (Product Requirements)\n * @see plan.md (12 Key Clarifications)\n * @see React Aria CheckboxGroup: https://react-spectrum.adobe.com/react-aria/CheckboxGroup.html\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AAA)\n */\n\nimport {\n forwardRef,\n createContext,\n useContext,\n useId,\n cloneElement,\n isValidElement,\n type ReactNode,\n type ForwardedRef,\n type ReactElement,\n} from 'react';\nimport {\n CheckboxGroup as AriaCheckboxGroup,\n Checkbox as AriaCheckbox,\n Label,\n Text,\n FieldError,\n} from 'react-aria-components';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { FOCUS_STYLES, HIGH_CONTRAST_FOCUS } from '../../styles/interaction-states';\nimport type {\n CheckboxGroupProps,\n CheckboxProps,\n CheckboxLabelProps,\n CheckboxDescriptionProps,\n CheckboxGroupVariant,\n CheckboxGroupSize,\n} from './CheckboxGroup.types';\n\n// ============================================================================\n// Context\n// ============================================================================\n\n/**\n * CheckboxGroup context value\n * Includes isDisabled and isReadOnly per clarification (plan.md #10)\n */\ninterface CheckboxGroupContextValue {\n variant: CheckboxGroupVariant;\n size: CheckboxGroupSize;\n isInvalid: boolean;\n isDisabled: boolean;\n isReadOnly: boolean;\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupContextValue>({\n variant: 'default',\n size: 'default',\n isInvalid: false,\n isDisabled: false,\n isReadOnly: false,\n});\n\n// ============================================================================\n// CVA Variants\n// ============================================================================\n\n/**\n * CheckboxGroup container variants\n * Controls orientation and spacing (gap-2 = 8px per clarification)\n */\nconst checkboxGroupVariants = cva(\n // Base: flex container\n \"flex\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col gap-2\",\n horizontal: \"flex-row flex-wrap gap-2\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n);\n\n/**\n * Checkbox item bordered container variants\n * Bordered container design with explicit touch targets\n * All sizes maintain 44px minimum height (WCAG 2.2 AAA)\n * All sizes use rounded-md (6px) per clarification\n */\nconst checkboxItemVariants = cva(\n // Base: bordered container with flex layout, RTL support\n [\n \"flex items-center gap-3 rounded-md border cursor-pointer\",\n \"transition-colors duration-200\",\n \"rtl:flex-row-reverse\", // RTL: indicator flips to right\n // Focus ring on entire container\n FOCUS_STYLES,\n HIGH_CONTRAST_FOCUS,\n ].join(\" \"),\n {\n variants: {\n variant: {\n default: [\n \"border-[var(--border)]\",\n \"data-[hovered]:bg-[var(--accent)]/10\",\n \"data-[selected]:border-[var(--primary)]\",\n \"data-[selected]:bg-[var(--primary)]/10\",\n ].join(\" \"),\n destructive: [\n \"border-[var(--border)]\",\n \"data-[hovered]:bg-[var(--destructive)]/10\",\n \"data-[selected]:border-[var(--destructive)]\",\n \"data-[selected]:bg-[var(--destructive)]/10\",\n ].join(\" \"),\n },\n size: {\n sm: \"min-h-[44px] py-2 px-3 text-sm\",\n default: \"min-h-[48px] py-3 px-4 text-sm\",\n lg: \"min-h-[56px] py-4 px-5 text-base\",\n },\n isDisabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n isReadOnly: {\n // Subtle visual cue per clarification\n true: \"cursor-default\",\n false: \"\",\n },\n isInvalid: {\n // Error: ALL items get destructive border (cognitive accessibility)\n true: \"border-[var(--destructive)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n isDisabled: false,\n isReadOnly: false,\n isInvalid: false,\n },\n }\n);\n\n/**\n * Square indicator (checkbox box) variants\n * Uses rounded-sm (2px) for square appearance (unlike RadioGroup's circle)\n */\nconst checkboxIndicatorVariants = cva(\n // Base: square with border, flex-shrink-0 to prevent squishing\n \"flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200\",\n {\n variants: {\n variant: {\n default: [\n \"border-[var(--border)]\",\n \"data-[selected]:border-[var(--primary)]\",\n \"data-[selected]:bg-[var(--primary)]\",\n ].join(\" \"),\n destructive: [\n \"border-[var(--border)]\",\n \"data-[selected]:border-[var(--destructive)]\",\n \"data-[selected]:bg-[var(--destructive)]\",\n ].join(\" \"),\n },\n size: {\n sm: \"h-4 w-4\",\n default: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n/**\n * Checkmark SVG variants\n * Spring animation: cubic-bezier(0.34, 1.56, 0.64, 1) with slight overshoot\n */\nconst checkmarkVariants = cva(\n // Base: centered checkmark with spring animation\n [\n \"transition-transform duration-200\",\n // Spring animation with overshoot\n \"[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]\",\n // Respect reduced motion preference\n \"motion-reduce:transition-none\",\n // Scale from 0 to 1 on selection\n \"scale-0 data-[selected]:scale-100\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n default: \"text-[var(--primary-foreground)]\",\n destructive: \"text-[var(--destructive-foreground)]\",\n },\n size: {\n sm: \"h-3 w-3\",\n default: \"h-3.5 w-3.5\",\n lg: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n// ============================================================================\n// Icon Components\n// ============================================================================\n\n/**\n * Checkmark SVG icon (default)\n * Used inside the checkbox indicator when selected\n */\nfunction CheckmarkIcon({ className, ...props }: { className?: string; 'data-selected'?: boolean }): ReactNode {\n return (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\n/**\n * Times (X) SVG icon\n * Alternative icon for destructive or exclusion selections\n * @example <Checkbox value=\"exclude\" selectedIcon={<TimesIcon />}>Exclude this item</Checkbox>\n */\nfunction TimesIcon({ className, ...props }: { className?: string; 'data-selected'?: boolean }): ReactNode {\n return (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\n// ============================================================================\n// Sub-components\n// ============================================================================\n\n/**\n * Checkbox.Label - Styled label for checkbox item content\n */\nfunction CheckboxLabel({ children, className }: CheckboxLabelProps): ReactNode {\n return (\n <span className={cn(\"font-medium text-[var(--content-foreground)]\", className)}>\n {children}\n </span>\n );\n}\n\nCheckboxLabel.displayName = \"Checkbox.Label\";\n\n/**\n * Checkbox.Description - Styled description for checkbox item content (muted)\n */\nfunction CheckboxDescription({ children, className }: CheckboxDescriptionProps): ReactNode {\n return (\n <span className={cn(\"text-sm text-[var(--menu-muted)]\", className)}>\n {children}\n </span>\n );\n}\n\nCheckboxDescription.displayName = \"Checkbox.Description\";\n\n// ============================================================================\n// Checkbox Component\n// ============================================================================\n\n/**\n * Checkbox item component with bordered container design\n */\nfunction CheckboxComponent({ value, isDisabled, children, className, selectedIcon }: CheckboxProps): ReactNode {\n const { variant, size, isInvalid, isDisabled: groupDisabled, isReadOnly } = useContext(CheckboxGroupContext);\n\n // Individual isDisabled OR group isDisabled\n const effectiveDisabled = isDisabled || groupDisabled;\n\n // Render the selected icon - use custom icon if provided, otherwise default CheckmarkIcon\n const renderSelectedIcon = (isSelected: boolean) => {\n const iconClassName = cn(checkmarkVariants({ variant, size }));\n const dataSelected = isSelected || undefined;\n\n if (selectedIcon) {\n // Clone the custom icon element to add our styling classes\n if (isValidElement(selectedIcon)) {\n const iconElement = selectedIcon as ReactElement<{ className?: string; 'data-selected'?: boolean }>;\n return cloneElement(iconElement, {\n className: cn(iconClassName, iconElement.props.className),\n 'data-selected': dataSelected,\n });\n }\n // If it's not a valid element (e.g., just text), wrap it\n return <span className={iconClassName} data-selected={dataSelected}>{selectedIcon}</span>;\n }\n\n // Default: CheckmarkIcon\n return (\n <CheckmarkIcon\n className={iconClassName}\n data-selected={dataSelected}\n />\n );\n };\n\n return (\n <AriaCheckbox\n value={value}\n isDisabled={effectiveDisabled}\n className={(renderProps) =>\n cn(\n checkboxItemVariants({\n variant,\n size,\n isDisabled: renderProps.isDisabled,\n isReadOnly,\n isInvalid,\n }),\n className\n )\n }\n >\n {(renderProps) => (\n <>\n {/* Square indicator */}\n <div\n className={checkboxIndicatorVariants({ variant, size })}\n data-selected={renderProps.isSelected || undefined}\n >\n {/* Icon with spring animation */}\n {renderSelectedIcon(renderProps.isSelected)}\n </div>\n\n {/* Children content (flexible - text, icons, complex layouts) */}\n <div className=\"flex-1 flex flex-col\">\n {children}\n </div>\n </>\n )}\n </AriaCheckbox>\n );\n}\n\n// Attach sub-components\nconst Checkbox = Object.assign(CheckboxComponent, {\n Label: CheckboxLabel,\n Description: CheckboxDescription,\n}) as typeof CheckboxComponent & {\n Label: typeof CheckboxLabel;\n Description: typeof CheckboxDescription;\n displayName: string;\n};\n\nCheckbox.displayName = \"Checkbox\";\n\n// ============================================================================\n// Duplicate Value Warning\n// ============================================================================\n\n/**\n * Deduplicates array and warns in development mode\n * Per clarification: dedupe internally + console.warn in development\n */\nfunction dedupeWithWarning(values: string[] | undefined, componentName: string): string[] | undefined {\n if (!values) return values;\n\n const uniqueValues = [...new Set(values)];\n\n if (process.env.NODE_ENV !== 'production' && uniqueValues.length !== values.length) {\n console.warn(\n `[${componentName}] Received duplicate values in value/defaultValue prop. ` +\n `Original: [${values.join(', ')}], Deduplicated: [${uniqueValues.join(', ')}]. ` +\n `Duplicate values are automatically removed.`\n );\n }\n\n return uniqueValues;\n}\n\n// ============================================================================\n// CheckboxGroup Component\n// ============================================================================\n\n/**\n * CheckboxGroup root component\n * Accessible multi-selection control with bordered container design\n */\nconst CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(\n function CheckboxGroup(props: CheckboxGroupProps, ref: ForwardedRef<HTMLDivElement>) {\n const {\n // Display props\n label,\n description,\n errorMessage,\n // Selection props (string[] for multi-select)\n value,\n defaultValue,\n // State props\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n isInvalid = false,\n // Layout props\n orientation = 'vertical',\n // Variant props\n variant = 'default',\n size = 'default',\n // Form props\n name,\n // Event handlers\n onChange,\n onFocusChange,\n // Standard props\n className,\n children,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'data-testid': dataTestId,\n ...restProps\n } = props;\n\n // Generate unique IDs for accessibility\n const generatedId = useId();\n const checkboxGroupId = id ?? generatedId;\n const labelId = `${checkboxGroupId}-label`;\n const descriptionId = `${checkboxGroupId}-description`;\n const errorId = `${checkboxGroupId}-error`;\n\n // Build aria-describedby from description and error\n const describedByParts: string[] = [];\n if (ariaDescribedby) describedByParts.push(ariaDescribedby);\n if (description) describedByParts.push(descriptionId);\n if (isInvalid && errorMessage) describedByParts.push(errorId);\n const computedAriaDescribedBy = describedByParts.length > 0\n ? describedByParts.join(' ')\n : undefined;\n\n // Dedupe values with warning in development\n const dedupedValue = dedupeWithWarning(value, 'CheckboxGroup');\n const dedupedDefaultValue = dedupeWithWarning(defaultValue, 'CheckboxGroup');\n\n return (\n <CheckboxGroupContext.Provider value={{ variant, size, isInvalid, isDisabled, isReadOnly }}>\n <AriaCheckboxGroup\n ref={ref}\n id={checkboxGroupId}\n name={name}\n value={dedupedValue}\n defaultValue={dedupedDefaultValue}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isRequired={isRequired}\n isInvalid={isInvalid}\n onChange={onChange}\n onFocusChange={onFocusChange}\n aria-label={ariaLabel}\n aria-labelledby={label ? labelId : ariaLabelledby}\n aria-describedby={computedAriaDescribedBy}\n aria-orientation={orientation}\n aria-required={isRequired || undefined}\n aria-invalid={isInvalid || undefined}\n data-testid={dataTestId}\n className={cn(\"flex flex-col gap-1.5\", className)}\n {...restProps}\n >\n {/* Label with optional required asterisk */}\n {label && (\n <Label id={labelId} className=\"text-sm font-medium text-[var(--content-foreground)]\">\n {label}\n {isRequired && (\n <span className=\"ml-1 text-[var(--destructive)]\" aria-hidden=\"true\">\n *\n </span>\n )}\n </Label>\n )}\n\n {/* Description */}\n {description && (\n <Text\n id={descriptionId}\n slot=\"description\"\n className=\"text-sm text-[var(--menu-muted)]\"\n >\n {description}\n </Text>\n )}\n\n {/* Checkbox items container with orientation */}\n <div className={checkboxGroupVariants({ orientation })}>\n {children}\n </div>\n\n {/* Error message with role=\"alert\" for screen reader announcements */}\n {isInvalid && errorMessage && (\n <FieldError\n id={errorId}\n className=\"text-sm text-[var(--destructive)]\"\n >\n <span role=\"alert\">{errorMessage}</span>\n </FieldError>\n )}\n </AriaCheckboxGroup>\n </CheckboxGroupContext.Provider>\n );\n }\n);\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport {\n CheckboxGroup,\n Checkbox,\n checkboxGroupVariants,\n checkboxItemVariants,\n checkboxIndicatorVariants,\n checkmarkVariants,\n // Icon exports for custom selectedIcon usage\n CheckmarkIcon,\n TimesIcon,\n};\n"]}
@@ -1,6 +1,3 @@
1
- export { Checkbox, CheckboxDescriptionPropsSchema, CheckboxGroup, CheckboxGroupOrientationSchema, CheckboxGroupPropsSchema, CheckboxGroupSizeSchema, CheckboxGroupVariantSchema, CheckboxLabelPropsSchema, CheckboxPropsSchema, CheckmarkIcon, TimesIcon, checkboxGroupVariants, checkboxIndicatorVariants, checkboxItemVariants, checkmarkVariants } from '../../chunk-4S33J5NY.mjs';
2
- import '../../chunk-HK46BT5U.mjs';
3
- import '../../chunk-E2KQFV3O.mjs';
4
- import '../../chunk-5SVLJN2C.mjs';
5
- //# sourceMappingURL=index.mjs.map
1
+ "use client";
2
+ import {z}from'zod';import {createContext,forwardRef,useId,useContext,isValidElement,cloneElement}from'react';import {CheckboxGroup,Label,Text,FieldError,Checkbox}from'react-aria-components';import {cva}from'class-variance-authority';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var P=z.object({className:z.string().optional(),children:z.any().optional(),id:z.string().optional(),"aria-label":z.string().optional(),"aria-labelledby":z.string().optional(),"aria-describedby":z.string().optional(),"aria-live":z.enum(["off","polite","assertive"]).optional(),"aria-hidden":z.boolean().optional(),"data-testid":z.string().optional()});var T=z.enum(["default","destructive"]),I=z.enum(["sm","default","lg"]),O=z.enum(["vertical","horizontal"]),se=P.extend({label:z.string().optional(),description:z.string().optional(),errorMessage:z.string().optional(),value:z.array(z.string()).optional(),defaultValue:z.array(z.string()).optional(),isDisabled:z.boolean().optional().default(false),isReadOnly:z.boolean().optional().default(false),isRequired:z.boolean().optional().default(false),isInvalid:z.boolean().optional().default(false),orientation:O.optional().default("vertical"),variant:T.optional().default("default"),size:I.optional().default("default"),name:z.string().optional(),onChange:z.custom().optional(),onFocusChange:z.custom().optional(),children:z.custom()}),ne=P.extend({value:z.string(),isDisabled:z.boolean().optional().default(false),children:z.custom(),className:z.string().optional(),selectedIcon:z.custom().optional()}),ce=z.object({children:z.custom(),className:z.string().optional()}),le=z.object({children:z.custom(),className:z.string().optional()});function d(...o){return twMerge(clsx(o))}var S="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2";var m="hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground";var A=createContext({variant:"default",size:"default",isInvalid:false,isDisabled:false,isReadOnly:false}),w=cva("flex",{variants:{orientation:{vertical:"flex-col gap-2",horizontal:"flex-row flex-wrap gap-2"}},defaultVariants:{orientation:"vertical"}}),$=cva(["flex items-center gap-3 rounded-md border cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",S,m].join(" "),{variants:{variant:{default:["border-[var(--border)]","data-[hovered]:bg-[var(--accent)]/10","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]/10"].join(" "),destructive:["border-[var(--border)]","data-[hovered]:bg-[var(--destructive)]/10","data-[selected]:border-[var(--destructive)]","data-[selected]:bg-[var(--destructive)]/10"].join(" ")},size:{sm:"min-h-[44px] py-2 px-3 text-sm",default:"min-h-[48px] py-3 px-4 text-sm",lg:"min-h-[56px] py-4 px-5 text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""},isReadOnly:{true:"cursor-default",false:""},isInvalid:{true:"border-[var(--destructive)]",false:""}},defaultVariants:{variant:"default",size:"default",isDisabled:false,isReadOnly:false,isInvalid:false}}),j=cva("flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive)]","data-[selected]:bg-[var(--destructive)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"}},defaultVariants:{variant:"default",size:"default"}}),H=cva(["transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100"].join(" "),{variants:{variant:{default:"text-[var(--primary-foreground)]",destructive:"text-[var(--destructive-foreground)]"},size:{sm:"h-3 w-3",default:"h-3.5 w-3.5",lg:"h-4 w-4"}},defaultVariants:{variant:"default",size:"default"}});function F({className:o,...t}){return jsx("svg",{className:o,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:jsx("polyline",{points:"20 6 9 17 4 12"})})}function Ne({className:o,...t}){return jsxs("svg",{className:o,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:[jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}function B({children:o,className:t}){return jsx("span",{className:d("font-medium text-[var(--content-foreground)]",t),children:o})}B.displayName="Checkbox.Label";function Y({children:o,className:t}){return jsx("span",{className:d("text-sm text-[var(--menu-muted)]",t),children:o})}Y.displayName="Checkbox.Description";function Pe({value:o,isDisabled:t,children:n,className:p,selectedIcon:s}){let{variant:c,size:u,isInvalid:N,isDisabled:C,isReadOnly:k}=useContext(A),b=t||C,l=i=>{let h=d(H({variant:c,size:u})),x=i||void 0;if(s){if(isValidElement(s)){let v=s;return cloneElement(v,{className:d(h,v.props.className),"data-selected":x})}return jsx("span",{className:h,"data-selected":x,children:s})}return jsx(F,{className:h,"data-selected":x})};return jsx(Checkbox,{value:o,isDisabled:b,className:i=>d($({variant:c,size:u,isDisabled:i.isDisabled,isReadOnly:k,isInvalid:N}),p),children:i=>jsxs(Fragment,{children:[jsx("div",{className:j({variant:c,size:u}),"data-selected":i.isSelected||void 0,children:l(i.isSelected)}),jsx("div",{className:"flex-1 flex flex-col",children:n})]})})}var U=Object.assign(Pe,{Label:B,Description:Y});U.displayName="Checkbox";function _(o,t){if(!o)return o;let n=[...new Set(o)];return process.env.NODE_ENV!=="production"&&n.length!==o.length&&console.warn(`[${t}] Received duplicate values in value/defaultValue prop. Original: [${o.join(", ")}], Deduplicated: [${n.join(", ")}]. Duplicate values are automatically removed.`),n}var q=forwardRef(function(t,n){let{label:p,description:s,errorMessage:c,value:u,defaultValue:N,isDisabled:C=false,isReadOnly:k=false,isRequired:b=false,isInvalid:l=false,orientation:i="vertical",variant:h="default",size:x="default",name:v,onChange:M,onFocusChange:W,className:J,children:K,id:Q,"aria-label":X,"aria-labelledby":Z,"aria-describedby":R,"data-testid":ee,...oe}=t,ae=useId(),y=Q??ae,D=`${y}-label`,V=`${y}-description`,E=`${y}-error`,f=[];R&&f.push(R),s&&f.push(V),l&&c&&f.push(E);let te=f.length>0?f.join(" "):void 0,re=_(u,"CheckboxGroup"),ie=_(N,"CheckboxGroup");return jsx(A.Provider,{value:{variant:h,size:x,isInvalid:l,isDisabled:C,isReadOnly:k},children:jsxs(CheckboxGroup,{ref:n,id:y,name:v,value:re,defaultValue:ie,isDisabled:C,isReadOnly:k,isRequired:b,isInvalid:l,onChange:M,onFocusChange:W,"aria-label":X,"aria-labelledby":p?D:Z,"aria-describedby":te,"aria-orientation":i,"aria-required":b||void 0,"aria-invalid":l||void 0,"data-testid":ee,className:d("flex flex-col gap-1.5",J),...oe,children:[p&&jsxs(Label,{id:D,className:"text-sm font-medium text-[var(--content-foreground)]",children:[p,b&&jsx("span",{className:"ml-1 text-[var(--destructive)]","aria-hidden":"true",children:"*"})]}),s&&jsx(Text,{id:V,slot:"description",className:"text-sm text-[var(--menu-muted)]",children:s}),jsx("div",{className:w({orientation:i}),children:K}),l&&c&&jsx(FieldError,{id:E,className:"text-sm text-[var(--destructive)]",children:jsx("span",{role:"alert",children:c})})]})})});q.displayName="CheckboxGroup";export{U as Checkbox,le as CheckboxDescriptionPropsSchema,q as CheckboxGroup,O as CheckboxGroupOrientationSchema,se as CheckboxGroupPropsSchema,I as CheckboxGroupSizeSchema,T as CheckboxGroupVariantSchema,ce as CheckboxLabelPropsSchema,ne as CheckboxPropsSchema,F as CheckmarkIcon,Ne as TimesIcon,w as checkboxGroupVariants,j as checkboxIndicatorVariants,$ as checkboxItemVariants,H as checkmarkVariants};//# sourceMappingURL=index.mjs.map
6
3
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
1
+ {"version":3,"sources":["../../../src/schemas/BaseComponentProps.ts","../../../src/elements/CheckboxGroup/CheckboxGroup.types.ts","../../../src/utils/cn.ts","../../../src/styles/interaction-states.ts","../../../src/elements/CheckboxGroup/CheckboxGroup.tsx"],"names":["BaseComponentPropsSchema","z","CheckboxGroupVariantSchema","CheckboxGroupSizeSchema","CheckboxGroupOrientationSchema","CheckboxGroupPropsSchema","CheckboxPropsSchema","CheckboxLabelPropsSchema","CheckboxDescriptionPropsSchema","cn","inputs","twMerge","clsx","FOCUS_STYLES","HIGH_CONTRAST_FOCUS","CheckboxGroupContext","createContext","checkboxGroupVariants","cva","checkboxItemVariants","checkboxIndicatorVariants","checkmarkVariants","CheckmarkIcon","className","props","jsx","TimesIcon","jsxs","CheckboxLabel","children","CheckboxDescription","CheckboxComponent","value","isDisabled","selectedIcon","variant","size","isInvalid","groupDisabled","isReadOnly","useContext","effectiveDisabled","renderSelectedIcon","isSelected","iconClassName","dataSelected","isValidElement","iconElement","cloneElement","AriaCheckbox","renderProps","Fragment","Checkbox","dedupeWithWarning","values","componentName","uniqueValues","CheckboxGroup","forwardRef","ref","label","description","errorMessage","defaultValue","isRequired","orientation","name","onChange","onFocusChange","id","ariaLabel","ariaLabelledby","ariaDescribedby","dataTestId","restProps","generatedId","useId","checkboxGroupId","labelId","descriptionId","errorId","describedByParts","computedAriaDescribedBy","dedupedValue","dedupedDefaultValue","AriaCheckboxGroup","Label","Text","FieldError"],"mappings":"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","file":"index.mjs","sourcesContent":["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 {\n CheckboxGroupProps as AriaCheckboxGroupProps,\n CheckboxProps as AriaCheckboxProps,\n} from 'react-aria-components';\n\n/**\n * CheckboxGroup variant schema\n * Only 2 variants: default and destructive (matching RadioGroup)\n *\n * @see checkboxgroup-prd.md US-2 (Style Variants)\n */\nexport const CheckboxGroupVariantSchema = z.enum(['default', 'destructive']);\nexport type CheckboxGroupVariant = z.infer<typeof CheckboxGroupVariantSchema>;\n\n/**\n * CheckboxGroup size schema\n * All sizes maintain 44px minimum height for WCAG 2.2 AAA compliance\n *\n * @see checkboxgroup-prd.md US-3 (Size Variants)\n * @see constitution.md Principle IV (Accessibility First)\n */\nexport const CheckboxGroupSizeSchema = z.enum(['sm', 'default', 'lg']);\nexport type CheckboxGroupSize = z.infer<typeof CheckboxGroupSizeSchema>;\n\n/**\n * CheckboxGroup orientation schema\n *\n * @see checkboxgroup-prd.md US-5 (Orientation Support)\n */\nexport const CheckboxGroupOrientationSchema = z.enum(['vertical', 'horizontal']);\nexport type CheckboxGroupOrientation = z.infer<typeof CheckboxGroupOrientationSchema>;\n\n/**\n * CheckboxGroup root component props schema\n *\n * Key difference from RadioGroup: value is string[] (multi-select)\n *\n * @see checkboxgroup-prd.md US-1 (Basic Multi-Selection)\n * @see checkboxgroup-prd.md US-4 (Labels, Descriptions, Errors)\n * @see checkboxgroup-prd.md US-6 (Validation States)\n */\nexport const CheckboxGroupPropsSchema = BaseComponentPropsSchema.extend({\n // Display props (US-4)\n label: z.string().optional(),\n description: z.string().optional(),\n errorMessage: z.string().optional(),\n\n // Selection props (US-1) - array for multi-select (key difference from RadioGroup)\n value: z.array(z.string()).optional(),\n defaultValue: z.array(z.string()).optional(),\n\n // State props (US-6)\n isDisabled: z.boolean().optional().default(false),\n isReadOnly: z.boolean().optional().default(false),\n isRequired: z.boolean().optional().default(false),\n isInvalid: z.boolean().optional().default(false),\n\n // Layout props (US-5)\n orientation: CheckboxGroupOrientationSchema.optional().default('vertical'),\n\n // Variant props (US-2, US-3)\n variant: CheckboxGroupVariantSchema.optional().default('default'),\n size: CheckboxGroupSizeSchema.optional().default('default'),\n\n // Form props (US-6)\n name: z.string().optional(),\n\n // Event handlers\n onChange: z.custom<(value: string[]) => void>().optional(),\n onFocusChange: z.custom<(isFocused: boolean) => void>().optional(),\n\n // Children (Checkbox components)\n children: z.custom<ReactNode>(),\n});\n\nexport type CheckboxGroupProps = z.infer<typeof CheckboxGroupPropsSchema> &\n Omit<AriaCheckboxGroupProps, keyof z.infer<typeof CheckboxGroupPropsSchema>>;\n\n/**\n * Checkbox item component props schema\n *\n * @see checkboxgroup-prd.md US-1 (Basic Multi-Selection)\n * @see checkboxgroup-prd.md US-7 (Rich Content Support)\n */\nexport const CheckboxPropsSchema = BaseComponentPropsSchema.extend({\n // Item value (required)\n value: z.string(),\n\n // Disabled state (individual item)\n isDisabled: z.boolean().optional().default(false),\n\n // Item content - accepts any ReactNode for flexible children\n children: z.custom<ReactNode>(),\n\n // Optional className for custom styling\n className: z.string().optional(),\n\n // Custom icon to display when selected (defaults to checkmark)\n // Useful for destructive variants where an X icon may be more appropriate\n selectedIcon: z.custom<ReactNode>().optional(),\n});\n\nexport type CheckboxProps = z.infer<typeof CheckboxPropsSchema> &\n Omit<AriaCheckboxProps, keyof z.infer<typeof CheckboxPropsSchema>>;\n\n/**\n * Checkbox.Label sub-component props schema\n * Helper component for styled label within Checkbox item\n *\n * @see checkboxgroup-prd.md US-7 (Rich Content Support)\n */\nexport const CheckboxLabelPropsSchema = z.object({\n // Label content\n children: z.custom<ReactNode>(),\n\n // Optional className for custom styling\n className: z.string().optional(),\n});\n\nexport type CheckboxLabelProps = z.infer<typeof CheckboxLabelPropsSchema>;\n\n/**\n * Checkbox.Description sub-component props schema\n * Helper component for styled description within Checkbox item (muted text)\n *\n * @see checkboxgroup-prd.md US-7 (Rich Content Support)\n */\nexport const CheckboxDescriptionPropsSchema = z.object({\n // Description content\n children: z.custom<ReactNode>(),\n\n // Optional className for custom styling\n className: z.string().optional(),\n});\n\nexport type CheckboxDescriptionProps = z.infer<typeof CheckboxDescriptionPropsSchema>;\n\n/**\n * CVA variant configuration types\n * Used for class-variance-authority integration\n */\nexport type CheckboxGroupVariantType = CheckboxGroupVariant;\nexport type CheckboxGroupSizeType = CheckboxGroupSize;\nexport type CheckboxGroupOrientationType = CheckboxGroupOrientation;\n","/**\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","/**\n * Global Interaction State Styles\n *\n * Consistent interaction patterns across all Themis components.\n * These styles ensure WCAG 2.2 AAA compliance and predictable UX.\n *\n * @see spec.md FR-010 (Visible focus ring for keyboard navigation)\n * @see spec.md FR-031 (Pressed state feedback)\n * @see spec.md FR-012 (High contrast mode support)\n * @see constitution.md Principle IV (Accessibility First)\n */\n\n/**\n * Focus state styles (FR-010)\n * Visible focus ring for keyboard navigation - WCAG 2.2 Level AAA\n *\n * Components can override by extending these styles:\n * @example\n * cn(FOCUS_STYLES, \"ring-4\") // Increases ring width to 4px\n */\nexport const FOCUS_STYLES = \"data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2\";\n\n/**\n * Pressed/Active state styles (FR-031)\n * Visual feedback for press interactions\n *\n * Components can override the scale amount:\n * @example\n * cn(PRESSED_STYLES_BASE, \"data-[pressed]:scale-[0.95]\") // More pronounced scale\n */\nexport const PRESSED_STYLES = \"data-[pressed]:scale-[0.97]\";\n\n/**\n * Base pressed styles without scale (for components that need different feedback)\n */\nexport const PRESSED_STYLES_BASE = \"data-[pressed]:transition-transform data-[pressed]:duration-100\";\n\n/**\n * Hover state styles\n * Elevation change on hover for better affordance\n *\n * Components can override shadow depth:\n * @example\n * cn(HOVER_STYLES_BASE, \"data-[hovered]:shadow-lg\") // Larger shadow\n */\nexport const HOVER_STYLES = \"data-[hovered]:shadow-md\";\n\n/**\n * Base hover styles without shadow (for components that use different hover effects)\n */\nexport const HOVER_STYLES_BASE = \"data-[hovered]:transition-shadow data-[hovered]:duration-200\";\n\n/**\n * High contrast mode focus (FR-012)\n * Enhanced outlines for users requiring high contrast\n *\n * Uses 'hc:' prefix for prefers-contrast: more media query\n */\nexport const HIGH_CONTRAST_FOCUS = \"hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground\";\n\n/**\n * High contrast mode hover (FR-012)\n * Enhanced outlines for hover in high contrast mode\n */\nexport const HIGH_CONTRAST_HOVER = \"hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground\";\n\n/**\n * High contrast mode pressed state\n * Enhanced outlines for pressed state in high contrast mode\n */\nexport const HIGH_CONTRAST_PRESSED = \"hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground\";\n\n/**\n * Combined high contrast styles\n * Use this for components that need all high contrast interaction states\n */\nexport const HIGH_CONTRAST_INTERACTIONS = `${HIGH_CONTRAST_FOCUS} ${HIGH_CONTRAST_HOVER} ${HIGH_CONTRAST_PRESSED}`;\n\n/**\n * Disabled state styles\n * Consistent disabled appearance across all components\n */\nexport const DISABLED_STYLES = \"disabled:pointer-events-none disabled:opacity-50\";\n\n/**\n * Default interaction bundle\n * Most common combination for interactive components\n *\n * Includes: focus ring, pressed scale, hover shadow, high contrast enhancements\n *\n * @example\n * <button className={cn(DEFAULT_INTERACTIONS, \"bg-primary\")}>Click</button>\n */\nexport const DEFAULT_INTERACTIONS = `${FOCUS_STYLES} ${PRESSED_STYLES} ${HOVER_STYLES} ${HIGH_CONTRAST_FOCUS} ${HIGH_CONTRAST_HOVER} ${HIGH_CONTRAST_PRESSED}`;\n\n/**\n * Subtle interaction bundle\n * For components that need less pronounced feedback\n *\n * Includes: focus ring and high contrast, but no hover shadow or pressed scale\n */\nexport const SUBTLE_INTERACTIONS = `${FOCUS_STYLES} ${HIGH_CONTRAST_FOCUS}`;\n\n/**\n * Non-interactive element styles\n * For elements that should indicate they are not interactive\n */\nexport const NON_INTERACTIVE = \"cursor-default select-none\";\n","\"use client\";\n\n/**\n * CheckboxGroup Component\n * Accessible multi-selection checkbox group with React Aria primitives and CVA styling\n *\n * Key Features:\n * - Bordered container design with explicit 44px+ touch targets\n * - 2 variants: default, destructive (no outline per clarification)\n * - 3 sizes: sm (44px), default (48px), lg (56px)\n * - Tab moves focus between checkboxes, Space toggles (standard checkbox behavior)\n * - Error styling on ALL items (cognitive accessibility)\n * - Spring animation for checkmark indicator\n * - RTL support (indicator auto-flips)\n * - Checkbox.Label and Checkbox.Description sub-components\n * - value: string[] for multi-select (key difference from RadioGroup)\n *\n * @see checkboxgroup-prd.md (Product Requirements)\n * @see plan.md (12 Key Clarifications)\n * @see React Aria CheckboxGroup: https://react-spectrum.adobe.com/react-aria/CheckboxGroup.html\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AAA)\n */\n\nimport {\n forwardRef,\n createContext,\n useContext,\n useId,\n cloneElement,\n isValidElement,\n type ReactNode,\n type ForwardedRef,\n type ReactElement,\n} from 'react';\nimport {\n CheckboxGroup as AriaCheckboxGroup,\n Checkbox as AriaCheckbox,\n Label,\n Text,\n FieldError,\n} from 'react-aria-components';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { FOCUS_STYLES, HIGH_CONTRAST_FOCUS } from '../../styles/interaction-states';\nimport type {\n CheckboxGroupProps,\n CheckboxProps,\n CheckboxLabelProps,\n CheckboxDescriptionProps,\n CheckboxGroupVariant,\n CheckboxGroupSize,\n} from './CheckboxGroup.types';\n\n// ============================================================================\n// Context\n// ============================================================================\n\n/**\n * CheckboxGroup context value\n * Includes isDisabled and isReadOnly per clarification (plan.md #10)\n */\ninterface CheckboxGroupContextValue {\n variant: CheckboxGroupVariant;\n size: CheckboxGroupSize;\n isInvalid: boolean;\n isDisabled: boolean;\n isReadOnly: boolean;\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupContextValue>({\n variant: 'default',\n size: 'default',\n isInvalid: false,\n isDisabled: false,\n isReadOnly: false,\n});\n\n// ============================================================================\n// CVA Variants\n// ============================================================================\n\n/**\n * CheckboxGroup container variants\n * Controls orientation and spacing (gap-2 = 8px per clarification)\n */\nconst checkboxGroupVariants = cva(\n // Base: flex container\n \"flex\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col gap-2\",\n horizontal: \"flex-row flex-wrap gap-2\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n);\n\n/**\n * Checkbox item bordered container variants\n * Bordered container design with explicit touch targets\n * All sizes maintain 44px minimum height (WCAG 2.2 AAA)\n * All sizes use rounded-md (6px) per clarification\n */\nconst checkboxItemVariants = cva(\n // Base: bordered container with flex layout, RTL support\n [\n \"flex items-center gap-3 rounded-md border cursor-pointer\",\n \"transition-colors duration-200\",\n \"rtl:flex-row-reverse\", // RTL: indicator flips to right\n // Focus ring on entire container\n FOCUS_STYLES,\n HIGH_CONTRAST_FOCUS,\n ].join(\" \"),\n {\n variants: {\n variant: {\n default: [\n \"border-[var(--border)]\",\n \"data-[hovered]:bg-[var(--accent)]/10\",\n \"data-[selected]:border-[var(--primary)]\",\n \"data-[selected]:bg-[var(--primary)]/10\",\n ].join(\" \"),\n destructive: [\n \"border-[var(--border)]\",\n \"data-[hovered]:bg-[var(--destructive)]/10\",\n \"data-[selected]:border-[var(--destructive)]\",\n \"data-[selected]:bg-[var(--destructive)]/10\",\n ].join(\" \"),\n },\n size: {\n sm: \"min-h-[44px] py-2 px-3 text-sm\",\n default: \"min-h-[48px] py-3 px-4 text-sm\",\n lg: \"min-h-[56px] py-4 px-5 text-base\",\n },\n isDisabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n isReadOnly: {\n // Subtle visual cue per clarification\n true: \"cursor-default\",\n false: \"\",\n },\n isInvalid: {\n // Error: ALL items get destructive border (cognitive accessibility)\n true: \"border-[var(--destructive)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n isDisabled: false,\n isReadOnly: false,\n isInvalid: false,\n },\n }\n);\n\n/**\n * Square indicator (checkbox box) variants\n * Uses rounded-sm (2px) for square appearance (unlike RadioGroup's circle)\n */\nconst checkboxIndicatorVariants = cva(\n // Base: square with border, flex-shrink-0 to prevent squishing\n \"flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200\",\n {\n variants: {\n variant: {\n default: [\n \"border-[var(--border)]\",\n \"data-[selected]:border-[var(--primary)]\",\n \"data-[selected]:bg-[var(--primary)]\",\n ].join(\" \"),\n destructive: [\n \"border-[var(--border)]\",\n \"data-[selected]:border-[var(--destructive)]\",\n \"data-[selected]:bg-[var(--destructive)]\",\n ].join(\" \"),\n },\n size: {\n sm: \"h-4 w-4\",\n default: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n/**\n * Checkmark SVG variants\n * Spring animation: cubic-bezier(0.34, 1.56, 0.64, 1) with slight overshoot\n */\nconst checkmarkVariants = cva(\n // Base: centered checkmark with spring animation\n [\n \"transition-transform duration-200\",\n // Spring animation with overshoot\n \"[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]\",\n // Respect reduced motion preference\n \"motion-reduce:transition-none\",\n // Scale from 0 to 1 on selection\n \"scale-0 data-[selected]:scale-100\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n default: \"text-[var(--primary-foreground)]\",\n destructive: \"text-[var(--destructive-foreground)]\",\n },\n size: {\n sm: \"h-3 w-3\",\n default: \"h-3.5 w-3.5\",\n lg: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n// ============================================================================\n// Icon Components\n// ============================================================================\n\n/**\n * Checkmark SVG icon (default)\n * Used inside the checkbox indicator when selected\n */\nfunction CheckmarkIcon({ className, ...props }: { className?: string; 'data-selected'?: boolean }): ReactNode {\n return (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\n/**\n * Times (X) SVG icon\n * Alternative icon for destructive or exclusion selections\n * @example <Checkbox value=\"exclude\" selectedIcon={<TimesIcon />}>Exclude this item</Checkbox>\n */\nfunction TimesIcon({ className, ...props }: { className?: string; 'data-selected'?: boolean }): ReactNode {\n return (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\n// ============================================================================\n// Sub-components\n// ============================================================================\n\n/**\n * Checkbox.Label - Styled label for checkbox item content\n */\nfunction CheckboxLabel({ children, className }: CheckboxLabelProps): ReactNode {\n return (\n <span className={cn(\"font-medium text-[var(--content-foreground)]\", className)}>\n {children}\n </span>\n );\n}\n\nCheckboxLabel.displayName = \"Checkbox.Label\";\n\n/**\n * Checkbox.Description - Styled description for checkbox item content (muted)\n */\nfunction CheckboxDescription({ children, className }: CheckboxDescriptionProps): ReactNode {\n return (\n <span className={cn(\"text-sm text-[var(--menu-muted)]\", className)}>\n {children}\n </span>\n );\n}\n\nCheckboxDescription.displayName = \"Checkbox.Description\";\n\n// ============================================================================\n// Checkbox Component\n// ============================================================================\n\n/**\n * Checkbox item component with bordered container design\n */\nfunction CheckboxComponent({ value, isDisabled, children, className, selectedIcon }: CheckboxProps): ReactNode {\n const { variant, size, isInvalid, isDisabled: groupDisabled, isReadOnly } = useContext(CheckboxGroupContext);\n\n // Individual isDisabled OR group isDisabled\n const effectiveDisabled = isDisabled || groupDisabled;\n\n // Render the selected icon - use custom icon if provided, otherwise default CheckmarkIcon\n const renderSelectedIcon = (isSelected: boolean) => {\n const iconClassName = cn(checkmarkVariants({ variant, size }));\n const dataSelected = isSelected || undefined;\n\n if (selectedIcon) {\n // Clone the custom icon element to add our styling classes\n if (isValidElement(selectedIcon)) {\n const iconElement = selectedIcon as ReactElement<{ className?: string; 'data-selected'?: boolean }>;\n return cloneElement(iconElement, {\n className: cn(iconClassName, iconElement.props.className),\n 'data-selected': dataSelected,\n });\n }\n // If it's not a valid element (e.g., just text), wrap it\n return <span className={iconClassName} data-selected={dataSelected}>{selectedIcon}</span>;\n }\n\n // Default: CheckmarkIcon\n return (\n <CheckmarkIcon\n className={iconClassName}\n data-selected={dataSelected}\n />\n );\n };\n\n return (\n <AriaCheckbox\n value={value}\n isDisabled={effectiveDisabled}\n className={(renderProps) =>\n cn(\n checkboxItemVariants({\n variant,\n size,\n isDisabled: renderProps.isDisabled,\n isReadOnly,\n isInvalid,\n }),\n className\n )\n }\n >\n {(renderProps) => (\n <>\n {/* Square indicator */}\n <div\n className={checkboxIndicatorVariants({ variant, size })}\n data-selected={renderProps.isSelected || undefined}\n >\n {/* Icon with spring animation */}\n {renderSelectedIcon(renderProps.isSelected)}\n </div>\n\n {/* Children content (flexible - text, icons, complex layouts) */}\n <div className=\"flex-1 flex flex-col\">\n {children}\n </div>\n </>\n )}\n </AriaCheckbox>\n );\n}\n\n// Attach sub-components\nconst Checkbox = Object.assign(CheckboxComponent, {\n Label: CheckboxLabel,\n Description: CheckboxDescription,\n}) as typeof CheckboxComponent & {\n Label: typeof CheckboxLabel;\n Description: typeof CheckboxDescription;\n displayName: string;\n};\n\nCheckbox.displayName = \"Checkbox\";\n\n// ============================================================================\n// Duplicate Value Warning\n// ============================================================================\n\n/**\n * Deduplicates array and warns in development mode\n * Per clarification: dedupe internally + console.warn in development\n */\nfunction dedupeWithWarning(values: string[] | undefined, componentName: string): string[] | undefined {\n if (!values) return values;\n\n const uniqueValues = [...new Set(values)];\n\n if (process.env.NODE_ENV !== 'production' && uniqueValues.length !== values.length) {\n console.warn(\n `[${componentName}] Received duplicate values in value/defaultValue prop. ` +\n `Original: [${values.join(', ')}], Deduplicated: [${uniqueValues.join(', ')}]. ` +\n `Duplicate values are automatically removed.`\n );\n }\n\n return uniqueValues;\n}\n\n// ============================================================================\n// CheckboxGroup Component\n// ============================================================================\n\n/**\n * CheckboxGroup root component\n * Accessible multi-selection control with bordered container design\n */\nconst CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(\n function CheckboxGroup(props: CheckboxGroupProps, ref: ForwardedRef<HTMLDivElement>) {\n const {\n // Display props\n label,\n description,\n errorMessage,\n // Selection props (string[] for multi-select)\n value,\n defaultValue,\n // State props\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n isInvalid = false,\n // Layout props\n orientation = 'vertical',\n // Variant props\n variant = 'default',\n size = 'default',\n // Form props\n name,\n // Event handlers\n onChange,\n onFocusChange,\n // Standard props\n className,\n children,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'data-testid': dataTestId,\n ...restProps\n } = props;\n\n // Generate unique IDs for accessibility\n const generatedId = useId();\n const checkboxGroupId = id ?? generatedId;\n const labelId = `${checkboxGroupId}-label`;\n const descriptionId = `${checkboxGroupId}-description`;\n const errorId = `${checkboxGroupId}-error`;\n\n // Build aria-describedby from description and error\n const describedByParts: string[] = [];\n if (ariaDescribedby) describedByParts.push(ariaDescribedby);\n if (description) describedByParts.push(descriptionId);\n if (isInvalid && errorMessage) describedByParts.push(errorId);\n const computedAriaDescribedBy = describedByParts.length > 0\n ? describedByParts.join(' ')\n : undefined;\n\n // Dedupe values with warning in development\n const dedupedValue = dedupeWithWarning(value, 'CheckboxGroup');\n const dedupedDefaultValue = dedupeWithWarning(defaultValue, 'CheckboxGroup');\n\n return (\n <CheckboxGroupContext.Provider value={{ variant, size, isInvalid, isDisabled, isReadOnly }}>\n <AriaCheckboxGroup\n ref={ref}\n id={checkboxGroupId}\n name={name}\n value={dedupedValue}\n defaultValue={dedupedDefaultValue}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isRequired={isRequired}\n isInvalid={isInvalid}\n onChange={onChange}\n onFocusChange={onFocusChange}\n aria-label={ariaLabel}\n aria-labelledby={label ? labelId : ariaLabelledby}\n aria-describedby={computedAriaDescribedBy}\n aria-orientation={orientation}\n aria-required={isRequired || undefined}\n aria-invalid={isInvalid || undefined}\n data-testid={dataTestId}\n className={cn(\"flex flex-col gap-1.5\", className)}\n {...restProps}\n >\n {/* Label with optional required asterisk */}\n {label && (\n <Label id={labelId} className=\"text-sm font-medium text-[var(--content-foreground)]\">\n {label}\n {isRequired && (\n <span className=\"ml-1 text-[var(--destructive)]\" aria-hidden=\"true\">\n *\n </span>\n )}\n </Label>\n )}\n\n {/* Description */}\n {description && (\n <Text\n id={descriptionId}\n slot=\"description\"\n className=\"text-sm text-[var(--menu-muted)]\"\n >\n {description}\n </Text>\n )}\n\n {/* Checkbox items container with orientation */}\n <div className={checkboxGroupVariants({ orientation })}>\n {children}\n </div>\n\n {/* Error message with role=\"alert\" for screen reader announcements */}\n {isInvalid && errorMessage && (\n <FieldError\n id={errorId}\n className=\"text-sm text-[var(--destructive)]\"\n >\n <span role=\"alert\">{errorMessage}</span>\n </FieldError>\n )}\n </AriaCheckboxGroup>\n </CheckboxGroupContext.Provider>\n );\n }\n);\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport {\n CheckboxGroup,\n Checkbox,\n checkboxGroupVariants,\n checkboxItemVariants,\n checkboxIndicatorVariants,\n checkmarkVariants,\n // Icon exports for custom selectedIcon usage\n CheckmarkIcon,\n TimesIcon,\n};\n"]}
@@ -0,0 +1,56 @@
1
+ import { type ReactElement } from 'react';
2
+ import type { ComboboxItemProps, ComboboxSectionProps } from './Combobox.types';
3
+ /**
4
+ * Combobox Component
5
+ *
6
+ * A filterable select/autocomplete component built on React Aria's ComboBox.
7
+ * Supports type-to-filter, keyboard navigation, and optional custom values.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * <Combobox label="Framework">
12
+ * <ComboboxItem id="react">React</ComboboxItem>
13
+ * <ComboboxItem id="vue">Vue</ComboboxItem>
14
+ * <ComboboxItem id="angular">Angular</ComboboxItem>
15
+ * </Combobox>
16
+ * ```
17
+ */
18
+ export declare const Combobox: import("react").ForwardRefExoticComponent<{
19
+ size: "default" | "sm" | "lg";
20
+ allowsCustomValue: boolean;
21
+ menuTrigger: "input" | "focus" | "manual";
22
+ className?: string | undefined;
23
+ children?: any;
24
+ id?: string | undefined;
25
+ 'aria-label'?: string | undefined;
26
+ 'aria-labelledby'?: string | undefined;
27
+ 'aria-describedby'?: string | undefined;
28
+ 'aria-live'?: "off" | "polite" | "assertive" | undefined;
29
+ 'aria-hidden'?: boolean | undefined;
30
+ 'data-testid'?: string | undefined;
31
+ label?: string | undefined;
32
+ description?: string | undefined;
33
+ errorMessage?: string | undefined;
34
+ placeholder?: string | undefined;
35
+ isRequired?: boolean | undefined;
36
+ isDisabled?: boolean | undefined;
37
+ isReadOnly?: boolean | undefined;
38
+ name?: string | undefined;
39
+ defaultInputValue?: string | undefined;
40
+ inputValue?: string | undefined;
41
+ defaultSelectedKey?: string | number | undefined;
42
+ selectedKey?: string | number | null | undefined;
43
+ } & Omit<import("react-aria-components").ComboBoxProps<object>, "className" | "children" | "id" | "aria-label" | "aria-labelledby" | "aria-describedby" | "aria-live" | "aria-hidden" | "data-testid" | "isDisabled" | "name" | "size" | "label" | "isReadOnly" | "isRequired" | "description" | "errorMessage" | "placeholder" | "selectedKey" | "defaultSelectedKey" | "allowsCustomValue" | "menuTrigger" | "defaultInputValue" | "inputValue"> & {
44
+ children: import("react").ReactNode;
45
+ onInputChange?: (value: string) => void;
46
+ onSelectionChange?: (key: string | number | null) => void;
47
+ } & import("react").RefAttributes<HTMLDivElement>>;
48
+ export declare function ComboboxItem({ children, className, textValue, ...props }: ComboboxItemProps): ReactElement;
49
+ export declare namespace ComboboxItem {
50
+ var displayName: string;
51
+ }
52
+ export declare function ComboboxSection({ header, children, className, }: ComboboxSectionProps): ReactElement;
53
+ export declare namespace ComboboxSection {
54
+ var displayName: string;
55
+ }
56
+ //# sourceMappingURL=Combobox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/elements/Combobox/Combobox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAetD,OAAO,KAAK,EAEV,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAoB1B;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAoGpB,CAAC;AAQF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,SAAS,EACT,GAAG,KAAK,EACT,EAAE,iBAAiB,GAAG,YAAY,CAoBlC;yBAzBe,YAAY;;;AAiC5B,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,QAAQ,EACR,SAAS,GACV,EAAE,oBAAoB,GAAG,YAAY,CAWrC;yBAfe,eAAe"}
@@ -0,0 +1,29 @@
1
+ export declare const comboboxVariants: (props?: ({
2
+ size?: "default" | "sm" | "lg" | null | undefined;
3
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
4
+ export declare const comboboxLabelVariants: (props?: ({
5
+ size?: "default" | "sm" | "lg" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export declare const comboboxInputVariants: (props?: ({
8
+ size?: "default" | "sm" | "lg" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
10
+ export declare const comboboxTriggerWrapperVariants: (props?: ({
11
+ size?: "default" | "sm" | "lg" | null | undefined;
12
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
+ export declare const comboboxButtonVariants: (props?: ({
14
+ size?: "default" | "sm" | "lg" | null | undefined;
15
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
16
+ export declare const comboboxPopoverVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
17
+ export declare const comboboxListBoxVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
18
+ export declare const comboboxItemVariants: (props?: ({
19
+ size?: "default" | "sm" | "lg" | null | undefined;
20
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
21
+ export declare const comboboxSectionVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
22
+ export declare const comboboxSectionHeaderVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
23
+ export declare const comboboxDescriptionVariants: (props?: ({
24
+ size?: "default" | "sm" | "lg" | null | undefined;
25
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
26
+ export declare const comboboxErrorVariants: (props?: ({
27
+ size?: "default" | "sm" | "lg" | null | undefined;
28
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
29
+ //# sourceMappingURL=Combobox.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Combobox.styles.d.ts","sourceRoot":"","sources":["../../../src/elements/Combobox/Combobox.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB;;8EAY5B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;8EAYjC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;8EAgBjC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;8EAoB1C,CAAC;AAEF,eAAO,MAAM,sBAAsB;;8EAkBlC,CAAC;AAEF,eAAO,MAAM,uBAAuB,oFASnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,oFAEnC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;8EAmBhC,CAAC;AAEF,eAAO,MAAM,uBAAuB,oFAAc,CAAC;AAEnD,eAAO,MAAM,6BAA6B,oFAEzC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;8EAYvC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;8EAYjC,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { z } from 'zod';
2
+ import type { ReactNode } from 'react';
3
+ import type { ComboBoxProps as AriaComboBoxProps } from 'react-aria-components';
4
+ export declare const ComboboxSizeSchema: z.ZodEnum<{
5
+ default: "default";
6
+ sm: "sm";
7
+ lg: "lg";
8
+ }>;
9
+ export type ComboboxSize = z.infer<typeof ComboboxSizeSchema>;
10
+ export declare const ComboboxPropsSchema: z.ZodObject<{
11
+ className: z.ZodOptional<z.ZodString>;
12
+ children: z.ZodOptional<z.ZodAny>;
13
+ id: z.ZodOptional<z.ZodString>;
14
+ 'aria-label': z.ZodOptional<z.ZodString>;
15
+ 'aria-labelledby': z.ZodOptional<z.ZodString>;
16
+ 'aria-describedby': z.ZodOptional<z.ZodString>;
17
+ 'aria-live': z.ZodOptional<z.ZodEnum<{
18
+ off: "off";
19
+ polite: "polite";
20
+ assertive: "assertive";
21
+ }>>;
22
+ 'aria-hidden': z.ZodOptional<z.ZodBoolean>;
23
+ 'data-testid': z.ZodOptional<z.ZodString>;
24
+ label: z.ZodOptional<z.ZodString>;
25
+ description: z.ZodOptional<z.ZodString>;
26
+ errorMessage: z.ZodOptional<z.ZodString>;
27
+ size: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
28
+ default: "default";
29
+ sm: "sm";
30
+ lg: "lg";
31
+ }>>>;
32
+ placeholder: z.ZodOptional<z.ZodString>;
33
+ isRequired: z.ZodOptional<z.ZodBoolean>;
34
+ isDisabled: z.ZodOptional<z.ZodBoolean>;
35
+ isReadOnly: z.ZodOptional<z.ZodBoolean>;
36
+ name: z.ZodOptional<z.ZodString>;
37
+ allowsCustomValue: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
38
+ menuTrigger: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
39
+ input: "input";
40
+ focus: "focus";
41
+ manual: "manual";
42
+ }>>>;
43
+ defaultInputValue: z.ZodOptional<z.ZodString>;
44
+ inputValue: z.ZodOptional<z.ZodString>;
45
+ defaultSelectedKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
46
+ selectedKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodNull]>>;
47
+ }, z.core.$strip>;
48
+ export type ComboboxProps = z.infer<typeof ComboboxPropsSchema> & Omit<AriaComboBoxProps<object>, keyof z.infer<typeof ComboboxPropsSchema>> & {
49
+ children: ReactNode;
50
+ onInputChange?: (value: string) => void;
51
+ onSelectionChange?: (key: string | number | null) => void;
52
+ };
53
+ export declare const ComboboxItemPropsSchema: z.ZodObject<{
54
+ id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
55
+ textValue: z.ZodOptional<z.ZodString>;
56
+ isDisabled: z.ZodOptional<z.ZodBoolean>;
57
+ children: z.ZodCustom<ReactNode, ReactNode>;
58
+ className: z.ZodOptional<z.ZodString>;
59
+ }, z.core.$strip>;
60
+ export type ComboboxItemProps = z.infer<typeof ComboboxItemPropsSchema>;
61
+ export declare const ComboboxSectionPropsSchema: z.ZodObject<{
62
+ header: z.ZodOptional<z.ZodString>;
63
+ children: z.ZodCustom<ReactNode, ReactNode>;
64
+ className: z.ZodOptional<z.ZodString>;
65
+ }, z.core.$strip>;
66
+ export type ComboboxSectionProps = z.infer<typeof ComboboxSectionPropsSchema>;
67
+ //# sourceMappingURL=Combobox.types.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Combobox Component Exports
3
+ *
4
+ * A filterable select/autocomplete built on React Aria ComboBox.
5
+ *
6
+ * @example
7
+ * ```tsx
8
+ * import { Combobox, ComboboxItem } from '@tribepad/themis/elements/Combobox';
9
+ *
10
+ * <Combobox label="Framework" placeholder="Select a framework">
11
+ * <ComboboxItem id="react">React</ComboboxItem>
12
+ * <ComboboxItem id="vue">Vue</ComboboxItem>
13
+ * </Combobox>
14
+ * ```
15
+ */
16
+ export { Combobox, ComboboxItem, ComboboxSection } from './Combobox';
17
+ export type { ComboboxProps, ComboboxItemProps, ComboboxSectionProps, ComboboxSize, } from './Combobox.types';
18
+ export { ComboboxPropsSchema, ComboboxItemPropsSchema, ComboboxSectionPropsSchema, ComboboxSizeSchema, } from './Combobox.types';
19
+ export { comboboxVariants, comboboxLabelVariants, comboboxInputVariants, comboboxTriggerWrapperVariants, comboboxButtonVariants, comboboxPopoverVariants, comboboxListBoxVariants, comboboxItemVariants, comboboxSectionVariants, comboboxSectionHeaderVariants, comboboxDescriptionVariants, comboboxErrorVariants, } from './Combobox.styles';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Combobox/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACrE,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,8BAA8B,EAC9B,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,6BAA6B,EAC7B,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}