@tribepad/themis 1.0.0 → 1.0.1

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 (326) hide show
  1. package/dist/elements/Accordion/index.js +325 -66
  2. package/dist/elements/Accordion/index.js.map +1 -1
  3. package/dist/elements/Accordion/index.mjs +317 -3
  4. package/dist/elements/Accordion/index.mjs.map +1 -1
  5. package/dist/elements/Avatar/index.js +461 -45
  6. package/dist/elements/Avatar/index.js.map +1 -1
  7. package/dist/elements/Avatar/index.mjs +456 -3
  8. package/dist/elements/Avatar/index.mjs.map +1 -1
  9. package/dist/elements/Badge/index.js +238 -36
  10. package/dist/elements/Badge/index.js.map +1 -1
  11. package/dist/elements/Badge/index.mjs +234 -4
  12. package/dist/elements/Badge/index.mjs.map +1 -1
  13. package/dist/elements/Breadcrumbs/index.js +808 -39
  14. package/dist/elements/Breadcrumbs/index.js.map +1 -1
  15. package/dist/elements/Breadcrumbs/index.mjs +810 -7
  16. package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
  17. package/dist/elements/Button/index.js +282 -19
  18. package/dist/elements/Button/index.js.map +1 -1
  19. package/dist/elements/Button/index.mjs +283 -4
  20. package/dist/elements/Button/index.mjs.map +1 -1
  21. package/dist/elements/ButtonGroup/index.js +229 -56
  22. package/dist/elements/ButtonGroup/index.js.map +1 -1
  23. package/dist/elements/ButtonGroup/index.mjs +222 -3
  24. package/dist/elements/ButtonGroup/index.mjs.map +1 -1
  25. package/dist/elements/Card/Card.d.ts.map +1 -1
  26. package/dist/elements/Card/index.js +563 -67
  27. package/dist/elements/Card/index.js.map +1 -1
  28. package/dist/elements/Card/index.mjs +560 -6
  29. package/dist/elements/Card/index.mjs.map +1 -1
  30. package/dist/elements/Carousel/index.js +782 -14
  31. package/dist/elements/Carousel/index.js.map +1 -1
  32. package/dist/elements/Carousel/index.mjs +786 -8
  33. package/dist/elements/Carousel/index.mjs.map +1 -1
  34. package/dist/elements/Chart/index.js +1833 -36
  35. package/dist/elements/Chart/index.js.map +1 -1
  36. package/dist/elements/Chart/index.mjs +1832 -4
  37. package/dist/elements/Chart/index.mjs.map +1 -1
  38. package/dist/elements/Checkbox/index.js +310 -39
  39. package/dist/elements/Checkbox/index.js.map +1 -1
  40. package/dist/elements/Checkbox/index.mjs +306 -4
  41. package/dist/elements/Checkbox/index.mjs.map +1 -1
  42. package/dist/elements/CheckboxGroup/index.js +445 -59
  43. package/dist/elements/CheckboxGroup/index.js.map +1 -1
  44. package/dist/elements/CheckboxGroup/index.mjs +439 -4
  45. package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
  46. package/dist/elements/DatePicker/index.js +871 -89
  47. package/dist/elements/DatePicker/index.js.map +1 -1
  48. package/dist/elements/DatePicker/index.mjs +853 -4
  49. package/dist/elements/DatePicker/index.mjs.map +1 -1
  50. package/dist/elements/Dropdown/index.js +189 -35
  51. package/dist/elements/Dropdown/index.js.map +1 -1
  52. package/dist/elements/Dropdown/index.mjs +184 -2
  53. package/dist/elements/Dropdown/index.mjs.map +1 -1
  54. package/dist/elements/FileField/index.js +1532 -129
  55. package/dist/elements/FileField/index.js.map +1 -1
  56. package/dist/elements/FileField/index.mjs +1507 -7
  57. package/dist/elements/FileField/index.mjs.map +1 -1
  58. package/dist/elements/FormLayout/index.js +166 -11
  59. package/dist/elements/FormLayout/index.js.map +1 -1
  60. package/dist/elements/FormLayout/index.mjs +167 -2
  61. package/dist/elements/FormLayout/index.mjs.map +1 -1
  62. package/dist/elements/Modal/index.js +228 -46
  63. package/dist/elements/Modal/index.js.map +1 -1
  64. package/dist/elements/Modal/index.mjs +220 -1
  65. package/dist/elements/Modal/index.mjs.map +1 -1
  66. package/dist/elements/NumberField/index.js +659 -48
  67. package/dist/elements/NumberField/index.js.map +1 -1
  68. package/dist/elements/NumberField/index.mjs +654 -6
  69. package/dist/elements/NumberField/index.mjs.map +1 -1
  70. package/dist/elements/OTPInput/index.js +729 -6
  71. package/dist/elements/OTPInput/index.js.map +1 -1
  72. package/dist/elements/OTPInput/index.mjs +732 -2
  73. package/dist/elements/OTPInput/index.mjs.map +1 -1
  74. package/dist/elements/Panel/index.js +326 -27
  75. package/dist/elements/Panel/index.js.map +1 -1
  76. package/dist/elements/Panel/index.mjs +323 -2
  77. package/dist/elements/Panel/index.mjs.map +1 -1
  78. package/dist/elements/Progress/index.js +181 -22
  79. package/dist/elements/Progress/index.js.map +1 -1
  80. package/dist/elements/Progress/index.mjs +181 -3
  81. package/dist/elements/Progress/index.mjs.map +1 -1
  82. package/dist/elements/RadioGroup/index.js +358 -34
  83. package/dist/elements/RadioGroup/index.js.map +1 -1
  84. package/dist/elements/RadioGroup/index.mjs +359 -4
  85. package/dist/elements/RadioGroup/index.mjs.map +1 -1
  86. package/dist/elements/Resizable/components/ResizableHandle.d.ts +0 -8
  87. package/dist/elements/Resizable/components/ResizableHandle.d.ts.map +1 -1
  88. package/dist/elements/Resizable/components/ResizablePanel.d.ts +0 -8
  89. package/dist/elements/Resizable/components/ResizablePanel.d.ts.map +1 -1
  90. package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts +0 -8
  91. package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts.map +1 -1
  92. package/dist/elements/Resizable/components/ResizablePopover.d.ts +0 -8
  93. package/dist/elements/Resizable/components/ResizablePopover.d.ts.map +1 -1
  94. package/dist/elements/Resizable/index.js +1568 -51
  95. package/dist/elements/Resizable/index.js.map +1 -1
  96. package/dist/elements/Resizable/index.mjs +1566 -6
  97. package/dist/elements/Resizable/index.mjs.map +1 -1
  98. package/dist/elements/Select/index.js +580 -22
  99. package/dist/elements/Select/index.js.map +1 -1
  100. package/dist/elements/Select/index.mjs +582 -2
  101. package/dist/elements/Select/index.mjs.map +1 -1
  102. package/dist/elements/Skeleton/index.js +77 -15
  103. package/dist/elements/Skeleton/index.js.map +1 -1
  104. package/dist/elements/Skeleton/index.mjs +78 -3
  105. package/dist/elements/Skeleton/index.mjs.map +1 -1
  106. package/dist/elements/Switch/index.js +153 -21
  107. package/dist/elements/Switch/index.js.map +1 -1
  108. package/dist/elements/Switch/index.mjs +149 -5
  109. package/dist/elements/Switch/index.mjs.map +1 -1
  110. package/dist/elements/Table/index.js +589 -68
  111. package/dist/elements/Table/index.js.map +1 -1
  112. package/dist/elements/Table/index.mjs +578 -5
  113. package/dist/elements/Table/index.mjs.map +1 -1
  114. package/dist/elements/Tabs/index.js +328 -63
  115. package/dist/elements/Tabs/index.js.map +1 -1
  116. package/dist/elements/Tabs/index.mjs +320 -3
  117. package/dist/elements/Tabs/index.mjs.map +1 -1
  118. package/dist/elements/TextField/index.js +695 -51
  119. package/dist/elements/TextField/index.js.map +1 -1
  120. package/dist/elements/TextField/index.mjs +684 -7
  121. package/dist/elements/TextField/index.mjs.map +1 -1
  122. package/dist/elements/TimeField/index.js +244 -33
  123. package/dist/elements/TimeField/index.js.map +1 -1
  124. package/dist/elements/TimeField/index.mjs +238 -2
  125. package/dist/elements/TimeField/index.mjs.map +1 -1
  126. package/dist/elements/Toast/index.js +727 -48
  127. package/dist/elements/Toast/index.js.map +1 -1
  128. package/dist/elements/Toast/index.mjs +724 -5
  129. package/dist/elements/Toast/index.mjs.map +1 -1
  130. package/dist/elements/Tooltip/index.js +315 -49
  131. package/dist/elements/Tooltip/index.js.map +1 -1
  132. package/dist/elements/Tooltip/index.mjs +310 -4
  133. package/dist/elements/Tooltip/index.mjs.map +1 -1
  134. package/dist/elements/index.js +12417 -799
  135. package/dist/elements/index.js.map +1 -1
  136. package/dist/elements/index.mjs +12233 -40
  137. package/dist/elements/index.mjs.map +1 -1
  138. package/dist/index.js +12452 -825
  139. package/dist/index.js.map +1 -1
  140. package/dist/index.mjs +12262 -42
  141. package/dist/index.mjs.map +1 -1
  142. package/dist/schemas/index.js +47 -21
  143. package/dist/schemas/index.js.map +1 -1
  144. package/dist/schemas/index.mjs +47 -2
  145. package/dist/schemas/index.mjs.map +1 -1
  146. package/dist/styles/index.js +161 -147
  147. package/dist/styles/index.js.map +1 -1
  148. package/dist/styles/index.mjs +128 -2
  149. package/dist/styles/index.mjs.map +1 -1
  150. package/dist/utils/index.js +7 -7
  151. package/dist/utils/index.js.map +1 -1
  152. package/dist/utils/index.mjs +9 -2
  153. package/dist/utils/index.mjs.map +1 -1
  154. package/package.json +1 -1
  155. package/dist/Carousel-NTZX5TOW.js +0 -16
  156. package/dist/Carousel-NTZX5TOW.js.map +0 -1
  157. package/dist/Carousel-YH3DOQJU.mjs +0 -7
  158. package/dist/Carousel-YH3DOQJU.mjs.map +0 -1
  159. package/dist/chunk-2HIUTHMU.mjs +0 -234
  160. package/dist/chunk-2HIUTHMU.mjs.map +0 -1
  161. package/dist/chunk-34GTFTDO.js +0 -431
  162. package/dist/chunk-34GTFTDO.js.map +0 -1
  163. package/dist/chunk-3H7ASYR7.js +0 -250
  164. package/dist/chunk-3H7ASYR7.js.map +0 -1
  165. package/dist/chunk-3IEN7JOP.js +0 -316
  166. package/dist/chunk-3IEN7JOP.js.map +0 -1
  167. package/dist/chunk-3JHN4GAL.js +0 -326
  168. package/dist/chunk-3JHN4GAL.js.map +0 -1
  169. package/dist/chunk-3MJPASQU.js +0 -232
  170. package/dist/chunk-3MJPASQU.js.map +0 -1
  171. package/dist/chunk-3XD2JUL3.js +0 -572
  172. package/dist/chunk-3XD2JUL3.js.map +0 -1
  173. package/dist/chunk-3YOY2VJ6.js +0 -189
  174. package/dist/chunk-3YOY2VJ6.js.map +0 -1
  175. package/dist/chunk-4DU5JSXB.js +0 -408
  176. package/dist/chunk-4DU5JSXB.js.map +0 -1
  177. package/dist/chunk-4E4E2GSS.js +0 -352
  178. package/dist/chunk-4E4E2GSS.js.map +0 -1
  179. package/dist/chunk-4NHAP4AN.mjs +0 -3
  180. package/dist/chunk-4NHAP4AN.mjs.map +0 -1
  181. package/dist/chunk-4S33J5NY.mjs +0 -415
  182. package/dist/chunk-4S33J5NY.mjs.map +0 -1
  183. package/dist/chunk-5SMGRT3G.mjs +0 -354
  184. package/dist/chunk-5SMGRT3G.mjs.map +0 -1
  185. package/dist/chunk-5SVLJN2C.mjs +0 -22
  186. package/dist/chunk-5SVLJN2C.mjs.map +0 -1
  187. package/dist/chunk-66WTU4EB.mjs +0 -299
  188. package/dist/chunk-66WTU4EB.mjs.map +0 -1
  189. package/dist/chunk-6S25NMOT.mjs +0 -335
  190. package/dist/chunk-6S25NMOT.mjs.map +0 -1
  191. package/dist/chunk-6SP7UB3D.js +0 -4
  192. package/dist/chunk-6SP7UB3D.js.map +0 -1
  193. package/dist/chunk-6TYWWQHM.mjs +0 -565
  194. package/dist/chunk-6TYWWQHM.mjs.map +0 -1
  195. package/dist/chunk-A3YUJA6W.mjs +0 -384
  196. package/dist/chunk-A3YUJA6W.mjs.map +0 -1
  197. package/dist/chunk-A6KEDVUR.js +0 -61
  198. package/dist/chunk-A6KEDVUR.js.map +0 -1
  199. package/dist/chunk-A77RUEWL.js +0 -730
  200. package/dist/chunk-A77RUEWL.js.map +0 -1
  201. package/dist/chunk-AA4IKMPE.mjs +0 -3
  202. package/dist/chunk-AA4IKMPE.mjs.map +0 -1
  203. package/dist/chunk-AKIA6GW6.mjs +0 -163
  204. package/dist/chunk-AKIA6GW6.mjs.map +0 -1
  205. package/dist/chunk-AL6P275L.mjs +0 -435
  206. package/dist/chunk-AL6P275L.mjs.map +0 -1
  207. package/dist/chunk-AZ3RJYTB.js +0 -37
  208. package/dist/chunk-AZ3RJYTB.js.map +0 -1
  209. package/dist/chunk-B5Q4UPL6.js +0 -32
  210. package/dist/chunk-B5Q4UPL6.js.map +0 -1
  211. package/dist/chunk-B6DHPMDP.mjs +0 -335
  212. package/dist/chunk-B6DHPMDP.mjs.map +0 -1
  213. package/dist/chunk-BDXKKMBZ.mjs +0 -184
  214. package/dist/chunk-BDXKKMBZ.mjs.map +0 -1
  215. package/dist/chunk-BL6E2DLZ.mjs +0 -52
  216. package/dist/chunk-BL6E2DLZ.mjs.map +0 -1
  217. package/dist/chunk-CGFDS4XS.mjs +0 -121
  218. package/dist/chunk-CGFDS4XS.mjs.map +0 -1
  219. package/dist/chunk-CJIW5TKI.js +0 -139
  220. package/dist/chunk-CJIW5TKI.js.map +0 -1
  221. package/dist/chunk-CKNISJOQ.js +0 -314
  222. package/dist/chunk-CKNISJOQ.js.map +0 -1
  223. package/dist/chunk-D6CBOECS.mjs +0 -1757
  224. package/dist/chunk-D6CBOECS.mjs.map +0 -1
  225. package/dist/chunk-DDWEVC2S.js +0 -166
  226. package/dist/chunk-DDWEVC2S.js.map +0 -1
  227. package/dist/chunk-DZ556D2F.mjs +0 -176
  228. package/dist/chunk-DZ556D2F.mjs.map +0 -1
  229. package/dist/chunk-E2KQFV3O.mjs +0 -10
  230. package/dist/chunk-E2KQFV3O.mjs.map +0 -1
  231. package/dist/chunk-EMMLADSC.js +0 -126
  232. package/dist/chunk-EMMLADSC.js.map +0 -1
  233. package/dist/chunk-EP4WOI5D.mjs +0 -926
  234. package/dist/chunk-EP4WOI5D.mjs.map +0 -1
  235. package/dist/chunk-FJRXLJC2.mjs +0 -160
  236. package/dist/chunk-FJRXLJC2.mjs.map +0 -1
  237. package/dist/chunk-FKQI434R.js +0 -345
  238. package/dist/chunk-FKQI434R.js.map +0 -1
  239. package/dist/chunk-FPKEAJRZ.mjs +0 -100
  240. package/dist/chunk-FPKEAJRZ.mjs.map +0 -1
  241. package/dist/chunk-FWQYB22U.js +0 -183
  242. package/dist/chunk-FWQYB22U.js.map +0 -1
  243. package/dist/chunk-GD5GHTMA.js +0 -189
  244. package/dist/chunk-GD5GHTMA.js.map +0 -1
  245. package/dist/chunk-GE5XTSDZ.js +0 -447
  246. package/dist/chunk-GE5XTSDZ.js.map +0 -1
  247. package/dist/chunk-GVE47ZAX.mjs +0 -32
  248. package/dist/chunk-GVE47ZAX.mjs.map +0 -1
  249. package/dist/chunk-HK46BT5U.mjs +0 -18
  250. package/dist/chunk-HK46BT5U.mjs.map +0 -1
  251. package/dist/chunk-HQVRMR6N.js +0 -365
  252. package/dist/chunk-HQVRMR6N.js.map +0 -1
  253. package/dist/chunk-HSGBJPJO.mjs +0 -398
  254. package/dist/chunk-HSGBJPJO.mjs.map +0 -1
  255. package/dist/chunk-I3AUTOMZ.mjs +0 -125
  256. package/dist/chunk-I3AUTOMZ.mjs.map +0 -1
  257. package/dist/chunk-IEI5LD5C.mjs +0 -1161
  258. package/dist/chunk-IEI5LD5C.mjs.map +0 -1
  259. package/dist/chunk-IIPTC2X7.mjs +0 -118
  260. package/dist/chunk-IIPTC2X7.mjs.map +0 -1
  261. package/dist/chunk-J7TLHF2Q.js +0 -4
  262. package/dist/chunk-J7TLHF2Q.js.map +0 -1
  263. package/dist/chunk-JJOWXFXQ.mjs +0 -765
  264. package/dist/chunk-JJOWXFXQ.mjs.map +0 -1
  265. package/dist/chunk-JPTSS2OA.mjs +0 -3
  266. package/dist/chunk-JPTSS2OA.mjs.map +0 -1
  267. package/dist/chunk-KFXXRLTP.js +0 -396
  268. package/dist/chunk-KFXXRLTP.js.map +0 -1
  269. package/dist/chunk-KPRRBSG6.mjs +0 -272
  270. package/dist/chunk-KPRRBSG6.mjs.map +0 -1
  271. package/dist/chunk-NFSBGRDB.mjs +0 -57
  272. package/dist/chunk-NFSBGRDB.mjs.map +0 -1
  273. package/dist/chunk-NGJVCFTM.js +0 -219
  274. package/dist/chunk-NGJVCFTM.js.map +0 -1
  275. package/dist/chunk-NSQ6MZJ6.mjs +0 -728
  276. package/dist/chunk-NSQ6MZJ6.mjs.map +0 -1
  277. package/dist/chunk-NYQYHT76.mjs +0 -296
  278. package/dist/chunk-NYQYHT76.mjs.map +0 -1
  279. package/dist/chunk-OLJJGI5B.js +0 -1193
  280. package/dist/chunk-OLJJGI5B.js.map +0 -1
  281. package/dist/chunk-Q3572X2J.js +0 -292
  282. package/dist/chunk-Q3572X2J.js.map +0 -1
  283. package/dist/chunk-QH7N7D4I.mjs +0 -210
  284. package/dist/chunk-QH7N7D4I.mjs.map +0 -1
  285. package/dist/chunk-R7XUIV25.js +0 -466
  286. package/dist/chunk-R7XUIV25.js.map +0 -1
  287. package/dist/chunk-RFFO4KPM.js +0 -135
  288. package/dist/chunk-RFFO4KPM.js.map +0 -1
  289. package/dist/chunk-RFX7QKA7.mjs +0 -180
  290. package/dist/chunk-RFX7QKA7.mjs.map +0 -1
  291. package/dist/chunk-SN5LFAP3.js +0 -940
  292. package/dist/chunk-SN5LFAP3.js.map +0 -1
  293. package/dist/chunk-T4COXKQ3.js +0 -24
  294. package/dist/chunk-T4COXKQ3.js.map +0 -1
  295. package/dist/chunk-TS54QM27.js +0 -125
  296. package/dist/chunk-TS54QM27.js.map +0 -1
  297. package/dist/chunk-UE2S4PCX.mjs +0 -220
  298. package/dist/chunk-UE2S4PCX.mjs.map +0 -1
  299. package/dist/chunk-UTW3QX2A.mjs +0 -282
  300. package/dist/chunk-UTW3QX2A.mjs.map +0 -1
  301. package/dist/chunk-V74LGMAE.js +0 -1767
  302. package/dist/chunk-V74LGMAE.js.map +0 -1
  303. package/dist/chunk-VIREG536.js +0 -12
  304. package/dist/chunk-VIREG536.js.map +0 -1
  305. package/dist/chunk-VY7M7346.js +0 -4
  306. package/dist/chunk-VY7M7346.js.map +0 -1
  307. package/dist/chunk-W3TJOO7H.mjs +0 -319
  308. package/dist/chunk-W3TJOO7H.mjs.map +0 -1
  309. package/dist/chunk-WIUOB36M.js +0 -54
  310. package/dist/chunk-WIUOB36M.js.map +0 -1
  311. package/dist/chunk-WJGLM4CY.js +0 -291
  312. package/dist/chunk-WJGLM4CY.js.map +0 -1
  313. package/dist/chunk-WNURH5OO.mjs +0 -453
  314. package/dist/chunk-WNURH5OO.mjs.map +0 -1
  315. package/dist/chunk-X25TNRSD.mjs +0 -364
  316. package/dist/chunk-X25TNRSD.mjs.map +0 -1
  317. package/dist/chunk-Y3GT7ETK.js +0 -108
  318. package/dist/chunk-Y3GT7ETK.js.map +0 -1
  319. package/dist/chunk-Z4FRNOF6.mjs +0 -115
  320. package/dist/chunk-Z4FRNOF6.mjs.map +0 -1
  321. package/dist/chunk-ZMYLD3BN.js +0 -166
  322. package/dist/chunk-ZMYLD3BN.js.map +0 -1
  323. package/dist/chunk-ZP2KV6EX.js +0 -815
  324. package/dist/chunk-ZP2KV6EX.js.map +0 -1
  325. package/dist/chunk-ZVKXFELU.js +0 -366
  326. package/dist/chunk-ZVKXFELU.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/elements/TextField/TextField.tsx"],"names":["cva","forwardRef","jsx","AriaLabel","cn","AriaInput","DISABLED_STYLES","AriaText","AriaFieldError","jsxs","CircleAlert","useId","useState","useEffect","useCallback","useMemo","Button","AriaTextField"],"mappings":"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","file":"chunk-4DU5JSXB.js","sourcesContent":["\"use client\";\n\n/**\n * TextField Component\n * Accessible text input with React Aria primitives and CVA styling\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements - WCAG 2.2 AAA)\n * @see React Aria TextField: https://react-spectrum.adobe.com/react-aria/TextField.html\n * @see ShadCN Input: https://ui.shadcn.com/docs/components/input\n * @see ShadCN Label: https://ui.shadcn.com/docs/components/label\n * @see constitution.md Principle IV (Accessibility First)\n */\n\nimport './TextField.css';\nimport { forwardRef, useId, useMemo, useState, useEffect, useCallback } from 'react';\nimport {\n TextField as AriaTextField,\n Label as AriaLabel,\n Input as AriaInput,\n Text as AriaText,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { DISABLED_STYLES } from '../../styles/interaction-states';\nimport type {\n TextFieldProps,\n TextFieldLabelProps,\n TextFieldInputProps,\n TextFieldDescriptionProps,\n TextFieldErrorProps,\n} from './TextField.types';\nimport { CircleAlert } from 'lucide-react';\nimport { Button } from '../Button';\n\n/**\n * Input variant styles using CVA\n * Adapts ShadCN Input styling with Themis semantic tokens\n */\nexport const inputVariants = cva(\n // Base styles - FR-014: Proper input styling with focus states\n \"flex w-full rounded-md border bg-[var(--content-background)] shadow-xs px-3 py-2 text-sm ring-offset-[var(--content-background)] file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--content-foreground)] placeholder:text-[var(--menu-muted)] transition-all duration-200\",\n {\n variants: {\n // Size variants (matching Button sizes)\n size: {\n sm: \"h-9 text-xs px-2 py-1\",\n default: \"h-10 px-3 py-2\",\n lg: \"h-11 px-4 py-3 text-base\"\n },\n // State variants\n state: {\n default: \"border-[var(--input-border)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2\",\n error: \"border-[var(--destructive-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--destructive-background)] focus-visible:ring-offset-2\",\n success: \"border-green-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-green-500 focus-visible:ring-offset-2\",\n disabled: \"cursor-not-allowed opacity-50\",\n readonly: \"cursor-default bg-[var(--content-background)] opacity-70\"\n }\n },\n defaultVariants: {\n size: \"default\",\n state: \"default\"\n }\n }\n);\n\n/**\n * Label variant styles using CVA\n * Adapts ShadCN Label styling with Themis semantic tokens\n */\nexport const labelVariants = cva(\n // Base styles - FR-009: WCAG 2.2 AAA compliance\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n {\n variants: {\n state: {\n default: \"text-[var(--content-foreground)]\",\n error: \"text-[var(--destructive-foreground)]\",\n disabled: \"opacity-50 cursor-not-allowed\"\n }\n },\n defaultVariants: {\n state: \"default\"\n }\n }\n);\n\n/**\n * Description text variant styles\n */\nexport const descriptionVariants = cva(\n \"text-sm text-[var(--content-foreground)]\"\n);\n\n/**\n * Error message variant styles\n */\nexport const errorMessageVariants = cva(\n \"text-sm text-[var(--destructive-foreground)] font-medium mt-1.5\"\n);\n\n/**\n * Success message variant styles\n */\nexport const successMessageVariants = cva(\n \"text-sm text-green-600 dark:text-green-500 font-medium mt-1.5\"\n);\n\n/**\n * TextFieldLabel Sub-component\n * Styled label with optional required indicator\n */\nexport const TextFieldLabel = forwardRef<HTMLLabelElement, TextFieldLabelProps>(\n ({ className, state = 'default', children, ...props }, ref) => {\n return (\n <AriaLabel\n ref={ref}\n className={cn(labelVariants({ state }), className)}\n {...props}\n >\n {children}\n </AriaLabel>\n );\n }\n);\n\nTextFieldLabel.displayName = \"TextFieldLabel\";\n\n/**\n * TextFieldInput Sub-component\n * Styled input with size and state variants\n */\nexport const TextFieldInput = forwardRef<HTMLInputElement, TextFieldInputProps>(\n ({ className, size = 'default', state = 'default', ...props }, ref) => {\n return (\n <AriaInput\n ref={ref}\n className={cn(inputVariants({ size, state }), DISABLED_STYLES, className)}\n {...props}\n />\n );\n }\n);\n\nTextFieldInput.displayName = \"TextFieldInput\";\n\n/**\n * TextFieldDescription Sub-component\n * Helper text displayed below the input\n */\nexport const TextFieldDescription = forwardRef<HTMLDivElement, TextFieldDescriptionProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <AriaText\n ref={ref}\n slot=\"description\"\n className={cn(descriptionVariants(), className)}\n {...props}\n >\n {children}\n </AriaText>\n );\n }\n);\n\nTextFieldDescription.displayName = \"TextFieldDescription\";\n\n/**\n * TextFieldError Sub-component\n * Error message displayed when field is invalid\n * Note: We use AriaFieldError with explicit role=\"alert\" for screen reader announcements\n */\nexport const TextFieldError = forwardRef<HTMLDivElement, TextFieldErrorProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <AriaFieldError\n ref={ref}\n {...props}\n className={cn(errorMessageVariants(), className)}\n >\n <span className=\"flex items-center gap-2\" role=\"alert\"><CircleAlert className=\"h-4 w-4\" />{children}</span>\n </AriaFieldError>\n );\n }\n);\n\nTextFieldError.displayName = \"TextFieldError\";\n\n/**\n * TextFieldSuccess Sub-component\n * Success message displayed when field is valid\n */\nexport const TextFieldSuccess = forwardRef<HTMLDivElement, TextFieldDescriptionProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <AriaText\n ref={ref}\n slot=\"description\"\n className={cn(successMessageVariants(), className)}\n {...props}\n >\n {children}\n </AriaText>\n );\n }\n);\n\nTextFieldSuccess.displayName = \"TextFieldSuccess\";\n\n/**\n * TextField Component\n * Fully accessible text input with React Aria and themed styling\n *\n * Composition:\n * - TextField (container with React Aria context)\n * - Label (optional, linked to input)\n * - Input (text input element)\n * - Description (optional helper text)\n * - ErrorMessage (optional, shown when invalid)\n *\n * @example\n * <TextField\n * label=\"Email\"\n * description=\"We'll never share your email\"\n * isRequired\n * type=\"email\"\n * />\n *\n * @example\n * <TextField\n * label=\"Username\"\n * errorMessage=\"Username is required\"\n * isInvalid\n * />\n */\nexport const TextField = forwardRef<HTMLDivElement, TextFieldProps>(\n (\n {\n className,\n size = 'default',\n label,\n description,\n errorMessage,\n successMessage,\n type = 'text',\n isRequired = false,\n isReadOnly = false,\n isDisabled = false,\n isInvalid = false,\n isValid = false,\n id,\n autoComplete,\n disableCopyPaste = false,\n pattern,\n patternDescription,\n expandOnFocus = false,\n collapsedWidth = '200px',\n prefix,\n suffix,\n prefixSize = 16,\n suffixSize = 16,\n showPasswordToggle,\n value,\n defaultValue,\n onFocus: userOnFocus,\n onBlur: userOnBlur,\n ...props\n },\n ref\n ) => {\n // Generate unique IDs for error message linking\n const errorId = useId();\n const generatedId = useId();\n const fieldId = id || generatedId;\n\n // Shake animation state for paste prevention\n const [isShaking, setIsShaking] = useState(false);\n const [screenReaderMessage, setScreenReaderMessage] = useState('');\n\n // Expand on focus state\n const [isFocused, setIsFocused] = useState(false);\n\n // Password visibility state\n const [showPassword, setShowPassword] = useState(false);\n\n // Development mode warning for disableCopyPaste\n useEffect(() => {\n if (disableCopyPaste && typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n console.warn(\n '[TextField] Copy/paste prevention should only be used for security-critical fields like password confirmation. ' +\n 'This feature can break assistive technology workflows and password managers.'\n );\n }\n }, [disableCopyPaste]);\n\n // Handle paste prevention with shake animation\n const handlePaste = useCallback((e: React.ClipboardEvent<HTMLInputElement>) => {\n if (disableCopyPaste) {\n e.preventDefault();\n\n // Trigger shake animation\n setIsShaking(true);\n\n // Announce to screen readers\n setScreenReaderMessage('Pasting is not allowed in this field. Please type your entry.');\n\n // Remove shake animation and clear message after 400ms\n setTimeout(() => {\n setIsShaking(false);\n setScreenReaderMessage('');\n }, 400);\n }\n }, [disableCopyPaste]);\n\n // Handle focus for expand on focus feature\n const handleFocus = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\n if (expandOnFocus) {\n setIsFocused(true);\n }\n // Call user's onFocus if provided\n userOnFocus?.(e);\n }, [expandOnFocus, userOnFocus]);\n\n // Handle blur for expand on focus feature\n const handleBlur = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\n if (expandOnFocus) {\n // Only collapse if input is empty\n const isEmpty = e.target.value === '';\n if (isEmpty) {\n setIsFocused(false);\n }\n }\n // Call user's onBlur if provided\n userOnBlur?.(e);\n }, [expandOnFocus, userOnBlur]);\n\n // Calculate input width for expand on focus\n const inputWidth = useMemo(() => {\n if (!expandOnFocus) return undefined;\n\n // Check if input has value (controlled or uncontrolled)\n const hasValue = value !== undefined ? value !== '' : defaultValue !== undefined && defaultValue !== '';\n\n // Expand if focused or has value\n if (isFocused || hasValue) {\n return '100%';\n }\n\n return collapsedWidth;\n }, [expandOnFocus, isFocused, value, defaultValue, collapsedWidth]);\n\n // Determine input state based on props\n const inputState = useMemo(() => {\n if (isDisabled) return 'disabled';\n if (isReadOnly) return 'readonly';\n if (isInvalid) return 'error';\n if (isValid) return 'success';\n return 'default';\n }, [isDisabled, isReadOnly, isInvalid, isValid]);\n\n // Determine label state\n const labelState = useMemo(() => {\n if (isDisabled) return 'disabled';\n if (isInvalid) return 'error';\n return 'default';\n }, [isDisabled, isInvalid]);\n\n // Combine description and patternDescription\n const combinedDescription = useMemo(() => {\n if (description && patternDescription) {\n return `${description} ${patternDescription}`;\n }\n return description || patternDescription;\n }, [description, patternDescription]);\n\n // Calculate dynamic padding for prefix/suffix\n const inputPadding = useMemo(() => {\n const basePadding = { left: 12, right: 12 }; // Default px-3 = 12px\n\n if (prefix) {\n // If prefix is string, estimate width; if ReactNode, use prefixSize\n const prefixWidth = typeof prefix === 'string'\n ? prefix.length * 8 + 16 // Rough estimate: 8px per char + 16px margin\n : prefixSize + 16; // Icon size + margin\n basePadding.left = prefixWidth;\n }\n\n // Password toggle takes precedence over custom suffix\n if (type === 'password' && showPasswordToggle) {\n // Password toggle is always a 16px icon\n basePadding.right = 16 + 16; // Icon size + margin\n } else if (suffix) {\n // If suffix is string, estimate width; if ReactNode, use suffixSize\n const suffixWidth = typeof suffix === 'string'\n ? suffix.length * 8 + 16 // Rough estimate: 8px per char + 16px margin\n : suffixSize + 16; // Icon size + margin\n basePadding.right = suffixWidth;\n }\n\n return basePadding;\n }, [prefix, suffix, prefixSize, suffixSize, type, showPasswordToggle]);\n\n // Determine actual input type (handle password toggle)\n const actualType = useMemo(() => {\n if (type === 'password' && showPasswordToggle && showPassword) {\n return 'text';\n }\n return type;\n }, [type, showPasswordToggle, showPassword]);\n\n // Password toggle button\n const handlePasswordToggle = useCallback(() => {\n setShowPassword(prev => !prev);\n }, []);\n\n // Eye icons for password toggle\n const EyeIcon = () => (\n <svg\n data-testid=\"password-toggle-icon-show\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M1 8s3-5 7-5 7 5 7 5-3 5-7 5-7-5-7-5z\" />\n <circle cx=\"8\" cy=\"8\" r=\"2\" />\n </svg>\n );\n\n const EyeOffIcon = () => (\n <svg\n data-testid=\"password-toggle-icon-hide\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M10.5 5.5l-5 5\" />\n <path d=\"M1 8s3-5 7-5c1.5 0 2.8.6 4 1.5M15 8s-1.5 2.5-4 4\" />\n <path d=\"M3 13l2-2m7-7l2-2\" />\n <circle cx=\"8\" cy=\"8\" r=\"2\" />\n </svg>\n );\n\n // Determine actual suffix (password toggle takes precedence for password fields)\n const actualSuffix = useMemo(() => {\n if (type === 'password' && showPasswordToggle) {\n return (\n <Button\n variant=\"ghost\"\n visualSize=\"icon\"\n onPress={handlePasswordToggle}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n className=\"!min-h-0 !min-w-0 h-8 w-8\"\n >\n {showPassword ? <EyeOffIcon /> : <EyeIcon />}\n </Button>\n );\n }\n return suffix;\n }, [type, showPasswordToggle, showPassword, suffix, handlePasswordToggle]);\n\n return (\n <AriaTextField\n ref={ref}\n className={cn(\"flex flex-col gap-1.5\", className)}\n isRequired={isRequired}\n isReadOnly={isReadOnly}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n value={value}\n defaultValue={defaultValue}\n {...props}\n >\n {/* Label with required indicator */}\n {label && (\n <AriaLabel className={cn(labelVariants({ state: labelState }))}>\n {label}\n {isRequired && (\n <span className=\"ml-1 text-[var(--destructive-background)]\" aria-hidden=\"true\">\n <strong>*</strong>\n </span>\n )}\n </AriaLabel>\n )}\n\n {/* Description text (helper text) */}\n {combinedDescription && (\n <AriaText slot=\"description\" className={cn(descriptionVariants())}>\n {combinedDescription}\n </AriaText>\n )}\n\n {/* Input field with prefix/suffix */}\n <div\n className=\"relative flex items-center transition-all duration-200\"\n style={{\n width: inputWidth,\n }}\n >\n {/* Prefix */}\n {prefix && (\n <div\n data-testid=\"textfield-prefix\"\n className=\"absolute left-3 flex items-center justify-center pointer-events-none text-[var(--content-foreground)]\"\n aria-hidden=\"true\"\n >\n {prefix}\n </div>\n )}\n\n {/* Input */}\n <AriaInput\n type={actualType}\n id={fieldId}\n className={cn(\n inputVariants({ size, state: inputState }),\n DISABLED_STYLES,\n isShaking && 'shake'\n )}\n style={{\n width: '100%',\n paddingLeft: `${inputPadding.left}px`,\n paddingRight: `${inputPadding.right}px`,\n }}\n autoComplete={autoComplete}\n pattern={pattern}\n onPaste={handlePaste}\n onFocus={handleFocus}\n onBlur={handleBlur}\n aria-required={isRequired ? 'true' : undefined}\n aria-readonly={isReadOnly ? 'true' : undefined}\n aria-errormessage={isInvalid && errorMessage ? errorId : undefined}\n />\n\n {/* Suffix */}\n {actualSuffix && (\n <div\n data-testid=\"textfield-suffix\"\n className={cn(\n \"absolute right-3 flex items-center justify-center text-[var(--content-foreground)]\",\n // Password toggle is clickable, other suffixes are not\n type === 'password' && showPasswordToggle ? \"\" : \"pointer-events-none\"\n )}\n aria-hidden={type === 'password' && showPasswordToggle ? undefined : \"true\"}\n >\n {actualSuffix}\n </div>\n )}\n </div>\n\n {/* Success message (shown when valid) */}\n {isValid && successMessage && !isInvalid && (\n <AriaText slot=\"description\" className={cn(successMessageVariants())}>\n {successMessage}\n </AriaText>\n )}\n\n {/* Error message (shown when invalid) - takes precedence over success */}\n {isInvalid && errorMessage && (\n <TextFieldError id={errorId}>\n {errorMessage}\n </TextFieldError>\n )}\n\n {/* Screen reader announcement for paste prevention */}\n {screenReaderMessage && (\n <div className=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {screenReaderMessage}\n </div>\n )}\n </AriaTextField>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport { inputVariants as textFieldInputVariants, labelVariants as textFieldLabelVariants };\n"]}
