@tribepad/themis 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (654) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +21 -0
  3. package/README.md +114 -0
  4. package/dist/Carousel-NTZX5TOW.js +16 -0
  5. package/dist/Carousel-NTZX5TOW.js.map +1 -0
  6. package/dist/Carousel-YH3DOQJU.mjs +7 -0
  7. package/dist/Carousel-YH3DOQJU.mjs.map +1 -0
  8. package/dist/chunk-2HIUTHMU.mjs +234 -0
  9. package/dist/chunk-2HIUTHMU.mjs.map +1 -0
  10. package/dist/chunk-34GTFTDO.js +431 -0
  11. package/dist/chunk-34GTFTDO.js.map +1 -0
  12. package/dist/chunk-3H7ASYR7.js +250 -0
  13. package/dist/chunk-3H7ASYR7.js.map +1 -0
  14. package/dist/chunk-3IEN7JOP.js +316 -0
  15. package/dist/chunk-3IEN7JOP.js.map +1 -0
  16. package/dist/chunk-3JHN4GAL.js +326 -0
  17. package/dist/chunk-3JHN4GAL.js.map +1 -0
  18. package/dist/chunk-3MJPASQU.js +232 -0
  19. package/dist/chunk-3MJPASQU.js.map +1 -0
  20. package/dist/chunk-3XD2JUL3.js +572 -0
  21. package/dist/chunk-3XD2JUL3.js.map +1 -0
  22. package/dist/chunk-3YOY2VJ6.js +189 -0
  23. package/dist/chunk-3YOY2VJ6.js.map +1 -0
  24. package/dist/chunk-4DU5JSXB.js +408 -0
  25. package/dist/chunk-4DU5JSXB.js.map +1 -0
  26. package/dist/chunk-4E4E2GSS.js +352 -0
  27. package/dist/chunk-4E4E2GSS.js.map +1 -0
  28. package/dist/chunk-4NHAP4AN.mjs +3 -0
  29. package/dist/chunk-4NHAP4AN.mjs.map +1 -0
  30. package/dist/chunk-4S33J5NY.mjs +415 -0
  31. package/dist/chunk-4S33J5NY.mjs.map +1 -0
  32. package/dist/chunk-5SMGRT3G.mjs +354 -0
  33. package/dist/chunk-5SMGRT3G.mjs.map +1 -0
  34. package/dist/chunk-5SVLJN2C.mjs +22 -0
  35. package/dist/chunk-5SVLJN2C.mjs.map +1 -0
  36. package/dist/chunk-66WTU4EB.mjs +299 -0
  37. package/dist/chunk-66WTU4EB.mjs.map +1 -0
  38. package/dist/chunk-6S25NMOT.mjs +335 -0
  39. package/dist/chunk-6S25NMOT.mjs.map +1 -0
  40. package/dist/chunk-6SP7UB3D.js +4 -0
  41. package/dist/chunk-6SP7UB3D.js.map +1 -0
  42. package/dist/chunk-6TYWWQHM.mjs +565 -0
  43. package/dist/chunk-6TYWWQHM.mjs.map +1 -0
  44. package/dist/chunk-A3YUJA6W.mjs +384 -0
  45. package/dist/chunk-A3YUJA6W.mjs.map +1 -0
  46. package/dist/chunk-A6KEDVUR.js +61 -0
  47. package/dist/chunk-A6KEDVUR.js.map +1 -0
  48. package/dist/chunk-A77RUEWL.js +730 -0
  49. package/dist/chunk-A77RUEWL.js.map +1 -0
  50. package/dist/chunk-AA4IKMPE.mjs +3 -0
  51. package/dist/chunk-AA4IKMPE.mjs.map +1 -0
  52. package/dist/chunk-AKIA6GW6.mjs +163 -0
  53. package/dist/chunk-AKIA6GW6.mjs.map +1 -0
  54. package/dist/chunk-AL6P275L.mjs +435 -0
  55. package/dist/chunk-AL6P275L.mjs.map +1 -0
  56. package/dist/chunk-AZ3RJYTB.js +37 -0
  57. package/dist/chunk-AZ3RJYTB.js.map +1 -0
  58. package/dist/chunk-B5Q4UPL6.js +32 -0
  59. package/dist/chunk-B5Q4UPL6.js.map +1 -0
  60. package/dist/chunk-B6DHPMDP.mjs +335 -0
  61. package/dist/chunk-B6DHPMDP.mjs.map +1 -0
  62. package/dist/chunk-BDXKKMBZ.mjs +184 -0
  63. package/dist/chunk-BDXKKMBZ.mjs.map +1 -0
  64. package/dist/chunk-BL6E2DLZ.mjs +52 -0
  65. package/dist/chunk-BL6E2DLZ.mjs.map +1 -0
  66. package/dist/chunk-CGFDS4XS.mjs +121 -0
  67. package/dist/chunk-CGFDS4XS.mjs.map +1 -0
  68. package/dist/chunk-CJIW5TKI.js +139 -0
  69. package/dist/chunk-CJIW5TKI.js.map +1 -0
  70. package/dist/chunk-CKNISJOQ.js +314 -0
  71. package/dist/chunk-CKNISJOQ.js.map +1 -0
  72. package/dist/chunk-D6CBOECS.mjs +1757 -0
  73. package/dist/chunk-D6CBOECS.mjs.map +1 -0
  74. package/dist/chunk-DDWEVC2S.js +166 -0
  75. package/dist/chunk-DDWEVC2S.js.map +1 -0
  76. package/dist/chunk-DZ556D2F.mjs +176 -0
  77. package/dist/chunk-DZ556D2F.mjs.map +1 -0
  78. package/dist/chunk-E2KQFV3O.mjs +10 -0
  79. package/dist/chunk-E2KQFV3O.mjs.map +1 -0
  80. package/dist/chunk-EMMLADSC.js +126 -0
  81. package/dist/chunk-EMMLADSC.js.map +1 -0
  82. package/dist/chunk-EP4WOI5D.mjs +926 -0
  83. package/dist/chunk-EP4WOI5D.mjs.map +1 -0
  84. package/dist/chunk-FJRXLJC2.mjs +160 -0
  85. package/dist/chunk-FJRXLJC2.mjs.map +1 -0
  86. package/dist/chunk-FKQI434R.js +345 -0
  87. package/dist/chunk-FKQI434R.js.map +1 -0
  88. package/dist/chunk-FPKEAJRZ.mjs +100 -0
  89. package/dist/chunk-FPKEAJRZ.mjs.map +1 -0
  90. package/dist/chunk-FWQYB22U.js +183 -0
  91. package/dist/chunk-FWQYB22U.js.map +1 -0
  92. package/dist/chunk-GD5GHTMA.js +189 -0
  93. package/dist/chunk-GD5GHTMA.js.map +1 -0
  94. package/dist/chunk-GE5XTSDZ.js +447 -0
  95. package/dist/chunk-GE5XTSDZ.js.map +1 -0
  96. package/dist/chunk-GVE47ZAX.mjs +32 -0
  97. package/dist/chunk-GVE47ZAX.mjs.map +1 -0
  98. package/dist/chunk-HK46BT5U.mjs +18 -0
  99. package/dist/chunk-HK46BT5U.mjs.map +1 -0
  100. package/dist/chunk-HQVRMR6N.js +365 -0
  101. package/dist/chunk-HQVRMR6N.js.map +1 -0
  102. package/dist/chunk-HSGBJPJO.mjs +398 -0
  103. package/dist/chunk-HSGBJPJO.mjs.map +1 -0
  104. package/dist/chunk-I3AUTOMZ.mjs +125 -0
  105. package/dist/chunk-I3AUTOMZ.mjs.map +1 -0
  106. package/dist/chunk-IEI5LD5C.mjs +1161 -0
  107. package/dist/chunk-IEI5LD5C.mjs.map +1 -0
  108. package/dist/chunk-IIPTC2X7.mjs +118 -0
  109. package/dist/chunk-IIPTC2X7.mjs.map +1 -0
  110. package/dist/chunk-J7TLHF2Q.js +4 -0
  111. package/dist/chunk-J7TLHF2Q.js.map +1 -0
  112. package/dist/chunk-JJOWXFXQ.mjs +765 -0
  113. package/dist/chunk-JJOWXFXQ.mjs.map +1 -0
  114. package/dist/chunk-JPTSS2OA.mjs +3 -0
  115. package/dist/chunk-JPTSS2OA.mjs.map +1 -0
  116. package/dist/chunk-KFXXRLTP.js +396 -0
  117. package/dist/chunk-KFXXRLTP.js.map +1 -0
  118. package/dist/chunk-KPRRBSG6.mjs +272 -0
  119. package/dist/chunk-KPRRBSG6.mjs.map +1 -0
  120. package/dist/chunk-NFSBGRDB.mjs +57 -0
  121. package/dist/chunk-NFSBGRDB.mjs.map +1 -0
  122. package/dist/chunk-NGJVCFTM.js +219 -0
  123. package/dist/chunk-NGJVCFTM.js.map +1 -0
  124. package/dist/chunk-NSQ6MZJ6.mjs +728 -0
  125. package/dist/chunk-NSQ6MZJ6.mjs.map +1 -0
  126. package/dist/chunk-NYQYHT76.mjs +296 -0
  127. package/dist/chunk-NYQYHT76.mjs.map +1 -0
  128. package/dist/chunk-OLJJGI5B.js +1193 -0
  129. package/dist/chunk-OLJJGI5B.js.map +1 -0
  130. package/dist/chunk-Q3572X2J.js +292 -0
  131. package/dist/chunk-Q3572X2J.js.map +1 -0
  132. package/dist/chunk-QH7N7D4I.mjs +210 -0
  133. package/dist/chunk-QH7N7D4I.mjs.map +1 -0
  134. package/dist/chunk-R7XUIV25.js +466 -0
  135. package/dist/chunk-R7XUIV25.js.map +1 -0
  136. package/dist/chunk-RFFO4KPM.js +135 -0
  137. package/dist/chunk-RFFO4KPM.js.map +1 -0
  138. package/dist/chunk-RFX7QKA7.mjs +180 -0
  139. package/dist/chunk-RFX7QKA7.mjs.map +1 -0
  140. package/dist/chunk-SN5LFAP3.js +940 -0
  141. package/dist/chunk-SN5LFAP3.js.map +1 -0
  142. package/dist/chunk-T4COXKQ3.js +24 -0
  143. package/dist/chunk-T4COXKQ3.js.map +1 -0
  144. package/dist/chunk-TS54QM27.js +125 -0
  145. package/dist/chunk-TS54QM27.js.map +1 -0
  146. package/dist/chunk-UE2S4PCX.mjs +220 -0
  147. package/dist/chunk-UE2S4PCX.mjs.map +1 -0
  148. package/dist/chunk-UTW3QX2A.mjs +282 -0
  149. package/dist/chunk-UTW3QX2A.mjs.map +1 -0
  150. package/dist/chunk-V74LGMAE.js +1767 -0
  151. package/dist/chunk-V74LGMAE.js.map +1 -0
  152. package/dist/chunk-VIREG536.js +12 -0
  153. package/dist/chunk-VIREG536.js.map +1 -0
  154. package/dist/chunk-VY7M7346.js +4 -0
  155. package/dist/chunk-VY7M7346.js.map +1 -0
  156. package/dist/chunk-W3TJOO7H.mjs +319 -0
  157. package/dist/chunk-W3TJOO7H.mjs.map +1 -0
  158. package/dist/chunk-WIUOB36M.js +54 -0
  159. package/dist/chunk-WIUOB36M.js.map +1 -0
  160. package/dist/chunk-WJGLM4CY.js +291 -0
  161. package/dist/chunk-WJGLM4CY.js.map +1 -0
  162. package/dist/chunk-WNURH5OO.mjs +453 -0
  163. package/dist/chunk-WNURH5OO.mjs.map +1 -0
  164. package/dist/chunk-X25TNRSD.mjs +364 -0
  165. package/dist/chunk-X25TNRSD.mjs.map +1 -0
  166. package/dist/chunk-Y3GT7ETK.js +108 -0
  167. package/dist/chunk-Y3GT7ETK.js.map +1 -0
  168. package/dist/chunk-Z4FRNOF6.mjs +115 -0
  169. package/dist/chunk-Z4FRNOF6.mjs.map +1 -0
  170. package/dist/chunk-ZMYLD3BN.js +166 -0
  171. package/dist/chunk-ZMYLD3BN.js.map +1 -0
  172. package/dist/chunk-ZP2KV6EX.js +815 -0
  173. package/dist/chunk-ZP2KV6EX.js.map +1 -0
  174. package/dist/chunk-ZVKXFELU.js +366 -0
  175. package/dist/chunk-ZVKXFELU.js.map +1 -0
  176. package/dist/elements/Accordion/Accordion.d.ts +139 -0
  177. package/dist/elements/Accordion/Accordion.d.ts.map +1 -0
  178. package/dist/elements/Accordion/Accordion.types.d.ts +143 -0
  179. package/dist/elements/Accordion/Accordion.types.d.ts.map +1 -0
  180. package/dist/elements/Accordion/index.d.ts +13 -0
  181. package/dist/elements/Accordion/index.d.ts.map +1 -0
  182. package/dist/elements/Accordion/index.js +78 -0
  183. package/dist/elements/Accordion/index.js.map +1 -0
  184. package/dist/elements/Accordion/index.mjs +5 -0
  185. package/dist/elements/Accordion/index.mjs.map +1 -0
  186. package/dist/elements/Avatar/Avatar.d.ts +51 -0
  187. package/dist/elements/Avatar/Avatar.d.ts.map +1 -0
  188. package/dist/elements/Avatar/Avatar.types.d.ts +145 -0
  189. package/dist/elements/Avatar/Avatar.types.d.ts.map +1 -0
  190. package/dist/elements/Avatar/AvatarGroup.d.ts +32 -0
  191. package/dist/elements/Avatar/AvatarGroup.d.ts.map +1 -0
  192. package/dist/elements/Avatar/index.d.ts +11 -0
  193. package/dist/elements/Avatar/index.d.ts.map +1 -0
  194. package/dist/elements/Avatar/index.js +54 -0
  195. package/dist/elements/Avatar/index.js.map +1 -0
  196. package/dist/elements/Avatar/index.mjs +5 -0
  197. package/dist/elements/Avatar/index.mjs.map +1 -0
  198. package/dist/elements/Badge/Badge.d.ts +39 -0
  199. package/dist/elements/Badge/Badge.d.ts.map +1 -0
  200. package/dist/elements/Badge/Badge.types.d.ts +76 -0
  201. package/dist/elements/Badge/Badge.types.d.ts.map +1 -0
  202. package/dist/elements/Badge/index.d.ts +18 -0
  203. package/dist/elements/Badge/index.d.ts.map +1 -0
  204. package/dist/elements/Badge/index.js +43 -0
  205. package/dist/elements/Badge/index.js.map +1 -0
  206. package/dist/elements/Badge/index.mjs +6 -0
  207. package/dist/elements/Badge/index.mjs.map +1 -0
  208. package/dist/elements/Breadcrumbs/Breadcrumbs.d.ts +91 -0
  209. package/dist/elements/Breadcrumbs/Breadcrumbs.d.ts.map +1 -0
  210. package/dist/elements/Breadcrumbs/Breadcrumbs.types.d.ts +114 -0
  211. package/dist/elements/Breadcrumbs/Breadcrumbs.types.d.ts.map +1 -0
  212. package/dist/elements/Breadcrumbs/index.d.ts +14 -0
  213. package/dist/elements/Breadcrumbs/index.d.ts.map +1 -0
  214. package/dist/elements/Breadcrumbs/index.js +54 -0
  215. package/dist/elements/Breadcrumbs/index.js.map +1 -0
  216. package/dist/elements/Breadcrumbs/index.mjs +9 -0
  217. package/dist/elements/Breadcrumbs/index.mjs.map +1 -0
  218. package/dist/elements/Button/Button.d.ts +92 -0
  219. package/dist/elements/Button/Button.d.ts.map +1 -0
  220. package/dist/elements/Button/Button.types.d.ts +54 -0
  221. package/dist/elements/Button/Button.types.d.ts.map +1 -0
  222. package/dist/elements/Button/index.d.ts +18 -0
  223. package/dist/elements/Button/index.d.ts.map +1 -0
  224. package/dist/elements/Button/index.js +27 -0
  225. package/dist/elements/Button/index.js.map +1 -0
  226. package/dist/elements/Button/index.mjs +6 -0
  227. package/dist/elements/Button/index.mjs.map +1 -0
  228. package/dist/elements/ButtonGroup/ButtonGroup.d.ts +53 -0
  229. package/dist/elements/ButtonGroup/ButtonGroup.d.ts.map +1 -0
  230. package/dist/elements/ButtonGroup/ButtonGroup.types.d.ts +98 -0
  231. package/dist/elements/ButtonGroup/ButtonGroup.types.d.ts.map +1 -0
  232. package/dist/elements/ButtonGroup/ButtonGroup.utils.d.ts +60 -0
  233. package/dist/elements/ButtonGroup/ButtonGroup.utils.d.ts.map +1 -0
  234. package/dist/elements/ButtonGroup/ButtonGroup.variants.d.ts +39 -0
  235. package/dist/elements/ButtonGroup/ButtonGroup.variants.d.ts.map +1 -0
  236. package/dist/elements/ButtonGroup/ButtonGroupContext.d.ts +42 -0
  237. package/dist/elements/ButtonGroup/ButtonGroupContext.d.ts.map +1 -0
  238. package/dist/elements/ButtonGroup/index.d.ts +35 -0
  239. package/dist/elements/ButtonGroup/index.d.ts.map +1 -0
  240. package/dist/elements/ButtonGroup/index.js +66 -0
  241. package/dist/elements/ButtonGroup/index.js.map +1 -0
  242. package/dist/elements/ButtonGroup/index.mjs +5 -0
  243. package/dist/elements/ButtonGroup/index.mjs.map +1 -0
  244. package/dist/elements/Card/Card.d.ts +104 -0
  245. package/dist/elements/Card/Card.d.ts.map +1 -0
  246. package/dist/elements/Card/Card.types.d.ts +227 -0
  247. package/dist/elements/Card/Card.types.d.ts.map +1 -0
  248. package/dist/elements/Card/index.d.ts +38 -0
  249. package/dist/elements/Card/index.d.ts.map +1 -0
  250. package/dist/elements/Card/index.js +85 -0
  251. package/dist/elements/Card/index.js.map +1 -0
  252. package/dist/elements/Card/index.mjs +8 -0
  253. package/dist/elements/Card/index.mjs.map +1 -0
  254. package/dist/elements/Carousel/Carousel.d.ts +13 -0
  255. package/dist/elements/Carousel/Carousel.d.ts.map +1 -0
  256. package/dist/elements/Carousel/Carousel.types.d.ts +65 -0
  257. package/dist/elements/Carousel/Carousel.types.d.ts.map +1 -0
  258. package/dist/elements/Carousel/LazyCarousel.d.ts +46 -0
  259. package/dist/elements/Carousel/LazyCarousel.d.ts.map +1 -0
  260. package/dist/elements/Carousel/index.d.ts +5 -0
  261. package/dist/elements/Carousel/index.d.ts.map +1 -0
  262. package/dist/elements/Carousel/index.js +23 -0
  263. package/dist/elements/Carousel/index.js.map +1 -0
  264. package/dist/elements/Carousel/index.mjs +10 -0
  265. package/dist/elements/Carousel/index.mjs.map +1 -0
  266. package/dist/elements/Chart/Chart.d.ts +44 -0
  267. package/dist/elements/Chart/Chart.d.ts.map +1 -0
  268. package/dist/elements/Chart/Chart.types.d.ts +254 -0
  269. package/dist/elements/Chart/Chart.types.d.ts.map +1 -0
  270. package/dist/elements/Chart/ChartAnnouncer.d.ts +24 -0
  271. package/dist/elements/Chart/ChartAnnouncer.d.ts.map +1 -0
  272. package/dist/elements/Chart/ChartAxis.d.ts +42 -0
  273. package/dist/elements/Chart/ChartAxis.d.ts.map +1 -0
  274. package/dist/elements/Chart/ChartBarSeries.d.ts +54 -0
  275. package/dist/elements/Chart/ChartBarSeries.d.ts.map +1 -0
  276. package/dist/elements/Chart/ChartContext.d.ts +46 -0
  277. package/dist/elements/Chart/ChartContext.d.ts.map +1 -0
  278. package/dist/elements/Chart/ChartDataPoint.d.ts +56 -0
  279. package/dist/elements/Chart/ChartDataPoint.d.ts.map +1 -0
  280. package/dist/elements/Chart/ChartDataTable.d.ts +35 -0
  281. package/dist/elements/Chart/ChartDataTable.d.ts.map +1 -0
  282. package/dist/elements/Chart/ChartGrid.d.ts +32 -0
  283. package/dist/elements/Chart/ChartGrid.d.ts.map +1 -0
  284. package/dist/elements/Chart/ChartLegend.d.ts +32 -0
  285. package/dist/elements/Chart/ChartLegend.d.ts.map +1 -0
  286. package/dist/elements/Chart/ChartLineSeries.d.ts +52 -0
  287. package/dist/elements/Chart/ChartLineSeries.d.ts.map +1 -0
  288. package/dist/elements/Chart/ChartSVG.d.ts +62 -0
  289. package/dist/elements/Chart/ChartSVG.d.ts.map +1 -0
  290. package/dist/elements/Chart/ChartTooltip.d.ts +45 -0
  291. package/dist/elements/Chart/ChartTooltip.d.ts.map +1 -0
  292. package/dist/elements/Chart/chart.constants.d.ts +108 -0
  293. package/dist/elements/Chart/chart.constants.d.ts.map +1 -0
  294. package/dist/elements/Chart/chart.variants.d.ts +45 -0
  295. package/dist/elements/Chart/chart.variants.d.ts.map +1 -0
  296. package/dist/elements/Chart/index.d.ts +12 -0
  297. package/dist/elements/Chart/index.d.ts.map +1 -0
  298. package/dist/elements/Chart/index.js +47 -0
  299. package/dist/elements/Chart/index.js.map +1 -0
  300. package/dist/elements/Chart/index.mjs +6 -0
  301. package/dist/elements/Chart/index.mjs.map +1 -0
  302. package/dist/elements/Chart/useChartDimensions.d.ts +18 -0
  303. package/dist/elements/Chart/useChartDimensions.d.ts.map +1 -0
  304. package/dist/elements/Chart/useChartKeyboard.d.ts +42 -0
  305. package/dist/elements/Chart/useChartKeyboard.d.ts.map +1 -0
  306. package/dist/elements/Chart/useRovingTabIndex.d.ts +46 -0
  307. package/dist/elements/Chart/useRovingTabIndex.d.ts.map +1 -0
  308. package/dist/elements/Checkbox/Checkbox.d.ts +94 -0
  309. package/dist/elements/Checkbox/Checkbox.d.ts.map +1 -0
  310. package/dist/elements/Checkbox/Checkbox.types.d.ts +82 -0
  311. package/dist/elements/Checkbox/Checkbox.types.d.ts.map +1 -0
  312. package/dist/elements/Checkbox/index.d.ts +7 -0
  313. package/dist/elements/Checkbox/index.d.ts.map +1 -0
  314. package/dist/elements/Checkbox/index.js +47 -0
  315. package/dist/elements/Checkbox/index.js.map +1 -0
  316. package/dist/elements/Checkbox/index.mjs +6 -0
  317. package/dist/elements/Checkbox/index.mjs.map +1 -0
  318. package/dist/elements/CheckboxGroup/CheckboxGroup.d.ts +130 -0
  319. package/dist/elements/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
  320. package/dist/elements/CheckboxGroup/CheckboxGroup.types.d.ts +142 -0
  321. package/dist/elements/CheckboxGroup/CheckboxGroup.types.d.ts.map +1 -0
  322. package/dist/elements/CheckboxGroup/index.d.ts +10 -0
  323. package/dist/elements/CheckboxGroup/index.d.ts.map +1 -0
  324. package/dist/elements/CheckboxGroup/index.js +71 -0
  325. package/dist/elements/CheckboxGroup/index.js.map +1 -0
  326. package/dist/elements/CheckboxGroup/index.mjs +6 -0
  327. package/dist/elements/CheckboxGroup/index.mjs.map +1 -0
  328. package/dist/elements/DatePicker/Calendar.d.ts +16 -0
  329. package/dist/elements/DatePicker/Calendar.d.ts.map +1 -0
  330. package/dist/elements/DatePicker/DateField.d.ts +13 -0
  331. package/dist/elements/DatePicker/DateField.d.ts.map +1 -0
  332. package/dist/elements/DatePicker/DatePicker.d.ts +16 -0
  333. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -0
  334. package/dist/elements/DatePicker/DatePicker.types.d.ts +390 -0
  335. package/dist/elements/DatePicker/DatePicker.types.d.ts.map +1 -0
  336. package/dist/elements/DatePicker/DatePicker.variants.d.ts +42 -0
  337. package/dist/elements/DatePicker/DatePicker.variants.d.ts.map +1 -0
  338. package/dist/elements/DatePicker/DateRangePicker.d.ts +13 -0
  339. package/dist/elements/DatePicker/DateRangePicker.d.ts.map +1 -0
  340. package/dist/elements/DatePicker/index.d.ts +14 -0
  341. package/dist/elements/DatePicker/index.d.ts.map +1 -0
  342. package/dist/elements/DatePicker/index.js +123 -0
  343. package/dist/elements/DatePicker/index.js.map +1 -0
  344. package/dist/elements/DatePicker/index.mjs +6 -0
  345. package/dist/elements/DatePicker/index.mjs.map +1 -0
  346. package/dist/elements/Dropdown/Dropdown.d.ts +197 -0
  347. package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -0
  348. package/dist/elements/Dropdown/Dropdown.types.d.ts +175 -0
  349. package/dist/elements/Dropdown/Dropdown.types.d.ts.map +1 -0
  350. package/dist/elements/Dropdown/index.d.ts +12 -0
  351. package/dist/elements/Dropdown/index.d.ts.map +1 -0
  352. package/dist/elements/Dropdown/index.js +41 -0
  353. package/dist/elements/Dropdown/index.js.map +1 -0
  354. package/dist/elements/Dropdown/index.mjs +4 -0
  355. package/dist/elements/Dropdown/index.mjs.map +1 -0
  356. package/dist/elements/FileField/FileField.d.ts +46 -0
  357. package/dist/elements/FileField/FileField.d.ts.map +1 -0
  358. package/dist/elements/FileField/FileField.types.d.ts +99 -0
  359. package/dist/elements/FileField/FileField.types.d.ts.map +1 -0
  360. package/dist/elements/FileField/FileField.variants.d.ts +49 -0
  361. package/dist/elements/FileField/FileField.variants.d.ts.map +1 -0
  362. package/dist/elements/FileField/FilePreview.d.ts +27 -0
  363. package/dist/elements/FileField/FilePreview.d.ts.map +1 -0
  364. package/dist/elements/FileField/FileProgress.d.ts +35 -0
  365. package/dist/elements/FileField/FileProgress.d.ts.map +1 -0
  366. package/dist/elements/FileField/FileProgress.variants.d.ts +55 -0
  367. package/dist/elements/FileField/FileProgress.variants.d.ts.map +1 -0
  368. package/dist/elements/FileField/index.d.ts +41 -0
  369. package/dist/elements/FileField/index.d.ts.map +1 -0
  370. package/dist/elements/FileField/index.js +138 -0
  371. package/dist/elements/FileField/index.js.map +1 -0
  372. package/dist/elements/FileField/index.mjs +9 -0
  373. package/dist/elements/FileField/index.mjs.map +1 -0
  374. package/dist/elements/FileField/useFilePreview.d.ts +46 -0
  375. package/dist/elements/FileField/useFilePreview.d.ts.map +1 -0
  376. package/dist/elements/FileField/utils.d.ts +134 -0
  377. package/dist/elements/FileField/utils.d.ts.map +1 -0
  378. package/dist/elements/FormLayout/FormLayout.d.ts +51 -0
  379. package/dist/elements/FormLayout/FormLayout.d.ts.map +1 -0
  380. package/dist/elements/FormLayout/FormLayout.types.d.ts +66 -0
  381. package/dist/elements/FormLayout/FormLayout.types.d.ts.map +1 -0
  382. package/dist/elements/FormLayout/index.d.ts +3 -0
  383. package/dist/elements/FormLayout/index.d.ts.map +1 -0
  384. package/dist/elements/FormLayout/index.js +17 -0
  385. package/dist/elements/FormLayout/index.js.map +1 -0
  386. package/dist/elements/FormLayout/index.mjs +4 -0
  387. package/dist/elements/FormLayout/index.mjs.map +1 -0
  388. package/dist/elements/Modal/Modal.d.ts +168 -0
  389. package/dist/elements/Modal/Modal.d.ts.map +1 -0
  390. package/dist/elements/Modal/Modal.types.d.ts +265 -0
  391. package/dist/elements/Modal/Modal.types.d.ts.map +1 -0
  392. package/dist/elements/Modal/index.d.ts +14 -0
  393. package/dist/elements/Modal/index.d.ts.map +1 -0
  394. package/dist/elements/Modal/index.js +52 -0
  395. package/dist/elements/Modal/index.js.map +1 -0
  396. package/dist/elements/Modal/index.mjs +3 -0
  397. package/dist/elements/Modal/index.mjs.map +1 -0
  398. package/dist/elements/NumberField/NumberField.d.ts +43 -0
  399. package/dist/elements/NumberField/NumberField.d.ts.map +1 -0
  400. package/dist/elements/NumberField/NumberField.types.d.ts +112 -0
  401. package/dist/elements/NumberField/NumberField.types.d.ts.map +1 -0
  402. package/dist/elements/NumberField/NumberField.variants.d.ts +82 -0
  403. package/dist/elements/NumberField/NumberField.variants.d.ts.map +1 -0
  404. package/dist/elements/NumberField/index.d.ts +25 -0
  405. package/dist/elements/NumberField/index.d.ts.map +1 -0
  406. package/dist/elements/NumberField/index.js +57 -0
  407. package/dist/elements/NumberField/index.js.map +1 -0
  408. package/dist/elements/NumberField/index.mjs +8 -0
  409. package/dist/elements/NumberField/index.mjs.map +1 -0
  410. package/dist/elements/OTPInput/OTPInput.d.ts +105 -0
  411. package/dist/elements/OTPInput/OTPInput.d.ts.map +1 -0
  412. package/dist/elements/OTPInput/OTPInput.styles.d.ts +83 -0
  413. package/dist/elements/OTPInput/OTPInput.styles.d.ts.map +1 -0
  414. package/dist/elements/OTPInput/OTPInput.types.d.ts +189 -0
  415. package/dist/elements/OTPInput/OTPInput.types.d.ts.map +1 -0
  416. package/dist/elements/OTPInput/components/OTPDigit.d.ts +51 -0
  417. package/dist/elements/OTPInput/components/OTPDigit.d.ts.map +1 -0
  418. package/dist/elements/OTPInput/hooks/useOTPInput.d.ts +36 -0
  419. package/dist/elements/OTPInput/hooks/useOTPInput.d.ts.map +1 -0
  420. package/dist/elements/OTPInput/hooks/useOTPKeyboard.d.ts +59 -0
  421. package/dist/elements/OTPInput/hooks/useOTPKeyboard.d.ts.map +1 -0
  422. package/dist/elements/OTPInput/index.d.ts +27 -0
  423. package/dist/elements/OTPInput/index.d.ts.map +1 -0
  424. package/dist/elements/OTPInput/index.js +13 -0
  425. package/dist/elements/OTPInput/index.js.map +1 -0
  426. package/dist/elements/OTPInput/index.mjs +4 -0
  427. package/dist/elements/OTPInput/index.mjs.map +1 -0
  428. package/dist/elements/Panel/Panel.d.ts +111 -0
  429. package/dist/elements/Panel/Panel.d.ts.map +1 -0
  430. package/dist/elements/Panel/Panel.types.d.ts +243 -0
  431. package/dist/elements/Panel/Panel.types.d.ts.map +1 -0
  432. package/dist/elements/Panel/index.d.ts +4 -0
  433. package/dist/elements/Panel/index.d.ts.map +1 -0
  434. package/dist/elements/Panel/index.js +33 -0
  435. package/dist/elements/Panel/index.js.map +1 -0
  436. package/dist/elements/Panel/index.mjs +4 -0
  437. package/dist/elements/Panel/index.mjs.map +1 -0
  438. package/dist/elements/Progress/Progress.d.ts +44 -0
  439. package/dist/elements/Progress/Progress.d.ts.map +1 -0
  440. package/dist/elements/Progress/Progress.types.d.ts +64 -0
  441. package/dist/elements/Progress/Progress.types.d.ts.map +1 -0
  442. package/dist/elements/Progress/index.d.ts +11 -0
  443. package/dist/elements/Progress/index.d.ts.map +1 -0
  444. package/dist/elements/Progress/index.js +30 -0
  445. package/dist/elements/Progress/index.js.map +1 -0
  446. package/dist/elements/Progress/index.mjs +5 -0
  447. package/dist/elements/Progress/index.mjs.map +1 -0
  448. package/dist/elements/RadioGroup/RadioGroup.d.ts +110 -0
  449. package/dist/elements/RadioGroup/RadioGroup.d.ts.map +1 -0
  450. package/dist/elements/RadioGroup/RadioGroup.types.d.ts +143 -0
  451. package/dist/elements/RadioGroup/RadioGroup.types.d.ts.map +1 -0
  452. package/dist/elements/RadioGroup/index.d.ts +10 -0
  453. package/dist/elements/RadioGroup/index.d.ts.map +1 -0
  454. package/dist/elements/RadioGroup/index.js +47 -0
  455. package/dist/elements/RadioGroup/index.js.map +1 -0
  456. package/dist/elements/RadioGroup/index.mjs +6 -0
  457. package/dist/elements/RadioGroup/index.mjs.map +1 -0
  458. package/dist/elements/Resizable/Resizable.types.d.ts +188 -0
  459. package/dist/elements/Resizable/Resizable.types.d.ts.map +1 -0
  460. package/dist/elements/Resizable/components/ResizableHandle.d.ts +28 -0
  461. package/dist/elements/Resizable/components/ResizableHandle.d.ts.map +1 -0
  462. package/dist/elements/Resizable/components/ResizablePanel.d.ts +24 -0
  463. package/dist/elements/Resizable/components/ResizablePanel.d.ts.map +1 -0
  464. package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts +26 -0
  465. package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts.map +1 -0
  466. package/dist/elements/Resizable/components/ResizablePopover.d.ts +45 -0
  467. package/dist/elements/Resizable/components/ResizablePopover.d.ts.map +1 -0
  468. package/dist/elements/Resizable/hooks/useResizable.d.ts +50 -0
  469. package/dist/elements/Resizable/hooks/useResizable.d.ts.map +1 -0
  470. package/dist/elements/Resizable/hooks/useResizableContext.d.ts +36 -0
  471. package/dist/elements/Resizable/hooks/useResizableContext.d.ts.map +1 -0
  472. package/dist/elements/Resizable/index.d.ts +37 -0
  473. package/dist/elements/Resizable/index.d.ts.map +1 -0
  474. package/dist/elements/Resizable/index.js +65 -0
  475. package/dist/elements/Resizable/index.js.map +1 -0
  476. package/dist/elements/Resizable/index.mjs +8 -0
  477. package/dist/elements/Resizable/index.mjs.map +1 -0
  478. package/dist/elements/Select/Select.d.ts +184 -0
  479. package/dist/elements/Select/Select.d.ts.map +1 -0
  480. package/dist/elements/Select/Select.types.d.ts +166 -0
  481. package/dist/elements/Select/Select.types.d.ts.map +1 -0
  482. package/dist/elements/Select/index.d.ts +35 -0
  483. package/dist/elements/Select/index.d.ts.map +1 -0
  484. package/dist/elements/Select/index.js +33 -0
  485. package/dist/elements/Select/index.js.map +1 -0
  486. package/dist/elements/Select/index.mjs +4 -0
  487. package/dist/elements/Select/index.mjs.map +1 -0
  488. package/dist/elements/Skeleton/Skeleton.d.ts +31 -0
  489. package/dist/elements/Skeleton/Skeleton.d.ts.map +1 -0
  490. package/dist/elements/Skeleton/Skeleton.types.d.ts +36 -0
  491. package/dist/elements/Skeleton/Skeleton.types.d.ts.map +1 -0
  492. package/dist/elements/Skeleton/index.d.ts +11 -0
  493. package/dist/elements/Skeleton/index.d.ts.map +1 -0
  494. package/dist/elements/Skeleton/index.js +22 -0
  495. package/dist/elements/Skeleton/index.js.map +1 -0
  496. package/dist/elements/Skeleton/index.mjs +5 -0
  497. package/dist/elements/Skeleton/index.mjs.map +1 -0
  498. package/dist/elements/Switch/Switch.d.ts +39 -0
  499. package/dist/elements/Switch/Switch.d.ts.map +1 -0
  500. package/dist/elements/Switch/Switch.types.d.ts +53 -0
  501. package/dist/elements/Switch/Switch.types.d.ts.map +1 -0
  502. package/dist/elements/Switch/index.d.ts +8 -0
  503. package/dist/elements/Switch/index.d.ts.map +1 -0
  504. package/dist/elements/Switch/index.js +49 -0
  505. package/dist/elements/Switch/index.js.map +1 -0
  506. package/dist/elements/Switch/index.mjs +31 -0
  507. package/dist/elements/Switch/index.mjs.map +1 -0
  508. package/dist/elements/Table/Table.d.ts +123 -0
  509. package/dist/elements/Table/Table.d.ts.map +1 -0
  510. package/dist/elements/Table/Table.types.d.ts +356 -0
  511. package/dist/elements/Table/Table.types.d.ts.map +1 -0
  512. package/dist/elements/Table/index.d.ts +5 -0
  513. package/dist/elements/Table/index.d.ts.map +1 -0
  514. package/dist/elements/Table/index.js +76 -0
  515. package/dist/elements/Table/index.js.map +1 -0
  516. package/dist/elements/Table/index.mjs +7 -0
  517. package/dist/elements/Table/index.mjs.map +1 -0
  518. package/dist/elements/Tabs/Tabs.d.ts +129 -0
  519. package/dist/elements/Tabs/Tabs.d.ts.map +1 -0
  520. package/dist/elements/Tabs/Tabs.types.d.ts +179 -0
  521. package/dist/elements/Tabs/Tabs.types.d.ts.map +1 -0
  522. package/dist/elements/Tabs/index.d.ts +12 -0
  523. package/dist/elements/Tabs/index.d.ts.map +1 -0
  524. package/dist/elements/Tabs/index.js +74 -0
  525. package/dist/elements/Tabs/index.js.map +1 -0
  526. package/dist/elements/Tabs/index.mjs +5 -0
  527. package/dist/elements/Tabs/index.mjs.map +1 -0
  528. package/dist/elements/TextField/TextField.d.ts +155 -0
  529. package/dist/elements/TextField/TextField.d.ts.map +1 -0
  530. package/dist/elements/TextField/TextField.types.d.ts +258 -0
  531. package/dist/elements/TextField/TextField.types.d.ts.map +1 -0
  532. package/dist/elements/TextField/index.css +23 -0
  533. package/dist/elements/TextField/index.css.map +1 -0
  534. package/dist/elements/TextField/index.d.ts +13 -0
  535. package/dist/elements/TextField/index.d.ts.map +1 -0
  536. package/dist/elements/TextField/index.js +260 -0
  537. package/dist/elements/TextField/index.js.map +1 -0
  538. package/dist/elements/TextField/index.mjs +207 -0
  539. package/dist/elements/TextField/index.mjs.map +1 -0
  540. package/dist/elements/TimeField/TimeField.d.ts +34 -0
  541. package/dist/elements/TimeField/TimeField.d.ts.map +1 -0
  542. package/dist/elements/TimeField/TimeField.types.d.ts +151 -0
  543. package/dist/elements/TimeField/TimeField.types.d.ts.map +1 -0
  544. package/dist/elements/TimeField/index.d.ts +24 -0
  545. package/dist/elements/TimeField/index.d.ts.map +1 -0
  546. package/dist/elements/TimeField/index.js +45 -0
  547. package/dist/elements/TimeField/index.js.map +1 -0
  548. package/dist/elements/TimeField/index.mjs +4 -0
  549. package/dist/elements/TimeField/index.mjs.map +1 -0
  550. package/dist/elements/Toast/Toast.d.ts +105 -0
  551. package/dist/elements/Toast/Toast.d.ts.map +1 -0
  552. package/dist/elements/Toast/Toast.types.d.ts +209 -0
  553. package/dist/elements/Toast/Toast.types.d.ts.map +1 -0
  554. package/dist/elements/Toast/ToastProvider.d.ts +37 -0
  555. package/dist/elements/Toast/ToastProvider.d.ts.map +1 -0
  556. package/dist/elements/Toast/Toaster.d.ts +18 -0
  557. package/dist/elements/Toast/Toaster.d.ts.map +1 -0
  558. package/dist/elements/Toast/index.d.ts +27 -0
  559. package/dist/elements/Toast/index.d.ts.map +1 -0
  560. package/dist/elements/Toast/index.js +60 -0
  561. package/dist/elements/Toast/index.js.map +1 -0
  562. package/dist/elements/Toast/index.mjs +7 -0
  563. package/dist/elements/Toast/index.mjs.map +1 -0
  564. package/dist/elements/Tooltip/Tooltip.d.ts +108 -0
  565. package/dist/elements/Tooltip/Tooltip.d.ts.map +1 -0
  566. package/dist/elements/Tooltip/Tooltip.types.d.ts +135 -0
  567. package/dist/elements/Tooltip/Tooltip.types.d.ts.map +1 -0
  568. package/dist/elements/Tooltip/index.d.ts +11 -0
  569. package/dist/elements/Tooltip/index.d.ts.map +1 -0
  570. package/dist/elements/Tooltip/index.js +59 -0
  571. package/dist/elements/Tooltip/index.js.map +1 -0
  572. package/dist/elements/Tooltip/index.mjs +6 -0
  573. package/dist/elements/Tooltip/index.mjs.map +1 -0
  574. package/dist/elements/index.css +23 -0
  575. package/dist/elements/index.css.map +1 -0
  576. package/dist/elements/index.d.ts +42 -0
  577. package/dist/elements/index.d.ts.map +1 -0
  578. package/dist/elements/index.js +839 -0
  579. package/dist/elements/index.js.map +1 -0
  580. package/dist/elements/index.mjs +42 -0
  581. package/dist/elements/index.mjs.map +1 -0
  582. package/dist/index.css +23 -0
  583. package/dist/index.css.map +1 -0
  584. package/dist/index.d.ts +4 -0
  585. package/dist/index.d.ts.map +1 -0
  586. package/dist/index.js +865 -0
  587. package/dist/index.js.map +1 -0
  588. package/dist/index.mjs +44 -0
  589. package/dist/index.mjs.map +1 -0
  590. package/dist/schemas/BaseComponentProps.d.ts +25 -0
  591. package/dist/schemas/BaseComponentProps.d.ts.map +1 -0
  592. package/dist/schemas/RegistryItem.d.ts +55 -0
  593. package/dist/schemas/RegistryItem.d.ts.map +1 -0
  594. package/dist/schemas/index.d.ts +3 -0
  595. package/dist/schemas/index.d.ts.map +1 -0
  596. package/dist/schemas/index.js +29 -0
  597. package/dist/schemas/index.js.map +1 -0
  598. package/dist/schemas/index.mjs +4 -0
  599. package/dist/schemas/index.mjs.map +1 -0
  600. package/dist/styles/defaults.css +174 -0
  601. package/dist/styles/index.d.ts +7 -0
  602. package/dist/styles/index.d.ts.map +1 -0
  603. package/dist/styles/index.js +153 -0
  604. package/dist/styles/index.js.map +1 -0
  605. package/dist/styles/index.mjs +4 -0
  606. package/dist/styles/index.mjs.map +1 -0
  607. package/dist/styles/interaction-states.d.ts +96 -0
  608. package/dist/styles/interaction-states.d.ts.map +1 -0
  609. package/dist/styles/shared-variants.d.ts +120 -0
  610. package/dist/styles/shared-variants.d.ts.map +1 -0
  611. package/dist/styles/tokens.css +89 -0
  612. package/dist/utils/cn.d.ts +13 -0
  613. package/dist/utils/cn.d.ts.map +1 -0
  614. package/dist/utils/index.d.ts +2 -0
  615. package/dist/utils/index.d.ts.map +1 -0
  616. package/dist/utils/index.js +13 -0
  617. package/dist/utils/index.js.map +1 -0
  618. package/dist/utils/index.mjs +4 -0
  619. package/dist/utils/index.mjs.map +1 -0
  620. package/package.json +228 -0
  621. package/src/elements/Accordion/Accordion.stories.tsx +793 -0
  622. package/src/elements/Avatar/Avatar.stories.tsx +408 -0
  623. package/src/elements/Badge/Badge.stories.tsx +509 -0
  624. package/src/elements/Breadcrumbs/Breadcrumbs.stories.tsx +623 -0
  625. package/src/elements/Button/Button.stories.tsx +670 -0
  626. package/src/elements/ButtonGroup/ButtonGroup.stories.tsx +658 -0
  627. package/src/elements/Card/Card.stories.tsx +570 -0
  628. package/src/elements/Carousel/Carousel.stories.tsx +597 -0
  629. package/src/elements/Chart/Chart.stories.tsx +616 -0
  630. package/src/elements/Checkbox/Checkbox.stories.tsx +514 -0
  631. package/src/elements/CheckboxGroup/CheckboxGroup.stories.tsx +1514 -0
  632. package/src/elements/DatePicker/DatePicker.stories.tsx +341 -0
  633. package/src/elements/Dropdown/Dropdown.stories.tsx +397 -0
  634. package/src/elements/FileField/FileField.stories.tsx +1021 -0
  635. package/src/elements/FileField/FileProgress.stories.tsx +359 -0
  636. package/src/elements/FormLayout/FormLayout.stories.tsx +637 -0
  637. package/src/elements/Modal/Modal.stories.tsx +640 -0
  638. package/src/elements/NumberField/NumberField.stories.tsx +678 -0
  639. package/src/elements/OTPInput/OTPInput.stories.tsx +404 -0
  640. package/src/elements/Panel/Panel.stories.tsx +769 -0
  641. package/src/elements/Progress/Progress.stories.tsx +668 -0
  642. package/src/elements/RadioGroup/RadioGroup.stories.tsx +1153 -0
  643. package/src/elements/Resizable/Resizable.stories.tsx +374 -0
  644. package/src/elements/Select/Select.stories.tsx +362 -0
  645. package/src/elements/Skeleton/Skeleton.stories.tsx +284 -0
  646. package/src/elements/Switch/Switch.stories.tsx +441 -0
  647. package/src/elements/Table/Table.stories.tsx +790 -0
  648. package/src/elements/Tabs/Tabs.stories.tsx +661 -0
  649. package/src/elements/TextField/TextField.stories.tsx +1878 -0
  650. package/src/elements/TimeField/TimeField.stories.tsx +671 -0
  651. package/src/elements/Toast/Toast.stories.tsx +971 -0
  652. package/src/elements/Tooltip/Tooltip.stories.tsx +748 -0
  653. package/tailwind.config.js +10 -0
  654. package/tailwind.config.v3.js +10 -0
