@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,793 @@
1
+ /**
2
+ * Accordion Component Storybook Stories
3
+ *
4
+ * @see accordion-prd.md FR-001 to FR-011 (Accordion Requirements)
5
+ * @see plan.md (Implementation Plan)
6
+ */
7
+
8
+ import type { Meta, StoryObj } from '@storybook/nextjs';
9
+ import { useState, type Key } from 'react';
10
+ import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from './Accordion';
11
+ import { Plus, Minus, ChevronRight, Settings, User, Bell, Lock } from 'lucide-react';
12
+
13
+ const meta = {
14
+ title: 'Elements/Accordion',
15
+ component: Accordion,
16
+ parameters: {
17
+ layout: 'centered',
18
+ docs: {
19
+ description: {
20
+ component:
21
+ 'Accessible accordion/disclosure group component with WCAG 2.2 AAA compliance, React Aria DisclosureGroup primitives, single/multiple expansion modes, controlled and uncontrolled state management, configurable heading levels, custom icon support, and React 19.2 Activity state preservation.',
22
+ },
23
+ },
24
+ },
25
+ tags: ['autodocs'],
26
+ argTypes: {
27
+ type: {
28
+ control: 'select',
29
+ options: ['single', 'multiple'],
30
+ description: 'Expansion mode: single (one at a time) or multiple (any number)',
31
+ },
32
+ collapsible: {
33
+ control: 'boolean',
34
+ description: 'Allow all items to be collapsed (single mode only)',
35
+ },
36
+ isDisabled: {
37
+ control: 'boolean',
38
+ description: 'Disable all items',
39
+ },
40
+ },
41
+ } satisfies Meta<typeof Accordion>;
42
+
43
+ export default meta;
44
+ type Story = StoryObj<typeof meta>;
45
+
46
+ // ============================================================================
47
+ // Default Stories
48
+ // ============================================================================
49
+
50
+ /**
51
+ * Default: Basic FAQ-style accordion
52
+ */
53
+ export const Default: Story = {
54
+ render: () => (
55
+ <Accordion type="single" collapsible className="w-[450px]">
56
+ <AccordionItem id="item-1">
57
+ <AccordionTrigger>Is it accessible?</AccordionTrigger>
58
+ <AccordionContent>
59
+ Yes. It adheres to the WAI-ARIA design pattern and is WCAG 2.2 AAA compliant.
60
+ </AccordionContent>
61
+ </AccordionItem>
62
+ <AccordionItem id="item-2">
63
+ <AccordionTrigger>Is it styled?</AccordionTrigger>
64
+ <AccordionContent>
65
+ Yes. It comes with default styles that match the Themis design system
66
+ and can be customized with CSS classes.
67
+ </AccordionContent>
68
+ </AccordionItem>
69
+ <AccordionItem id="item-3">
70
+ <AccordionTrigger>Is it animated?</AccordionTrigger>
71
+ <AccordionContent>
72
+ Yes. It has smooth height animations with reduced motion support
73
+ for users who prefer reduced motion.
74
+ </AccordionContent>
75
+ </AccordionItem>
76
+ </Accordion>
77
+ ),
78
+ };
79
+
80
+ // ============================================================================
81
+ // Expansion Mode Stories
82
+ // ============================================================================
83
+
84
+ /**
85
+ * SingleCollapsible: Only one item open at a time, all can be closed
86
+ */
87
+ export const SingleCollapsible: Story = {
88
+ render: () => (
89
+ <Accordion type="single" collapsible className="w-[450px]">
90
+ <AccordionItem id="item-1">
91
+ <AccordionTrigger>Section 1</AccordionTrigger>
92
+ <AccordionContent>
93
+ Click another section to collapse this one. Click the same trigger to close.
94
+ </AccordionContent>
95
+ </AccordionItem>
96
+ <AccordionItem id="item-2">
97
+ <AccordionTrigger>Section 2</AccordionTrigger>
98
+ <AccordionContent>
99
+ Only one section can be open at a time in single mode.
100
+ </AccordionContent>
101
+ </AccordionItem>
102
+ <AccordionItem id="item-3">
103
+ <AccordionTrigger>Section 3</AccordionTrigger>
104
+ <AccordionContent>
105
+ The collapsible prop allows all sections to be closed.
106
+ </AccordionContent>
107
+ </AccordionItem>
108
+ </Accordion>
109
+ ),
110
+ };
111
+
112
+ /**
113
+ * SingleNotCollapsible: One item always open
114
+ */
115
+ export const SingleNotCollapsible: Story = {
116
+ render: () => (
117
+ <Accordion type="single" collapsible={false} className="w-[450px]">
118
+ <AccordionItem id="item-1">
119
+ <AccordionTrigger>Always One Open</AccordionTrigger>
120
+ <AccordionContent>
121
+ With collapsible=false, one item is always expanded.
122
+ The first item auto-expands on mount.
123
+ </AccordionContent>
124
+ </AccordionItem>
125
+ <AccordionItem id="item-2">
126
+ <AccordionTrigger>Click To Switch</AccordionTrigger>
127
+ <AccordionContent>
128
+ Clicking this closes the previous item.
129
+ </AccordionContent>
130
+ </AccordionItem>
131
+ <AccordionItem id="item-3">
132
+ <AccordionTrigger>Cannot Close All</AccordionTrigger>
133
+ <AccordionContent>
134
+ Clicking the open item does nothing - one must stay open.
135
+ </AccordionContent>
136
+ </AccordionItem>
137
+ </Accordion>
138
+ ),
139
+ };
140
+
141
+ /**
142
+ * Multiple: Multiple items can be open simultaneously
143
+ */
144
+ export const Multiple: Story = {
145
+ render: () => (
146
+ <Accordion type="multiple" className="w-[450px]">
147
+ <AccordionItem id="item-1">
148
+ <AccordionTrigger>Section 1</AccordionTrigger>
149
+ <AccordionContent>
150
+ Open multiple sections at once in multiple mode.
151
+ </AccordionContent>
152
+ </AccordionItem>
153
+ <AccordionItem id="item-2">
154
+ <AccordionTrigger>Section 2</AccordionTrigger>
155
+ <AccordionContent>
156
+ Each section operates independently.
157
+ </AccordionContent>
158
+ </AccordionItem>
159
+ <AccordionItem id="item-3">
160
+ <AccordionTrigger>Section 3</AccordionTrigger>
161
+ <AccordionContent>
162
+ All sections can be open or closed at the same time.
163
+ </AccordionContent>
164
+ </AccordionItem>
165
+ </Accordion>
166
+ ),
167
+ };
168
+
169
+ /**
170
+ * MultipleDefaultExpanded: Multiple mode with some items expanded by default
171
+ */
172
+ export const MultipleDefaultExpanded: Story = {
173
+ render: () => (
174
+ <Accordion type="multiple" defaultExpandedKeys={['item-1', 'item-3']} className="w-[450px]">
175
+ <AccordionItem id="item-1">
176
+ <AccordionTrigger>Expanded by Default</AccordionTrigger>
177
+ <AccordionContent>
178
+ This section is expanded when the page loads.
179
+ </AccordionContent>
180
+ </AccordionItem>
181
+ <AccordionItem id="item-2">
182
+ <AccordionTrigger>Collapsed by Default</AccordionTrigger>
183
+ <AccordionContent>
184
+ This section starts collapsed.
185
+ </AccordionContent>
186
+ </AccordionItem>
187
+ <AccordionItem id="item-3">
188
+ <AccordionTrigger>Also Expanded by Default</AccordionTrigger>
189
+ <AccordionContent>
190
+ Multiple items can be expanded by default using defaultExpandedKeys.
191
+ </AccordionContent>
192
+ </AccordionItem>
193
+ </Accordion>
194
+ ),
195
+ };
196
+
197
+ // ============================================================================
198
+ // Disabled States Stories
199
+ // ============================================================================
200
+
201
+ /**
202
+ * Disabled: All items disabled
203
+ */
204
+ export const Disabled: Story = {
205
+ render: () => (
206
+ <Accordion type="single" collapsible isDisabled className="w-[450px]">
207
+ <AccordionItem id="item-1">
208
+ <AccordionTrigger>Disabled Item 1</AccordionTrigger>
209
+ <AccordionContent>
210
+ Cannot interact with disabled accordion.
211
+ </AccordionContent>
212
+ </AccordionItem>
213
+ <AccordionItem id="item-2">
214
+ <AccordionTrigger>Disabled Item 2</AccordionTrigger>
215
+ <AccordionContent>
216
+ All items are disabled.
217
+ </AccordionContent>
218
+ </AccordionItem>
219
+ </Accordion>
220
+ ),
221
+ };
222
+
223
+ /**
224
+ * DisabledKeys: Specific items disabled
225
+ */
226
+ export const DisabledKeys: Story = {
227
+ render: () => (
228
+ <Accordion type="single" collapsible disabledKeys={['item-2']} className="w-[450px]">
229
+ <AccordionItem id="item-1">
230
+ <AccordionTrigger>Free Features</AccordionTrigger>
231
+ <AccordionContent>
232
+ Available to all users. Click to expand.
233
+ </AccordionContent>
234
+ </AccordionItem>
235
+ <AccordionItem id="item-2">
236
+ <AccordionTrigger>Premium Features (Locked)</AccordionTrigger>
237
+ <AccordionContent>
238
+ Requires subscription to access.
239
+ </AccordionContent>
240
+ </AccordionItem>
241
+ <AccordionItem id="item-3">
242
+ <AccordionTrigger>More Free Features</AccordionTrigger>
243
+ <AccordionContent>
244
+ Also available to all users.
245
+ </AccordionContent>
246
+ </AccordionItem>
247
+ </Accordion>
248
+ ),
249
+ };
250
+
251
+ /**
252
+ * ItemDisabled: Individual item disabled via prop
253
+ */
254
+ export const ItemDisabled: Story = {
255
+ render: () => (
256
+ <Accordion type="single" collapsible className="w-[450px]">
257
+ <AccordionItem id="item-1">
258
+ <AccordionTrigger>Available Section</AccordionTrigger>
259
+ <AccordionContent>
260
+ This section works normally.
261
+ </AccordionContent>
262
+ </AccordionItem>
263
+ <AccordionItem id="item-2" isDisabled>
264
+ <AccordionTrigger>Coming Soon</AccordionTrigger>
265
+ <AccordionContent>
266
+ This feature is under development.
267
+ </AccordionContent>
268
+ </AccordionItem>
269
+ <AccordionItem id="item-3">
270
+ <AccordionTrigger>Another Available Section</AccordionTrigger>
271
+ <AccordionContent>
272
+ This section also works normally.
273
+ </AccordionContent>
274
+ </AccordionItem>
275
+ </Accordion>
276
+ ),
277
+ };
278
+
279
+ // ============================================================================
280
+ // Custom Icon Stories
281
+ // ============================================================================
282
+
283
+ /**
284
+ * CustomIcon: Custom expand/collapse icons
285
+ */
286
+ export const CustomIcon: Story = {
287
+ render: () => (
288
+ <Accordion type="single" collapsible className="w-[450px]">
289
+ <AccordionItem id="item-1">
290
+ <AccordionTrigger icon={<ChevronRight className="h-4 w-4 transition-transform duration-200 data-[expanded]:rotate-90" />}>
291
+ Right Chevron Icon
292
+ </AccordionTrigger>
293
+ <AccordionContent>
294
+ Using a right-pointing chevron that rotates 90 degrees.
295
+ </AccordionContent>
296
+ </AccordionItem>
297
+ <AccordionItem id="item-2">
298
+ <AccordionTrigger icon={<Plus className="h-4 w-4" />}>
299
+ Plus Icon
300
+ </AccordionTrigger>
301
+ <AccordionContent>
302
+ Using a plus icon (could animate to minus with CSS).
303
+ </AccordionContent>
304
+ </AccordionItem>
305
+ </Accordion>
306
+ ),
307
+ };
308
+
309
+ /**
310
+ * NoIcon: Trigger without icon
311
+ */
312
+ export const NoIcon: Story = {
313
+ render: () => (
314
+ <Accordion type="single" collapsible className="w-[450px]">
315
+ <AccordionItem id="item-1">
316
+ <AccordionTrigger hideIcon>Clean Trigger Style</AccordionTrigger>
317
+ <AccordionContent>
318
+ No icon displayed - cleaner look for some use cases.
319
+ </AccordionContent>
320
+ </AccordionItem>
321
+ <AccordionItem id="item-2">
322
+ <AccordionTrigger hideIcon>Another Clean Trigger</AccordionTrigger>
323
+ <AccordionContent>
324
+ The hideIcon prop removes the default chevron.
325
+ </AccordionContent>
326
+ </AccordionItem>
327
+ </Accordion>
328
+ ),
329
+ };
330
+
331
+ // ============================================================================
332
+ // Heading Level Stories
333
+ // ============================================================================
334
+
335
+ /**
336
+ * HeadingLevels: Different heading levels for document structure
337
+ */
338
+ export const HeadingLevels: Story = {
339
+ render: () => (
340
+ <div className="w-[450px] space-y-8">
341
+ <div>
342
+ <h1 className="text-xl font-bold mb-4">Page Title (h1)</h1>
343
+ <Accordion type="single" collapsible>
344
+ <AccordionItem id="item-1">
345
+ <AccordionTrigger as="h2">Section (h2)</AccordionTrigger>
346
+ <AccordionContent>
347
+ Uses h2 for main page sections.
348
+ </AccordionContent>
349
+ </AccordionItem>
350
+ </Accordion>
351
+ </div>
352
+ <div>
353
+ <h2 className="text-lg font-bold mb-4">Section Title (h2)</h2>
354
+ <Accordion type="single" collapsible>
355
+ <AccordionItem id="item-2">
356
+ <AccordionTrigger as="h3">Subsection (h3 - default)</AccordionTrigger>
357
+ <AccordionContent>
358
+ Default h3 is appropriate for subsections.
359
+ </AccordionContent>
360
+ </AccordionItem>
361
+ </Accordion>
362
+ </div>
363
+ <div>
364
+ <h3 className="text-base font-bold mb-4">Subsection Title (h3)</h3>
365
+ <Accordion type="single" collapsible>
366
+ <AccordionItem id="item-3">
367
+ <AccordionTrigger as="h4">FAQ Item (h4)</AccordionTrigger>
368
+ <AccordionContent>
369
+ Uses h4 for deeply nested content.
370
+ </AccordionContent>
371
+ </AccordionItem>
372
+ </Accordion>
373
+ </div>
374
+ </div>
375
+ ),
376
+ };
377
+
378
+ // ============================================================================
379
+ // Controlled Mode Story
380
+ // ============================================================================
381
+
382
+ /**
383
+ * Controlled: Externally controlled expansion state
384
+ */
385
+ export const Controlled: Story = {
386
+ render: function ControlledAccordion() {
387
+ const [expandedKeys, setExpandedKeys] = useState<Set<Key>>(new Set(['item-1']));
388
+
389
+ const toggleItem = (key: Key) => {
390
+ setExpandedKeys((prev) => {
391
+ const newSet = new Set(prev);
392
+ if (newSet.has(key)) {
393
+ newSet.delete(key);
394
+ } else {
395
+ newSet.add(key);
396
+ }
397
+ return newSet;
398
+ });
399
+ };
400
+
401
+ return (
402
+ <div className="w-[450px]">
403
+ <div className="flex gap-2 mb-4">
404
+ <button
405
+ onClick={() => toggleItem('item-1')}
406
+ className={`px-3 py-1 text-sm rounded-md ${
407
+ expandedKeys.has('item-1')
408
+ ? 'bg-[var(--primary)] text-[var(--primary-foreground)]'
409
+ : 'bg-[var(--muted)] text-[var(--muted-foreground)]'
410
+ }`}
411
+ >
412
+ Toggle 1
413
+ </button>
414
+ <button
415
+ onClick={() => toggleItem('item-2')}
416
+ className={`px-3 py-1 text-sm rounded-md ${
417
+ expandedKeys.has('item-2')
418
+ ? 'bg-[var(--primary)] text-[var(--primary-foreground)]'
419
+ : 'bg-[var(--muted)] text-[var(--muted-foreground)]'
420
+ }`}
421
+ >
422
+ Toggle 2
423
+ </button>
424
+ <button
425
+ onClick={() => toggleItem('item-3')}
426
+ className={`px-3 py-1 text-sm rounded-md ${
427
+ expandedKeys.has('item-3')
428
+ ? 'bg-[var(--primary)] text-[var(--primary-foreground)]'
429
+ : 'bg-[var(--muted)] text-[var(--muted-foreground)]'
430
+ }`}
431
+ >
432
+ Toggle 3
433
+ </button>
434
+ </div>
435
+ <Accordion
436
+ type="multiple"
437
+ expandedKeys={expandedKeys}
438
+ onExpandedChange={setExpandedKeys}
439
+ >
440
+ <AccordionItem id="item-1">
441
+ <AccordionTrigger>Section 1</AccordionTrigger>
442
+ <AccordionContent>
443
+ Controlled externally via expandedKeys state.
444
+ </AccordionContent>
445
+ </AccordionItem>
446
+ <AccordionItem id="item-2">
447
+ <AccordionTrigger>Section 2</AccordionTrigger>
448
+ <AccordionContent>
449
+ Use the buttons above or click the triggers.
450
+ </AccordionContent>
451
+ </AccordionItem>
452
+ <AccordionItem id="item-3">
453
+ <AccordionTrigger>Section 3</AccordionTrigger>
454
+ <AccordionContent>
455
+ Both methods update the same state.
456
+ </AccordionContent>
457
+ </AccordionItem>
458
+ </Accordion>
459
+ </div>
460
+ );
461
+ },
462
+ };
463
+
464
+ // ============================================================================
465
+ // Real-World Examples
466
+ // ============================================================================
467
+
468
+ /**
469
+ * FAQ: Frequently Asked Questions pattern
470
+ */
471
+ export const FAQ: Story = {
472
+ render: () => (
473
+ <div className="w-[500px]">
474
+ <h2 className="text-xl font-semibold mb-4">Frequently Asked Questions</h2>
475
+ <Accordion type="single" collapsible>
476
+ <AccordionItem id="faq-1">
477
+ <AccordionTrigger>How do I create an account?</AccordionTrigger>
478
+ <AccordionContent>
479
+ Click the "Sign Up" button in the top right corner. Fill in your email
480
+ address and create a password. You'll receive a verification email
481
+ to confirm your account.
482
+ </AccordionContent>
483
+ </AccordionItem>
484
+ <AccordionItem id="faq-2">
485
+ <AccordionTrigger>What payment methods do you accept?</AccordionTrigger>
486
+ <AccordionContent>
487
+ We accept all major credit cards (Visa, MasterCard, American Express),
488
+ PayPal, and bank transfers. Enterprise customers can also pay by invoice.
489
+ </AccordionContent>
490
+ </AccordionItem>
491
+ <AccordionItem id="faq-3">
492
+ <AccordionTrigger>How do I cancel my subscription?</AccordionTrigger>
493
+ <AccordionContent>
494
+ Go to Settings → Billing → Cancel Subscription. Your access will
495
+ continue until the end of your current billing period. You can
496
+ reactivate at any time.
497
+ </AccordionContent>
498
+ </AccordionItem>
499
+ <AccordionItem id="faq-4">
500
+ <AccordionTrigger>Is my data secure?</AccordionTrigger>
501
+ <AccordionContent>
502
+ Yes, we use industry-standard encryption (AES-256) for all data at
503
+ rest and in transit. We're SOC 2 Type II certified and GDPR compliant.
504
+ </AccordionContent>
505
+ </AccordionItem>
506
+ </Accordion>
507
+ </div>
508
+ ),
509
+ };
510
+
511
+ /**
512
+ * SettingsPanel: Settings page pattern with icons
513
+ */
514
+ export const SettingsPanel: Story = {
515
+ render: () => (
516
+ <div className="w-[500px]">
517
+ <h2 className="text-xl font-semibold mb-4">Settings</h2>
518
+ <Accordion type="multiple" defaultExpandedKeys={['settings-account']}>
519
+ <AccordionItem id="settings-account">
520
+ <AccordionTrigger>
521
+ <span className="flex items-center gap-2">
522
+ <User className="h-4 w-4" />
523
+ Account Settings
524
+ </span>
525
+ </AccordionTrigger>
526
+ <AccordionContent>
527
+ <div className="space-y-4">
528
+ <div>
529
+ <label className="block text-sm font-medium mb-1">Display Name</label>
530
+ <input
531
+ type="text"
532
+ className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
533
+ defaultValue="John Doe"
534
+ />
535
+ </div>
536
+ <div>
537
+ <label className="block text-sm font-medium mb-1">Email</label>
538
+ <input
539
+ type="email"
540
+ className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
541
+ defaultValue="john@example.com"
542
+ />
543
+ </div>
544
+ </div>
545
+ </AccordionContent>
546
+ </AccordionItem>
547
+ <AccordionItem id="settings-security">
548
+ <AccordionTrigger>
549
+ <span className="flex items-center gap-2">
550
+ <Lock className="h-4 w-4" />
551
+ Security
552
+ </span>
553
+ </AccordionTrigger>
554
+ <AccordionContent>
555
+ <div className="space-y-4">
556
+ <div className="flex items-center justify-between">
557
+ <span className="text-sm">Two-Factor Authentication</span>
558
+ <button className="px-3 py-1 text-sm bg-[var(--primary)] text-[var(--primary-foreground)] rounded-md">
559
+ Enable
560
+ </button>
561
+ </div>
562
+ <div className="flex items-center justify-between">
563
+ <span className="text-sm">Active Sessions</span>
564
+ <button className="px-3 py-1 text-sm border border-[var(--border)] rounded-md">
565
+ View All
566
+ </button>
567
+ </div>
568
+ </div>
569
+ </AccordionContent>
570
+ </AccordionItem>
571
+ <AccordionItem id="settings-notifications">
572
+ <AccordionTrigger>
573
+ <span className="flex items-center gap-2">
574
+ <Bell className="h-4 w-4" />
575
+ Notifications
576
+ </span>
577
+ </AccordionTrigger>
578
+ <AccordionContent>
579
+ <div className="space-y-3">
580
+ <label className="flex items-center gap-2">
581
+ <input type="checkbox" defaultChecked className="rounded" />
582
+ <span className="text-sm">Email notifications</span>
583
+ </label>
584
+ <label className="flex items-center gap-2">
585
+ <input type="checkbox" defaultChecked className="rounded" />
586
+ <span className="text-sm">Push notifications</span>
587
+ </label>
588
+ <label className="flex items-center gap-2">
589
+ <input type="checkbox" className="rounded" />
590
+ <span className="text-sm">SMS notifications</span>
591
+ </label>
592
+ </div>
593
+ </AccordionContent>
594
+ </AccordionItem>
595
+ </Accordion>
596
+ </div>
597
+ ),
598
+ };
599
+
600
+ /**
601
+ * ProductDetails: E-commerce product details pattern
602
+ */
603
+ export const ProductDetails: Story = {
604
+ render: () => (
605
+ <div className="w-[500px]">
606
+ <Accordion type="single" collapsible defaultExpandedKeys={['description']}>
607
+ <AccordionItem id="description">
608
+ <AccordionTrigger as="h2">Product Description</AccordionTrigger>
609
+ <AccordionContent>
610
+ <p className="text-sm leading-relaxed">
611
+ Crafted with premium materials, this product combines style with
612
+ functionality. Perfect for everyday use, it features durable
613
+ construction and elegant design that complements any setting.
614
+ </p>
615
+ </AccordionContent>
616
+ </AccordionItem>
617
+ <AccordionItem id="specifications">
618
+ <AccordionTrigger as="h2">Specifications</AccordionTrigger>
619
+ <AccordionContent>
620
+ <dl className="grid grid-cols-2 gap-2 text-sm">
621
+ <dt className="text-[var(--muted-foreground)]">Material</dt>
622
+ <dd>Premium Cotton Blend</dd>
623
+ <dt className="text-[var(--muted-foreground)]">Dimensions</dt>
624
+ <dd>10" x 8" x 4"</dd>
625
+ <dt className="text-[var(--muted-foreground)]">Weight</dt>
626
+ <dd>1.2 lbs</dd>
627
+ <dt className="text-[var(--muted-foreground)]">Color</dt>
628
+ <dd>Charcoal Grey</dd>
629
+ </dl>
630
+ </AccordionContent>
631
+ </AccordionItem>
632
+ <AccordionItem id="shipping">
633
+ <AccordionTrigger as="h2">Shipping & Returns</AccordionTrigger>
634
+ <AccordionContent>
635
+ <ul className="text-sm space-y-2 list-disc list-inside">
636
+ <li>Free shipping on orders over $50</li>
637
+ <li>Standard delivery: 3-5 business days</li>
638
+ <li>Express delivery: 1-2 business days</li>
639
+ <li>30-day hassle-free returns</li>
640
+ </ul>
641
+ </AccordionContent>
642
+ </AccordionItem>
643
+ </Accordion>
644
+ </div>
645
+ ),
646
+ };
647
+
648
+ // ============================================================================
649
+ // State Preservation Story
650
+ // ============================================================================
651
+
652
+ /**
653
+ * PreserveState: Form with React Activity state preservation
654
+ */
655
+ export const PreserveState: Story = {
656
+ render: () => (
657
+ <div className="w-[500px]">
658
+ <p className="text-sm text-[var(--muted-foreground)] mb-4">
659
+ Type in the form, collapse the section, then expand again - your input is preserved!
660
+ </p>
661
+ <Accordion type="single" collapsible>
662
+ <AccordionItem id="form">
663
+ <AccordionTrigger>Contact Form (State Preserved)</AccordionTrigger>
664
+ <AccordionContent preserveState>
665
+ <div className="space-y-4">
666
+ <div>
667
+ <label className="block text-sm font-medium mb-1">Name</label>
668
+ <input
669
+ type="text"
670
+ className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
671
+ placeholder="Enter your name"
672
+ />
673
+ </div>
674
+ <div>
675
+ <label className="block text-sm font-medium mb-1">Email</label>
676
+ <input
677
+ type="email"
678
+ className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
679
+ placeholder="Enter your email"
680
+ />
681
+ </div>
682
+ <div>
683
+ <label className="block text-sm font-medium mb-1">Message</label>
684
+ <textarea
685
+ className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
686
+ rows={3}
687
+ placeholder="Enter your message"
688
+ />
689
+ </div>
690
+ </div>
691
+ </AccordionContent>
692
+ </AccordionItem>
693
+ <AccordionItem id="other">
694
+ <AccordionTrigger>Other Section</AccordionTrigger>
695
+ <AccordionContent>
696
+ <p className="text-sm text-[var(--muted-foreground)]">
697
+ Expand the form section above, fill it in, collapse it, then expand again.
698
+ Your form data will be preserved thanks to React Activity.
699
+ </p>
700
+ </AccordionContent>
701
+ </AccordionItem>
702
+ </Accordion>
703
+ </div>
704
+ ),
705
+ };
706
+
707
+ // ============================================================================
708
+ // RTL Story
709
+ // ============================================================================
710
+
711
+ /**
712
+ * RTL: Right-to-left layout
713
+ */
714
+ export const RTL: Story = {
715
+ render: () => (
716
+ <div dir="rtl" className="w-[450px]">
717
+ <Accordion type="single" collapsible>
718
+ <AccordionItem id="item-1">
719
+ <AccordionTrigger>هل هو متاح؟</AccordionTrigger>
720
+ <AccordionContent>
721
+ نعم. إنه يتوافق مع نمط تصميم WAI-ARIA.
722
+ </AccordionContent>
723
+ </AccordionItem>
724
+ <AccordionItem id="item-2">
725
+ <AccordionTrigger>هل له أسلوب؟</AccordionTrigger>
726
+ <AccordionContent>
727
+ نعم. يأتي مع أنماط افتراضية تطابق نظام التصميم.
728
+ </AccordionContent>
729
+ </AccordionItem>
730
+ <AccordionItem id="item-3">
731
+ <AccordionTrigger>هل هو متحرك؟</AccordionTrigger>
732
+ <AccordionContent>
733
+ نعم. يحتوي على رسوم متحركة سلسة للارتفاع.
734
+ </AccordionContent>
735
+ </AccordionItem>
736
+ </Accordion>
737
+ </div>
738
+ ),
739
+ };
740
+
741
+ // ============================================================================
742
+ // Nested Accordion Story
743
+ // ============================================================================
744
+
745
+ /**
746
+ * Nested: Accordion within accordion
747
+ */
748
+ export const Nested: Story = {
749
+ render: () => (
750
+ <div className="w-[500px]">
751
+ <Accordion type="single" collapsible>
752
+ <AccordionItem id="parent-1">
753
+ <AccordionTrigger as="h2">Category 1</AccordionTrigger>
754
+ <AccordionContent>
755
+ <Accordion type="single" collapsible className="pl-4 border-l border-[var(--border)]">
756
+ <AccordionItem id="child-1-1">
757
+ <AccordionTrigger as="h3">Subcategory 1.1</AccordionTrigger>
758
+ <AccordionContent>
759
+ Content for subcategory 1.1
760
+ </AccordionContent>
761
+ </AccordionItem>
762
+ <AccordionItem id="child-1-2">
763
+ <AccordionTrigger as="h3">Subcategory 1.2</AccordionTrigger>
764
+ <AccordionContent>
765
+ Content for subcategory 1.2
766
+ </AccordionContent>
767
+ </AccordionItem>
768
+ </Accordion>
769
+ </AccordionContent>
770
+ </AccordionItem>
771
+ <AccordionItem id="parent-2">
772
+ <AccordionTrigger as="h2">Category 2</AccordionTrigger>
773
+ <AccordionContent>
774
+ <Accordion type="single" collapsible className="pl-4 border-l border-[var(--border)]">
775
+ <AccordionItem id="child-2-1">
776
+ <AccordionTrigger as="h3">Subcategory 2.1</AccordionTrigger>
777
+ <AccordionContent>
778
+ Content for subcategory 2.1
779
+ </AccordionContent>
780
+ </AccordionItem>
781
+ <AccordionItem id="child-2-2">
782
+ <AccordionTrigger as="h3">Subcategory 2.2</AccordionTrigger>
783
+ <AccordionContent>
784
+ Content for subcategory 2.2
785
+ </AccordionContent>
786
+ </AccordionItem>
787
+ </Accordion>
788
+ </AccordionContent>
789
+ </AccordionItem>
790
+ </Accordion>
791
+ </div>
792
+ ),
793
+ };