@@ -1,352 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkQ3572X2J_js = require('./chunk-Q3572X2J.js');
4
- var chunkVIREG536_js = require('./chunk-VIREG536.js');
5
- var react = require('react');
6
- var reactAriaComponents = require('react-aria-components');
7
- var classVarianceAuthority = require('class-variance-authority');
8
- var lucideReact = require('lucide-react');
9
- var jsxRuntime = require('react/jsx-runtime');
10
-
11
- var TableContext = react.createContext({
12
- variant: "default",
13
- size: "default",
14
- selectionMode: "none",
15
- stickyHeader: false
16
- });
17
- var tableContainerVariants = classVarianceAuthority.cva(["relative w-full overflow-auto"]);
18
- var tableVariants = classVarianceAuthority.cva(
19
- ["w-full caption-bottom text-sm", "border-collapse"],
20
- {
21
- variants: {
22
- variant: {
23
- default: "",
24
- bordered: "border border-[var(--border)] rounded-md",
25
- striped: ""
26
- }
27
- },
28
- defaultVariants: {
29
- variant: "default"
30
- }
31
- }
32
- );
33
- var tableHeaderVariants = classVarianceAuthority.cva(["[&_tr]:border-b"], {
34
- variants: {
35
- sticky: {
36
- true: "sticky top-0 z-10 bg-[var(--content-background)]",
37
- false: ""
38
- }
39
- },
40
- defaultVariants: {
41
- sticky: false
42
- }
43
- });
44
- var tableFooterVariants = classVarianceAuthority.cva([
45
- "border-t border-[var(--border)]",
46
- "bg-[var(--accent-background)]/50",
47
- "font-medium",
48
- "[&>tr]:last:border-b-0"
49
- ]);
50
- var tableCaptionVariants = classVarianceAuthority.cva([
51
- "mt-4 text-sm text-[var(--menu-muted)]"
52
- ]);
53
- var columnVariants = classVarianceAuthority.cva(
54
- [
55
- "h-12 px-4 text-left align-middle font-medium",
56
- "text-[var(--menu-muted)]",
57
- "[&:has([role=checkbox])]:pr-0",
58
- "select-none",
59
- "focus-visible:outline-none focus-visible:ring-2",
60
- "focus-visible:ring-[var(--ring)] focus-visible:ring-inset"
61
- ],
62
- {
63
- variants: {
64
- allowsSorting: {
65
- true: "cursor-pointer hover:bg-[var(--accent)]/50",
66
- false: ""
67
- },
68
- align: {
69
- start: "text-start",
70
- center: "text-center",
71
- end: "text-end"
72
- },
73
- size: {
74
- sm: "h-10 px-3 text-xs",
75
- default: "h-12 px-4 text-sm",
76
- lg: "h-14 px-5 text-base"
77
- }
78
- },
79
- defaultVariants: {
80
- allowsSorting: false,
81
- align: "start",
82
- size: "default"
83
- }
84
- }
85
- );
86
- var rowVariants = classVarianceAuthority.cva(
87
- [
88
- "border-b border-[var(--border)]",
89
- "transition-colors",
90
- "focus-visible:outline-none focus-visible:ring-2",
91
- "focus-visible:ring-[var(--ring)] focus-visible:ring-inset",
92
- "hover:bg-[var(--accent-background)]/50",
93
- "data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
94
- ],
95
- {
96
- variants: {
97
- isSelected: {
98
- true: "bg-[var(--accent)] data-[selected]:bg-[var(--accent)]",
99
- false: ""
100
- },
101
- variant: {
102
- default: "",
103
- striped: "even:bg-[var(--accent-background)]/30"
104
- }
105
- },
106
- defaultVariants: {
107
- isSelected: false,
108
- variant: "default"
109
- }
110
- }
111
- );
112
- var cellVariants = classVarianceAuthority.cva(
113
- ["p-4 align-middle", "[&:has([role=checkbox])]:pr-0"],
114
- {
115
- variants: {
116
- align: {
117
- start: "text-start",
118
- center: "text-center",
119
- end: "text-end"
120
- },
121
- size: {
122
- sm: "p-3 text-xs",
123
- default: "p-4 text-sm",
124
- lg: "p-5 text-base"
125
- },
126
- isRowHeader: {
127
- true: "font-medium",
128
- false: ""
129
- }
130
- },
131
- defaultVariants: {
132
- align: "start",
133
- size: "default",
134
- isRowHeader: false
135
- }
136
- }
137
- );
138
- var Table = react.forwardRef(
139
- ({
140
- className,
141
- variant = "default",
142
- size = "default",
143
- stickyHeader = false,
144
- selectionMode = "none",
145
- selectionBehavior = "toggle",
146
- disallowEmptySelection = false,
147
- disabledBehavior = "selection",
148
- selectedKeys,
149
- defaultSelectedKeys,
150
- onSelectionChange,
151
- disabledKeys,
152
- sortDescriptor,
153
- onSortChange,
154
- onRowAction,
155
- children,
156
- ...props
157
- }, ref) => {
158
- return /* @__PURE__ */ jsxRuntime.jsx(TableContext.Provider, { value: { variant, size, selectionMode, stickyHeader }, children: /* @__PURE__ */ jsxRuntime.jsx(
159
- "div",
160
- {
161
- className: chunkVIREG536_js.cn(tableContainerVariants(), className),
162
- "data-testid": "table-container",
163
- children: /* @__PURE__ */ jsxRuntime.jsx(
164
- reactAriaComponents.Table,
165
- {
166
- ref,
167
- className: chunkVIREG536_js.cn(tableVariants({ variant })),
168
- selectionMode,
169
- selectionBehavior,
170
- disallowEmptySelection,
171
- disabledBehavior,
172
- selectedKeys,
173
- defaultSelectedKeys,
174
- onSelectionChange,
175
- disabledKeys,
176
- sortDescriptor,
177
- onSortChange,
178
- onRowAction,
179
- "data-testid": "table",
180
- "data-variant": variant,
181
- "data-size": size,
182
- ...props,
183
- children
184
- }
185
- )
186
- }
187
- ) });
188
- }
189
- );
190
- Table.displayName = "Table";
191
- function TableHeaderInner({ className, children, columns, ...props }, ref) {
192
- const { size, selectionMode, stickyHeader } = react.useContext(TableContext);
193
- const { allowsDragging } = reactAriaComponents.useTableOptions();
194
- return /* @__PURE__ */ jsxRuntime.jsxs(
195
- reactAriaComponents.TableHeader,
196
- {
197
- ref,
198
- className: chunkVIREG536_js.cn(tableHeaderVariants({ sticky: stickyHeader }), className),
199
- "data-testid": "table-header",
200
- ...props,
201
- children: [
202
- selectionMode === "multiple" && /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Column, { className: chunkVIREG536_js.cn(columnVariants({ size }), "w-12"), children: /* @__PURE__ */ jsxRuntime.jsx(chunkQ3572X2J_js.Checkbox, { slot: "selection", "aria-label": "Select all", size }) }),
203
- allowsDragging && /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Column, {}),
204
- columns ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Collection, { items: columns, children }) : children
205
- ]
206
- }
207
- );
208
- }
209
- var TableHeader = react.forwardRef(TableHeaderInner);
210
- TableHeader.displayName = "TableHeader";
211
- function TableBodyInner({ className, children, items, renderEmptyState, ...props }, ref) {
212
- return /* @__PURE__ */ jsxRuntime.jsx(
213
- reactAriaComponents.TableBody,
214
- {
215
- ref,
216
- className: chunkVIREG536_js.cn(className),
217
- items,
218
- renderEmptyState: renderEmptyState ? () => /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: 99, className: "text-center p-8", children: renderEmptyState() }) }) : void 0,
219
- "data-testid": "table-body",
220
- ...props,
221
- children
222
- }
223
- );
224
- }
225
- var TableBody = react.forwardRef(TableBodyInner);
226
- TableBody.displayName = "TableBody";
227
- var TableFooter = react.forwardRef(
228
- ({ className, children, ...props }, ref) => {
229
- return /* @__PURE__ */ jsxRuntime.jsx(
230
- "tfoot",
231
- {
232
- ref,
233
- className: chunkVIREG536_js.cn(tableFooterVariants(), className),
234
- "data-testid": "table-footer",
235
- ...props,
236
- children
237
- }
238
- );
239
- }
240
- );
241
- TableFooter.displayName = "TableFooter";
242
- var TableCaption = react.forwardRef(
243
- ({ className, children, ...props }, ref) => {
244
- return /* @__PURE__ */ jsxRuntime.jsx(
245
- "caption",
246
- {
247
- ref,
248
- className: chunkVIREG536_js.cn(tableCaptionVariants(), className),
249
- "data-testid": "table-caption",
250
- ...props,
251
- children
252
- }
253
- );
254
- }
255
- );
256
- TableCaption.displayName = "TableCaption";
257
- var Column = react.forwardRef(
258
- ({
259
- className,
260
- children,
261
- isRowHeader = false,
262
- allowsSorting = false,
263
- align = "start",
264
- width,
265
- minWidth,
266
- maxWidth,
267
- ...props
268
- }, ref) => {
269
- const { size } = react.useContext(TableContext);
270
- return /* @__PURE__ */ jsxRuntime.jsx(
271
- reactAriaComponents.Column,
272
- {
273
- ref,
274
- isRowHeader,
275
- allowsSorting,
276
- width,
277
- minWidth,
278
- maxWidth,
279
- className: chunkVIREG536_js.cn(columnVariants({ allowsSorting, align, size }), className),
280
- ...props,
281
- children: ({ allowsSorting: canSort, sortDirection }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
282
- /* @__PURE__ */ jsxRuntime.jsx("span", { children }),
283
- canSort && sortDirection && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", "data-sort-direction": sortDirection, children: sortDirection === "ascending" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4" }) })
284
- ] })
285
- }
286
- );
287
- }
288
- );
289
- Column.displayName = "Column";
290
- function RowInner({ className, children, columns, href, isDisabled, ...props }, ref) {
291
- const { variant, size, selectionMode } = react.useContext(TableContext);
292
- const { allowsDragging } = reactAriaComponents.useTableOptions();
293
- return /* @__PURE__ */ jsxRuntime.jsxs(
294
- reactAriaComponents.Row,
295
- {
296
- ref,
297
- href,
298
- isDisabled,
299
- className: ({ isSelected, isDisabled: disabled }) => chunkVIREG536_js.cn(
300
- rowVariants({
301
- isSelected,
302
- variant: variant === "striped" ? "striped" : "default"
303
- }),
304
- disabled && "opacity-50",
305
- className
306
- ),
307
- "data-testid": "table-row",
308
- ...props,
309
- children: [
310
- selectionMode === "multiple" && /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Cell, { className: chunkVIREG536_js.cn(cellVariants({ size }), "w-12"), children: /* @__PURE__ */ jsxRuntime.jsx(chunkQ3572X2J_js.Checkbox, { slot: "selection", "aria-label": "Select row", size }) }),
311
- allowsDragging && /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Cell, {}),
312
- columns ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Collection, { items: columns, children }) : children
313
- ]
314
- }
315
- );
316
- }
317
- var Row = react.forwardRef(RowInner);
318
- Row.displayName = "Row";
319
- var Cell = react.forwardRef(
320
- ({ className, children, align = "start", colSpan: _colSpan, ...props }, ref) => {
321
- const { size } = react.useContext(TableContext);
322
- return /* @__PURE__ */ jsxRuntime.jsx(
323
- reactAriaComponents.Cell,
324
- {
325
- ref,
326
- className: chunkVIREG536_js.cn(cellVariants({ align, size }), className),
327
- ...props,
328
- children
329
- }
330
- );
331
- }
332
- );
333
- Cell.displayName = "Cell";
334
-
335
- exports.Cell = Cell;
336
- exports.Column = Column;
337
- exports.Row = Row;
338
- exports.Table = Table;
339
- exports.TableBody = TableBody;
340
- exports.TableCaption = TableCaption;
341
- exports.TableFooter = TableFooter;
342
- exports.TableHeader = TableHeader;
343
- exports.cellVariants = cellVariants;
344
- exports.columnVariants = columnVariants;
345
- exports.rowVariants = rowVariants;
346
- exports.tableCaptionVariants = tableCaptionVariants;
347
- exports.tableContainerVariants = tableContainerVariants;
348
- exports.tableFooterVariants = tableFooterVariants;
349
- exports.tableHeaderVariants = tableHeaderVariants;
350
- exports.tableVariants = tableVariants;
351
- //# sourceMappingURL=chunk-4E4E2GSS.js.map
352
- //# sourceMappingURL=chunk-4E4E2GSS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/elements/Table/Table.tsx"],"names":["createContext","cva","forwardRef","jsx","cn","AriaTable","useContext","useTableOptions","jsxs","AriaTableHeader","AriaColumn","Checkbox","Collection","AriaTableBody","ChevronUp","ChevronDown","AriaRow","AriaCell"],"mappings":"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","file":"chunk-4E4E2GSS.js","sourcesContent":["'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 createContext,\n useContext,\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 { cva } from 'class-variance-authority';\nimport { ChevronUp, ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils/cn';\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// CVA Variants\n// ============================================================================\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\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 return (\n <TableContext.Provider value={{ variant, size, selectionMode, stickyHeader }}>\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 return (\n <AriaRow\n ref={ref}\n href={href}\n isDisabled={isDisabled}\n className={({ isSelected, isDisabled: disabled }) =>\n cn(\n rowVariants({\n isSelected,\n variant: variant === 'striped' ? 'striped' : 'default',\n }),\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={cn(cellVariants({ size }), 'w-12')}>\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 = 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 types\nexport type { Selection, SortDescriptor };\n"]}
@@ -1,3 +0,0 @@
1
-
2
- //# sourceMappingURL=chunk-4NHAP4AN.mjs.map
3
- //# sourceMappingURL=chunk-4NHAP4AN.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-4NHAP4AN.mjs"}