@@ -0,0 +1,790 @@
1
+ /**
2
+ * Table Component - Storybook Stories
3
+ *
4
+ * Interactive examples and documentation for the Table component
5
+ * Built with React Aria primitives for WCAG 2.2 AAA compliance
6
+ *
7
+ * @see table-prd.md DOC-002 (Storybook Stories Requirements)
8
+ * @see ADR 0007 (Accessibility Decisions)
9
+ * @see Storybook (when running)
10
+ */
11
+
12
+ import { useState, type ReactElement } from 'react';
13
+ import type { Meta, StoryObj } from '@storybook/nextjs';
14
+ import {
15
+ Table,
16
+ TableHeader,
17
+ TableBody,
18
+ Column,
19
+ Row,
20
+ Cell,
21
+ type SortDescriptor,
22
+ } from './Table';
23
+ import { Button } from '../Button';
24
+
25
+ // Sample data for all stories
26
+ const sampleFiles = [
27
+ { id: '1', name: 'Documents', type: 'Folder', size: '--', date: '2024-01-15' },
28
+ { id: '2', name: 'Photos', type: 'Folder', size: '--', date: '2024-02-20' },
29
+ { id: '3', name: 'report.pdf', type: 'PDF', size: '2.4 MB', date: '2024-03-10' },
30
+ { id: '4', name: 'budget.xlsx', type: 'Excel', size: '156 KB', date: '2024-03-12' },
31
+ { id: '5', name: 'presentation.pptx', type: 'PowerPoint', size: '4.2 MB', date: '2024-03-15' },
32
+ ];
33
+
34
+ const candidatesData = [
35
+ { id: '1', name: 'John Smith', role: 'Software Engineer', status: 'Interview', score: 92 },
36
+ { id: '2', name: 'Jane Doe', role: 'Product Manager', status: 'Screening', score: 85 },
37
+ { id: '3', name: 'Bob Wilson', role: 'UX Designer', status: 'Offer', score: 88 },
38
+ { id: '4', name: 'Alice Brown', role: 'Data Analyst', status: 'Rejected', score: 72 },
39
+ { id: '5', name: 'Charlie Davis', role: 'DevOps Engineer', status: 'Hired', score: 95 },
40
+ ];
41
+
42
+ const meta = {
43
+ title: 'Elements/Table',
44
+ component: Table,
45
+ tags: ['autodocs'],
46
+ parameters: {
47
+ layout: 'padded',
48
+ docs: {
49
+ description: {
50
+ component:
51
+ 'Accessible data table component built with React Aria primitives following the ARIA grid pattern. Supports selection, sorting, and keyboard navigation for WCAG 2.2 AAA compliance.',
52
+ },
53
+ },
54
+ },
55
+ argTypes: {
56
+ variant: {
57
+ control: 'select',
58
+ options: ['default', 'bordered', 'striped'],
59
+ description: 'Visual variant of the table',
60
+ },
61
+ size: {
62
+ control: 'select',
63
+ options: ['sm', 'default', 'lg'],
64
+ description: 'Size of table cells',
65
+ },
66
+ selectionMode: {
67
+ control: 'select',
68
+ options: ['none', 'single', 'multiple'],
69
+ description: 'Selection mode for rows',
70
+ },
71
+ stickyHeader: {
72
+ control: 'boolean',
73
+ description: 'Whether the header sticks to the top when scrolling',
74
+ },
75
+ },
76
+ } satisfies Meta<typeof Table>;
77
+
78
+ export default meta;
79
+ type Story = StoryObj<typeof meta>;
80
+
81
+ // ============================================================================
82
+ // Default Story
83
+ // ============================================================================
84
+
85
+ /**
86
+ * Default Table
87
+ * Basic table with header and body
88
+ */
89
+ export const Default: Story = {
90
+ render: () => (
91
+ <Table aria-label="Files">
92
+ <TableHeader>
93
+ <Column isRowHeader>Name</Column>
94
+ <Column>Type</Column>
95
+ <Column>Size</Column>
96
+ <Column>Date Modified</Column>
97
+ </TableHeader>
98
+ <TableBody items={sampleFiles}>
99
+ {(item) => (
100
+ <Row key={item.id}>
101
+ <Cell>{item.name}</Cell>
102
+ <Cell>{item.type}</Cell>
103
+ <Cell>{item.size}</Cell>
104
+ <Cell>{item.date}</Cell>
105
+ </Row>
106
+ )}
107
+ </TableBody>
108
+ </Table>
109
+ ),
110
+ };
111
+
112
+ // ============================================================================
113
+ // Variant Stories
114
+ // ============================================================================
115
+
116
+ /**
117
+ * Bordered Variant
118
+ * Table with border around the entire container
119
+ */
120
+ export const Bordered: Story = {
121
+ render: () => (
122
+ <Table aria-label="Files" variant="bordered">
123
+ <TableHeader>
124
+ <Column isRowHeader>Name</Column>
125
+ <Column>Type</Column>
126
+ <Column>Size</Column>
127
+ </TableHeader>
128
+ <TableBody items={sampleFiles}>
129
+ {(item) => (
130
+ <Row key={item.id}>
131
+ <Cell>{item.name}</Cell>
132
+ <Cell>{item.type}</Cell>
133
+ <Cell>{item.size}</Cell>
134
+ </Row>
135
+ )}
136
+ </TableBody>
137
+ </Table>
138
+ ),
139
+ };
140
+
141
+ /**
142
+ * Striped Variant
143
+ * Table with alternating row colors for better readability
144
+ */
145
+ export const Striped: Story = {
146
+ render: () => (
147
+ <Table aria-label="Files" variant="striped">
148
+ <TableHeader>
149
+ <Column isRowHeader>Name</Column>
150
+ <Column>Type</Column>
151
+ <Column>Size</Column>
152
+ </TableHeader>
153
+ <TableBody items={sampleFiles}>
154
+ {(item) => (
155
+ <Row key={item.id}>
156
+ <Cell>{item.name}</Cell>
157
+ <Cell>{item.type}</Cell>
158
+ <Cell>{item.size}</Cell>
159
+ </Row>
160
+ )}
161
+ </TableBody>
162
+ </Table>
163
+ ),
164
+ };
165
+
166
+ // ============================================================================
167
+ // Size Stories
168
+ // ============================================================================
169
+
170
+ /**
171
+ * Small Size
172
+ * Compact table for dense data display
173
+ */
174
+ export const SizeSmall: Story = {
175
+ render: () => (
176
+ <Table aria-label="Files" size="sm">
177
+ <TableHeader>
178
+ <Column isRowHeader>Name</Column>
179
+ <Column>Type</Column>
180
+ <Column>Size</Column>
181
+ </TableHeader>
182
+ <TableBody items={sampleFiles}>
183
+ {(item) => (
184
+ <Row key={item.id}>
185
+ <Cell>{item.name}</Cell>
186
+ <Cell>{item.type}</Cell>
187
+ <Cell>{item.size}</Cell>
188
+ </Row>
189
+ )}
190
+ </TableBody>
191
+ </Table>
192
+ ),
193
+ };
194
+
195
+ /**
196
+ * Large Size
197
+ * Spacious table for improved touch targets
198
+ */
199
+ export const SizeLarge: Story = {
200
+ render: () => (
201
+ <Table aria-label="Files" size="lg">
202
+ <TableHeader>
203
+ <Column isRowHeader>Name</Column>
204
+ <Column>Type</Column>
205
+ <Column>Size</Column>
206
+ </TableHeader>
207
+ <TableBody items={sampleFiles}>
208
+ {(item) => (
209
+ <Row key={item.id}>
210
+ <Cell>{item.name}</Cell>
211
+ <Cell>{item.type}</Cell>
212
+ <Cell>{item.size}</Cell>
213
+ </Row>
214
+ )}
215
+ </TableBody>
216
+ </Table>
217
+ ),
218
+ };
219
+
220
+ // ============================================================================
221
+ // Selection Stories
222
+ // ============================================================================
223
+
224
+ /**
225
+ * Single Selection
226
+ * Only one row can be selected at a time
227
+ */
228
+ export const SingleSelection: Story = {
229
+ render: function SingleSelectionTable(): ReactElement {
230
+ const [selectedKeys, setSelectedKeys] = useState<'all' | Set<string>>(new Set());
231
+
232
+ return (
233
+ <div className="space-y-4">
234
+ <p className="text-sm text-[var(--muted-foreground)]">
235
+ Selected: {selectedKeys === 'all' ? 'All' : Array.from(selectedKeys).join(', ') || 'None'}
236
+ </p>
237
+ <Table
238
+ aria-label="Candidates"
239
+ selectionMode="single"
240
+ selectedKeys={selectedKeys}
241
+ onSelectionChange={(keys) => setSelectedKeys(keys as 'all' | Set<string>)}
242
+ >
243
+ <TableHeader>
244
+ <Column isRowHeader>Name</Column>
245
+ <Column>Role</Column>
246
+ <Column>Status</Column>
247
+ </TableHeader>
248
+ <TableBody items={candidatesData}>
249
+ {(item) => (
250
+ <Row key={item.id}>
251
+ <Cell>{item.name}</Cell>
252
+ <Cell>{item.role}</Cell>
253
+ <Cell>{item.status}</Cell>
254
+ </Row>
255
+ )}
256
+ </TableBody>
257
+ </Table>
258
+ </div>
259
+ );
260
+ },
261
+ };
262
+
263
+ /**
264
+ * Multiple Selection
265
+ * Multiple rows can be selected, includes "Select All" checkbox
266
+ */
267
+ export const MultipleSelection: Story = {
268
+ render: function MultipleSelectionTable(): ReactElement {
269
+ const [selectedKeys, setSelectedKeys] = useState<'all' | Set<string>>(new Set());
270
+
271
+ return (
272
+ <div className="space-y-4">
273
+ <p className="text-sm text-[var(--muted-foreground)]">
274
+ Selected: {selectedKeys === 'all' ? 'All' : `${(selectedKeys as Set<string>).size} items`}
275
+ </p>
276
+ <Table
277
+ aria-label="Candidates"
278
+ selectionMode="multiple"
279
+ selectedKeys={selectedKeys}
280
+ onSelectionChange={(keys) => setSelectedKeys(keys as 'all' | Set<string>)}
281
+ >
282
+ <TableHeader>
283
+ <Column isRowHeader>Name</Column>
284
+ <Column>Role</Column>
285
+ <Column>Status</Column>
286
+ <Column>Score</Column>
287
+ </TableHeader>
288
+ <TableBody items={candidatesData}>
289
+ {(item) => (
290
+ <Row key={item.id}>
291
+ <Cell>{item.name}</Cell>
292
+ <Cell>{item.role}</Cell>
293
+ <Cell>{item.status}</Cell>
294
+ <Cell>{item.score}</Cell>
295
+ </Row>
296
+ )}
297
+ </TableBody>
298
+ </Table>
299
+ </div>
300
+ );
301
+ },
302
+ };
303
+
304
+ // ============================================================================
305
+ // Sorting Stories
306
+ // ============================================================================
307
+
308
+ /**
309
+ * Sortable Columns
310
+ * Click column headers to sort ascending/descending
311
+ */
312
+ export const Sorting: Story = {
313
+ render: function SortingTable(): ReactElement {
314
+ const [sortDescriptor, setSortDescriptor] = useState<SortDescriptor | undefined>();
315
+
316
+ const sortedData = [...candidatesData].sort((a, b) => {
317
+ if (!sortDescriptor) return 0;
318
+ const column = sortDescriptor.column as keyof typeof a;
319
+ const direction = sortDescriptor.direction === 'ascending' ? 1 : -1;
320
+
321
+ if (typeof a[column] === 'number' && typeof b[column] === 'number') {
322
+ return (a[column] as number - (b[column] as number)) * direction;
323
+ }
324
+ return String(a[column]).localeCompare(String(b[column])) * direction;
325
+ });
326
+
327
+ return (
328
+ <div className="space-y-4">
329
+ <p className="text-sm text-[var(--muted-foreground)]">
330
+ Sorted by: {sortDescriptor?.column ?? 'None'} ({sortDescriptor?.direction ?? 'N/A'})
331
+ </p>
332
+ <Table
333
+ aria-label="Candidates"
334
+ sortDescriptor={sortDescriptor}
335
+ onSortChange={(descriptor) => setSortDescriptor(descriptor)}
336
+ >
337
+ <TableHeader>
338
+ <Column id="name" isRowHeader allowsSorting>Name</Column>
339
+ <Column id="role" allowsSorting>Role</Column>
340
+ <Column id="status" allowsSorting>Status</Column>
341
+ <Column id="score" allowsSorting align="end">Score</Column>
342
+ </TableHeader>
343
+ <TableBody items={sortedData}>
344
+ {(item) => (
345
+ <Row key={item.id}>
346
+ <Cell>{item.name}</Cell>
347
+ <Cell>{item.role}</Cell>
348
+ <Cell>{item.status}</Cell>
349
+ <Cell align="end">{item.score}</Cell>
350
+ </Row>
351
+ )}
352
+ </TableBody>
353
+ </Table>
354
+ </div>
355
+ );
356
+ },
357
+ };
358
+
359
+ // ============================================================================
360
+ // Sticky Header
361
+ // ============================================================================
362
+
363
+ /**
364
+ * Sticky Header
365
+ * Header remains visible when scrolling through long tables
366
+ */
367
+ export const StickyHeader: Story = {
368
+ render: () => {
369
+ const manyItems = Array.from({ length: 30 }, (_, i) => ({
370
+ id: String(i + 1),
371
+ name: `Item ${i + 1}`,
372
+ type: i % 3 === 0 ? 'Type A' : i % 3 === 1 ? 'Type B' : 'Type C',
373
+ value: Math.floor(Math.random() * 1000),
374
+ }));
375
+
376
+ return (
377
+ <div className="h-[400px] overflow-auto border rounded">
378
+ <Table aria-label="Long list" stickyHeader>
379
+ <TableHeader>
380
+ <Column isRowHeader>Name</Column>
381
+ <Column>Type</Column>
382
+ <Column align="end">Value</Column>
383
+ </TableHeader>
384
+ <TableBody items={manyItems}>
385
+ {(item) => (
386
+ <Row key={item.id}>
387
+ <Cell>{item.name}</Cell>
388
+ <Cell>{item.type}</Cell>
389
+ <Cell align="end">{item.value}</Cell>
390
+ </Row>
391
+ )}
392
+ </TableBody>
393
+ </Table>
394
+ </div>
395
+ );
396
+ },
397
+ };
398
+
399
+ // ============================================================================
400
+ // Empty State
401
+ // ============================================================================
402
+
403
+ /**
404
+ * Empty State
405
+ * Custom message when no data is available
406
+ */
407
+ export const EmptyState: Story = {
408
+ render: () => (
409
+ <Table aria-label="Empty table">
410
+ <TableHeader>
411
+ <Column isRowHeader>Name</Column>
412
+ <Column>Type</Column>
413
+ <Column>Size</Column>
414
+ </TableHeader>
415
+ <TableBody
416
+ items={[]}
417
+ renderEmptyState={() => (
418
+ <div className="text-center py-8 text-[var(--muted-foreground)]">
419
+ <p className="text-lg font-medium">No files found</p>
420
+ <p className="text-sm">Upload some files to get started</p>
421
+ </div>
422
+ )}
423
+ >
424
+ {() => (
425
+ <Row>
426
+ <Cell>Never rendered</Cell>
427
+ </Row>
428
+ )}
429
+ </TableBody>
430
+ </Table>
431
+ ),
432
+ };
433
+
434
+ // ============================================================================
435
+ // Disabled Rows
436
+ // ============================================================================
437
+
438
+ /**
439
+ * Disabled Rows
440
+ * Some rows are disabled and cannot be selected
441
+ */
442
+ export const DisabledRows: Story = {
443
+ render: () => (
444
+ <Table aria-label="Candidates" selectionMode="multiple" disabledKeys={['2', '4']}>
445
+ <TableHeader>
446
+ <Column isRowHeader>Name</Column>
447
+ <Column>Role</Column>
448
+ <Column>Status</Column>
449
+ </TableHeader>
450
+ <TableBody items={candidatesData}>
451
+ {(item) => (
452
+ <Row key={item.id}>
453
+ <Cell>{item.name}</Cell>
454
+ <Cell>{item.role}</Cell>
455
+ <Cell>
456
+ {item.status}
457
+ {['2', '4'].includes(item.id) && (
458
+ <span className="ml-2 text-xs text-[var(--muted-foreground)]">(disabled)</span>
459
+ )}
460
+ </Cell>
461
+ </Row>
462
+ )}
463
+ </TableBody>
464
+ </Table>
465
+ ),
466
+ };
467
+
468
+ // ============================================================================
469
+ // Row Actions
470
+ // ============================================================================
471
+
472
+ /**
473
+ * Row Actions
474
+ * Click or press Enter on a row to trigger an action
475
+ */
476
+ export const RowActions: Story = {
477
+ render: function RowActionsTable(): ReactElement {
478
+ const [lastAction, setLastAction] = useState<string | null>(null);
479
+
480
+ return (
481
+ <div className="space-y-4">
482
+ <p className="text-sm text-[var(--muted-foreground)]">
483
+ Last action: {lastAction ?? 'None'}
484
+ </p>
485
+ <Table
486
+ aria-label="Files"
487
+ onRowAction={(key) => setLastAction(`Opened file: ${key}`)}
488
+ >
489
+ <TableHeader>
490
+ <Column isRowHeader>Name</Column>
491
+ <Column>Type</Column>
492
+ <Column>Date</Column>
493
+ </TableHeader>
494
+ <TableBody items={sampleFiles}>
495
+ {(item) => (
496
+ <Row key={item.id}>
497
+ <Cell>{item.name}</Cell>
498
+ <Cell>{item.type}</Cell>
499
+ <Cell>{item.date}</Cell>
500
+ </Row>
501
+ )}
502
+ </TableBody>
503
+ </Table>
504
+ </div>
505
+ );
506
+ },
507
+ };
508
+
509
+ // ============================================================================
510
+ // Column Alignment
511
+ // ============================================================================
512
+
513
+ /**
514
+ * Column Alignment
515
+ * Different text alignments for columns
516
+ */
517
+ export const ColumnAlignment: Story = {
518
+ render: () => (
519
+ <Table aria-label="Sales data" variant="bordered">
520
+ <TableHeader>
521
+ <Column isRowHeader align="start">Product</Column>
522
+ <Column align="center">Category</Column>
523
+ <Column align="end">Price</Column>
524
+ <Column align="end">Quantity</Column>
525
+ </TableHeader>
526
+ <TableBody>
527
+ <Row>
528
+ <Cell>Widget Pro</Cell>
529
+ <Cell align="center">Electronics</Cell>
530
+ <Cell align="end">$99.99</Cell>
531
+ <Cell align="end">150</Cell>
532
+ </Row>
533
+ <Row>
534
+ <Cell>Gadget Plus</Cell>
535
+ <Cell align="center">Electronics</Cell>
536
+ <Cell align="end">$149.99</Cell>
537
+ <Cell align="end">75</Cell>
538
+ </Row>
539
+ <Row>
540
+ <Cell>Super Tool</Cell>
541
+ <Cell align="center">Tools</Cell>
542
+ <Cell align="end">$24.99</Cell>
543
+ <Cell align="end">500</Cell>
544
+ </Row>
545
+ </TableBody>
546
+ </Table>
547
+ ),
548
+ };
549
+
550
+ // ============================================================================
551
+ // Interactive with Actions Column
552
+ // ============================================================================
553
+
554
+ /**
555
+ * With Action Buttons
556
+ * Table with interactive action buttons in each row
557
+ */
558
+ export const WithActionButtons: Story = {
559
+ render: function ActionButtonsTable(): ReactElement {
560
+ const [message, setMessage] = useState<string | null>(null);
561
+
562
+ return (
563
+ <div className="space-y-4">
564
+ {message && (
565
+ <div className="p-2 bg-[var(--accent)] rounded text-sm">{message}</div>
566
+ )}
567
+ <Table aria-label="Candidates">
568
+ <TableHeader>
569
+ <Column isRowHeader>Name</Column>
570
+ <Column>Role</Column>
571
+ <Column>Status</Column>
572
+ <Column align="end">Actions</Column>
573
+ </TableHeader>
574
+ <TableBody items={candidatesData}>
575
+ {(item) => (
576
+ <Row key={item.id}>
577
+ <Cell>{item.name}</Cell>
578
+ <Cell>{item.role}</Cell>
579
+ <Cell>{item.status}</Cell>
580
+ <Cell align="end">
581
+ <div className="flex gap-2 justify-end">
582
+ <Button
583
+ variant="ghost"
584
+ size="sm"
585
+ onClick={() => setMessage(`Viewing ${item.name}`)}
586
+ >
587
+ View
588
+ </Button>
589
+ <Button
590
+ variant="ghost"
591
+ size="sm"
592
+ onClick={() => setMessage(`Editing ${item.name}`)}
593
+ >
594
+ Edit
595
+ </Button>
596
+ </div>
597
+ </Cell>
598
+ </Row>
599
+ )}
600
+ </TableBody>
601
+ </Table>
602
+ </div>
603
+ );
604
+ },
605
+ };
606
+
607
+ // ============================================================================
608
+ // Combined Features
609
+ // ============================================================================
610
+
611
+ /**
612
+ * Full Featured Table
613
+ * Demonstrates selection, sorting, and striped variant together
614
+ */
615
+ export const FullFeatured: Story = {
616
+ render: function FullFeaturedTable(): ReactElement {
617
+ const [selectedKeys, setSelectedKeys] = useState<'all' | Set<string>>(new Set());
618
+ const [sortDescriptor, setSortDescriptor] = useState<SortDescriptor | undefined>();
619
+
620
+ const sortedData = [...candidatesData].sort((a, b) => {
621
+ if (!sortDescriptor) return 0;
622
+ const column = sortDescriptor.column as keyof typeof a;
623
+ const direction = sortDescriptor.direction === 'ascending' ? 1 : -1;
624
+
625
+ if (typeof a[column] === 'number' && typeof b[column] === 'number') {
626
+ return (a[column] as number - (b[column] as number)) * direction;
627
+ }
628
+ return String(a[column]).localeCompare(String(b[column])) * direction;
629
+ });
630
+
631
+ return (
632
+ <div className="space-y-4">
633
+ <div className="flex justify-between items-center">
634
+ <p className="text-sm text-[var(--muted-foreground)]">
635
+ {selectedKeys === 'all'
636
+ ? 'All selected'
637
+ : `${(selectedKeys as Set<string>).size} selected`}
638
+ </p>
639
+ <Button
640
+ variant="outline"
641
+ size="sm"
642
+ onClick={() => setSelectedKeys(new Set())}
643
+ disabled={(selectedKeys as Set<string>).size === 0}
644
+ >
645
+ Clear Selection
646
+ </Button>
647
+ </div>
648
+ <Table
649
+ aria-label="Candidates"
650
+ variant="striped"
651
+ selectionMode="multiple"
652
+ selectedKeys={selectedKeys}
653
+ onSelectionChange={(keys) => setSelectedKeys(keys as 'all' | Set<string>)}
654
+ sortDescriptor={sortDescriptor}
655
+ onSortChange={(descriptor) => setSortDescriptor(descriptor)}
656
+ >
657
+ <TableHeader>
658
+ <Column id="name" isRowHeader allowsSorting>Name</Column>
659
+ <Column id="role" allowsSorting>Role</Column>
660
+ <Column id="status" allowsSorting>Status</Column>
661
+ <Column id="score" allowsSorting align="end">Score</Column>
662
+ </TableHeader>
663
+ <TableBody items={sortedData}>
664
+ {(item) => (
665
+ <Row key={item.id}>
666
+ <Cell>{item.name}</Cell>
667
+ <Cell>{item.role}</Cell>
668
+ <Cell>{item.status}</Cell>
669
+ <Cell align="end">{item.score}</Cell>
670
+ </Row>
671
+ )}
672
+ </TableBody>
673
+ </Table>
674
+ </div>
675
+ );
676
+ },
677
+ };
678
+
679
+ // ============================================================================
680
+ // Keyboard Navigation Demo
681
+ // ============================================================================
682
+
683
+ /**
684
+ * Keyboard Navigation
685
+ * Use arrow keys, Home/End, and Enter/Space to navigate and interact
686
+ */
687
+ export const KeyboardNavigation: Story = {
688
+ render: () => (
689
+ <div className="space-y-4">
690
+ <div className="p-4 bg-[var(--muted)] rounded text-sm space-y-2">
691
+ <p className="font-semibold">Keyboard Controls:</p>
692
+ <ul className="list-disc pl-4 space-y-1">
693
+ <li><kbd className="px-1 bg-[var(--background)] rounded">Tab</kbd> - Enter/exit table</li>
694
+ <li><kbd className="px-1 bg-[var(--background)] rounded">Arrow Up/Down</kbd> - Navigate rows</li>
695
+ <li><kbd className="px-1 bg-[var(--background)] rounded">Space</kbd> - Toggle selection</li>
696
+ <li><kbd className="px-1 bg-[var(--background)] rounded">Enter</kbd> - Activate row</li>
697
+ <li><kbd className="px-1 bg-[var(--background)] rounded">Home/End</kbd> - Jump to first/last row</li>
698
+ </ul>
699
+ </div>
700
+ <Table aria-label="Files" selectionMode="multiple">
701
+ <TableHeader>
702
+ <Column isRowHeader>Name</Column>
703
+ <Column>Type</Column>
704
+ <Column>Size</Column>
705
+ </TableHeader>
706
+ <TableBody items={sampleFiles}>
707
+ {(item) => (
708
+ <Row key={item.id}>
709
+ <Cell>{item.name}</Cell>
710
+ <Cell>{item.type}</Cell>
711
+ <Cell>{item.size}</Cell>
712
+ </Row>
713
+ )}
714
+ </TableBody>
715
+ </Table>
716
+ </div>
717
+ ),
718
+ };
719
+
720
+ // ============================================================================
721
+ // All Variants Matrix
722
+ // ============================================================================
723
+
724
+ /**
725
+ * All Variants
726
+ * Side-by-side comparison of all table variants
727
+ */
728
+ export const AllVariants: Story = {
729
+ render: () => (
730
+ <div className="space-y-8">
731
+ {(['default', 'bordered', 'striped'] as const).map((variant) => (
732
+ <div key={variant} className="space-y-2">
733
+ <h3 className="font-semibold capitalize">{variant} Variant</h3>
734
+ <Table aria-label={`${variant} table`} variant={variant}>
735
+ <TableHeader>
736
+ <Column isRowHeader>Name</Column>
737
+ <Column>Type</Column>
738
+ <Column>Size</Column>
739
+ </TableHeader>
740
+ <TableBody items={sampleFiles.slice(0, 3)}>
741
+ {(item) => (
742
+ <Row key={item.id}>
743
+ <Cell>{item.name}</Cell>
744
+ <Cell>{item.type}</Cell>
745
+ <Cell>{item.size}</Cell>
746
+ </Row>
747
+ )}
748
+ </TableBody>
749
+ </Table>
750
+ </div>
751
+ ))}
752
+ </div>
753
+ ),
754
+ };
755
+
756
+ // ============================================================================
757
+ // All Sizes Matrix
758
+ // ============================================================================
759
+
760
+ /**
761
+ * All Sizes
762
+ * Comparison of all table sizes
763
+ */
764
+ export const AllSizes: Story = {
765
+ render: () => (
766
+ <div className="space-y-8">
767
+ {(['sm', 'default', 'lg'] as const).map((size) => (
768
+ <div key={size} className="space-y-2">
769
+ <h3 className="font-semibold capitalize">{size === 'default' ? 'Default' : size.toUpperCase()} Size</h3>
770
+ <Table aria-label={`${size} table`} size={size}>
771
+ <TableHeader>
772
+ <Column isRowHeader>Name</Column>
773
+ <Column>Type</Column>
774
+ <Column>Size</Column>
775
+ </TableHeader>
776
+ <TableBody items={sampleFiles.slice(0, 3)}>
777
+ {(item) => (
778
+ <Row key={item.id}>
779
+ <Cell>{item.name}</Cell>
780
+ <Cell>{item.type}</Cell>
781
+ <Cell>{item.size}</Cell>
782
+ </Row>
783
+ )}
784
+ </TableBody>
785
+ </Table>
786
+ </div>
787
+ ))}
788
+ </div>
789
+ ),
790
+ };