@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 @@
1
+ {"version":3,"sources":["../src/elements/OTPInput/hooks/useOTPKeyboard.ts","../src/elements/OTPInput/hooks/useOTPInput.ts","../src/elements/OTPInput/OTPInput.styles.ts","../src/elements/OTPInput/components/OTPDigit.tsx","../src/elements/OTPInput/OTPInput.tsx"],"names":["useCallback","isComplete","useRef","jsx"],"mappings":"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","file":"chunk-NSQ6MZJ6.mjs","sourcesContent":["import { useCallback, type KeyboardEvent } from 'react';\n\n/**\n * Options for useOTPKeyboard hook\n */\nexport interface UseOTPKeyboardOptions {\n /**\n * Current OTP value (string with underscores for empty)\n */\n value: string;\n\n /**\n * Total number of digits\n */\n length: number;\n\n /**\n * Currently focused digit index\n */\n focusedIndex: number;\n\n /**\n * Callback to update OTP value\n */\n onChange: (value: string) => void;\n\n /**\n * Callback to update focused index\n */\n setFocusedIndex: (index: number) => void;\n\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n\n /**\n * Whether the input is read-only\n */\n readOnly?: boolean;\n}\n\n/**\n * Return type for useOTPKeyboard hook\n */\nexport interface UseOTPKeyboardReturn {\n /**\n * Keyboard event handler\n */\n handleKeyDown: (e: KeyboardEvent<HTMLInputElement>) => void;\n}\n\n/**\n * useOTPKeyboard Hook\n *\n * Handles keyboard navigation for OTP input:\n * - Arrow Left/Right: Navigate between digits\n * - Backspace: Delete current digit and move left\n * - Delete: Clear current digit\n * - Home: Move to first digit\n * - End: Move to last digit\n * - Ctrl/Cmd+A: Select all (native browser behavior)\n *\n * @param options Configuration options\n * @returns Keyboard event handler\n */\nexport function useOTPKeyboard(options: UseOTPKeyboardOptions): UseOTPKeyboardReturn {\n const {\n value,\n length,\n focusedIndex,\n onChange,\n setFocusedIndex,\n disabled = false,\n readOnly = false,\n } = options;\n\n /**\n * Handle Arrow Left - Move to previous digit\n */\n const handleArrowLeft = useCallback((): void => {\n if (focusedIndex > 0) {\n setFocusedIndex(focusedIndex - 1);\n }\n }, [focusedIndex, setFocusedIndex]);\n\n /**\n * Handle Arrow Right - Move to next digit\n */\n const handleArrowRight = useCallback((): void => {\n if (focusedIndex < length - 1) {\n setFocusedIndex(focusedIndex + 1);\n }\n }, [focusedIndex, length, setFocusedIndex]);\n\n /**\n * Handle Backspace - Delete current digit and move left\n */\n const handleBackspace = useCallback((): void => {\n if (readOnly) return;\n\n const digits = value.split('');\n const currentDigit = digits[focusedIndex];\n\n // If current digit is empty, move to previous digit\n if (currentDigit === '_') {\n if (focusedIndex > 0) {\n // Move left and clear that digit\n const newIndex = focusedIndex - 1;\n digits[newIndex] = '_';\n onChange(digits.join(''));\n setFocusedIndex(newIndex);\n }\n } else {\n // Clear current digit\n digits[focusedIndex] = '_';\n onChange(digits.join(''));\n // Move to previous digit if not at start\n if (focusedIndex > 0) {\n setFocusedIndex(focusedIndex - 1);\n }\n }\n }, [value, focusedIndex, readOnly, onChange, setFocusedIndex]);\n\n /**\n * Handle Delete - Clear current digit (stay in place)\n */\n const handleDelete = useCallback((): void => {\n if (readOnly) return;\n\n const digits = value.split('');\n digits[focusedIndex] = '_';\n onChange(digits.join(''));\n // Stay on current digit (don't move)\n }, [value, focusedIndex, readOnly, onChange]);\n\n /**\n * Handle Home - Move to first digit\n */\n const handleHome = useCallback((): void => {\n setFocusedIndex(0);\n }, [setFocusedIndex]);\n\n /**\n * Handle End - Move to last digit\n */\n const handleEnd = useCallback((): void => {\n setFocusedIndex(length - 1);\n }, [length, setFocusedIndex]);\n\n /**\n * Main keyboard event handler\n */\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>): void => {\n if (disabled) return;\n\n // Handle different key presses\n switch (e.key) {\n case 'ArrowLeft':\n e.preventDefault();\n handleArrowLeft();\n break;\n\n case 'ArrowRight':\n e.preventDefault();\n handleArrowRight();\n break;\n\n case 'Backspace':\n e.preventDefault();\n handleBackspace();\n break;\n\n case 'Delete':\n e.preventDefault();\n handleDelete();\n break;\n\n case 'Home':\n e.preventDefault();\n handleHome();\n break;\n\n case 'End':\n e.preventDefault();\n handleEnd();\n break;\n\n // Ctrl/Cmd+A (Select All) - Allow native behavior\n case 'a':\n case 'A':\n if (e.ctrlKey || e.metaKey) {\n // Let browser handle select all natively\n // The hidden input will select its entire value\n return;\n }\n break;\n\n // Prevent Enter from submitting the form\n // Form submission should be handled by onComplete callback when all digits are filled\n case 'Enter':\n e.preventDefault();\n break;\n\n // Allow digits and other printable characters\n // (handled by onChange in useOTPInput)\n default:\n // Don't prevent default for normal character input\n break;\n }\n },\n [\n disabled,\n handleArrowLeft,\n handleArrowRight,\n handleBackspace,\n handleDelete,\n handleHome,\n handleEnd,\n ]\n );\n\n return {\n handleKeyDown,\n };\n}\n","'use client';\n\nimport { useState, useCallback, useEffect, useRef, type ChangeEvent, type KeyboardEvent, type ClipboardEvent } from 'react';\nimport type { OTPInputProps } from '../OTPInput.types';\nimport { useOTPKeyboard } from './useOTPKeyboard';\n\n/**\n * Return type for useOTPInput hook\n */\nexport interface UseOTPInputReturn {\n value: string;\n focusedIndex: number;\n error: string | null;\n isComplete: boolean;\n handleChange: (e: ChangeEvent<HTMLInputElement>) => void;\n handleKeyDown: (e: KeyboardEvent<HTMLInputElement>) => void;\n handlePaste: (e: ClipboardEvent<HTMLInputElement>) => void;\n setFocusedIndex: (index: number) => void;\n clear: () => void;\n setValue: (value: string) => void;\n validate: () => string | null;\n}\n\n/**\n * useOTPInput Hook\n *\n * Core logic hook for OTP input management.\n * Handles state, validation, and user interactions.\n *\n * Features:\n * - Controlled and uncontrolled modes\n * - Auto-advance on digit entry\n * - Custom validation support\n * - Error state management\n * - Focus management\n *\n * @param props OTPInput component props\n * @returns State and handlers for OTP input\n */\nexport function useOTPInput(props: OTPInputProps): UseOTPInputReturn {\n const {\n value: controlledValue,\n defaultValue = '',\n length = 6,\n type = 'numeric',\n pattern,\n onChange,\n onComplete,\n validate,\n error: controlledError,\n disabled = false,\n readOnly = false,\n } = props;\n\n // Determine if component is controlled\n const isControlled = controlledValue !== undefined;\n\n // Internal state (used in uncontrolled mode)\n const [internalValue, setInternalValue] = useState<string>(() => {\n // Initialize with defaultValue padded to length with underscores\n return (defaultValue || '').padEnd(length, '_');\n });\n\n const [internalError, setInternalError] = useState<string | null>(null);\n const [focusedIndex, setFocusedIndex] = useState<number>(0);\n\n // Track if onComplete has been called for current value\n const completedRef = useRef<string | null>(null);\n \n // Debounce timer for onComplete callback\n const debounceTimerRef = useRef<NodeJS.Timeout | null>(null);\n\n // Current value (controlled or uncontrolled)\n const currentValue = isControlled ? controlledValue || ''.padEnd(length, '_') : internalValue;\n\n // Current error (controlled or uncontrolled)\n const currentError = controlledError !== undefined ? controlledError : internalError;\n\n // Validation function\n const runValidation = useCallback(\n (value: string): string | null => {\n // Don't validate empty or partial input\n const filledLength = value.replace(/_/g, '').length;\n if (filledLength < length) {\n return null;\n }\n\n // Run custom validation if provided\n if (validate) {\n return validate(value);\n }\n\n // Built-in validation based on type\n if (type === 'numeric') {\n const numericPattern = /^\\d+$/;\n const cleanValue = value.replace(/_/g, '');\n if (!numericPattern.test(cleanValue)) {\n return 'Code must contain only digits';\n }\n } else if (type === 'alphanumeric') {\n const alphanumericPattern = /^[A-Za-z0-9]+$/;\n const cleanValue = value.replace(/_/g, '');\n if (!alphanumericPattern.test(cleanValue)) {\n return 'Code must contain only letters and numbers';\n }\n } else if (type === 'custom' && pattern) {\n const cleanValue = value.replace(/_/g, '');\n for (const char of cleanValue) {\n if (!pattern.test(char)) {\n return 'Invalid character in code';\n }\n }\n }\n\n return null;\n },\n [length, type, pattern, validate]\n );\n\n // Update value (handles both controlled and uncontrolled)\n const updateValue = useCallback(\n (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n\n // Run validation\n const validationError = runValidation(newValue);\n if (!isControlled) {\n setInternalError(validationError);\n }\n\n // Check if complete\n const filledLength = newValue.replace(/_/g, '').length;\n const isComplete = filledLength === length;\n\n // Trigger onComplete if:\n // 1. All digits filled\n // 2. No validation errors\n // 3. Haven't already called onComplete for this value\n if (isComplete && !validationError && completedRef.current !== newValue) {\n completedRef.current = newValue;\n \n // Debounce onComplete callback by 200ms\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n debounceTimerRef.current = setTimeout(() => {\n onComplete?.(newValue.replace(/_/g, ''));\n }, 200);\n }\n\n // Reset completion tracking if value changes after completion\n if (!isComplete && completedRef.current) {\n completedRef.current = null;\n }\n },\n [isControlled, length, onChange, onComplete, runValidation]\n );\n\n // Handle digit entry\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>): void => {\n if (disabled) return;\n\n const inputValue = e.target.value;\n const newChar = inputValue[inputValue.length - 1] || '';\n\n // Validate character based on type\n let isValid = false;\n if (type === 'numeric') {\n isValid = /^\\d$/.test(newChar);\n } else if (type === 'alphanumeric') {\n isValid = /^[A-Za-z0-9]$/.test(newChar);\n } else if (type === 'custom' && pattern) {\n isValid = pattern.test(newChar);\n } else {\n isValid = true; // Default: accept any character\n }\n\n if (!isValid) {\n // Reject invalid character\n return;\n }\n\n // Update value at focused index\n const valueArray = currentValue.split('');\n valueArray[focusedIndex] = newChar;\n const newValue = valueArray.join('');\n\n updateValue(newValue);\n\n // Auto-advance to next digit if not at end\n if (focusedIndex < length - 1) {\n setFocusedIndex(focusedIndex + 1);\n }\n },\n [disabled, type, pattern, currentValue, focusedIndex, length, updateValue]\n );\n\n // Handle paste\n const handlePaste = useCallback(\n async (e: ClipboardEvent<HTMLInputElement>): Promise<void> => {\n if (disabled || readOnly) return;\n\n e.preventDefault();\n\n // Get pasted text\n const pastedText = e.clipboardData.getData('text/plain').trim();\n if (!pastedText) return;\n\n // Call onPaste callback if provided\n if (props.onPaste) {\n const shouldProceed = await props.onPaste(pastedText);\n if (shouldProceed === false) return;\n }\n\n // Validate pasted content character by character\n let validChars = '';\n for (const char of pastedText) {\n if (validChars.length >= length) break;\n\n let isValid = false;\n if (type === 'numeric') {\n isValid = /^\\d$/.test(char);\n } else if (type === 'alphanumeric') {\n isValid = /^[A-Za-z0-9]$/.test(char);\n } else if (type === 'custom' && pattern) {\n isValid = pattern.test(char);\n } else {\n isValid = true;\n }\n\n if (isValid) {\n validChars += char;\n }\n }\n\n // Pad with underscores to fill length\n const newValue = validChars.padEnd(length, '_');\n updateValue(newValue);\n\n // Move focus to first empty position or end\n const firstEmptyIndex = newValue.indexOf('_');\n setFocusedIndex(firstEmptyIndex === -1 ? length - 1 : firstEmptyIndex);\n },\n [disabled, readOnly, props, length, type, pattern, updateValue]\n );\n\n // Clear all digits\n const clear = useCallback((): void => {\n const emptyValue = ''.padEnd(length, '_');\n updateValue(emptyValue);\n setFocusedIndex(0);\n if (!isControlled) {\n setInternalError(null);\n }\n completedRef.current = null;\n }, [length, updateValue, isControlled]);\n\n // Set value programmatically\n const setValue = useCallback(\n (newValue: string): void => {\n // Pad or truncate to length\n const paddedValue = newValue.padEnd(length, '_').slice(0, length);\n updateValue(paddedValue);\n\n // Move focus to last filled digit or first empty\n const firstEmptyIndex = paddedValue.indexOf('_');\n setFocusedIndex(firstEmptyIndex === -1 ? length - 1 : firstEmptyIndex);\n },\n [length, updateValue]\n );\n\n // Validate current value\n const validateCurrent = useCallback((): string | null => {\n return runValidation(currentValue);\n }, [currentValue, runValidation]);\n\n // Check if complete\n const isComplete = currentValue.replace(/_/g, '').length === length;\n\n // Keyboard navigation hook\n const { handleKeyDown } = useOTPKeyboard({\n value: currentValue,\n length,\n focusedIndex,\n onChange: updateValue,\n setFocusedIndex,\n disabled,\n readOnly,\n });\n\n // Sync controlled value changes\n useEffect(() => {\n if (isControlled && controlledValue !== undefined) {\n // Update focused index when controlled value changes\n const firstEmptyIndex = controlledValue.indexOf('_');\n if (firstEmptyIndex !== -1) {\n setFocusedIndex(firstEmptyIndex);\n }\n }\n }, [isControlled, controlledValue]);\n\n // Cleanup debounce timer on unmount\n useEffect(() => {\n return () => {\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n };\n }, []);\n\n return {\n value: currentValue,\n focusedIndex,\n error: currentError,\n isComplete,\n handleChange,\n handleKeyDown,\n handlePaste,\n setFocusedIndex,\n clear,\n setValue,\n validate: validateCurrent,\n };\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\n\n/**\n * OTP Digit Box Variants\n *\n * Styling for individual digit display boxes using ShadCN CSS variables.\n * Ensures WCAG 2.2 AAA compliance (7:1 contrast, 44x44px touch targets).\n *\n * CSS Variables used (from ShadCN):\n * - --background: Base background color\n * - --foreground: Text color\n * - --border: Border color\n * - --primary: Primary brand color (focus state)\n * - --ring: Focus ring color\n * - --destructive: Error state color\n * - --destructive-foreground: Error text color\n * - --success: Success state color (if available)\n * - --muted: Muted background color\n * - --muted-foreground: Placeholder/disabled text color\n */\nexport const otpDigitVariants = cva(\n // Base styles - Applied to all variants\n [\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'rounded-md',\n 'border-2',\n 'font-semibold',\n 'transition-all',\n 'duration-200',\n 'ease-in-out',\n 'select-none',\n 'tabindex-[-1]', // Not tabbable (hidden input handles focus)\n ],\n {\n variants: {\n /**\n * Size Variants\n * All sizes meet WCAG AAA touch target minimum (44x44px)\n */\n size: {\n /**\n * Small: 40×40px base + 4px padding = 44×44px touch target\n * Font: 16px (base size)\n * Use case: Compact layouts, mobile optimization\n */\n sm: [\n 'h-10', // 40px\n 'w-10', // 40px\n 'text-base', // 16px\n 'p-1', // 4px padding for touch target\n ],\n\n /**\n * Medium (default): 48×56px\n * Font: 20px (comfortable reading size)\n * Use case: Standard desktop/mobile layouts\n */\n md: [\n 'h-14', // 56px\n 'w-10 sm:w-12 md:w-14', // 48px\n 'text-xl', // 20px\n ],\n\n /**\n * Large: 56×64px\n * Font: 24px (large reading size)\n * Use case: Accessibility focus, high-visibility needs\n */\n lg: [\n 'h-16', // 64px\n 'w-10 sm:w-12 md:w-16', // 56px\n 'text-2xl', // 24px\n ],\n },\n\n /**\n * State Variants\n * All states meet WCAG AAA contrast (7:1 minimum)\n */\n state: {\n /**\n * Default: Standard input appearance\n * Border: --border\n * Background: --background\n * Text: --foreground\n */\n default: [\n 'border-[var(--input)]',\n 'bg-[var(--content-background)]',\n 'text-[var(--content-foreground)]',\n 'hover:border-[var(--input-hover)]',\n ],\n\n /**\n * Focus: Active digit being edited\n * Border: --primary\n * Ring: --ring (2px, 2px offset)\n * Contrast: 7:1 minimum\n */\n focus: [\n 'border-[var(--input)]',\n 'ring-2',\n 'ring-[var(--primary)]',\n 'ring-offset-2',\n 'ring-offset-background',\n 'outline-none',\n ],\n\n /**\n * Filled: Digit has been entered\n * Border: --primary with 50% opacity\n * Text: Bold weight for emphasis\n */\n filled: [\n 'border-[var(--primary)]',\n 'bg-[var(--content-background)]',\n 'text-[var(--content-foreground)]',\n 'font-bold',\n ],\n\n /**\n * Error: Validation failed\n * Border: --destructive\n * Background: --destructive with 10% opacity\n * Text: --destructive-foreground\n * Animation: Shake on error\n */\n error: [\n 'border-[var(--destructive)]',\n 'bg-[var(--content-background)]',\n 'text-[var(--destructive-foreground)]',\n 'animate-shake',\n ],\n\n /**\n * Success: Validation passed (optional)\n * Border: Green (or --success if available)\n * Background: Green with 10% opacity\n * May include checkmark icon\n */\n success: [\n 'border-green-600',\n 'bg-green-50',\n 'text-green-900',\n 'dark:border-green-500',\n 'dark:bg-green-900/20',\n 'dark:text-green-100',\n ],\n\n /**\n * Disabled: Input not interactive\n * Border: --border with 50% opacity\n * Background: --muted with 50% opacity\n * Text: --muted-foreground\n * Cursor: not-allowed\n * Opacity: 60%\n * Contrast: 4.5:1 minimum (AA standard for disabled)\n */\n disabled: [\n 'border-[var(--accent-background)]',\n 'bg-[var(--accent-background)]',\n 'text-[var(--menu-muted)]',\n 'cursor-not-allowed',\n 'opacity-60',\n 'hover:border-[var(--accent-background)]', // Prevent hover effect\n ],\n },\n },\n defaultVariants: {\n size: 'md',\n state: 'default',\n },\n }\n);\n\n/**\n * OTP Container Variants\n *\n * Styling for the main container that holds all digit boxes\n */\nexport const otpContainerVariants = cva(\n [\n 'inline-flex',\n 'flex-col',\n 'gap-2',\n ],\n {\n variants: {\n /**\n * Container size variants\n * Affects spacing and layout\n */\n size: {\n sm: ['gap-1.5'],\n md: ['gap-2'],\n lg: ['gap-3'],\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\n/**\n * OTP Digit Group Variants\n *\n * Styling for the row of digit boxes\n */\nexport const otpDigitGroupVariants = cva(\n [\n 'flex',\n 'items-center',\n ],\n {\n variants: {\n /**\n * Gap between digits\n */\n size: {\n sm: ['gap-1.5'], // 6px\n md: ['gap-2'], // 8px\n lg: ['gap-3'], // 12px\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\n/**\n * OTP Error Message Variants\n *\n * Styling for error messages displayed below input\n */\nexport const otpErrorVariants = cva([\n 'text-sm',\n 'font-medium',\n 'text-[var(--destructive)]',\n 'mt-1.5',\n 'text-center',\n]);\n\n/**\n * OTP Description Variants\n *\n * Styling for description/help text\n */\nexport const otpDescriptionVariants = cva([\n 'text-sm',\n 'text-[var(--menu-muted)]',\n 'mt-1',\n]);\n\n/**\n * Type export for variant props\n * Allows TypeScript inference of variant combinations\n */\nexport type OTPDigitVariantProps = VariantProps<typeof otpDigitVariants>;\nexport type OTPContainerVariantProps = VariantProps<typeof otpContainerVariants>;\nexport type OTPDigitGroupVariantProps = VariantProps<typeof otpDigitGroupVariants>;\n\n/**\n * Animation: Shake effect for errors\n *\n * Add this to tailwind.config.ts animations:\n *\n * ```ts\n * module.exports = {\n * theme: {\n * extend: {\n * keyframes: {\n * shake: {\n * '0%, 100%': { transform: 'translateX(0)' },\n * '25%': { transform: 'translateX(-8px)' },\n * '75%': { transform: 'translateX(8px)' },\n * },\n * },\n * animation: {\n * shake: 'shake 200ms ease-in-out',\n * },\n * },\n * },\n * };\n * ```\n */\n","import { memo, type ReactElement } from 'react';\nimport { cn } from '../../../utils/cn';\nimport { otpDigitVariants, type OTPDigitVariantProps } from '../OTPInput.styles';\n\n/**\n * Props for the OTPDigit component\n */\nexport interface OTPDigitProps {\n /**\n * Single character value or underscore for empty\n * @example \"1\" | \"A\" | \"_\"\n */\n value: string;\n\n /**\n * Whether this digit is currently focused\n * Determines visual focus indicator display\n */\n focused: boolean;\n\n /**\n * Size variant\n * @default 'md'\n */\n size?: OTPDigitVariantProps['size'];\n\n /**\n * State variant\n * Determines visual styling (default, focus, error, success, disabled)\n */\n state?: OTPDigitVariantProps['state'];\n\n /**\n * Mask the digit (show as bullet point)\n * Useful for sensitive codes\n * @default false\n */\n masked?: boolean;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n\n /**\n * Index of this digit (for debugging)\n */\n index?: number;\n}\n\n/**\n * OTPDigit Component\n *\n * Displays a single digit of the OTP input with visual styling.\n * This is a presentational component - it does not handle input logic.\n *\n * Features:\n * - Memoized for performance (prevents unnecessary re-renders)\n * - WCAG AAA compliant (7:1 contrast, 44x44px touch targets)\n * - Supports masking for sensitive codes\n * - Visual focus indicators\n * - State-based styling (error, success, disabled)\n *\n * @example\n * ```tsx\n * <OTPDigit\n * value=\"5\"\n * focused={true}\n * size=\"md\"\n * state=\"focus\"\n * />\n * ```\n */\nconst OTPDigitComponent = ({\n value,\n focused,\n size = 'md',\n state = 'default',\n masked = false,\n className,\n index,\n}: OTPDigitProps): ReactElement => {\n // Determine if digit is filled\n const isFilled = value !== '_' && value !== '';\n\n // Determine state based on props\n const computedState = focused && !state ? 'focus' : isFilled && state === 'default' ? 'filled' : state;\n\n // Display value (masked or actual)\n const displayValue = masked && isFilled ? '•' : value === '_' ? '' : value;\n\n return (\n <div\n className={cn(\n otpDigitVariants({ size, state: computedState }),\n className\n )}\n role=\"presentation\"\n aria-hidden=\"true\"\n data-focused={focused}\n data-filled={isFilled}\n data-index={index}\n >\n {displayValue || (\n <span className=\"text-[var(--menu-muted)] opacity-40\">\n •\n </span>\n )}\n </div>\n );\n};\n\n/**\n * Memoized OTPDigit Component\n *\n * Prevents re-renders when other digits change.\n * Only re-renders when its own props change.\n *\n * Performance optimization for components with 6-10 digits.\n */\nexport const OTPDigit = memo(OTPDigitComponent);\n\nOTPDigit.displayName = 'OTPDigit';\n","'use client';\n\nimport { forwardRef, useImperativeHandle, useRef, type FocusEvent, type KeyboardEvent } from 'react';\nimport { cn } from '../../utils/cn';\nimport { type OTPInputProps, type OTPInputRef } from './OTPInput.types';\nimport { useOTPInput } from './hooks/useOTPInput';\nimport { OTPDigit } from './components/OTPDigit';\nimport {\n otpContainerVariants,\n otpDigitGroupVariants,\n otpErrorVariants,\n otpDescriptionVariants,\n} from './OTPInput.styles';\n\n/**\n * OTPInput Component\n *\n * A fully accessible, WCAG 2.2 AAA-compliant OTP (One-Time Password) input component.\n *\n * Key Features:\n * - Single hidden input for screen readers (not multiple separate inputs)\n * - Visual digit boxes for optimal UX\n * - WCAG 2.2 AAA compliant (7:1 contrast, 44x44px touch targets)\n * - Auto-advance on digit entry\n * - Paste support with validation\n * - Controlled and uncontrolled modes\n * - Custom validation\n * - React Hook Form compatible\n *\n * Accessibility:\n * - Single tab stop (entire OTP is one field)\n * - Proper ARIA attributes (label, describedby, invalid, errormessage)\n * - Screen reader announcements for digit count and errors\n * - Visible focus indicators (7:1 contrast)\n * - Keyboard navigation (arrows, home, end, backspace, delete)\n *\n * @example Basic usage\n * ```tsx\n * <OTPInput\n * label=\"Enter verification code\"\n * length={6}\n * onChange={(value) => console.log(value)}\n * onComplete={(code) => console.log('Complete:', code)}\n * />\n * ```\n *\n * @example Controlled mode with validation\n * ```tsx\n * const [otp, setOtp] = useState('');\n * const [error, setError] = useState('');\n *\n * <OTPInput\n * label=\"Enter 6-digit code sent to your email\"\n * value={otp}\n * onChange={setOtp}\n * error={error}\n * validate={(value) => {\n * if (value === '000000') return 'Invalid code';\n * return null;\n * }}\n * />\n * ```\n *\n * @example With ref API\n * ```tsx\n * const otpRef = useRef<OTPInputRef>(null);\n *\n * <OTPInput\n * ref={otpRef}\n * label=\"Enter verification code\"\n * />\n *\n * // Programmatic control\n * otpRef.current?.clear();\n * otpRef.current?.setValue('123456');\n * ```\n */\nexport const OTPInput = forwardRef<OTPInputRef, OTPInputProps>((props, ref) => {\n // Validate serializable props with Zod schema (skip function validation)\n // Functions are type-checked by TypeScript, not runtime-validated\n const {\n label,\n description,\n size = 'md',\n disabled = false,\n readOnly = false,\n mask = false,\n showSuccess = false,\n className,\n digitClassName,\n onFocus,\n onBlur,\n inputMode = 'numeric',\n length = 6,\n } = props;\n\n // Main logic hook\n const {\n value,\n focusedIndex,\n error,\n isComplete,\n handleChange,\n handleKeyDown,\n handlePaste,\n setFocusedIndex,\n clear,\n setValue,\n validate,\n } = useOTPInput(props);\n\n // Ref to the hidden input element\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Expose imperative API via ref\n useImperativeHandle(ref, (): OTPInputRef => ({\n focus: (): void => inputRef.current?.focus(),\n blur: (): void => inputRef.current?.blur(),\n clear,\n setValue,\n getValue: (): string => value.replace(/_/g, ''),\n isComplete: (): boolean => isComplete,\n validate,\n getElement: (): HTMLInputElement | null => inputRef.current,\n }));\n\n // Split value into individual digits\n const digits = value.split('');\n\n // Determine state for digit styling\n const getDigitState = (index: number): 'default' | 'focus' | 'filled' | 'error' | 'success' | 'disabled' => {\n if (disabled) return 'disabled';\n if (error) return 'error';\n if (showSuccess && isComplete && !error) return 'success';\n if (index === focusedIndex) return 'focus';\n if (digits[index] !== '_') return 'filled';\n return 'default';\n };\n\n // Handle focus events\n const handleFocusEvent = (e: FocusEvent<HTMLInputElement>): void => {\n onFocus?.(e);\n };\n\n const handleBlurEvent = (e: FocusEvent<HTMLInputElement>): void => {\n onBlur?.(e);\n };\n\n // Handle click/keyboard on digit boxes (focus hidden input)\n const handleDigitClick = (index: number): void => {\n if (disabled || readOnly) return;\n setFocusedIndex(index);\n inputRef.current?.focus();\n };\n\n const handleDigitKeyDown = (e: KeyboardEvent, index: number): void => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleDigitClick(index);\n }\n };\n\n // Generate IDs for ARIA\n const descriptionId = description ? `otp-description-${Math.random().toString(36).slice(2, 9)}` : undefined;\n const errorId = error ? `otp-error-${Math.random().toString(36).slice(2, 9)}` : undefined;\n\n return (\n <div className={cn(otpContainerVariants({ size }), className)}>\n {/* Hidden accessible input */}\n <input\n ref={inputRef}\n type=\"text\"\n inputMode={inputMode}\n value={value.replace(/_/g, '')}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n onFocus={handleFocusEvent}\n onBlur={handleBlurEvent}\n disabled={disabled}\n readOnly={readOnly}\n aria-label={label}\n aria-describedby={[descriptionId, errorId].filter(Boolean).join(' ')}\n aria-invalid={!!error}\n aria-errormessage={errorId}\n className=\"sr-only\"\n autoComplete=\"one-time-code\"\n maxLength={length}\n />\n\n {/* Visual digit display */}\n <div\n className={cn(otpDigitGroupVariants({ size }))}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n {digits.map((digit, index) => (\n <div\n key={index}\n onClick={() => handleDigitClick(index)}\n onKeyDown={(e) => handleDigitKeyDown(e, index)}\n role=\"button\"\n tabIndex={-1}\n className=\"cursor-text\"\n >\n <OTPDigit\n value={digit}\n focused={index === focusedIndex}\n size={size}\n state={getDigitState(index)}\n masked={mask}\n className={digitClassName}\n index={index}\n />\n </div>\n ))}\n </div>\n\n {/* Description text */}\n {description && (\n <p id={descriptionId} className={otpDescriptionVariants()}>\n {description}\n </p>\n )}\n\n {/* Error message */}\n {error && (\n <p\n id={errorId}\n className={otpErrorVariants()}\n role=\"alert\"\n aria-live=\"assertive\"\n >\n {error}\n </p>\n )}\n\n {/* Screen reader live region for digit count */}\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"sr-only\"\n >\n {!isComplete && !error && (\n <>\n {value.replace(/_/g, '').length} of {length} digits entered\n </>\n )}\n {isComplete && !error && <>Verification code complete</>}\n </div>\n </div>\n );\n});\n\nOTPInput.displayName = 'OTPInput';\n"]}
@@ -0,0 +1,296 @@
1
+ import { cn } from './chunk-E2KQFV3O.mjs';
2
+ import { BaseComponentPropsSchema } from './chunk-5SVLJN2C.mjs';
3
+ import { createContext, useMemo, useContext, Children, isValidElement, Activity as Activity$1 } from 'react';
4
+ import { DisclosureGroup, Disclosure, composeRenderProps, DisclosureStateContext, Heading, Button, DisclosurePanel } from 'react-aria-components';
5
+ import { cva } from 'class-variance-authority';
6
+ import { ChevronDown } from 'lucide-react';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
+ import { z } from 'zod';
9
+
10
+ var Activity = Activity$1 ?? function ActivityFallback({
11
+ children,
12
+ mode
13
+ }) {
14
+ return /* @__PURE__ */ jsx("div", { "data-activity-mode": mode, children });
15
+ };
16
+ var AccordionContext = createContext({});
17
+ var accordionVariants = cva("w-full", {
18
+ variants: {},
19
+ defaultVariants: {}
20
+ });
21
+ var accordionItemVariants = cva(
22
+ [
23
+ "border-b border-[var(--border)]",
24
+ // Last item has no border (handled by last:border-b-0)
25
+ "last:border-b-0"
26
+ ].join(" "),
27
+ {
28
+ variants: {},
29
+ defaultVariants: {}
30
+ }
31
+ );
32
+ var accordionTriggerVariants = cva(
33
+ [
34
+ // Layout
35
+ "flex flex-1 items-center justify-between py-4 font-medium w-full",
36
+ // Text styling
37
+ "text-sm text-[var(--content-foreground)]",
38
+ // Hover state
39
+ "hover:underline",
40
+ // Focus visible ring (WCAG 2.4.13)
41
+ "focus-visible:outline-none focus-visible:ring-2",
42
+ "focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2",
43
+ "focus-visible:ring-offset-[var(--content-background)]",
44
+ // WCAG 2.2 AAA: 44px minimum touch target
45
+ "min-h-[44px]",
46
+ // Disabled state
47
+ "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
48
+ // Transition for smooth interactions
49
+ "transition-all"
50
+ ].join(" "),
51
+ {
52
+ variants: {},
53
+ defaultVariants: {}
54
+ }
55
+ );
56
+ var accordionChevronVariants = cva(
57
+ [
58
+ "h-4 w-4 shrink-0",
59
+ "text-[var(--menu-muted)]",
60
+ // Smooth rotation transition
61
+ "transition-transform duration-200 ease-out",
62
+ // Reduced motion support
63
+ "motion-reduce:transition-none"
64
+ ].join(" "),
65
+ {
66
+ variants: {
67
+ isExpanded: {
68
+ true: "rotate-180",
69
+ false: "rotate-0"
70
+ }
71
+ },
72
+ defaultVariants: {
73
+ isExpanded: false
74
+ }
75
+ }
76
+ );
77
+ var accordionContentVariants = cva(
78
+ [
79
+ "overflow-hidden",
80
+ "text-sm text-[var(--menu-muted)]"
81
+ ].join(" "),
82
+ {
83
+ variants: {},
84
+ defaultVariants: {}
85
+ }
86
+ );
87
+ var accordionContentInnerVariants = cva("pb-4 pt-0", {
88
+ variants: {},
89
+ defaultVariants: {}
90
+ });
91
+ function getHeadingLevel(level) {
92
+ const levelMap = {
93
+ h1: 1,
94
+ h2: 2,
95
+ h3: 3,
96
+ h4: 4,
97
+ h5: 5,
98
+ h6: 6
99
+ };
100
+ return levelMap[level];
101
+ }
102
+ function getFirstAccordionItemId(children) {
103
+ const childArray = Children.toArray(children);
104
+ for (const child of childArray) {
105
+ if (isValidElement(child)) {
106
+ const childProps = child.props;
107
+ if (childProps && typeof childProps === "object" && "id" in childProps) {
108
+ return childProps.id;
109
+ }
110
+ }
111
+ }
112
+ return void 0;
113
+ }
114
+ function AccordionRoot({
115
+ type = "single",
116
+ collapsible = false,
117
+ expandedKeys,
118
+ defaultExpandedKeys,
119
+ onExpandedChange,
120
+ isDisabled = false,
121
+ disabledKeys,
122
+ className,
123
+ children,
124
+ ...props
125
+ }) {
126
+ const allowsMultipleExpanded = type === "multiple";
127
+ const effectiveDefaultExpandedKeys = useMemo(() => {
128
+ if (!collapsible && type === "single" && !defaultExpandedKeys && !expandedKeys) {
129
+ const firstItemId = getFirstAccordionItemId(children);
130
+ return firstItemId ? [firstItemId] : void 0;
131
+ }
132
+ return defaultExpandedKeys;
133
+ }, [collapsible, type, defaultExpandedKeys, expandedKeys, children]);
134
+ const contextValue = useMemo(
135
+ () => ({ disabledKeys }),
136
+ [disabledKeys]
137
+ );
138
+ return /* @__PURE__ */ jsx(AccordionContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
139
+ DisclosureGroup,
140
+ {
141
+ allowsMultipleExpanded,
142
+ expandedKeys,
143
+ defaultExpandedKeys: effectiveDefaultExpandedKeys,
144
+ onExpandedChange,
145
+ isDisabled,
146
+ className: cn(accordionVariants(), className),
147
+ ...props,
148
+ children
149
+ }
150
+ ) });
151
+ }
152
+ AccordionRoot.displayName = "Accordion";
153
+ function AccordionItemComponent({
154
+ id,
155
+ isDisabled: isDisabledProp,
156
+ className,
157
+ children,
158
+ ...props
159
+ }) {
160
+ const { disabledKeys } = useContext(AccordionContext);
161
+ const isDisabledFromKeys = disabledKeys?.includes(id) ?? false;
162
+ const isDisabled = isDisabledProp || isDisabledFromKeys;
163
+ return /* @__PURE__ */ jsx(
164
+ Disclosure,
165
+ {
166
+ id,
167
+ isDisabled,
168
+ className: composeRenderProps(
169
+ className,
170
+ (className2) => cn(accordionItemVariants(), className2)
171
+ ),
172
+ ...props,
173
+ children
174
+ }
175
+ );
176
+ }
177
+ AccordionItemComponent.displayName = "AccordionItem";
178
+ function AccordionTriggerComponent({
179
+ as: headingLevel = "h3",
180
+ icon,
181
+ hideIcon = false,
182
+ className,
183
+ children,
184
+ ...props
185
+ }) {
186
+ const state = useContext(DisclosureStateContext);
187
+ const isExpanded = state?.isExpanded ?? false;
188
+ return /* @__PURE__ */ jsx(Heading, { level: getHeadingLevel(headingLevel), children: /* @__PURE__ */ jsxs(
189
+ Button,
190
+ {
191
+ slot: "trigger",
192
+ className: composeRenderProps(
193
+ className,
194
+ (className2) => cn(accordionTriggerVariants(), className2)
195
+ ),
196
+ ...props,
197
+ children: [
198
+ /* @__PURE__ */ jsx("span", { className: "flex-1 text-left", children }),
199
+ !hideIcon && (icon ?? /* @__PURE__ */ jsx(
200
+ ChevronDown,
201
+ {
202
+ "aria-hidden": "true",
203
+ className: cn(accordionChevronVariants({ isExpanded }))
204
+ }
205
+ ))
206
+ ]
207
+ }
208
+ ) });
209
+ }
210
+ AccordionTriggerComponent.displayName = "AccordionTrigger";
211
+ function AccordionContentInner({
212
+ preserveState,
213
+ children
214
+ }) {
215
+ const state = useContext(DisclosureStateContext);
216
+ const isExpanded = state?.isExpanded ?? false;
217
+ if (preserveState) {
218
+ return /* @__PURE__ */ jsx(Activity, { mode: isExpanded ? "visible" : "hidden", children: /* @__PURE__ */ jsx("div", { className: accordionContentInnerVariants(), children }) });
219
+ }
220
+ return /* @__PURE__ */ jsx("div", { className: accordionContentInnerVariants(), children });
221
+ }
222
+ function AccordionContentComponent({
223
+ preserveState = false,
224
+ className,
225
+ children,
226
+ ...props
227
+ }) {
228
+ return /* @__PURE__ */ jsx(
229
+ DisclosurePanel,
230
+ {
231
+ className: composeRenderProps(
232
+ className,
233
+ (className2) => cn(accordionContentVariants(), "animate-accordion", className2)
234
+ ),
235
+ ...props,
236
+ children: /* @__PURE__ */ jsx(AccordionContentInner, { preserveState, children })
237
+ }
238
+ );
239
+ }
240
+ AccordionContentComponent.displayName = "AccordionContent";
241
+ var Accordion = AccordionRoot;
242
+ var AccordionItem = AccordionItemComponent;
243
+ var AccordionTrigger = AccordionTriggerComponent;
244
+ var AccordionContent = AccordionContentComponent;
245
+ var AccordionTypeSchema = z.enum(["single", "multiple"]);
246
+ var HeadingLevelSchema = z.enum(["h1", "h2", "h3", "h4", "h5", "h6"]);
247
+ var KeySchema = z.union([z.string(), z.number()]);
248
+ var AccordionPropsSchema = BaseComponentPropsSchema.extend({
249
+ // Expansion mode: 'single' (one at a time) or 'multiple' (any number)
250
+ type: AccordionTypeSchema.optional().default("single"),
251
+ // Allow all items to be collapsed (only applies to type="single")
252
+ // When false, one item must always be expanded
253
+ collapsible: z.boolean().optional().default(false),
254
+ // Controlled mode: currently expanded keys
255
+ expandedKeys: z.custom().optional(),
256
+ // Uncontrolled mode: initial expanded keys
257
+ defaultExpandedKeys: z.array(KeySchema).optional(),
258
+ // Expansion change handler
259
+ onExpandedChange: z.custom().optional(),
260
+ // Disable all items
261
+ isDisabled: z.boolean().optional().default(false),
262
+ // Keys of items to disable individually
263
+ disabledKeys: z.array(KeySchema).optional(),
264
+ // Children: AccordionItem components
265
+ children: z.custom()
266
+ });
267
+ var AccordionItemPropsSchema = BaseComponentPropsSchema.extend({
268
+ // Unique identifier (required)
269
+ id: KeySchema,
270
+ // Disable this specific item
271
+ isDisabled: z.boolean().optional(),
272
+ // Children: AccordionTrigger + AccordionContent
273
+ children: z.custom()
274
+ });
275
+ var AccordionTriggerPropsSchema = BaseComponentPropsSchema.extend({
276
+ // Heading level for proper document structure (default: h3)
277
+ as: HeadingLevelSchema.optional().default("h3"),
278
+ // Custom icon to replace default chevron
279
+ icon: z.custom().optional(),
280
+ // Hide the expand/collapse icon entirely
281
+ hideIcon: z.boolean().optional().default(false),
282
+ // Trigger content (text, icons, custom content)
283
+ children: z.custom()
284
+ });
285
+ var AccordionContentPropsSchema = BaseComponentPropsSchema.extend({
286
+ // Preserve component state when collapsed using React Activity API
287
+ // When true, wraps content in <Activity> component
288
+ // Effects are cleaned up when hidden, restored when visible
289
+ preserveState: z.boolean().optional().default(false),
290
+ // Panel content
291
+ children: z.custom()
292
+ });
293
+
294
+ export { Accordion, AccordionContent, AccordionContentPropsSchema, AccordionItem, AccordionItemPropsSchema, AccordionPropsSchema, AccordionTrigger, AccordionTriggerPropsSchema, AccordionTypeSchema, HeadingLevelSchema, KeySchema, accordionChevronVariants, accordionContentInnerVariants, accordionContentVariants, accordionItemVariants, accordionTriggerVariants, accordionVariants };
295
+ //# sourceMappingURL=chunk-NYQYHT76.mjs.map
296
+ //# sourceMappingURL=chunk-NYQYHT76.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/elements/Accordion/Accordion.tsx","../src/elements/Accordion/Accordion.types.ts"],"names":["ReactActivity","className"],"mappings":"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","file":"chunk-NYQYHT76.mjs","sourcesContent":["'use client';\n\n/**\n * Accordion Component - Implementation\n *\n * Accessible accordion/disclosure group component combining React Aria primitives with CVA styling.\n * Follows Themis library patterns with compound component structure and direct named exports.\n *\n * Key Features:\n * - React Aria DisclosureGroup for full accessibility (WCAG 2.2 AAA)\n * - CVA variants for consistent styling\n * - React 19.2 Activity API for state preservation (preserveState prop)\n * - Single/Multiple expansion modes\n * - Controlled and uncontrolled state management\n * - Configurable heading levels for document structure\n * - Custom icon support\n *\n * @see accordion-prd.md (Full requirements)\n * @see Accordion.types.ts (Zod schemas)\n * @see plan.md (Implementation approach)\n */\n\n// React 19.2 Activity API - may not be available in all builds\n// Import conditionally to support environments where Activity is unavailable\nimport {\n Activity as ReactActivity,\n type ReactNode,\n type ReactElement,\n useMemo,\n useContext,\n createContext,\n Children,\n isValidElement,\n} from 'react';\n\n// Activity component with fallback for environments where it's not available\n// The fallback simply renders children directly - no state preservation when Activity unavailable\nconst Activity = ReactActivity ?? function ActivityFallback({\n children,\n mode,\n}: {\n children: ReactNode;\n mode: 'visible' | 'hidden';\n}): ReactElement {\n return <div data-activity-mode={mode}>{children}</div>;\n};\n\nimport {\n DisclosureGroup,\n Disclosure,\n DisclosurePanel,\n Heading,\n Button,\n composeRenderProps,\n DisclosureStateContext,\n type Key as AriaKey,\n} from 'react-aria-components';\nimport { cva } from 'class-variance-authority';\nimport { ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type {\n AccordionProps,\n AccordionItemProps,\n AccordionTriggerProps,\n AccordionContentProps,\n HeadingLevel,\n} from './Accordion.types';\n\n// ============================================================================\n// Context for disabledKeys\n// ============================================================================\n\n/**\n * Context to pass disabledKeys from Accordion to AccordionItem\n * Since DisclosureGroup doesn't support disabledKeys directly, we handle it via context\n */\ninterface AccordionContextValue {\n disabledKeys?: (string | number)[];\n}\n\nconst AccordionContext = createContext<AccordionContextValue>({});\n\n// ============================================================================\n// CVA Variants\n// ============================================================================\n\n/**\n * Accordion root CVA variants\n *\n * @see accordion-prd.md FR-001 (Accordion Root)\n */\nexport const accordionVariants = cva('w-full', {\n variants: {},\n defaultVariants: {},\n});\n\n/**\n * AccordionItem CVA variants\n *\n * @see accordion-prd.md FR-002 (AccordionItem)\n * @see accordion-prd.md DS-001 (Visual Design - borders)\n */\nexport const accordionItemVariants = cva(\n [\n 'border-b border-[var(--border)]',\n // Last item has no border (handled by last:border-b-0)\n 'last:border-b-0',\n ].join(' '),\n {\n variants: {},\n defaultVariants: {},\n }\n);\n\n/**\n * AccordionTrigger CVA variants\n *\n * @see accordion-prd.md FR-003 (AccordionTrigger)\n * @see accordion-prd.md AR-006 (Touch Target Size - 44x44px)\n * @see accordion-prd.md DS-002 (Typography)\n */\nexport const accordionTriggerVariants = cva(\n [\n // Layout\n 'flex flex-1 items-center justify-between py-4 font-medium w-full',\n // Text styling\n 'text-sm text-[var(--content-foreground)]',\n // Hover state\n 'hover:underline',\n // Focus visible ring (WCAG 2.4.13)\n 'focus-visible:outline-none focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2',\n 'focus-visible:ring-offset-[var(--content-background)]',\n // WCAG 2.2 AAA: 44px minimum touch target\n 'min-h-[44px]',\n // Disabled state\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n // Transition for smooth interactions\n 'transition-all',\n ].join(' '),\n {\n variants: {},\n defaultVariants: {},\n }\n);\n\n/**\n * Chevron icon CVA variants\n *\n * @see accordion-prd.md FR-010 (Animated Transitions)\n */\nexport const accordionChevronVariants = cva(\n [\n 'h-4 w-4 shrink-0',\n 'text-[var(--menu-muted)]',\n // Smooth rotation transition\n 'transition-transform duration-200 ease-out',\n // Reduced motion support\n 'motion-reduce:transition-none',\n ].join(' '),\n {\n variants: {\n isExpanded: {\n true: 'rotate-180',\n false: 'rotate-0',\n },\n },\n defaultVariants: {\n isExpanded: false,\n },\n }\n);\n\n/**\n * AccordionContent CVA variants\n *\n * @see accordion-prd.md FR-004 (AccordionContent)\n * @see accordion-prd.md FR-010 (Animated Transitions)\n */\nexport const accordionContentVariants = cva(\n [\n 'overflow-hidden',\n 'text-sm text-[var(--menu-muted)]',\n ].join(' '),\n {\n variants: {},\n defaultVariants: {},\n }\n);\n\n/**\n * AccordionContent inner wrapper CVA variants\n */\nexport const accordionContentInnerVariants = cva('pb-4 pt-0', {\n variants: {},\n defaultVariants: {},\n});\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Convert heading level string to number for React Aria Heading\n */\nfunction getHeadingLevel(level: HeadingLevel): 1 | 2 | 3 | 4 | 5 | 6 {\n const levelMap: Record<HeadingLevel, 1 | 2 | 3 | 4 | 5 | 6> = {\n h1: 1,\n h2: 2,\n h3: 3,\n h4: 4,\n h5: 5,\n h6: 6,\n };\n return levelMap[level];\n}\n\n/**\n * Get the first AccordionItem id from children\n * Used for auto-expanding first item when collapsible={false}\n */\nfunction getFirstAccordionItemId(children: ReactNode): AriaKey | undefined {\n const childArray = Children.toArray(children);\n for (const child of childArray) {\n if (isValidElement(child)) {\n const childProps = child.props as Record<string, unknown>;\n if (childProps && typeof childProps === 'object' && 'id' in childProps) {\n return childProps.id as AriaKey;\n }\n }\n }\n return undefined;\n}\n\n// ============================================================================\n// Components\n// ============================================================================\n\n/**\n * Accordion Root Component\n *\n * Container for accordion items. Manages expansion state and provides\n * context to child components.\n *\n * @see accordion-prd.md FR-001 (Accordion Root Component)\n * @see accordion-prd.md FR-005 (Single Expansion Mode)\n * @see accordion-prd.md FR-006 (Multiple Expansion Mode)\n * @see accordion-prd.md FR-007 (Controlled Mode)\n * @see accordion-prd.md FR-008 (Uncontrolled Mode)\n *\n * @example\n * // Uncontrolled single mode\n * <Accordion type=\"single\" collapsible>\n * <AccordionItem id=\"item-1\">\n * <AccordionTrigger>Section 1</AccordionTrigger>\n * <AccordionContent>Content 1</AccordionContent>\n * </AccordionItem>\n * </Accordion>\n *\n * @example\n * // Controlled multiple mode\n * <Accordion\n * type=\"multiple\"\n * expandedKeys={expandedKeys}\n * onExpandedChange={setExpandedKeys}\n * >\n * ...\n * </Accordion>\n */\nfunction AccordionRoot({\n type = 'single',\n collapsible = false,\n expandedKeys,\n defaultExpandedKeys,\n onExpandedChange,\n isDisabled = false,\n disabledKeys,\n className,\n children,\n ...props\n}: AccordionProps) {\n // Map type prop to React Aria's allowsMultipleExpanded\n const allowsMultipleExpanded = type === 'multiple';\n\n // Auto-expand first item when collapsible={false} and no default provided\n // This ensures one item is always expanded in non-collapsible single mode\n const effectiveDefaultExpandedKeys = useMemo(() => {\n if (!collapsible && type === 'single' && !defaultExpandedKeys && !expandedKeys) {\n const firstItemId = getFirstAccordionItemId(children);\n return firstItemId ? [firstItemId] : undefined;\n }\n return defaultExpandedKeys;\n }, [collapsible, type, defaultExpandedKeys, expandedKeys, children]);\n\n // Context value for passing disabledKeys to AccordionItem\n const contextValue = useMemo(\n () => ({ disabledKeys }),\n [disabledKeys]\n );\n\n return (\n <AccordionContext.Provider value={contextValue}>\n <DisclosureGroup\n allowsMultipleExpanded={allowsMultipleExpanded}\n expandedKeys={expandedKeys as Set<AriaKey> | undefined}\n defaultExpandedKeys={effectiveDefaultExpandedKeys as Iterable<AriaKey> | undefined}\n onExpandedChange={onExpandedChange as ((keys: Set<AriaKey>) => void) | undefined}\n isDisabled={isDisabled}\n className={cn(accordionVariants(), className)}\n {...props}\n >\n {children}\n </DisclosureGroup>\n </AccordionContext.Provider>\n );\n}\n\nAccordionRoot.displayName = 'Accordion';\n\n/**\n * AccordionItem Component\n *\n * Wrapper for each expandable disclosure section.\n *\n * @see accordion-prd.md FR-002 (AccordionItem Component)\n *\n * @example\n * <AccordionItem id=\"faq-1\" isDisabled={!isAuthenticated}>\n * <AccordionTrigger>Members-only FAQ</AccordionTrigger>\n * <AccordionContent>This content is for members only.</AccordionContent>\n * </AccordionItem>\n */\nfunction AccordionItemComponent({\n id,\n isDisabled: isDisabledProp,\n className,\n children,\n ...props\n}: AccordionItemProps) {\n // Check if this item is in the disabledKeys array\n const { disabledKeys } = useContext(AccordionContext);\n const isDisabledFromKeys = disabledKeys?.includes(id as string | number) ?? false;\n const isDisabled = isDisabledProp || isDisabledFromKeys;\n\n return (\n <Disclosure\n id={id}\n isDisabled={isDisabled}\n className={composeRenderProps(className, (className) =>\n cn(accordionItemVariants(), className)\n )}\n {...props}\n >\n {children}\n </Disclosure>\n );\n}\n\nAccordionItemComponent.displayName = 'AccordionItem';\n\n/**\n * AccordionTrigger Component\n *\n * Clickable button that toggles accordion content visibility.\n * Wrapped in a Heading for proper document structure.\n *\n * @see accordion-prd.md FR-003 (AccordionTrigger Component)\n * @see accordion-prd.md AR-002 (ARIA Attributes)\n * @see accordion-prd.md AR-003 (Keyboard Navigation)\n *\n * @example\n * // Default with chevron\n * <AccordionTrigger>Is it accessible?</AccordionTrigger>\n *\n * @example\n * // Custom heading level\n * <AccordionTrigger as=\"h2\">Important Section</AccordionTrigger>\n *\n * @example\n * // Custom icon\n * <AccordionTrigger icon={<PlusIcon className=\"h-4 w-4\" />}>\n * Click to expand\n * </AccordionTrigger>\n */\nfunction AccordionTriggerComponent({\n as: headingLevel = 'h3',\n icon,\n hideIcon = false,\n className,\n children,\n ...props\n}: AccordionTriggerProps) {\n // Access disclosure state from context\n const state = useContext(DisclosureStateContext);\n const isExpanded = state?.isExpanded ?? false;\n\n return (\n <Heading level={getHeadingLevel(headingLevel)}>\n <Button\n slot=\"trigger\"\n className={composeRenderProps(className, (className) =>\n cn(accordionTriggerVariants(), className)\n )}\n {...props}\n >\n <span className=\"flex-1 text-left\">{children}</span>\n {!hideIcon && (\n icon ?? (\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(accordionChevronVariants({ isExpanded }))}\n />\n )\n )}\n </Button>\n </Heading>\n );\n}\n\nAccordionTriggerComponent.displayName = 'AccordionTrigger';\n\n/**\n * AccordionContent Component\n *\n * Expandable container for accordion content.\n * Supports animated height transitions and React Activity state preservation.\n *\n * @see accordion-prd.md FR-004 (AccordionContent Component)\n * @see accordion-prd.md FR-010 (Animated Transitions)\n *\n * @example\n * // Standard content\n * <AccordionContent>\n * Yes. It adheres to the WAI-ARIA design pattern.\n * </AccordionContent>\n *\n * @example\n * // With state preservation\n * <AccordionContent preserveState>\n * <form>\n * <input name=\"email\" />\n * </form>\n * </AccordionContent>\n */\n/**\n * Inner component for AccordionContent with state preservation\n * Uses DisclosureStateContext to get isExpanded state\n */\nfunction AccordionContentInner({\n preserveState,\n children,\n}: {\n preserveState: boolean;\n children: ReactNode;\n}) {\n const state = useContext(DisclosureStateContext);\n const isExpanded = state?.isExpanded ?? false;\n\n if (preserveState) {\n return (\n <Activity mode={isExpanded ? 'visible' : 'hidden'}>\n <div className={accordionContentInnerVariants()}>{children}</div>\n </Activity>\n );\n }\n\n return <div className={accordionContentInnerVariants()}>{children}</div>;\n}\n\nfunction AccordionContentComponent({\n preserveState = false,\n className,\n children,\n ...props\n}: AccordionContentProps) {\n return (\n <DisclosurePanel\n className={composeRenderProps(className, (className) =>\n cn(accordionContentVariants(), 'animate-accordion', className)\n )}\n {...props}\n >\n <AccordionContentInner preserveState={preserveState}>\n {children}\n </AccordionContentInner>\n </DisclosurePanel>\n );\n}\n\nAccordionContentComponent.displayName = 'AccordionContent';\n\n// ============================================================================\n// Exports\n// ============================================================================\n\n/**\n * Direct named exports (not Object.assign compound pattern)\n *\n * Accordion follows React Aria's direct export pattern because:\n * - Simpler structure (only 4 components)\n * - Better tree-shaking with named exports\n * - Clearer imports: import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from '...'\n */\nexport const Accordion = AccordionRoot;\nexport const AccordionItem = AccordionItemComponent;\nexport const AccordionTrigger = AccordionTriggerComponent;\nexport const AccordionContent = AccordionContentComponent;\n\n// Re-export types for convenience\nexport type {\n AccordionProps,\n AccordionItemProps,\n AccordionTriggerProps,\n AccordionContentProps,\n};\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode, Key } from 'react';\n\n/**\n * Accordion Type Schema\n * Defines expansion mode: single (one item at a time) or multiple (any number)\n *\n * @see accordion-prd.md FR-005, FR-006 (Expansion Modes)\n */\nexport const AccordionTypeSchema = z.enum(['single', 'multiple']);\nexport type AccordionType = z.infer<typeof AccordionTypeSchema>;\n\n/**\n * Heading Level Schema\n * Configurable heading level for document structure (h1-h6)\n *\n * @see accordion-prd.md FR-003 (AccordionTrigger with as prop)\n */\nexport const HeadingLevelSchema = z.enum(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']);\nexport type HeadingLevel = z.infer<typeof HeadingLevelSchema>;\n\n/**\n * Key Schema for item identification\n * Supports both string and number keys per React Aria convention\n */\nexport const KeySchema = z.union([z.string(), z.number()]);\n\n/**\n * Accordion root component props schema\n *\n * @see accordion-prd.md FR-001 (Accordion Root Component)\n * @see accordion-prd.md FR-007 (Controlled Mode)\n * @see accordion-prd.md FR-008 (Uncontrolled Mode)\n */\nexport const AccordionPropsSchema = BaseComponentPropsSchema.extend({\n // Expansion mode: 'single' (one at a time) or 'multiple' (any number)\n type: AccordionTypeSchema.optional().default('single'),\n\n // Allow all items to be collapsed (only applies to type=\"single\")\n // When false, one item must always be expanded\n collapsible: z.boolean().optional().default(false),\n\n // Controlled mode: currently expanded keys\n expandedKeys: z.custom<Set<Key>>().optional(),\n\n // Uncontrolled mode: initial expanded keys\n defaultExpandedKeys: z.array(KeySchema).optional(),\n\n // Expansion change handler\n onExpandedChange: z.custom<(keys: Set<Key>) => void>().optional(),\n\n // Disable all items\n isDisabled: z.boolean().optional().default(false),\n\n // Keys of items to disable individually\n disabledKeys: z.array(KeySchema).optional(),\n\n // Children: AccordionItem components\n children: z.custom<ReactNode>(),\n});\n\nexport type AccordionProps = z.infer<typeof AccordionPropsSchema>;\n\n/**\n * AccordionItem component props schema\n *\n * @see accordion-prd.md FR-002 (AccordionItem Component)\n */\nexport const AccordionItemPropsSchema = BaseComponentPropsSchema.extend({\n // Unique identifier (required)\n id: KeySchema,\n\n // Disable this specific item\n isDisabled: z.boolean().optional(),\n\n // Children: AccordionTrigger + AccordionContent\n children: z.custom<ReactNode>(),\n});\n\nexport type AccordionItemProps = z.infer<typeof AccordionItemPropsSchema>;\n\n/**\n * AccordionTrigger component props schema\n *\n * @see accordion-prd.md FR-003 (AccordionTrigger Component)\n */\nexport const AccordionTriggerPropsSchema = BaseComponentPropsSchema.extend({\n // Heading level for proper document structure (default: h3)\n as: HeadingLevelSchema.optional().default('h3'),\n\n // Custom icon to replace default chevron\n icon: z.custom<ReactNode>().optional(),\n\n // Hide the expand/collapse icon entirely\n hideIcon: z.boolean().optional().default(false),\n\n // Trigger content (text, icons, custom content)\n children: z.custom<ReactNode>(),\n});\n\nexport type AccordionTriggerProps = z.infer<typeof AccordionTriggerPropsSchema>;\n\n/**\n * AccordionContent component props schema\n *\n * @see accordion-prd.md FR-004 (AccordionContent Component)\n * @see accordion-prd.md FR-010 (Animated Transitions)\n */\nexport const AccordionContentPropsSchema = BaseComponentPropsSchema.extend({\n // Preserve component state when collapsed using React Activity API\n // When true, wraps content in <Activity> component\n // Effects are cleaned up when hidden, restored when visible\n preserveState: z.boolean().optional().default(false),\n\n // Panel content\n children: z.custom<ReactNode>(),\n});\n\nexport type AccordionContentProps = z.infer<typeof AccordionContentPropsSchema>;\n"]}