@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,31 +1,3 @@
1
- export { Switch, switchOuterVariants, switchThumbVariants, switchTrackVariants } from '../../chunk-CGFDS4XS.mjs';
2
- import '../../chunk-HK46BT5U.mjs';
3
- import '../../chunk-E2KQFV3O.mjs';
4
- import { BaseComponentPropsSchema } from '../../chunk-5SVLJN2C.mjs';
5
- import { z } from 'zod';
6
-
7
- var SwitchPropsSchema = BaseComponentPropsSchema.extend({
8
- // State management (controlled/uncontrolled)
9
- isSelected: z.boolean().optional(),
10
- defaultSelected: z.boolean().optional().default(false),
11
- onChange: z.function().optional(),
12
- // Variants (matching Button pattern)
13
- variant: z.enum(["default", "destructive"]).optional().default("default"),
14
- // Sizes (3 sizes for consistency)
15
- size: z.enum(["sm", "default", "lg"]).optional().default("default"),
16
- // States
17
- isDisabled: z.boolean().optional().default(false),
18
- isReadOnly: z.boolean().optional().default(false),
19
- // Labels (optional built-in labeling)
20
- label: z.string().optional(),
21
- description: z.string().optional(),
22
- // React Aria SwitchProps integration
23
- onFocus: z.function().optional(),
24
- onBlur: z.function().optional(),
25
- onFocusChange: z.function().optional(),
26
- autoFocus: z.boolean().optional()
27
- });
28
-
29
- export { SwitchPropsSchema };
30
- //# sourceMappingURL=index.mjs.map
1
+ "use client";
2
+ import {memo,forwardRef}from'react';import {Switch}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';import {z}from'zod';function o(...s){return twMerge(clsx(s))}var u="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2",A="data-[pressed]:scale-[0.97]";var V="data-[hovered]:shadow-md";var l="hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground",h="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",m="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground";var S=`${u} ${A} ${V} ${l} ${h} ${m}`;var w=cva("inline-flex shrink-0 cursor-pointer items-center justify-center min-h-[44px] min-w-[44px] disabled:cursor-not-allowed disabled:opacity-50 data-[readonly]:cursor-default",{variants:{},defaultVariants:{}}),g=cva("relative inline-flex shrink-0 items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background",{variants:{variant:{default:"bg-[var(--input)] data-[selected]:bg-[var(--primary)]",destructive:"bg-[var(--input)] data-[selected]:bg-[var(--destructive)]"},size:{sm:"h-5 w-9",default:"h-6 w-11",lg:"h-7 w-14"}},defaultVariants:{variant:"default",size:"default"}}),b=cva("pointer-events-none absolute left-0.5 rounded-full bg-[var(--content-background)] shadow-lg ring-0 transition-transform data-[selected]:translate-x-full",{variants:{size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"}},defaultVariants:{size:"default"}}),x=memo(forwardRef(({className:s,variant:y,size:d,label:r,description:n,isDisabled:p,isReadOnly:f,...E},N)=>jsx(Switch,{ref:N,isDisabled:p,isReadOnly:f,className:i=>o("group inline-flex items-center gap-2",p&&"cursor-not-allowed opacity-50",s),...E,children:i=>jsxs(Fragment,{children:[jsx("div",{className:o(w()),"data-selected":i.isSelected||void 0,"data-readonly":f||void 0,children:jsx("div",{className:o(g({variant:y,size:d}),S),"data-selected":i.isSelected||void 0,children:jsx("div",{className:o(b({size:d})),"data-selected":i.isSelected||void 0})})}),(r||n)&&jsxs("div",{className:"flex flex-col",children:[r&&jsx("span",{className:"text-sm font-medium text-[var(--content-foreground)]",children:r}),n&&jsx("span",{className:"text-xs text-[var(--menu-muted)]",children:n})]})]})})));x.displayName="Switch";var T=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 I=T.extend({isSelected:z.boolean().optional(),defaultSelected:z.boolean().optional().default(false),onChange:z.function().optional(),variant:z.enum(["default","destructive"]).optional().default("default"),size:z.enum(["sm","default","lg"]).optional().default("default"),isDisabled:z.boolean().optional().default(false),isReadOnly:z.boolean().optional().default(false),label:z.string().optional(),description:z.string().optional(),onFocus:z.function().optional(),onBlur:z.function().optional(),onFocusChange:z.function().optional(),autoFocus:z.boolean().optional()});export{x as Switch,I as SwitchPropsSchema,w as switchOuterVariants,b as switchThumbVariants,g as switchTrackVariants};//# sourceMappingURL=index.mjs.map
31
3
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Switch/Switch.types.ts"],"names":[],"mappings":";;;;;;AAYO,IAAM,iBAAA,GAAoB,yBAAyB,MAAA,CAAO;AAAA;AAAA,EAE/D,UAAA,EAAY,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACjC,iBAAiB,CAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,QAAQ,KAAK,CAAA;AAAA,EACrD,QAAA,EAAU,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS;AAAA;AAAA,EAGhC,OAAA,EAAS,CAAA,CACN,IAAA,CAAK,CAAC,SAAA,EAAW,aAAa,CAAC,CAAA,CAC/B,QAAA,EAAS,CACT,OAAA,CAAQ,SAAS,CAAA;AAAA;AAAA,EAGpB,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,EAAM,SAAA,EAAW,IAAI,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA;AAAA,EAGlE,YAAY,CAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,QAAQ,KAAK,CAAA;AAAA,EAChD,YAAY,CAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,QAAQ,KAAK,CAAA;AAAA;AAAA,EAGhD,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAGjC,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS;AAAA,EAC/B,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS;AAAA,EAC9B,aAAA,EAAe,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS;AAAA,EACrC,SAAA,EAAW,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACzB,CAAC","file":"index.mjs","sourcesContent":["import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { SwitchProps as AriaSwitchProps } from 'react-aria-components';\n\n/**\n * Switch props schema extending BaseComponentProps\n *\n * @see React Aria Switch: https://react-spectrum.adobe.com/react-aria/Switch.html\n * @see ShadCN Switch: https://ui.shadcn.com/docs/components/switch\n * @see spec.md (WCAG 2.2 AAA - 7:1 contrast, 44x44px touch targets)\n * @see constitution.md Principle IV (Accessibility First)\n */\nexport const SwitchPropsSchema = BaseComponentPropsSchema.extend({\n // State management (controlled/uncontrolled)\n isSelected: z.boolean().optional(),\n defaultSelected: z.boolean().optional().default(false),\n onChange: z.function().optional(),\n\n // Variants (matching Button pattern)\n variant: z\n .enum(['default', 'destructive'])\n .optional()\n .default('default'),\n\n // Sizes (3 sizes for consistency)\n size: z.enum(['sm', 'default', 'lg']).optional().default('default'),\n\n // States\n isDisabled: z.boolean().optional().default(false),\n isReadOnly: z.boolean().optional().default(false),\n\n // Labels (optional built-in labeling)\n label: z.string().optional(),\n description: z.string().optional(),\n\n // React Aria SwitchProps integration\n onFocus: z.function().optional(),\n onBlur: z.function().optional(),\n onFocusChange: z.function().optional(),\n autoFocus: z.boolean().optional(),\n});\n\nexport type SwitchProps = z.infer<typeof SwitchPropsSchema> &\n Omit<AriaSwitchProps, keyof z.infer<typeof SwitchPropsSchema>>;\n\n/**\n * CVA variant configuration types\n * Used for class-variance-authority integration\n */\nexport type SwitchVariant = z.infer<typeof SwitchPropsSchema>['variant'];\nexport type SwitchSize = z.infer<typeof SwitchPropsSchema>['size'];\n"]}
1
+ {"version":3,"sources":["../../../src/utils/cn.ts","../../../src/styles/interaction-states.ts","../../../src/elements/Switch/Switch.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Switch/Switch.types.ts"],"names":["cn","inputs","twMerge","clsx","FOCUS_STYLES","PRESSED_STYLES","HOVER_STYLES","HIGH_CONTRAST_FOCUS","HIGH_CONTRAST_HOVER","HIGH_CONTRAST_PRESSED","DEFAULT_INTERACTIONS","switchOuterVariants","cva","switchTrackVariants","switchThumbVariants","Switch","memo","forwardRef","className","variant","size","label","description","isDisabled","isReadOnly","props","ref","jsx","AriaSwitch","_classNameProps","renderProps","jsxs","Fragment","BaseComponentPropsSchema","z","SwitchPropsSchema"],"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 * Switch Component\n * Accessible toggle switch with React Aria primitives and CVA styling\n *\n * @see React Aria Switch: https://react-spectrum.adobe.com/react-aria/Switch.html\n * @see ShadCN Switch: https://ui.shadcn.com/docs/components/switch\n * @see spec.md (WCAG 2.2 AAA - 7:1 contrast ratio, 44x44px touch targets)\n * @see constitution.md Principle IV (Accessibility First)\n */\n\nimport { forwardRef, memo } from 'react';\nimport {\n Switch as AriaSwitch,\n type SwitchProps as AriaSwitchProps,\n} from 'react-aria-components';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { DEFAULT_INTERACTIONS } from '../../styles/interaction-states';\n\n/**\n * Layer 1: Transparent outer touch target (44x44px minimum)\n * This layer handles the WCAG 2.2 AAA touch target requirement\n * Always invisible, centers the visual switch inside\n */\nconst switchOuterVariants = cva(\n // Base styles - WCAG 2.2 AAA: 44x44px minimum touch target\n \"inline-flex shrink-0 cursor-pointer items-center justify-center min-h-[44px] min-w-[44px] disabled:cursor-not-allowed disabled:opacity-50 data-[readonly]:cursor-default\",\n {\n variants: {},\n defaultVariants: {},\n }\n);\n\n/**\n * Layer 2: Visual switch track/background (adjustable size)\n * This layer provides the visual appearance and size flexibility\n * Background color changes based on variant and selection state\n */\nconst switchTrackVariants = cva(\n // Base styles - visual track with transitions and focus states\n \"relative inline-flex shrink-0 items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n {\n variants: {\n variant: {\n // Default variant: Uses primary color when selected\n default:\n \"bg-[var(--input)] data-[selected]:bg-[var(--primary)]\",\n // Destructive variant: Uses destructive/error color when selected\n destructive:\n \"bg-[var(--input)] data-[selected]:bg-[var(--destructive)]\",\n },\n size: {\n // Small: h-5 w-9 (visual track size)\n sm: \"h-5 w-9\",\n // Default: h-6 w-11\n default: \"h-6 w-11\",\n // Large: h-7 w-14\n lg: \"h-7 w-14\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n/**\n * Layer 3: Switch thumb (sliding circle)\n * Inner visual element that slides horizontally when switch is selected\n * Positioned absolutely within the track (Layer 2)\n */\nconst switchThumbVariants = cva(\n // Base styles: rounded circle with shadow, translates when selected\n \"pointer-events-none absolute left-0.5 rounded-full bg-[var(--content-background)] shadow-lg ring-0 transition-transform data-[selected]:translate-x-full\",\n {\n variants: {\n size: {\n // Thumb is slightly smaller than track height for proper padding\n sm: \"h-4 w-4\",\n default: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n);\n\nexport interface SwitchProps\n extends Omit<AriaSwitchProps, 'className' | 'children'>,\n VariantProps<typeof switchTrackVariants> {\n variant?: 'default' | 'destructive';\n size?: 'sm' | 'default' | 'lg';\n label?: string;\n description?: string;\n className?: string;\n}\n\n/**\n * Switch Component\n * Fully accessible toggle switch with React Aria and themed styling\n */\nconst Switch = memo(forwardRef<HTMLLabelElement, SwitchProps>(\n (\n {\n className,\n variant,\n size,\n label,\n description,\n isDisabled,\n isReadOnly,\n ...props\n },\n ref\n ) => {\n return (\n <AriaSwitch\n ref={ref}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n className={(_classNameProps) =>\n cn(\n \"group inline-flex items-center gap-2\",\n isDisabled && \"cursor-not-allowed opacity-50\",\n className\n )\n }\n {...props}\n >\n {(renderProps) => (\n <>\n {/* Layer 1: Transparent outer touch target (44x44px WCAG compliant) */}\n <div\n className={cn(switchOuterVariants())}\n data-selected={renderProps.isSelected || undefined}\n data-readonly={isReadOnly || undefined}\n >\n {/* Layer 2: Visual switch track (adjustable size with variants) */}\n <div\n className={cn(\n switchTrackVariants({ variant, size }),\n DEFAULT_INTERACTIONS\n )}\n data-selected={renderProps.isSelected || undefined}\n >\n {/* Layer 3: Thumb (sliding circle, absolutely positioned) */}\n <div\n className={cn(switchThumbVariants({ size }))}\n data-selected={renderProps.isSelected || undefined}\n />\n </div>\n </div>\n\n {/* Optional label and description */}\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <span className=\"text-sm font-medium text-[var(--content-foreground)]\">\n {label}\n </span>\n )}\n {description && (\n <span className=\"text-xs text-[var(--menu-muted)]\">\n {description}\n </span>\n )}\n </div>\n )}\n </>\n )}\n </AriaSwitch>\n );\n }\n));\n\nSwitch.displayName = \"Switch\";\n\nexport { Switch, switchOuterVariants, switchTrackVariants, switchThumbVariants };\n","import { z } from 'zod';\n\n/**\n * Base props schema for all Themis components\n * Ensures consistent accessibility and styling APIs across the library\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\nexport const BaseComponentPropsSchema = z.object({\n // Styling\n className: z.string().optional(),\n\n // React\n children: z.any().optional(), // ReactNode not directly supported by Zod\n id: z.string().optional(),\n\n // Accessibility (WCAG 2.2 AA requirements)\n 'aria-label': z.string().optional(),\n 'aria-labelledby': z.string().optional(),\n 'aria-describedby': z.string().optional(),\n 'aria-live': z.enum(['off', 'polite', 'assertive']).optional(),\n 'aria-hidden': z.boolean().optional(),\n\n // Testing & Development\n 'data-testid': z.string().optional(),\n});\n\nexport type BaseComponentProps = z.infer<typeof BaseComponentPropsSchema>;\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { SwitchProps as AriaSwitchProps } from 'react-aria-components';\n\n/**\n * Switch props schema extending BaseComponentProps\n *\n * @see React Aria Switch: https://react-spectrum.adobe.com/react-aria/Switch.html\n * @see ShadCN Switch: https://ui.shadcn.com/docs/components/switch\n * @see spec.md (WCAG 2.2 AAA - 7:1 contrast, 44x44px touch targets)\n * @see constitution.md Principle IV (Accessibility First)\n */\nexport const SwitchPropsSchema = BaseComponentPropsSchema.extend({\n // State management (controlled/uncontrolled)\n isSelected: z.boolean().optional(),\n defaultSelected: z.boolean().optional().default(false),\n onChange: z.function().optional(),\n\n // Variants (matching Button pattern)\n variant: z\n .enum(['default', 'destructive'])\n .optional()\n .default('default'),\n\n // Sizes (3 sizes for consistency)\n size: z.enum(['sm', 'default', 'lg']).optional().default('default'),\n\n // States\n isDisabled: z.boolean().optional().default(false),\n isReadOnly: z.boolean().optional().default(false),\n\n // Labels (optional built-in labeling)\n label: z.string().optional(),\n description: z.string().optional(),\n\n // React Aria SwitchProps integration\n onFocus: z.function().optional(),\n onBlur: z.function().optional(),\n onFocusChange: z.function().optional(),\n autoFocus: z.boolean().optional(),\n});\n\nexport type SwitchProps = z.infer<typeof SwitchPropsSchema> &\n Omit<AriaSwitchProps, keyof z.infer<typeof SwitchPropsSchema>>;\n\n/**\n * CVA variant configuration types\n * Used for class-variance-authority integration\n */\nexport type SwitchVariant = z.infer<typeof SwitchPropsSchema>['variant'];\nexport type SwitchSize = z.infer<typeof SwitchPropsSchema>['size'];\n"]}
@@ -8,30 +8,8 @@
8
8
  */
9
9
  import { type ReactNode, type ReactElement, type ForwardedRef } from 'react';
10
10
  import { type Selection, type SortDescriptor } from 'react-aria-components';
11
+ import { tableContainerVariants, tableVariants, tableHeaderVariants, tableFooterVariants, tableCaptionVariants, columnVariants, rowVariants, cellVariants } from './Table.styles';
11
12
  import type { TableHeaderProps, TableBodyProps, RowProps } from './Table.types';
12
- export declare const tableContainerVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
13
- export declare const tableVariants: (props?: ({
14
- variant?: "default" | "bordered" | "striped" | null | undefined;
15
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
16
- export declare const tableHeaderVariants: (props?: ({
17
- sticky?: boolean | null | undefined;
18
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
19
- export declare const tableFooterVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
20
- export declare const tableCaptionVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
21
- export declare const columnVariants: (props?: ({
22
- allowsSorting?: boolean | null | undefined;
23
- align?: "end" | "center" | "start" | null | undefined;
24
- size?: "default" | "sm" | "lg" | null | undefined;
25
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
26
- export declare const rowVariants: (props?: ({
27
- isSelected?: boolean | null | undefined;
28
- variant?: "default" | "striped" | null | undefined;
29
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
30
- export declare const cellVariants: (props?: ({
31
- align?: "end" | "center" | "start" | null | undefined;
32
- size?: "default" | "sm" | "lg" | null | undefined;
33
- isRowHeader?: boolean | null | undefined;
34
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
35
13
  declare const Table: import("react").ForwardRefExoticComponent<{
36
14
  selectionMode: "single" | "multiple" | "none";
37
15
  selectionBehavior: "replace" | "toggle";
@@ -105,7 +83,7 @@ declare const Column: import("react").ForwardRefExoticComponent<{
105
83
  declare const Row: <T extends object>(props: RowProps<T> & {
106
84
  ref?: ForwardedRef<HTMLTableRowElement>;
107
85
  }) => ReactElement;
108
- declare const Cell: import("react").ForwardRefExoticComponent<{
86
+ declare const Cell: import("react").NamedExoticComponent<{
109
87
  children: ReactNode;
110
88
  id?: string | undefined;
111
89
  'aria-label'?: string | undefined;
@@ -119,5 +97,6 @@ declare const Cell: import("react").ForwardRefExoticComponent<{
119
97
  className?: string | undefined;
120
98
  } & import("react").RefAttributes<HTMLTableCellElement>>;
121
99
  export { Table, TableHeader, TableBody, TableFooter, TableCaption, Column, Row, Cell, };
100
+ export { tableContainerVariants, tableVariants, tableHeaderVariants, tableFooterVariants, tableCaptionVariants, columnVariants, rowVariants, cellVariants, };
122
101
  export type { Selection, SortDescriptor };
123
102
  //# sourceMappingURL=Table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/Table.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AACf,OAAO,EAaL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EAId,QAAQ,EAIT,MAAM,eAAe,CAAC;AAyBvB,eAAO,MAAM,sBAAsB,oFAAyC,CAAC;AAG7E,eAAO,MAAM,aAAa;;8EAczB,CAAC;AAGF,eAAO,MAAM,mBAAmB;;8EAU9B,CAAC;AAGH,eAAO,MAAM,mBAAmB,oFAK9B,CAAC;AAGH,eAAO,MAAM,oBAAoB,oFAE/B,CAAC;AAGH,eAAO,MAAM,cAAc;;;;8EAgC1B,CAAC;AAGF,eAAO,MAAM,WAAW;;;8EAyBvB,CAAC;AAGF,eAAO,MAAM,YAAY;;;;8EAyBxB,CAAC;AAMF,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;oDAsDV,CAAC;AAwCF,QAAA,MAAM,WAAW,EAAmC,CAAC,CAAC,SAAS,MAAM,EACnE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAA;CAAE,KACzE,YAAY,CAAC;AAoClB,QAAA,MAAM,SAAS,EAAiC,CAAC,CAAC,SAAS,MAAM,EAC/D,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAA;CAAE,KACvE,YAAY,CAAC;AAQlB,QAAA,MAAM,WAAW;;;;;;;;;;2DAahB,CAAC;AAQF,QAAA,MAAM,YAAY;;;;;;;;;;2DAajB,CAAC;AAQF,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;wDA6CX,CAAC;AAuDF,QAAA,MAAM,GAAG,EAA2B,CAAC,CAAC,SAAS,MAAM,EACnD,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAA;CAAE,KAC7D,YAAY,CAAC;AAQlB,QAAA,MAAM,IAAI;;;;;;;;;;;;wDAcT,CAAC;AAQF,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,EACN,GAAG,EACH,IAAI,GACL,CAAC;AAGF,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/Table.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAML,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AACf,OAAO,EAaL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EAId,QAAQ,EAIT,MAAM,eAAe,CAAC;AAwBvB,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;oDAmEV,CAAC;AAwCF,QAAA,MAAM,WAAW,EAAmC,CAAC,CAAC,SAAS,MAAM,EACnE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAA;CAAE,KACzE,YAAY,CAAC;AAoClB,QAAA,MAAM,SAAS,EAAiC,CAAC,CAAC,SAAS,MAAM,EAC/D,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAA;CAAE,KACvE,YAAY,CAAC;AAQlB,QAAA,MAAM,WAAW;;;;;;;;;;2DAahB,CAAC;AAQF,QAAA,MAAM,YAAY;;;;;;;;;;2DAajB,CAAC;AAQF,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;wDA6CX,CAAC;AA0DF,QAAA,MAAM,GAAG,EAA2B,CAAC,CAAC,SAAS,MAAM,EACnD,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAA;CAAE,KAC7D,YAAY,CAAC;AAQlB,QAAA,MAAM,IAAI;;;;;;;;;;;;wDAcR,CAAC;AAQH,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,EACN,GAAG,EACH,IAAI,GACL,CAAC;AAGF,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,GACb,CAAC;AAGF,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,24 @@
1
+ export declare const tableContainerVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
2
+ export declare const tableVariants: (props?: ({
3
+ variant?: "default" | "bordered" | "striped" | null | undefined;
4
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
+ export declare const tableHeaderVariants: (props?: ({
6
+ sticky?: boolean | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export declare const tableFooterVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
9
+ export declare const tableCaptionVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
10
+ export declare const columnVariants: (props?: ({
11
+ allowsSorting?: boolean | null | undefined;
12
+ align?: "end" | "center" | "start" | null | undefined;
13
+ size?: "default" | "sm" | "lg" | null | undefined;
14
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
15
+ export declare const rowVariants: (props?: ({
16
+ isSelected?: boolean | null | undefined;
17
+ variant?: "default" | "striped" | null | undefined;
18
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
19
+ export declare const cellVariants: (props?: ({
20
+ align?: "end" | "center" | "start" | null | undefined;
21
+ size?: "default" | "sm" | "lg" | null | undefined;
22
+ isRowHeader?: boolean | null | undefined;
23
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
24
+ //# sourceMappingURL=Table.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.styles.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/Table.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,oFAAyC,CAAC;AAG7E,eAAO,MAAM,aAAa;;8EAczB,CAAC;AAGF,eAAO,MAAM,mBAAmB;;8EAU9B,CAAC;AAGH,eAAO,MAAM,mBAAmB,oFAK9B,CAAC;AAGH,eAAO,MAAM,oBAAoB,oFAE/B,CAAC;AAGH,eAAO,MAAM,cAAc;;;;8EAgC1B,CAAC;AAGF,eAAO,MAAM,WAAW;;;8EAyBvB,CAAC;AAGF,eAAO,MAAM,YAAY;;;;8EAyBxB,CAAC"}
@@ -1,76 +1,3 @@
1
- 'use strict';
2
-
3
- var chunk4E4E2GSS_js = require('../../chunk-4E4E2GSS.js');
4
- require('../../chunk-Q3572X2J.js');
5
- require('../../chunk-B5Q4UPL6.js');
6
- require('../../chunk-VIREG536.js');
7
- require('../../chunk-T4COXKQ3.js');
8
-
9
-
10
-
11
- Object.defineProperty(exports, "Cell", {
12
- enumerable: true,
13
- get: function () { return chunk4E4E2GSS_js.Cell; }
14
- });
15
- Object.defineProperty(exports, "Column", {
16
- enumerable: true,
17
- get: function () { return chunk4E4E2GSS_js.Column; }
18
- });
19
- Object.defineProperty(exports, "Row", {
20
- enumerable: true,
21
- get: function () { return chunk4E4E2GSS_js.Row; }
22
- });
23
- Object.defineProperty(exports, "Table", {
24
- enumerable: true,
25
- get: function () { return chunk4E4E2GSS_js.Table; }
26
- });
27
- Object.defineProperty(exports, "TableBody", {
28
- enumerable: true,
29
- get: function () { return chunk4E4E2GSS_js.TableBody; }
30
- });
31
- Object.defineProperty(exports, "TableCaption", {
32
- enumerable: true,
33
- get: function () { return chunk4E4E2GSS_js.TableCaption; }
34
- });
35
- Object.defineProperty(exports, "TableFooter", {
36
- enumerable: true,
37
- get: function () { return chunk4E4E2GSS_js.TableFooter; }
38
- });
39
- Object.defineProperty(exports, "TableHeader", {
40
- enumerable: true,
41
- get: function () { return chunk4E4E2GSS_js.TableHeader; }
42
- });
43
- Object.defineProperty(exports, "cellVariants", {
44
- enumerable: true,
45
- get: function () { return chunk4E4E2GSS_js.cellVariants; }
46
- });
47
- Object.defineProperty(exports, "columnVariants", {
48
- enumerable: true,
49
- get: function () { return chunk4E4E2GSS_js.columnVariants; }
50
- });
51
- Object.defineProperty(exports, "rowVariants", {
52
- enumerable: true,
53
- get: function () { return chunk4E4E2GSS_js.rowVariants; }
54
- });
55
- Object.defineProperty(exports, "tableCaptionVariants", {
56
- enumerable: true,
57
- get: function () { return chunk4E4E2GSS_js.tableCaptionVariants; }
58
- });
59
- Object.defineProperty(exports, "tableContainerVariants", {
60
- enumerable: true,
61
- get: function () { return chunk4E4E2GSS_js.tableContainerVariants; }
62
- });
63
- Object.defineProperty(exports, "tableFooterVariants", {
64
- enumerable: true,
65
- get: function () { return chunk4E4E2GSS_js.tableFooterVariants; }
66
- });
67
- Object.defineProperty(exports, "tableHeaderVariants", {
68
- enumerable: true,
69
- get: function () { return chunk4E4E2GSS_js.tableHeaderVariants; }
70
- });
71
- Object.defineProperty(exports, "tableVariants", {
72
- enumerable: true,
73
- get: function () { return chunk4E4E2GSS_js.tableVariants; }
74
- });
75
- //# sourceMappingURL=index.js.map
1
+ "use client";
2
+ 'use strict';var 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'),lucideReact=require('lucide-react');function n(...a){return tailwindMerge.twMerge(clsx.clsx(a))}var V="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2";var S="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 J=classVarianceAuthority.cva(["group inline-flex items-center gap-2 cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",V,S].join(" "),{variants:{size:{sm:"min-h-[44px] text-sm",default:"min-h-[44px] text-sm",lg:"min-h-[48px] text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""}},defaultVariants:{size:"default",isDisabled:false}}),Q=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)]","data-[indeterminate]:border-[var(--primary)]","data-[indeterminate]:bg-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive)]","data-[selected]:bg-[var(--destructive)]","data-[indeterminate]:border-[var(--destructive)]","data-[indeterminate]:bg-[var(--destructive)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"},isInvalid:{true:"border-[var(--destructive)]",false:""}},defaultVariants:{variant:"default",size:"default",isInvalid:false}}),X=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 data-[indeterminate]: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 Z({className:a,...e}){return jsxRuntime.jsx("svg",{className:a,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:jsxRuntime.jsx("polyline",{points:"20 6 9 17 4 12"})})}function ee({className:a,...e}){return jsxRuntime.jsx("svg",{className:a,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:jsxRuntime.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})})}var w=react.forwardRef(({isSelected:a,defaultSelected:e,isDisabled:t,isReadOnly:o,isIndeterminate:s,isInvalid:i=false,isRequired:l=false,onChange:u,onFocusChange:c,value:x,name:C,size:b="default",variant:p="default",label:h,description:g,selectedIcon:f,className:y,id:I,"aria-label":L,"aria-labelledby":be,"aria-describedby":pe,"data-testid":me,slot:ue},fe)=>{let Te=t||void 0,ve=o||void 0,xe=s||void 0,Ce=(m,U)=>{let R=n(X({variant:p,size:b})),E=m||void 0,Y=U||void 0;if(U)return jsxRuntime.jsx(ee,{className:R,"data-selected":E,"data-indeterminate":Y});if(f&&m){if(react.isValidElement(f)){let G=f;return react.cloneElement(G,{className:n(R,G.props.className),"data-selected":E})}return jsxRuntime.jsx("span",{className:R,"data-selected":E,children:f})}return jsxRuntime.jsx(Z,{className:R,"data-selected":E,"data-indeterminate":Y})};return jsxRuntime.jsx(reactAriaComponents.Checkbox,{ref:fe,id:I,isSelected:a,defaultSelected:e,isDisabled:Te,isReadOnly:ve,isIndeterminate:xe,isInvalid:i,isRequired:l,onChange:u,onFocusChange:c,value:x,name:C,slot:ue,"aria-label":L,"aria-labelledby":be,"aria-describedby":pe,"data-testid":me,className:m=>n(J({size:b,isDisabled:m.isDisabled}),y),children:m=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:Q({variant:p,size:b,isInvalid:m.isInvalid}),"data-selected":m.isSelected||void 0,"data-indeterminate":m.isIndeterminate||void 0,children:Ce(m.isSelected,m.isIndeterminate)}),(h||g)&&jsxRuntime.jsxs("div",{className:"flex flex-col",children:[h&&jsxRuntime.jsx("span",{className:"font-medium text-[var(--content-foreground)]",children:h}),g&&jsxRuntime.jsx("span",{className:"text-sm text-[var(--menu-muted)]",children:g})]})]})})});w.displayName="Checkbox";var z=classVarianceAuthority.cva(["relative w-full overflow-auto"]),B=classVarianceAuthority.cva(["w-full caption-bottom text-sm","border-collapse"],{variants:{variant:{default:"",bordered:"border border-[var(--border)] rounded-md",striped:""}},defaultVariants:{variant:"default"}}),D=classVarianceAuthority.cva(["[&_tr]:border-b"],{variants:{sticky:{true:"sticky top-0 z-10 bg-[var(--content-background)]",false:""}},defaultVariants:{sticky:false}}),F=classVarianceAuthority.cva(["border-t border-[var(--border)]","bg-[var(--accent-background)]/50","font-medium","[&>tr]:last:border-b-0"]),O=classVarianceAuthority.cva(["mt-4 text-sm text-[var(--menu-muted)]"]),k=classVarianceAuthority.cva(["h-12 px-4 text-left align-middle font-medium","text-[var(--menu-muted)]","[&:has([role=checkbox])]:pr-0","select-none","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-inset"],{variants:{allowsSorting:{true:"cursor-pointer hover:bg-[var(--accent)]/50",false:""},align:{start:"text-start",center:"text-center",end:"text-end"},size:{sm:"h-10 px-3 text-xs",default:"h-12 px-4 text-sm",lg:"h-14 px-5 text-base"}},defaultVariants:{allowsSorting:false,align:"start",size:"default"}}),H=classVarianceAuthority.cva(["border-b border-[var(--border)]","transition-colors","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-inset","hover:bg-[var(--accent-background)]/50","data-[disabled]:pointer-events-none data-[disabled]:opacity-50"],{variants:{isSelected:{true:"bg-[var(--accent)] data-[selected]:bg-[var(--accent)]",false:""},variant:{default:"",striped:"even:bg-[var(--accent-background)]/30"}},defaultVariants:{isSelected:false,variant:"default"}}),A=classVarianceAuthority.cva(["p-4 align-middle","[&:has([role=checkbox])]:pr-0"],{variants:{align:{start:"text-start",center:"text-center",end:"text-end"},size:{sm:"p-3 text-xs",default:"p-4 text-sm",lg:"p-5 text-base"},isRowHeader:{true:"font-medium",false:""}},defaultVariants:{align:"start",size:"default",isRowHeader:false}});var N=react.createContext({variant:"default",size:"default",selectionMode:"none",stickyHeader:false}),re=react.forwardRef(({className:a,variant:e="default",size:t="default",stickyHeader:o=false,selectionMode:s="none",selectionBehavior:i="toggle",disallowEmptySelection:l=false,disabledBehavior:u="selection",selectedKeys:c,defaultSelectedKeys:x,onSelectionChange:C,disabledKeys:b,sortDescriptor:p,onSortChange:h,onRowAction:g,children:f,...y},I)=>{process.env.NODE_ENV!=="production"&&t==="sm"&&s!=="none"&&console.warn('[Table] size="sm" with selectionMode produces rows shorter than the 44px WCAG 2.2 AAA minimum touch target. Use size="default" or size="lg" for accessible interactive tables.');let L=react.useMemo(()=>({variant:e,size:t,selectionMode:s,stickyHeader:o}),[e,t,s,o]);return jsxRuntime.jsx(N.Provider,{value:L,children:jsxRuntime.jsx("div",{className:n(z(),a),"data-testid":"table-container",children:jsxRuntime.jsx(reactAriaComponents.Table,{ref:I,className:n(B({variant:e})),selectionMode:s,selectionBehavior:i,disallowEmptySelection:l,disabledBehavior:u,selectedKeys:c,defaultSelectedKeys:x,onSelectionChange:C,disabledKeys:b,sortDescriptor:p,onSortChange:h,onRowAction:g,"data-testid":"table","data-variant":e,"data-size":t,...y,children:f})})})});re.displayName="Table";function De({className:a,children:e,columns:t,...o},s){let{size:i,selectionMode:l,stickyHeader:u}=react.useContext(N),{allowsDragging:c}=reactAriaComponents.useTableOptions();return jsxRuntime.jsxs(reactAriaComponents.TableHeader,{ref:s,className:n(D({sticky:u}),a),"data-testid":"table-header",...o,children:[l==="multiple"&&jsxRuntime.jsx(reactAriaComponents.Column,{className:n(k({size:i}),"w-12"),children:jsxRuntime.jsx(w,{slot:"selection","aria-label":"Select all",size:i})}),c&&jsxRuntime.jsx(reactAriaComponents.Column,{}),t?jsxRuntime.jsx(reactAriaComponents.Collection,{items:t,children:e}):e]})}var oe=react.forwardRef(De);oe.displayName="TableHeader";function Fe({className:a,children:e,items:t,renderEmptyState:o,...s},i){return jsxRuntime.jsx(reactAriaComponents.TableBody,{ref:i,className:n(a),items:t,renderEmptyState:o?()=>jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:99,className:"text-center p-8",children:o()})}):void 0,"data-testid":"table-body",...s,children:e})}var se=react.forwardRef(Fe);se.displayName="TableBody";var ne=react.forwardRef(({className:a,children:e,...t},o)=>jsxRuntime.jsx("tfoot",{ref:o,className:n(F(),a),"data-testid":"table-footer",...t,children:e}));ne.displayName="TableFooter";var ie=react.forwardRef(({className:a,children:e,...t},o)=>jsxRuntime.jsx("caption",{ref:o,className:n(O(),a),"data-testid":"table-caption",...t,children:e}));ie.displayName="TableCaption";var le=react.forwardRef(({className:a,children:e,isRowHeader:t=false,allowsSorting:o=false,align:s="start",width:i,minWidth:l,maxWidth:u,...c},x)=>{let{size:C}=react.useContext(N);return jsxRuntime.jsx(reactAriaComponents.Column,{ref:x,isRowHeader:t,allowsSorting:o,width:i,minWidth:l,maxWidth:u,className:n(k({allowsSorting:o,align:s,size:C}),a),...c,children:({allowsSorting:b,sortDirection:p})=>jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("span",{children:e}),b&&p&&jsxRuntime.jsx("span",{"aria-hidden":"true","data-sort-direction":p,children:p==="ascending"?jsxRuntime.jsx(lucideReact.ChevronUp,{className:"h-4 w-4"}):jsxRuntime.jsx(lucideReact.ChevronDown,{className:"h-4 w-4"})})]})})});le.displayName="Column";function Oe({className:a,children:e,columns:t,href:o,isDisabled:s,...i},l){let{variant:u,size:c,selectionMode:x}=react.useContext(N),{allowsDragging:C}=reactAriaComponents.useTableOptions(),b=u==="striped"?"striped":"default",p=H({isSelected:true,variant:b}),h=H({isSelected:false,variant:b}),g=n(A({size:c}),"w-12");return jsxRuntime.jsxs(reactAriaComponents.Row,{ref:l,href:o,isDisabled:s,className:({isSelected:f,isDisabled:y})=>n(f?p:h,y&&"opacity-50",a),"data-testid":"table-row",...i,children:[x==="multiple"&&jsxRuntime.jsx(reactAriaComponents.Cell,{className:g,children:jsxRuntime.jsx(w,{slot:"selection","aria-label":"Select row",size:c})}),C&&jsxRuntime.jsx(reactAriaComponents.Cell,{}),t?jsxRuntime.jsx(reactAriaComponents.Collection,{items:t,children:e}):e]})}var de=react.forwardRef(Oe);de.displayName="Row";var ce=react.memo(react.forwardRef(({className:a,children:e,align:t="start",colSpan:o,...s},i)=>{let{size:l}=react.useContext(N);return jsxRuntime.jsx(reactAriaComponents.Cell,{ref:i,className:n(A({align:t,size:l}),a),...s,children:e})}));ce.displayName="Cell";exports.Cell=ce;exports.Column=le;exports.Row=de;exports.Table=re;exports.TableBody=se;exports.TableCaption=ie;exports.TableFooter=ne;exports.TableHeader=oe;exports.cellVariants=A;exports.columnVariants=k;exports.rowVariants=H;exports.tableCaptionVariants=O;exports.tableContainerVariants=z;exports.tableFooterVariants=F;exports.tableHeaderVariants=D;exports.tableVariants=B;//# sourceMappingURL=index.js.map
76
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/utils/cn.ts","../../../src/styles/interaction-states.ts","../../../src/elements/Checkbox/Checkbox.tsx","../../../src/elements/Table/Table.styles.ts","../../../src/elements/Table/Table.tsx"],"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","tableContainerVariants","tableVariants","tableHeaderVariants","tableFooterVariants","tableCaptionVariants","columnVariants","rowVariants","cellVariants","TableContext","createContext","Table","stickyHeader","selectionMode","selectionBehavior","disallowEmptySelection","disabledBehavior","selectedKeys","defaultSelectedKeys","onSelectionChange","disabledKeys","sortDescriptor","onSortChange","onRowAction","children","contextValue","useMemo","AriaTable","TableHeaderInner","columns","useContext","allowsDragging","useTableOptions","AriaTableHeader","AriaColumn","Collection","TableHeader","TableBodyInner","items","renderEmptyState","AriaTableBody","TableBody","TableFooter","TableCaption","Column","isRowHeader","allowsSorting","align","width","minWidth","maxWidth","canSort","sortDirection","ChevronUp","ChevronDown","RowInner","href","rowVariant","selectedClasses","unselectedClasses","selectionCellClasses","AriaRow","disabled","AriaCell","Row","Cell","memo","_colSpan"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","/**\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 { cva } from 'class-variance-authority';\n\n// Table container variants (wrapper div)\nexport const tableContainerVariants = cva(['relative w-full overflow-auto']);\n\n// Table variants\nexport const tableVariants = cva(\n ['w-full caption-bottom text-sm', 'border-collapse'],\n {\n variants: {\n variant: {\n default: '',\n bordered: 'border border-[var(--border)] rounded-md',\n striped: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\n// Table header variants\nexport const tableHeaderVariants = cva(['[&_tr]:border-b'], {\n variants: {\n sticky: {\n true: 'sticky top-0 z-10 bg-[var(--content-background)]',\n false: '',\n },\n },\n defaultVariants: {\n sticky: false,\n },\n});\n\n// Table footer variants\nexport const tableFooterVariants = cva([\n 'border-t border-[var(--border)]',\n 'bg-[var(--accent-background)]/50',\n 'font-medium',\n '[&>tr]:last:border-b-0',\n]);\n\n// Table caption variants\nexport const tableCaptionVariants = cva([\n 'mt-4 text-sm text-[var(--menu-muted)]',\n]);\n\n// Column variants\nexport const columnVariants = cva(\n [\n 'h-12 px-4 text-left align-middle font-medium',\n 'text-[var(--menu-muted)]',\n '[&:has([role=checkbox])]:pr-0',\n 'select-none',\n 'focus-visible:outline-none focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)] focus-visible:ring-inset',\n ],\n {\n variants: {\n allowsSorting: {\n true: 'cursor-pointer hover:bg-[var(--accent)]/50',\n false: '',\n },\n align: {\n start: 'text-start',\n center: 'text-center',\n end: 'text-end',\n },\n size: {\n sm: 'h-10 px-3 text-xs',\n default: 'h-12 px-4 text-sm',\n lg: 'h-14 px-5 text-base',\n },\n },\n defaultVariants: {\n allowsSorting: false,\n align: 'start',\n size: 'default',\n },\n }\n);\n\n// Row variants\nexport const rowVariants = cva(\n [\n 'border-b border-[var(--border)]',\n 'transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)] focus-visible:ring-inset',\n 'hover:bg-[var(--accent-background)]/50',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n ],\n {\n variants: {\n isSelected: {\n true: 'bg-[var(--accent)] data-[selected]:bg-[var(--accent)]',\n false: '',\n },\n variant: {\n default: '',\n striped: 'even:bg-[var(--accent-background)]/30',\n },\n },\n defaultVariants: {\n isSelected: false,\n variant: 'default',\n },\n }\n);\n\n// Cell variants\nexport const cellVariants = cva(\n ['p-4 align-middle', '[&:has([role=checkbox])]:pr-0'],\n {\n variants: {\n align: {\n start: 'text-start',\n center: 'text-center',\n end: 'text-end',\n },\n size: {\n sm: 'p-3 text-xs',\n default: 'p-4 text-sm',\n lg: 'p-5 text-base',\n },\n isRowHeader: {\n true: 'font-medium',\n false: '',\n },\n },\n defaultVariants: {\n align: 'start',\n size: 'default',\n isRowHeader: false,\n },\n }\n);\n","'use client';\n\n/**\n * Table Component - Accessible Data Table (v1)\n * ARIA grid pattern with React Aria primitives\n *\n * @see plan.md for architecture details\n * @see table-prd.md for requirements\n * @see WCAG 2.2 AAA compliance\n */\n\nimport {\n forwardRef,\n memo,\n createContext,\n useContext,\n useMemo,\n type ReactNode,\n type ReactElement,\n type ForwardedRef,\n} from 'react';\nimport {\n Table as AriaTable,\n TableHeader as AriaTableHeader,\n TableBody as AriaTableBody,\n Column as AriaColumn,\n Row as AriaRow,\n Cell as AriaCell,\n Collection,\n useTableOptions,\n type TableHeaderProps as AriaTableHeaderProps,\n type TableBodyProps as AriaTableBodyProps,\n type RowProps as AriaRowProps,\n type CellProps as AriaCellProps,\n type Selection,\n type SortDescriptor,\n} from 'react-aria-components';\nimport { Checkbox } from '../Checkbox';\nimport { ChevronUp, ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport {\n tableContainerVariants,\n tableVariants,\n tableHeaderVariants,\n tableFooterVariants,\n tableCaptionVariants,\n columnVariants,\n rowVariants,\n cellVariants,\n} from './Table.styles';\nimport type {\n TableProps,\n TableHeaderProps,\n TableBodyProps,\n TableFooterProps,\n TableCaptionProps,\n ColumnProps,\n RowProps,\n CellProps,\n TableVariant,\n TableSize,\n} from './Table.types';\n\n// ============================================================================\n// Context for passing table-level props to children\n// ============================================================================\n\ninterface TableContextValue {\n variant: TableVariant;\n size: TableSize;\n selectionMode: 'none' | 'single' | 'multiple';\n stickyHeader: boolean;\n}\n\nconst TableContext = createContext<TableContextValue>({\n variant: 'default',\n size: 'default',\n selectionMode: 'none',\n stickyHeader: false,\n});\n\n// ============================================================================\n// Table Component\n// ============================================================================\n\nconst Table = forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n variant = 'default',\n size = 'default',\n stickyHeader = false,\n selectionMode = 'none',\n selectionBehavior = 'toggle',\n disallowEmptySelection = false,\n disabledBehavior = 'selection',\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n disabledKeys,\n sortDescriptor,\n onSortChange,\n onRowAction,\n children,\n ...props\n },\n ref\n ) => {\n // Warn when sm size is used with selection (touch targets < 44px)\n if (process.env.NODE_ENV !== 'production' && size === 'sm' && selectionMode !== 'none') {\n console.warn(\n '[Table] size=\"sm\" with selectionMode produces rows shorter than the 44px WCAG 2.2 AAA minimum touch target. ' +\n 'Use size=\"default\" or size=\"lg\" for accessible interactive tables.'\n );\n }\n\n const contextValue = useMemo(\n () => ({ variant, size, selectionMode, stickyHeader }),\n [variant, size, selectionMode, stickyHeader]\n );\n\n return (\n <TableContext.Provider value={contextValue}>\n <div\n className={cn(tableContainerVariants(), className)}\n data-testid=\"table-container\"\n >\n <AriaTable\n ref={ref}\n className={cn(tableVariants({ variant }))}\n selectionMode={selectionMode}\n selectionBehavior={selectionBehavior}\n disallowEmptySelection={disallowEmptySelection}\n disabledBehavior={disabledBehavior}\n selectedKeys={selectedKeys}\n defaultSelectedKeys={defaultSelectedKeys}\n onSelectionChange={onSelectionChange}\n disabledKeys={disabledKeys}\n sortDescriptor={sortDescriptor}\n onSortChange={onSortChange}\n onRowAction={onRowAction}\n data-testid=\"table\"\n data-variant={variant}\n data-size={size}\n {...props}\n >\n {children}\n </AriaTable>\n </div>\n </TableContext.Provider>\n );\n }\n);\n\nTable.displayName = 'Table';\n\n// ============================================================================\n// TableHeader Component\n// ============================================================================\n\nfunction TableHeaderInner<T extends object>(\n { className, children, columns, ...props }: TableHeaderProps<T>,\n ref: ForwardedRef<HTMLTableSectionElement>\n): ReactElement {\n const { size, selectionMode, stickyHeader } = useContext(TableContext);\n const { allowsDragging } = useTableOptions();\n\n return (\n <AriaTableHeader\n ref={ref}\n className={cn(tableHeaderVariants({ sticky: stickyHeader }), className)}\n data-testid=\"table-header\"\n {...(props as AriaTableHeaderProps<T>)}\n >\n {/* Selection checkbox column */}\n {selectionMode === 'multiple' && (\n <AriaColumn className={cn(columnVariants({ size }), 'w-12')}>\n <Checkbox slot=\"selection\" aria-label=\"Select all\" size={size} />\n </AriaColumn>\n )}\n {/* Drag handle column if dragging is allowed */}\n {allowsDragging && <AriaColumn />}\n {/* Render columns */}\n {columns ? (\n <Collection items={columns}>{children as (item: T) => ReactElement}</Collection>\n ) : (\n children\n )}\n </AriaTableHeader>\n );\n}\n\nconst TableHeader = forwardRef(TableHeaderInner) as <T extends object>(\n props: TableHeaderProps<T> & { ref?: ForwardedRef<HTMLTableSectionElement> }\n) => ReactElement;\n\n(TableHeader as { displayName?: string }).displayName = 'TableHeader';\n\n// ============================================================================\n// TableBody Component\n// ============================================================================\n\nfunction TableBodyInner<T extends object>(\n { className, children, items, renderEmptyState, ...props }: TableBodyProps<T>,\n ref: ForwardedRef<HTMLTableSectionElement>\n): ReactElement {\n return (\n <AriaTableBody\n ref={ref}\n className={cn(className)}\n items={items}\n renderEmptyState={\n renderEmptyState\n ? () => (\n <tr>\n <td colSpan={99} className=\"text-center p-8\">\n {renderEmptyState()}\n </td>\n </tr>\n )\n : undefined\n }\n data-testid=\"table-body\"\n {...(props as AriaTableBodyProps<T>)}\n >\n {children as AriaTableBodyProps<T>['children']}\n </AriaTableBody>\n );\n}\n\nconst TableBody = forwardRef(TableBodyInner) as <T extends object>(\n props: TableBodyProps<T> & { ref?: ForwardedRef<HTMLTableSectionElement> }\n) => ReactElement;\n\n(TableBody as { displayName?: string }).displayName = 'TableBody';\n\n// ============================================================================\n// TableFooter Component (Custom - not from React Aria)\n// ============================================================================\n\nconst TableFooter = forwardRef<HTMLTableSectionElement, TableFooterProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <tfoot\n ref={ref}\n className={cn(tableFooterVariants(), className)}\n data-testid=\"table-footer\"\n {...props}\n >\n {children}\n </tfoot>\n );\n }\n);\n\nTableFooter.displayName = 'TableFooter';\n\n// ============================================================================\n// TableCaption Component (Custom - not from React Aria)\n// ============================================================================\n\nconst TableCaption = forwardRef<HTMLTableCaptionElement, TableCaptionProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <caption\n ref={ref}\n className={cn(tableCaptionVariants(), className)}\n data-testid=\"table-caption\"\n {...props}\n >\n {children}\n </caption>\n );\n }\n);\n\nTableCaption.displayName = 'TableCaption';\n\n// ============================================================================\n// Column Component\n// ============================================================================\n\nconst Column = forwardRef<HTMLTableCellElement, ColumnProps>(\n (\n {\n className,\n children,\n isRowHeader = false,\n allowsSorting = false,\n align = 'start',\n width,\n minWidth,\n maxWidth,\n ...props\n },\n ref\n ) => {\n const { size } = useContext(TableContext);\n\n return (\n <AriaColumn\n ref={ref}\n isRowHeader={isRowHeader}\n allowsSorting={allowsSorting}\n width={width}\n minWidth={minWidth}\n maxWidth={maxWidth}\n className={cn(columnVariants({ allowsSorting, align, size }), className)}\n {...props}\n >\n {({ allowsSorting: canSort, sortDirection }) => (\n <div className=\"flex items-center gap-1\">\n <span>{children as ReactNode}</span>\n {canSort && sortDirection && (\n <span aria-hidden=\"true\" data-sort-direction={sortDirection}>\n {sortDirection === 'ascending' ? (\n <ChevronUp className=\"h-4 w-4\" />\n ) : (\n <ChevronDown className=\"h-4 w-4\" />\n )}\n </span>\n )}\n </div>\n )}\n </AriaColumn>\n );\n }\n);\n\n(Column as { displayName?: string }).displayName = 'Column';\n\n// ============================================================================\n// Row Component\n// ============================================================================\n\nfunction RowInner<T extends object>(\n { className, children, columns, href, isDisabled, ...props }: RowProps<T>,\n ref: ForwardedRef<HTMLTableRowElement>\n): ReactElement {\n const { variant, size, selectionMode } = useContext(TableContext);\n const { allowsDragging } = useTableOptions();\n\n // Pre-compute variant class strings to avoid CVA calls in render callback\n const rowVariant = variant === 'striped' ? 'striped' as const : 'default' as const;\n const selectedClasses = rowVariants({ isSelected: true, variant: rowVariant });\n const unselectedClasses = rowVariants({ isSelected: false, variant: rowVariant });\n const selectionCellClasses = cn(cellVariants({ size }), 'w-12');\n\n return (\n <AriaRow\n ref={ref}\n href={href}\n isDisabled={isDisabled}\n className={({ isSelected, isDisabled: disabled }) =>\n cn(\n isSelected ? selectedClasses : unselectedClasses,\n disabled && 'opacity-50',\n className\n )\n }\n data-testid=\"table-row\"\n {...(props as AriaRowProps<T>)}\n >\n {/* Selection checkbox cell */}\n {selectionMode === 'multiple' && (\n <AriaCell className={selectionCellClasses}>\n <Checkbox slot=\"selection\" aria-label=\"Select row\" size={size} />\n </AriaCell>\n )}\n {/* Drag handle cell if dragging is allowed */}\n {allowsDragging && (\n <AriaCell>\n {/* Placeholder for drag handle - v2 feature */}\n </AriaCell>\n )}\n {/* Render cells */}\n {columns ? (\n <Collection items={columns}>{children as (item: T) => ReactElement}</Collection>\n ) : (\n children\n )}\n </AriaRow>\n );\n}\n\nconst Row = forwardRef(RowInner) as <T extends object>(\n props: RowProps<T> & { ref?: ForwardedRef<HTMLTableRowElement> }\n) => ReactElement;\n\n(Row as { displayName?: string }).displayName = 'Row';\n\n// ============================================================================\n// Cell Component\n// ============================================================================\n\nconst Cell = memo(forwardRef<HTMLTableCellElement, CellProps>(\n ({ className, children, align = 'start', colSpan: _colSpan, ...props }, ref) => {\n const { size } = useContext(TableContext);\n\n return (\n <AriaCell\n ref={ref}\n className={cn(cellVariants({ align, size }), className)}\n {...(props as AriaCellProps)}\n >\n {children}\n </AriaCell>\n );\n }\n));\n\nCell.displayName = 'Cell';\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableCaption,\n Column,\n Row,\n Cell,\n};\n\n// Re-export CVA variants (defined in Table.styles.ts)\nexport {\n tableContainerVariants,\n tableVariants,\n tableHeaderVariants,\n tableFooterVariants,\n tableCaptionVariants,\n columnVariants,\n rowVariants,\n cellVariants,\n};\n\n// Re-export types\nexport type { Selection, SortDescriptor };\n"]}
@@ -1,7 +1,3 @@
1
- export { Cell, Column, Row, Table, TableBody, TableCaption, TableFooter, TableHeader, cellVariants, columnVariants, rowVariants, tableCaptionVariants, tableContainerVariants, tableFooterVariants, tableHeaderVariants, tableVariants } from '../../chunk-6S25NMOT.mjs';
2
- import '../../chunk-UTW3QX2A.mjs';
3
- import '../../chunk-HK46BT5U.mjs';
4
- import '../../chunk-E2KQFV3O.mjs';
5
- import '../../chunk-5SVLJN2C.mjs';
6
- //# sourceMappingURL=index.mjs.map
1
+ "use client";
2
+ import {forwardRef,createContext,useMemo,useContext,memo,isValidElement,cloneElement}from'react';import {Checkbox,Table,Column,Cell,useTableOptions,TableHeader,Collection,TableBody,Row}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';import {ChevronUp,ChevronDown}from'lucide-react';function n(...a){return twMerge(clsx(a))}var V="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2";var S="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 J=cva(["group inline-flex items-center gap-2 cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",V,S].join(" "),{variants:{size:{sm:"min-h-[44px] text-sm",default:"min-h-[44px] text-sm",lg:"min-h-[48px] text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""}},defaultVariants:{size:"default",isDisabled:false}}),Q=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)]","data-[indeterminate]:border-[var(--primary)]","data-[indeterminate]:bg-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive)]","data-[selected]:bg-[var(--destructive)]","data-[indeterminate]:border-[var(--destructive)]","data-[indeterminate]:bg-[var(--destructive)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"},isInvalid:{true:"border-[var(--destructive)]",false:""}},defaultVariants:{variant:"default",size:"default",isInvalid:false}}),X=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 data-[indeterminate]: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 Z({className:a,...e}){return jsx("svg",{className:a,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:jsx("polyline",{points:"20 6 9 17 4 12"})})}function ee({className:a,...e}){return jsx("svg",{className:a,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})})}var w=forwardRef(({isSelected:a,defaultSelected:e,isDisabled:t,isReadOnly:o,isIndeterminate:s,isInvalid:i=false,isRequired:l=false,onChange:u,onFocusChange:c,value:x,name:C,size:b="default",variant:p="default",label:h,description:g,selectedIcon:f,className:y,id:I,"aria-label":L,"aria-labelledby":be,"aria-describedby":pe,"data-testid":me,slot:ue},fe)=>{let Te=t||void 0,ve=o||void 0,xe=s||void 0,Ce=(m,U)=>{let R=n(X({variant:p,size:b})),E=m||void 0,Y=U||void 0;if(U)return jsx(ee,{className:R,"data-selected":E,"data-indeterminate":Y});if(f&&m){if(isValidElement(f)){let G=f;return cloneElement(G,{className:n(R,G.props.className),"data-selected":E})}return jsx("span",{className:R,"data-selected":E,children:f})}return jsx(Z,{className:R,"data-selected":E,"data-indeterminate":Y})};return jsx(Checkbox,{ref:fe,id:I,isSelected:a,defaultSelected:e,isDisabled:Te,isReadOnly:ve,isIndeterminate:xe,isInvalid:i,isRequired:l,onChange:u,onFocusChange:c,value:x,name:C,slot:ue,"aria-label":L,"aria-labelledby":be,"aria-describedby":pe,"data-testid":me,className:m=>n(J({size:b,isDisabled:m.isDisabled}),y),children:m=>jsxs(Fragment,{children:[jsx("div",{className:Q({variant:p,size:b,isInvalid:m.isInvalid}),"data-selected":m.isSelected||void 0,"data-indeterminate":m.isIndeterminate||void 0,children:Ce(m.isSelected,m.isIndeterminate)}),(h||g)&&jsxs("div",{className:"flex flex-col",children:[h&&jsx("span",{className:"font-medium text-[var(--content-foreground)]",children:h}),g&&jsx("span",{className:"text-sm text-[var(--menu-muted)]",children:g})]})]})})});w.displayName="Checkbox";var z=cva(["relative w-full overflow-auto"]),B=cva(["w-full caption-bottom text-sm","border-collapse"],{variants:{variant:{default:"",bordered:"border border-[var(--border)] rounded-md",striped:""}},defaultVariants:{variant:"default"}}),D=cva(["[&_tr]:border-b"],{variants:{sticky:{true:"sticky top-0 z-10 bg-[var(--content-background)]",false:""}},defaultVariants:{sticky:false}}),F=cva(["border-t border-[var(--border)]","bg-[var(--accent-background)]/50","font-medium","[&>tr]:last:border-b-0"]),O=cva(["mt-4 text-sm text-[var(--menu-muted)]"]),k=cva(["h-12 px-4 text-left align-middle font-medium","text-[var(--menu-muted)]","[&:has([role=checkbox])]:pr-0","select-none","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-inset"],{variants:{allowsSorting:{true:"cursor-pointer hover:bg-[var(--accent)]/50",false:""},align:{start:"text-start",center:"text-center",end:"text-end"},size:{sm:"h-10 px-3 text-xs",default:"h-12 px-4 text-sm",lg:"h-14 px-5 text-base"}},defaultVariants:{allowsSorting:false,align:"start",size:"default"}}),H=cva(["border-b border-[var(--border)]","transition-colors","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-inset","hover:bg-[var(--accent-background)]/50","data-[disabled]:pointer-events-none data-[disabled]:opacity-50"],{variants:{isSelected:{true:"bg-[var(--accent)] data-[selected]:bg-[var(--accent)]",false:""},variant:{default:"",striped:"even:bg-[var(--accent-background)]/30"}},defaultVariants:{isSelected:false,variant:"default"}}),A=cva(["p-4 align-middle","[&:has([role=checkbox])]:pr-0"],{variants:{align:{start:"text-start",center:"text-center",end:"text-end"},size:{sm:"p-3 text-xs",default:"p-4 text-sm",lg:"p-5 text-base"},isRowHeader:{true:"font-medium",false:""}},defaultVariants:{align:"start",size:"default",isRowHeader:false}});var N=createContext({variant:"default",size:"default",selectionMode:"none",stickyHeader:false}),re=forwardRef(({className:a,variant:e="default",size:t="default",stickyHeader:o=false,selectionMode:s="none",selectionBehavior:i="toggle",disallowEmptySelection:l=false,disabledBehavior:u="selection",selectedKeys:c,defaultSelectedKeys:x,onSelectionChange:C,disabledKeys:b,sortDescriptor:p,onSortChange:h,onRowAction:g,children:f,...y},I)=>{process.env.NODE_ENV!=="production"&&t==="sm"&&s!=="none"&&console.warn('[Table] size="sm" with selectionMode produces rows shorter than the 44px WCAG 2.2 AAA minimum touch target. Use size="default" or size="lg" for accessible interactive tables.');let L=useMemo(()=>({variant:e,size:t,selectionMode:s,stickyHeader:o}),[e,t,s,o]);return jsx(N.Provider,{value:L,children:jsx("div",{className:n(z(),a),"data-testid":"table-container",children:jsx(Table,{ref:I,className:n(B({variant:e})),selectionMode:s,selectionBehavior:i,disallowEmptySelection:l,disabledBehavior:u,selectedKeys:c,defaultSelectedKeys:x,onSelectionChange:C,disabledKeys:b,sortDescriptor:p,onSortChange:h,onRowAction:g,"data-testid":"table","data-variant":e,"data-size":t,...y,children:f})})})});re.displayName="Table";function De({className:a,children:e,columns:t,...o},s){let{size:i,selectionMode:l,stickyHeader:u}=useContext(N),{allowsDragging:c}=useTableOptions();return jsxs(TableHeader,{ref:s,className:n(D({sticky:u}),a),"data-testid":"table-header",...o,children:[l==="multiple"&&jsx(Column,{className:n(k({size:i}),"w-12"),children:jsx(w,{slot:"selection","aria-label":"Select all",size:i})}),c&&jsx(Column,{}),t?jsx(Collection,{items:t,children:e}):e]})}var oe=forwardRef(De);oe.displayName="TableHeader";function Fe({className:a,children:e,items:t,renderEmptyState:o,...s},i){return jsx(TableBody,{ref:i,className:n(a),items:t,renderEmptyState:o?()=>jsx("tr",{children:jsx("td",{colSpan:99,className:"text-center p-8",children:o()})}):void 0,"data-testid":"table-body",...s,children:e})}var se=forwardRef(Fe);se.displayName="TableBody";var ne=forwardRef(({className:a,children:e,...t},o)=>jsx("tfoot",{ref:o,className:n(F(),a),"data-testid":"table-footer",...t,children:e}));ne.displayName="TableFooter";var ie=forwardRef(({className:a,children:e,...t},o)=>jsx("caption",{ref:o,className:n(O(),a),"data-testid":"table-caption",...t,children:e}));ie.displayName="TableCaption";var le=forwardRef(({className:a,children:e,isRowHeader:t=false,allowsSorting:o=false,align:s="start",width:i,minWidth:l,maxWidth:u,...c},x)=>{let{size:C}=useContext(N);return jsx(Column,{ref:x,isRowHeader:t,allowsSorting:o,width:i,minWidth:l,maxWidth:u,className:n(k({allowsSorting:o,align:s,size:C}),a),...c,children:({allowsSorting:b,sortDirection:p})=>jsxs("div",{className:"flex items-center gap-1",children:[jsx("span",{children:e}),b&&p&&jsx("span",{"aria-hidden":"true","data-sort-direction":p,children:p==="ascending"?jsx(ChevronUp,{className:"h-4 w-4"}):jsx(ChevronDown,{className:"h-4 w-4"})})]})})});le.displayName="Column";function Oe({className:a,children:e,columns:t,href:o,isDisabled:s,...i},l){let{variant:u,size:c,selectionMode:x}=useContext(N),{allowsDragging:C}=useTableOptions(),b=u==="striped"?"striped":"default",p=H({isSelected:true,variant:b}),h=H({isSelected:false,variant:b}),g=n(A({size:c}),"w-12");return jsxs(Row,{ref:l,href:o,isDisabled:s,className:({isSelected:f,isDisabled:y})=>n(f?p:h,y&&"opacity-50",a),"data-testid":"table-row",...i,children:[x==="multiple"&&jsx(Cell,{className:g,children:jsx(w,{slot:"selection","aria-label":"Select row",size:c})}),C&&jsx(Cell,{}),t?jsx(Collection,{items:t,children:e}):e]})}var de=forwardRef(Oe);de.displayName="Row";var ce=memo(forwardRef(({className:a,children:e,align:t="start",colSpan:o,...s},i)=>{let{size:l}=useContext(N);return jsx(Cell,{ref:i,className:n(A({align:t,size:l}),a),...s,children:e})}));ce.displayName="Cell";export{ce as Cell,le as Column,de as Row,re as Table,se as TableBody,ie as TableCaption,ne as TableFooter,oe as TableHeader,A as cellVariants,k as columnVariants,H as rowVariants,O as tableCaptionVariants,z as tableContainerVariants,F as tableFooterVariants,D as tableHeaderVariants,B as tableVariants};//# sourceMappingURL=index.mjs.map
7
3
  //# sourceMappingURL=index.mjs.map
@@ -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/elements/Table/Table.styles.ts","../../../src/elements/Table/Table.tsx"],"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","tableContainerVariants","tableVariants","tableHeaderVariants","tableFooterVariants","tableCaptionVariants","columnVariants","rowVariants","cellVariants","TableContext","createContext","Table","stickyHeader","selectionMode","selectionBehavior","disallowEmptySelection","disabledBehavior","selectedKeys","defaultSelectedKeys","onSelectionChange","disabledKeys","sortDescriptor","onSortChange","onRowAction","children","contextValue","useMemo","AriaTable","TableHeaderInner","columns","useContext","allowsDragging","useTableOptions","AriaTableHeader","AriaColumn","Collection","TableHeader","TableBodyInner","items","renderEmptyState","AriaTableBody","TableBody","TableFooter","TableCaption","Column","isRowHeader","allowsSorting","align","width","minWidth","maxWidth","canSort","sortDirection","ChevronUp","ChevronDown","RowInner","href","rowVariant","selectedClasses","unselectedClasses","selectionCellClasses","AriaRow","disabled","AriaCell","Row","Cell","memo","_colSpan"],"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 { cva } from 'class-variance-authority';\n\n// Table container variants (wrapper div)\nexport const tableContainerVariants = cva(['relative w-full overflow-auto']);\n\n// Table variants\nexport const tableVariants = cva(\n ['w-full caption-bottom text-sm', 'border-collapse'],\n {\n variants: {\n variant: {\n default: '',\n bordered: 'border border-[var(--border)] rounded-md',\n striped: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\n// Table header variants\nexport const tableHeaderVariants = cva(['[&_tr]:border-b'], {\n variants: {\n sticky: {\n true: 'sticky top-0 z-10 bg-[var(--content-background)]',\n false: '',\n },\n },\n defaultVariants: {\n sticky: false,\n },\n});\n\n// Table footer variants\nexport const tableFooterVariants = cva([\n 'border-t border-[var(--border)]',\n 'bg-[var(--accent-background)]/50',\n 'font-medium',\n '[&>tr]:last:border-b-0',\n]);\n\n// Table caption variants\nexport const tableCaptionVariants = cva([\n 'mt-4 text-sm text-[var(--menu-muted)]',\n]);\n\n// Column variants\nexport const columnVariants = cva(\n [\n 'h-12 px-4 text-left align-middle font-medium',\n 'text-[var(--menu-muted)]',\n '[&:has([role=checkbox])]:pr-0',\n 'select-none',\n 'focus-visible:outline-none focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)] focus-visible:ring-inset',\n ],\n {\n variants: {\n allowsSorting: {\n true: 'cursor-pointer hover:bg-[var(--accent)]/50',\n false: '',\n },\n align: {\n start: 'text-start',\n center: 'text-center',\n end: 'text-end',\n },\n size: {\n sm: 'h-10 px-3 text-xs',\n default: 'h-12 px-4 text-sm',\n lg: 'h-14 px-5 text-base',\n },\n },\n defaultVariants: {\n allowsSorting: false,\n align: 'start',\n size: 'default',\n },\n }\n);\n\n// Row variants\nexport const rowVariants = cva(\n [\n 'border-b border-[var(--border)]',\n 'transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)] focus-visible:ring-inset',\n 'hover:bg-[var(--accent-background)]/50',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n ],\n {\n variants: {\n isSelected: {\n true: 'bg-[var(--accent)] data-[selected]:bg-[var(--accent)]',\n false: '',\n },\n variant: {\n default: '',\n striped: 'even:bg-[var(--accent-background)]/30',\n },\n },\n defaultVariants: {\n isSelected: false,\n variant: 'default',\n },\n }\n);\n\n// Cell variants\nexport const cellVariants = cva(\n ['p-4 align-middle', '[&:has([role=checkbox])]:pr-0'],\n {\n variants: {\n align: {\n start: 'text-start',\n center: 'text-center',\n end: 'text-end',\n },\n size: {\n sm: 'p-3 text-xs',\n default: 'p-4 text-sm',\n lg: 'p-5 text-base',\n },\n isRowHeader: {\n true: 'font-medium',\n false: '',\n },\n },\n defaultVariants: {\n align: 'start',\n size: 'default',\n isRowHeader: false,\n },\n }\n);\n","'use client';\n\n/**\n * Table Component - Accessible Data Table (v1)\n * ARIA grid pattern with React Aria primitives\n *\n * @see plan.md for architecture details\n * @see table-prd.md for requirements\n * @see WCAG 2.2 AAA compliance\n */\n\nimport {\n forwardRef,\n memo,\n createContext,\n useContext,\n useMemo,\n type ReactNode,\n type ReactElement,\n type ForwardedRef,\n} from 'react';\nimport {\n Table as AriaTable,\n TableHeader as AriaTableHeader,\n TableBody as AriaTableBody,\n Column as AriaColumn,\n Row as AriaRow,\n Cell as AriaCell,\n Collection,\n useTableOptions,\n type TableHeaderProps as AriaTableHeaderProps,\n type TableBodyProps as AriaTableBodyProps,\n type RowProps as AriaRowProps,\n type CellProps as AriaCellProps,\n type Selection,\n type SortDescriptor,\n} from 'react-aria-components';\nimport { Checkbox } from '../Checkbox';\nimport { ChevronUp, ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport {\n tableContainerVariants,\n tableVariants,\n tableHeaderVariants,\n tableFooterVariants,\n tableCaptionVariants,\n columnVariants,\n rowVariants,\n cellVariants,\n} from './Table.styles';\nimport type {\n TableProps,\n TableHeaderProps,\n TableBodyProps,\n TableFooterProps,\n TableCaptionProps,\n ColumnProps,\n RowProps,\n CellProps,\n TableVariant,\n TableSize,\n} from './Table.types';\n\n// ============================================================================\n// Context for passing table-level props to children\n// ============================================================================\n\ninterface TableContextValue {\n variant: TableVariant;\n size: TableSize;\n selectionMode: 'none' | 'single' | 'multiple';\n stickyHeader: boolean;\n}\n\nconst TableContext = createContext<TableContextValue>({\n variant: 'default',\n size: 'default',\n selectionMode: 'none',\n stickyHeader: false,\n});\n\n// ============================================================================\n// Table Component\n// ============================================================================\n\nconst Table = forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n variant = 'default',\n size = 'default',\n stickyHeader = false,\n selectionMode = 'none',\n selectionBehavior = 'toggle',\n disallowEmptySelection = false,\n disabledBehavior = 'selection',\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n disabledKeys,\n sortDescriptor,\n onSortChange,\n onRowAction,\n children,\n ...props\n },\n ref\n ) => {\n // Warn when sm size is used with selection (touch targets < 44px)\n if (process.env.NODE_ENV !== 'production' && size === 'sm' && selectionMode !== 'none') {\n console.warn(\n '[Table] size=\"sm\" with selectionMode produces rows shorter than the 44px WCAG 2.2 AAA minimum touch target. ' +\n 'Use size=\"default\" or size=\"lg\" for accessible interactive tables.'\n );\n }\n\n const contextValue = useMemo(\n () => ({ variant, size, selectionMode, stickyHeader }),\n [variant, size, selectionMode, stickyHeader]\n );\n\n return (\n <TableContext.Provider value={contextValue}>\n <div\n className={cn(tableContainerVariants(), className)}\n data-testid=\"table-container\"\n >\n <AriaTable\n ref={ref}\n className={cn(tableVariants({ variant }))}\n selectionMode={selectionMode}\n selectionBehavior={selectionBehavior}\n disallowEmptySelection={disallowEmptySelection}\n disabledBehavior={disabledBehavior}\n selectedKeys={selectedKeys}\n defaultSelectedKeys={defaultSelectedKeys}\n onSelectionChange={onSelectionChange}\n disabledKeys={disabledKeys}\n sortDescriptor={sortDescriptor}\n onSortChange={onSortChange}\n onRowAction={onRowAction}\n data-testid=\"table\"\n data-variant={variant}\n data-size={size}\n {...props}\n >\n {children}\n </AriaTable>\n </div>\n </TableContext.Provider>\n );\n }\n);\n\nTable.displayName = 'Table';\n\n// ============================================================================\n// TableHeader Component\n// ============================================================================\n\nfunction TableHeaderInner<T extends object>(\n { className, children, columns, ...props }: TableHeaderProps<T>,\n ref: ForwardedRef<HTMLTableSectionElement>\n): ReactElement {\n const { size, selectionMode, stickyHeader } = useContext(TableContext);\n const { allowsDragging } = useTableOptions();\n\n return (\n <AriaTableHeader\n ref={ref}\n className={cn(tableHeaderVariants({ sticky: stickyHeader }), className)}\n data-testid=\"table-header\"\n {...(props as AriaTableHeaderProps<T>)}\n >\n {/* Selection checkbox column */}\n {selectionMode === 'multiple' && (\n <AriaColumn className={cn(columnVariants({ size }), 'w-12')}>\n <Checkbox slot=\"selection\" aria-label=\"Select all\" size={size} />\n </AriaColumn>\n )}\n {/* Drag handle column if dragging is allowed */}\n {allowsDragging && <AriaColumn />}\n {/* Render columns */}\n {columns ? (\n <Collection items={columns}>{children as (item: T) => ReactElement}</Collection>\n ) : (\n children\n )}\n </AriaTableHeader>\n );\n}\n\nconst TableHeader = forwardRef(TableHeaderInner) as <T extends object>(\n props: TableHeaderProps<T> & { ref?: ForwardedRef<HTMLTableSectionElement> }\n) => ReactElement;\n\n(TableHeader as { displayName?: string }).displayName = 'TableHeader';\n\n// ============================================================================\n// TableBody Component\n// ============================================================================\n\nfunction TableBodyInner<T extends object>(\n { className, children, items, renderEmptyState, ...props }: TableBodyProps<T>,\n ref: ForwardedRef<HTMLTableSectionElement>\n): ReactElement {\n return (\n <AriaTableBody\n ref={ref}\n className={cn(className)}\n items={items}\n renderEmptyState={\n renderEmptyState\n ? () => (\n <tr>\n <td colSpan={99} className=\"text-center p-8\">\n {renderEmptyState()}\n </td>\n </tr>\n )\n : undefined\n }\n data-testid=\"table-body\"\n {...(props as AriaTableBodyProps<T>)}\n >\n {children as AriaTableBodyProps<T>['children']}\n </AriaTableBody>\n );\n}\n\nconst TableBody = forwardRef(TableBodyInner) as <T extends object>(\n props: TableBodyProps<T> & { ref?: ForwardedRef<HTMLTableSectionElement> }\n) => ReactElement;\n\n(TableBody as { displayName?: string }).displayName = 'TableBody';\n\n// ============================================================================\n// TableFooter Component (Custom - not from React Aria)\n// ============================================================================\n\nconst TableFooter = forwardRef<HTMLTableSectionElement, TableFooterProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <tfoot\n ref={ref}\n className={cn(tableFooterVariants(), className)}\n data-testid=\"table-footer\"\n {...props}\n >\n {children}\n </tfoot>\n );\n }\n);\n\nTableFooter.displayName = 'TableFooter';\n\n// ============================================================================\n// TableCaption Component (Custom - not from React Aria)\n// ============================================================================\n\nconst TableCaption = forwardRef<HTMLTableCaptionElement, TableCaptionProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <caption\n ref={ref}\n className={cn(tableCaptionVariants(), className)}\n data-testid=\"table-caption\"\n {...props}\n >\n {children}\n </caption>\n );\n }\n);\n\nTableCaption.displayName = 'TableCaption';\n\n// ============================================================================\n// Column Component\n// ============================================================================\n\nconst Column = forwardRef<HTMLTableCellElement, ColumnProps>(\n (\n {\n className,\n children,\n isRowHeader = false,\n allowsSorting = false,\n align = 'start',\n width,\n minWidth,\n maxWidth,\n ...props\n },\n ref\n ) => {\n const { size } = useContext(TableContext);\n\n return (\n <AriaColumn\n ref={ref}\n isRowHeader={isRowHeader}\n allowsSorting={allowsSorting}\n width={width}\n minWidth={minWidth}\n maxWidth={maxWidth}\n className={cn(columnVariants({ allowsSorting, align, size }), className)}\n {...props}\n >\n {({ allowsSorting: canSort, sortDirection }) => (\n <div className=\"flex items-center gap-1\">\n <span>{children as ReactNode}</span>\n {canSort && sortDirection && (\n <span aria-hidden=\"true\" data-sort-direction={sortDirection}>\n {sortDirection === 'ascending' ? (\n <ChevronUp className=\"h-4 w-4\" />\n ) : (\n <ChevronDown className=\"h-4 w-4\" />\n )}\n </span>\n )}\n </div>\n )}\n </AriaColumn>\n );\n }\n);\n\n(Column as { displayName?: string }).displayName = 'Column';\n\n// ============================================================================\n// Row Component\n// ============================================================================\n\nfunction RowInner<T extends object>(\n { className, children, columns, href, isDisabled, ...props }: RowProps<T>,\n ref: ForwardedRef<HTMLTableRowElement>\n): ReactElement {\n const { variant, size, selectionMode } = useContext(TableContext);\n const { allowsDragging } = useTableOptions();\n\n // Pre-compute variant class strings to avoid CVA calls in render callback\n const rowVariant = variant === 'striped' ? 'striped' as const : 'default' as const;\n const selectedClasses = rowVariants({ isSelected: true, variant: rowVariant });\n const unselectedClasses = rowVariants({ isSelected: false, variant: rowVariant });\n const selectionCellClasses = cn(cellVariants({ size }), 'w-12');\n\n return (\n <AriaRow\n ref={ref}\n href={href}\n isDisabled={isDisabled}\n className={({ isSelected, isDisabled: disabled }) =>\n cn(\n isSelected ? selectedClasses : unselectedClasses,\n disabled && 'opacity-50',\n className\n )\n }\n data-testid=\"table-row\"\n {...(props as AriaRowProps<T>)}\n >\n {/* Selection checkbox cell */}\n {selectionMode === 'multiple' && (\n <AriaCell className={selectionCellClasses}>\n <Checkbox slot=\"selection\" aria-label=\"Select row\" size={size} />\n </AriaCell>\n )}\n {/* Drag handle cell if dragging is allowed */}\n {allowsDragging && (\n <AriaCell>\n {/* Placeholder for drag handle - v2 feature */}\n </AriaCell>\n )}\n {/* Render cells */}\n {columns ? (\n <Collection items={columns}>{children as (item: T) => ReactElement}</Collection>\n ) : (\n children\n )}\n </AriaRow>\n );\n}\n\nconst Row = forwardRef(RowInner) as <T extends object>(\n props: RowProps<T> & { ref?: ForwardedRef<HTMLTableRowElement> }\n) => ReactElement;\n\n(Row as { displayName?: string }).displayName = 'Row';\n\n// ============================================================================\n// Cell Component\n// ============================================================================\n\nconst Cell = memo(forwardRef<HTMLTableCellElement, CellProps>(\n ({ className, children, align = 'start', colSpan: _colSpan, ...props }, ref) => {\n const { size } = useContext(TableContext);\n\n return (\n <AriaCell\n ref={ref}\n className={cn(cellVariants({ align, size }), className)}\n {...(props as AriaCellProps)}\n >\n {children}\n </AriaCell>\n );\n }\n));\n\nCell.displayName = 'Cell';\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableCaption,\n Column,\n Row,\n Cell,\n};\n\n// Re-export CVA variants (defined in Table.styles.ts)\nexport {\n tableContainerVariants,\n tableVariants,\n tableHeaderVariants,\n tableFooterVariants,\n tableCaptionVariants,\n columnVariants,\n rowVariants,\n cellVariants,\n};\n\n// Re-export types\nexport type { Selection, SortDescriptor };\n"]}