@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,1153 @@
1
+ /**
2
+ * RadioGroup Component Stories
3
+ * Storybook stories for RadioGroup component demonstrating all variants, sizes, and states
4
+ *
5
+ * @see React Aria RadioGroup: https://react-spectrum.adobe.com/react-aria/RadioGroup.html
6
+ * @see radiogroup-prd.md (Product Requirements)
7
+ * @see plan.md (11 Key Clarifications)
8
+ */
9
+
10
+ import { useState } from 'react';
11
+ import type { Meta, StoryObj } from '@storybook/nextjs';
12
+ import { RadioGroup, Radio } from './RadioGroup';
13
+
14
+ const meta = {
15
+ title: 'Elements/RadioGroup',
16
+ component: RadioGroup,
17
+ parameters: {
18
+ layout: 'centered',
19
+ docs: {
20
+ description: {
21
+ component:
22
+ 'Accessible single-selection radio group with React Aria primitives, CVA variant styling, and WCAG 2.2 AAA compliance (7:1 contrast ratio, 44px+ touch targets). Features bordered container design with explicit touch targets.',
23
+ },
24
+ },
25
+ },
26
+ tags: ['autodocs'],
27
+ argTypes: {
28
+ variant: {
29
+ control: 'select',
30
+ options: ['default', 'destructive'],
31
+ description: 'RadioGroup style variant',
32
+ table: {
33
+ defaultValue: { summary: 'default' },
34
+ },
35
+ },
36
+ size: {
37
+ control: 'select',
38
+ options: ['sm', 'default', 'lg'],
39
+ description: 'RadioGroup size (affects all radio items)',
40
+ table: {
41
+ defaultValue: { summary: 'default' },
42
+ },
43
+ },
44
+ orientation: {
45
+ control: 'select',
46
+ options: ['vertical', 'horizontal'],
47
+ description: 'Layout orientation of radio items',
48
+ table: {
49
+ defaultValue: { summary: 'vertical' },
50
+ },
51
+ },
52
+ isDisabled: {
53
+ control: 'boolean',
54
+ description: 'Disable all radio items',
55
+ table: {
56
+ defaultValue: { summary: 'false' },
57
+ },
58
+ },
59
+ isReadOnly: {
60
+ control: 'boolean',
61
+ description: 'Make radio group read-only (can focus but not change)',
62
+ table: {
63
+ defaultValue: { summary: 'false' },
64
+ },
65
+ },
66
+ isRequired: {
67
+ control: 'boolean',
68
+ description: 'Mark as required field',
69
+ table: {
70
+ defaultValue: { summary: 'false' },
71
+ },
72
+ },
73
+ isInvalid: {
74
+ control: 'boolean',
75
+ description: 'Show error state',
76
+ table: {
77
+ defaultValue: { summary: 'false' },
78
+ },
79
+ },
80
+ label: {
81
+ control: 'text',
82
+ description: 'Group label text',
83
+ },
84
+ description: {
85
+ control: 'text',
86
+ description: 'Group description text',
87
+ },
88
+ errorMessage: {
89
+ control: 'text',
90
+ description: 'Error message (shown when isInvalid is true)',
91
+ },
92
+ },
93
+ } satisfies Meta<typeof RadioGroup>;
94
+
95
+ export default meta;
96
+ type Story = StoryObj<typeof meta>;
97
+
98
+ // ============================================================================
99
+ // Basic Stories
100
+ // ============================================================================
101
+
102
+ export const Default: Story = {
103
+ render: (args) => (
104
+ <RadioGroup {...args}>
105
+ <Radio value="option1">
106
+ <Radio.Label>Option 1</Radio.Label>
107
+ </Radio>
108
+ <Radio value="option2">
109
+ <Radio.Label>Option 2</Radio.Label>
110
+ </Radio>
111
+ <Radio value="option3">
112
+ <Radio.Label>Option 3</Radio.Label>
113
+ </Radio>
114
+ </RadioGroup>
115
+ ),
116
+ args: {
117
+ 'aria-label': 'Select an option',
118
+ },
119
+ };
120
+
121
+ export const WithLabel: Story = {
122
+ render: (args) => (
123
+ <RadioGroup {...args}>
124
+ <Radio value="email">
125
+ <Radio.Label>Email</Radio.Label>
126
+ </Radio>
127
+ <Radio value="sms">
128
+ <Radio.Label>SMS</Radio.Label>
129
+ </Radio>
130
+ <Radio value="push">
131
+ <Radio.Label>Push Notifications</Radio.Label>
132
+ </Radio>
133
+ </RadioGroup>
134
+ ),
135
+ args: {
136
+ label: 'Notification Method',
137
+ },
138
+ };
139
+
140
+ export const WithDescription: Story = {
141
+ render: (args) => (
142
+ <RadioGroup {...args}>
143
+ <Radio value="standard">
144
+ <Radio.Label>Standard Delivery</Radio.Label>
145
+ <Radio.Description>5-7 business days</Radio.Description>
146
+ </Radio>
147
+ <Radio value="express">
148
+ <Radio.Label>Express Delivery</Radio.Label>
149
+ <Radio.Description>2-3 business days</Radio.Description>
150
+ </Radio>
151
+ <Radio value="overnight">
152
+ <Radio.Label>Overnight Delivery</Radio.Label>
153
+ <Radio.Description>Next business day</Radio.Description>
154
+ </Radio>
155
+ </RadioGroup>
156
+ ),
157
+ args: {
158
+ label: 'Shipping Method',
159
+ description: 'Choose how you want your order delivered',
160
+ },
161
+ };
162
+
163
+ // ============================================================================
164
+ // Variant Stories
165
+ // ============================================================================
166
+
167
+ export const Destructive: Story = {
168
+ render: (args) => (
169
+ <RadioGroup {...args}>
170
+ <Radio value="keep">
171
+ <Radio.Label>Keep my account</Radio.Label>
172
+ <Radio.Description>Your data will be preserved</Radio.Description>
173
+ </Radio>
174
+ <Radio value="deactivate">
175
+ <Radio.Label>Deactivate account</Radio.Label>
176
+ <Radio.Description>You can reactivate later</Radio.Description>
177
+ </Radio>
178
+ <Radio value="delete">
179
+ <Radio.Label>Delete permanently</Radio.Label>
180
+ <Radio.Description>This cannot be undone</Radio.Description>
181
+ </Radio>
182
+ </RadioGroup>
183
+ ),
184
+ args: {
185
+ variant: 'destructive',
186
+ label: 'Account Action',
187
+ description: 'Choose what to do with your account',
188
+ },
189
+ };
190
+
191
+ export const AllVariants: Story = {
192
+ render: () => (
193
+ <div className="flex flex-col gap-8">
194
+ <RadioGroup variant="default" label="Default Variant" defaultValue="opt1">
195
+ <Radio value="opt1">
196
+ <Radio.Label>Option 1</Radio.Label>
197
+ </Radio>
198
+ <Radio value="opt2">
199
+ <Radio.Label>Option 2</Radio.Label>
200
+ </Radio>
201
+ </RadioGroup>
202
+ <RadioGroup variant="destructive" label="Destructive Variant" defaultValue="opt1">
203
+ <Radio value="opt1">
204
+ <Radio.Label>Option 1</Radio.Label>
205
+ </Radio>
206
+ <Radio value="opt2">
207
+ <Radio.Label>Option 2</Radio.Label>
208
+ </Radio>
209
+ </RadioGroup>
210
+ </div>
211
+ ),
212
+ parameters: {
213
+ docs: {
214
+ description: {
215
+ story: 'All 2 RadioGroup variants in one view (no outline variant per clarification).',
216
+ },
217
+ },
218
+ },
219
+ };
220
+
221
+ // ============================================================================
222
+ // Size Stories
223
+ // ============================================================================
224
+
225
+ export const Small: Story = {
226
+ render: (args) => (
227
+ <RadioGroup {...args}>
228
+ <Radio value="yes">
229
+ <Radio.Label>Yes</Radio.Label>
230
+ </Radio>
231
+ <Radio value="no">
232
+ <Radio.Label>No</Radio.Label>
233
+ </Radio>
234
+ </RadioGroup>
235
+ ),
236
+ args: {
237
+ size: 'sm',
238
+ label: 'Small size (44px min-height)',
239
+ },
240
+ };
241
+
242
+ export const Large: Story = {
243
+ render: (args) => (
244
+ <RadioGroup {...args}>
245
+ <Radio value="agree">
246
+ <Radio.Label>I agree to the terms</Radio.Label>
247
+ <Radio.Description>By selecting this, you accept our terms of service</Radio.Description>
248
+ </Radio>
249
+ <Radio value="disagree">
250
+ <Radio.Label>I do not agree</Radio.Label>
251
+ <Radio.Description>You won't be able to continue without agreeing</Radio.Description>
252
+ </Radio>
253
+ </RadioGroup>
254
+ ),
255
+ args: {
256
+ size: 'lg',
257
+ label: 'Large size (56px min-height)',
258
+ },
259
+ };
260
+
261
+ export const AllSizes: Story = {
262
+ render: () => (
263
+ <div className="flex flex-col gap-8">
264
+ <RadioGroup size="sm" label="Small (44px)" defaultValue="opt1">
265
+ <Radio value="opt1">
266
+ <Radio.Label>Small Option</Radio.Label>
267
+ </Radio>
268
+ <Radio value="opt2">
269
+ <Radio.Label>Small Option</Radio.Label>
270
+ </Radio>
271
+ </RadioGroup>
272
+ <RadioGroup size="default" label="Default (48px)" defaultValue="opt1">
273
+ <Radio value="opt1">
274
+ <Radio.Label>Default Option</Radio.Label>
275
+ </Radio>
276
+ <Radio value="opt2">
277
+ <Radio.Label>Default Option</Radio.Label>
278
+ </Radio>
279
+ </RadioGroup>
280
+ <RadioGroup size="lg" label="Large (56px)" defaultValue="opt1">
281
+ <Radio value="opt1">
282
+ <Radio.Label>Large Option</Radio.Label>
283
+ </Radio>
284
+ <Radio value="opt2">
285
+ <Radio.Label>Large Option</Radio.Label>
286
+ </Radio>
287
+ </RadioGroup>
288
+ </div>
289
+ ),
290
+ parameters: {
291
+ docs: {
292
+ description: {
293
+ story: 'All 3 RadioGroup sizes in one view. All maintain 44px+ minimum touch targets for WCAG 2.2 AAA compliance.',
294
+ },
295
+ },
296
+ },
297
+ };
298
+
299
+ // ============================================================================
300
+ // Orientation Stories
301
+ // ============================================================================
302
+
303
+ export const Horizontal: Story = {
304
+ render: (args) => (
305
+ <RadioGroup {...args}>
306
+ <Radio value="left">
307
+ <Radio.Label>Left</Radio.Label>
308
+ </Radio>
309
+ <Radio value="center">
310
+ <Radio.Label>Center</Radio.Label>
311
+ </Radio>
312
+ <Radio value="right">
313
+ <Radio.Label>Right</Radio.Label>
314
+ </Radio>
315
+ </RadioGroup>
316
+ ),
317
+ args: {
318
+ orientation: 'horizontal',
319
+ label: 'Text Alignment',
320
+ },
321
+ };
322
+
323
+ export const HorizontalWrapping: Story = {
324
+ render: (args) => (
325
+ <div className="w-80">
326
+ <RadioGroup {...args}>
327
+ <Radio value="red">
328
+ <Radio.Label>Red</Radio.Label>
329
+ </Radio>
330
+ <Radio value="green">
331
+ <Radio.Label>Green</Radio.Label>
332
+ </Radio>
333
+ <Radio value="blue">
334
+ <Radio.Label>Blue</Radio.Label>
335
+ </Radio>
336
+ <Radio value="yellow">
337
+ <Radio.Label>Yellow</Radio.Label>
338
+ </Radio>
339
+ <Radio value="purple">
340
+ <Radio.Label>Purple</Radio.Label>
341
+ </Radio>
342
+ </RadioGroup>
343
+ </div>
344
+ ),
345
+ args: {
346
+ orientation: 'horizontal',
347
+ label: 'Color Selection',
348
+ description: 'Items wrap to next line when container is constrained',
349
+ },
350
+ };
351
+
352
+ // ============================================================================
353
+ // State Stories
354
+ // ============================================================================
355
+
356
+ export const WithDefaultValue: Story = {
357
+ render: (args) => (
358
+ <RadioGroup {...args}>
359
+ <Radio value="monthly">
360
+ <Radio.Label>Monthly</Radio.Label>
361
+ <Radio.Description>$9.99/month</Radio.Description>
362
+ </Radio>
363
+ <Radio value="yearly">
364
+ <Radio.Label>Yearly (Save 20%)</Radio.Label>
365
+ <Radio.Description>$95.88/year</Radio.Description>
366
+ </Radio>
367
+ </RadioGroup>
368
+ ),
369
+ args: {
370
+ label: 'Billing Cycle',
371
+ defaultValue: 'yearly',
372
+ },
373
+ };
374
+
375
+ export const Disabled: Story = {
376
+ render: (args) => (
377
+ <RadioGroup {...args}>
378
+ <Radio value="opt1">
379
+ <Radio.Label>Option 1</Radio.Label>
380
+ </Radio>
381
+ <Radio value="opt2">
382
+ <Radio.Label>Option 2</Radio.Label>
383
+ </Radio>
384
+ <Radio value="opt3">
385
+ <Radio.Label>Option 3</Radio.Label>
386
+ </Radio>
387
+ </RadioGroup>
388
+ ),
389
+ args: {
390
+ label: 'Disabled RadioGroup',
391
+ isDisabled: true,
392
+ defaultValue: 'opt2',
393
+ },
394
+ };
395
+
396
+ export const DisabledItem: Story = {
397
+ render: (args) => (
398
+ <RadioGroup {...args}>
399
+ <Radio value="available">
400
+ <Radio.Label>Available Option</Radio.Label>
401
+ </Radio>
402
+ <Radio value="unavailable" isDisabled>
403
+ <Radio.Label>Unavailable (Sold Out)</Radio.Label>
404
+ </Radio>
405
+ <Radio value="another">
406
+ <Radio.Label>Another Option</Radio.Label>
407
+ </Radio>
408
+ </RadioGroup>
409
+ ),
410
+ args: {
411
+ label: 'Individual Item Disabled',
412
+ description: 'Only specific items can be disabled',
413
+ },
414
+ };
415
+
416
+ export const ReadOnly: Story = {
417
+ render: (args) => (
418
+ <RadioGroup {...args}>
419
+ <Radio value="starter">
420
+ <Radio.Label>Starter Plan</Radio.Label>
421
+ </Radio>
422
+ <Radio value="pro">
423
+ <Radio.Label>Pro Plan</Radio.Label>
424
+ </Radio>
425
+ <Radio value="enterprise">
426
+ <Radio.Label>Enterprise Plan</Radio.Label>
427
+ </Radio>
428
+ </RadioGroup>
429
+ ),
430
+ args: {
431
+ label: 'Current Plan',
432
+ description: 'Contact support to change your plan',
433
+ isReadOnly: true,
434
+ defaultValue: 'pro',
435
+ },
436
+ };
437
+
438
+ export const Required: Story = {
439
+ render: (args) => (
440
+ <RadioGroup {...args}>
441
+ <Radio value="agree">
442
+ <Radio.Label>I agree to the terms and conditions</Radio.Label>
443
+ </Radio>
444
+ <Radio value="disagree">
445
+ <Radio.Label>I do not agree</Radio.Label>
446
+ </Radio>
447
+ </RadioGroup>
448
+ ),
449
+ args: {
450
+ label: 'Terms Agreement',
451
+ isRequired: true,
452
+ },
453
+ };
454
+
455
+ export const Invalid: Story = {
456
+ render: (args) => (
457
+ <RadioGroup {...args}>
458
+ <Radio value="opt1">
459
+ <Radio.Label>Option 1</Radio.Label>
460
+ </Radio>
461
+ <Radio value="opt2">
462
+ <Radio.Label>Option 2</Radio.Label>
463
+ </Radio>
464
+ <Radio value="opt3">
465
+ <Radio.Label>Option 3</Radio.Label>
466
+ </Radio>
467
+ </RadioGroup>
468
+ ),
469
+ args: {
470
+ label: 'Select an option',
471
+ isInvalid: true,
472
+ errorMessage: 'Please select one of the options to continue',
473
+ isRequired: true,
474
+ },
475
+ parameters: {
476
+ docs: {
477
+ description: {
478
+ story: 'Error state with ALL items showing destructive border (cognitive accessibility per clarification).',
479
+ },
480
+ },
481
+ },
482
+ };
483
+
484
+ // ============================================================================
485
+ // Controlled Example
486
+ // ============================================================================
487
+
488
+ export const ControlledExample: Story = {
489
+ render: () => {
490
+ const [value, setValue] = useState<string | null>(null);
491
+
492
+ return (
493
+ <div className="space-y-4">
494
+ <RadioGroup value={value} onChange={setValue} label="Controlled RadioGroup">
495
+ <Radio value="option1">
496
+ <Radio.Label>Option 1</Radio.Label>
497
+ </Radio>
498
+ <Radio value="option2">
499
+ <Radio.Label>Option 2</Radio.Label>
500
+ </Radio>
501
+ <Radio value="option3">
502
+ <Radio.Label>Option 3</Radio.Label>
503
+ </Radio>
504
+ </RadioGroup>
505
+ <div className="text-sm text-[var(--muted-foreground)]">
506
+ Selected value: {value ?? 'none'}
507
+ </div>
508
+ <button
509
+ onClick={() => setValue(value === 'option1' ? 'option2' : 'option1')}
510
+ className="rounded-md bg-[var(--primary)] px-4 py-2 text-sm text-[var(--primary-foreground)]"
511
+ >
512
+ Toggle from outside
513
+ </button>
514
+ </div>
515
+ );
516
+ },
517
+ parameters: {
518
+ docs: {
519
+ description: {
520
+ story: 'Controlled RadioGroup example with external state management.',
521
+ },
522
+ },
523
+ },
524
+ };
525
+
526
+ // ============================================================================
527
+ // Real-World Examples
528
+ // ============================================================================
529
+
530
+ export const PaymentMethod: Story = {
531
+ render: () => (
532
+ <div className="w-96 rounded-lg border border-[var(--border)] bg-[var(--background)] p-6">
533
+ <RadioGroup label="Payment Method" defaultValue="card">
534
+ <Radio value="card">
535
+ <div className="flex items-center gap-2">
536
+ <span className="text-lg">💳</span>
537
+ <div>
538
+ <Radio.Label>Credit Card</Radio.Label>
539
+ <Radio.Description>Visa, Mastercard, Amex</Radio.Description>
540
+ </div>
541
+ </div>
542
+ </Radio>
543
+ <Radio value="paypal">
544
+ <div className="flex items-center gap-2">
545
+ <span className="text-lg">🅿️</span>
546
+ <div>
547
+ <Radio.Label>PayPal</Radio.Label>
548
+ <Radio.Description>Pay with your PayPal account</Radio.Description>
549
+ </div>
550
+ </div>
551
+ </Radio>
552
+ <Radio value="bank">
553
+ <div className="flex items-center gap-2">
554
+ <span className="text-lg">🏦</span>
555
+ <div>
556
+ <Radio.Label>Bank Transfer</Radio.Label>
557
+ <Radio.Description>Direct bank transfer (2-3 days)</Radio.Description>
558
+ </div>
559
+ </div>
560
+ </Radio>
561
+ </RadioGroup>
562
+ </div>
563
+ ),
564
+ parameters: {
565
+ docs: {
566
+ description: {
567
+ story: 'Payment method selection with icons and descriptions.',
568
+ },
569
+ },
570
+ },
571
+ };
572
+
573
+ export const PricingPlans: Story = {
574
+ render: () => (
575
+ <div className="w-[500px] rounded-lg border border-[var(--border)] bg-[var(--background)] p-6">
576
+ <RadioGroup label="Select Your Plan" size="lg" defaultValue="pro">
577
+ <Radio value="free">
578
+ <div className="flex w-full items-center justify-between">
579
+ <div>
580
+ <Radio.Label>Free</Radio.Label>
581
+ <Radio.Description>For individuals getting started</Radio.Description>
582
+ </div>
583
+ <span className="font-bold text-[var(--foreground)]">$0/mo</span>
584
+ </div>
585
+ </Radio>
586
+ <Radio value="pro">
587
+ <div className="flex w-full items-center justify-between">
588
+ <div>
589
+ <Radio.Label>Pro</Radio.Label>
590
+ <Radio.Description>For professionals and small teams</Radio.Description>
591
+ </div>
592
+ <span className="font-bold text-[var(--foreground)]">$19/mo</span>
593
+ </div>
594
+ </Radio>
595
+ <Radio value="enterprise">
596
+ <div className="flex w-full items-center justify-between">
597
+ <div>
598
+ <Radio.Label>Enterprise</Radio.Label>
599
+ <Radio.Description>For large organizations</Radio.Description>
600
+ </div>
601
+ <span className="font-bold text-[var(--foreground)]">Custom</span>
602
+ </div>
603
+ </Radio>
604
+ </RadioGroup>
605
+ </div>
606
+ ),
607
+ parameters: {
608
+ docs: {
609
+ description: {
610
+ story: 'Pricing plans with flexible content layout.',
611
+ },
612
+ },
613
+ },
614
+ };
615
+
616
+ export const SurveyQuestion: Story = {
617
+ render: () => (
618
+ <div className="w-96 rounded-lg border border-[var(--border)] bg-[var(--background)] p-6">
619
+ <RadioGroup
620
+ label="How satisfied are you with our service?"
621
+ orientation="horizontal"
622
+ isRequired
623
+ >
624
+ <Radio value="1">
625
+ <Radio.Label>1</Radio.Label>
626
+ </Radio>
627
+ <Radio value="2">
628
+ <Radio.Label>2</Radio.Label>
629
+ </Radio>
630
+ <Radio value="3">
631
+ <Radio.Label>3</Radio.Label>
632
+ </Radio>
633
+ <Radio value="4">
634
+ <Radio.Label>4</Radio.Label>
635
+ </Radio>
636
+ <Radio value="5">
637
+ <Radio.Label>5</Radio.Label>
638
+ </Radio>
639
+ </RadioGroup>
640
+ <div className="mt-2 flex justify-between text-xs text-[var(--muted-foreground)]">
641
+ <span>Not satisfied</span>
642
+ <span>Very satisfied</span>
643
+ </div>
644
+ </div>
645
+ ),
646
+ parameters: {
647
+ docs: {
648
+ description: {
649
+ story: 'Horizontal RadioGroup for rating/survey questions.',
650
+ },
651
+ },
652
+ },
653
+ };
654
+
655
+ export const DangerZone: Story = {
656
+ render: () => (
657
+ <div className="w-96 rounded-lg border border-[var(--destructive)] bg-[var(--background)] p-6">
658
+ <h3 className="mb-4 text-lg font-semibold text-[var(--destructive)]">Danger Zone</h3>
659
+ <RadioGroup
660
+ variant="destructive"
661
+ label="Delete your account?"
662
+ description="This action cannot be undone. All your data will be permanently deleted."
663
+ >
664
+ <Radio value="keep">
665
+ <Radio.Label>No, keep my account</Radio.Label>
666
+ </Radio>
667
+ <Radio value="delete">
668
+ <Radio.Label>Yes, delete my account and all data</Radio.Label>
669
+ </Radio>
670
+ </RadioGroup>
671
+ </div>
672
+ ),
673
+ parameters: {
674
+ docs: {
675
+ description: {
676
+ story: 'Destructive variant for dangerous actions.',
677
+ },
678
+ },
679
+ },
680
+ };
681
+
682
+ // ============================================================================
683
+ // Card-Style Radio Examples
684
+ // ============================================================================
685
+
686
+ export const CardStyleBasic: Story = {
687
+ render: () => (
688
+ <div className="w-[500px]">
689
+ <RadioGroup label="Select a plan" size="lg" defaultValue="pro">
690
+ <Radio value="starter" className="p-6">
691
+ <div className="flex w-full flex-col gap-2">
692
+ <div className="flex items-center justify-between">
693
+ <Radio.Label>Starter</Radio.Label>
694
+ <span className="rounded-full bg-[var(--muted)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]">
695
+ Free
696
+ </span>
697
+ </div>
698
+ <Radio.Description>Perfect for trying out the platform</Radio.Description>
699
+ <ul className="mt-2 space-y-1 text-sm text-[var(--muted-foreground)]">
700
+ <li>• 1 project</li>
701
+ <li>• 100 MB storage</li>
702
+ <li>• Community support</li>
703
+ </ul>
704
+ </div>
705
+ </Radio>
706
+ <Radio value="pro" className="p-6">
707
+ <div className="flex w-full flex-col gap-2">
708
+ <div className="flex items-center justify-between">
709
+ <Radio.Label>Pro</Radio.Label>
710
+ <span className="rounded-full bg-[var(--primary)] px-2 py-0.5 text-xs text-[var(--primary-foreground)]">
711
+ Popular
712
+ </span>
713
+ </div>
714
+ <Radio.Description>Best for professionals and small teams</Radio.Description>
715
+ <ul className="mt-2 space-y-1 text-sm text-[var(--muted-foreground)]">
716
+ <li>• Unlimited projects</li>
717
+ <li>• 10 GB storage</li>
718
+ <li>• Priority support</li>
719
+ <li>• Advanced analytics</li>
720
+ </ul>
721
+ <div className="mt-2 text-lg font-bold text-[var(--foreground)]">$19/month</div>
722
+ </div>
723
+ </Radio>
724
+ <Radio value="enterprise" className="p-6">
725
+ <div className="flex w-full flex-col gap-2">
726
+ <div className="flex items-center justify-between">
727
+ <Radio.Label>Enterprise</Radio.Label>
728
+ <span className="rounded-full bg-[var(--accent)] px-2 py-0.5 text-xs text-[var(--accent-foreground)]">
729
+ Custom
730
+ </span>
731
+ </div>
732
+ <Radio.Description>For large organizations with custom needs</Radio.Description>
733
+ <ul className="mt-2 space-y-1 text-sm text-[var(--muted-foreground)]">
734
+ <li>• Everything in Pro</li>
735
+ <li>• Unlimited storage</li>
736
+ <li>• Dedicated support</li>
737
+ <li>• Custom integrations</li>
738
+ <li>• SLA guarantee</li>
739
+ </ul>
740
+ <div className="mt-2 text-lg font-bold text-[var(--foreground)]">Contact us</div>
741
+ </div>
742
+ </Radio>
743
+ </RadioGroup>
744
+ </div>
745
+ ),
746
+ parameters: {
747
+ docs: {
748
+ description: {
749
+ story: 'Card-style radio items with rich content including badges, feature lists, and pricing.',
750
+ },
751
+ },
752
+ },
753
+ };
754
+
755
+ export const CardStyleWithIcons: Story = {
756
+ render: () => (
757
+ <div className="w-[600px]">
758
+ <RadioGroup
759
+ label="Choose your workspace type"
760
+ orientation="horizontal"
761
+ size="lg"
762
+ >
763
+ <Radio value="personal" className="flex-1 p-6">
764
+ <div className="flex flex-col items-center gap-3 text-center">
765
+ <div className="flex h-12 w-12 items-center justify-center rounded-full bg-[var(--primary)]/10 text-2xl">
766
+ 👤
767
+ </div>
768
+ <div>
769
+ <Radio.Label>Personal</Radio.Label>
770
+ <Radio.Description>For individual use</Radio.Description>
771
+ </div>
772
+ </div>
773
+ </Radio>
774
+ <Radio value="team" className="flex-1 p-6">
775
+ <div className="flex flex-col items-center gap-3 text-center">
776
+ <div className="flex h-12 w-12 items-center justify-center rounded-full bg-[var(--primary)]/10 text-2xl">
777
+ 👥
778
+ </div>
779
+ <div>
780
+ <Radio.Label>Team</Radio.Label>
781
+ <Radio.Description>For small teams</Radio.Description>
782
+ </div>
783
+ </div>
784
+ </Radio>
785
+ <Radio value="organization" className="flex-1 p-6">
786
+ <div className="flex flex-col items-center gap-3 text-center">
787
+ <div className="flex h-12 w-12 items-center justify-center rounded-full bg-[var(--primary)]/10 text-2xl">
788
+ 🏢
789
+ </div>
790
+ <div>
791
+ <Radio.Label>Organization</Radio.Label>
792
+ <Radio.Description>For enterprises</Radio.Description>
793
+ </div>
794
+ </div>
795
+ </Radio>
796
+ </RadioGroup>
797
+ </div>
798
+ ),
799
+ parameters: {
800
+ docs: {
801
+ description: {
802
+ story: 'Card-style horizontal layout with centered icons, ideal for workspace or category selection.',
803
+ },
804
+ },
805
+ },
806
+ };
807
+
808
+ export const CardStyleNotificationPreferences: Story = {
809
+ render: () => (
810
+ <div className="w-[450px] rounded-lg border border-[var(--border)] bg-[var(--background)] p-6">
811
+ <h3 className="mb-4 text-lg font-semibold text-[var(--foreground)]">
812
+ Notification Preferences
813
+ </h3>
814
+ <RadioGroup label="How often would you like to receive updates?" defaultValue="daily">
815
+ <Radio value="realtime" className="p-4">
816
+ <div className="flex w-full items-start gap-4">
817
+ <div className="flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-[var(--primary)]/10 text-xl">
818
+
819
+ </div>
820
+ <div className="flex-1">
821
+ <Radio.Label>Real-time</Radio.Label>
822
+ <Radio.Description>
823
+ Get notified instantly when something happens. Best for time-sensitive workflows.
824
+ </Radio.Description>
825
+ </div>
826
+ </div>
827
+ </Radio>
828
+ <Radio value="daily" className="p-4">
829
+ <div className="flex w-full items-start gap-4">
830
+ <div className="flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-[var(--primary)]/10 text-xl">
831
+ 📅
832
+ </div>
833
+ <div className="flex-1">
834
+ <Radio.Label>Daily digest</Radio.Label>
835
+ <Radio.Description>
836
+ Receive a summary of all activity once per day. Reduces notification fatigue.
837
+ </Radio.Description>
838
+ </div>
839
+ </div>
840
+ </Radio>
841
+ <Radio value="weekly" className="p-4">
842
+ <div className="flex w-full items-start gap-4">
843
+ <div className="flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-[var(--primary)]/10 text-xl">
844
+ 📊
845
+ </div>
846
+ <div className="flex-1">
847
+ <Radio.Label>Weekly summary</Radio.Label>
848
+ <Radio.Description>
849
+ Get a comprehensive weekly report with all important updates and metrics.
850
+ </Radio.Description>
851
+ </div>
852
+ </div>
853
+ </Radio>
854
+ <Radio value="none" className="p-4">
855
+ <div className="flex w-full items-start gap-4">
856
+ <div className="flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-[var(--muted)] text-xl">
857
+ 🔕
858
+ </div>
859
+ <div className="flex-1">
860
+ <Radio.Label>None</Radio.Label>
861
+ <Radio.Description>
862
+ Turn off all notifications. You can still check updates manually in the app.
863
+ </Radio.Description>
864
+ </div>
865
+ </div>
866
+ </Radio>
867
+ </RadioGroup>
868
+ </div>
869
+ ),
870
+ parameters: {
871
+ docs: {
872
+ description: {
873
+ story: 'Card-style radio for settings pages with icons, labels, and detailed descriptions.',
874
+ },
875
+ },
876
+ },
877
+ };
878
+
879
+ export const CardStyleImageSelection: Story = {
880
+ render: () => (
881
+ <div className="w-[500px]">
882
+ <RadioGroup
883
+ label="Choose a theme"
884
+ orientation="horizontal"
885
+ defaultValue="light"
886
+ >
887
+ <Radio value="light" className="flex-1 overflow-hidden p-0">
888
+ <div className="flex flex-col">
889
+ <div className="h-24 bg-gradient-to-br from-white to-gray-100 border-b border-[var(--border)]" />
890
+ <div className="p-3 text-center">
891
+ <Radio.Label>Light</Radio.Label>
892
+ </div>
893
+ </div>
894
+ </Radio>
895
+ <Radio value="dark" className="flex-1 overflow-hidden p-0">
896
+ <div className="flex flex-col">
897
+ <div className="h-24 bg-gradient-to-br from-gray-800 to-gray-900 border-b border-[var(--border)]" />
898
+ <div className="p-3 text-center">
899
+ <Radio.Label>Dark</Radio.Label>
900
+ </div>
901
+ </div>
902
+ </Radio>
903
+ <Radio value="system" className="flex-1 overflow-hidden p-0">
904
+ <div className="flex flex-col">
905
+ <div className="h-24 bg-gradient-to-r from-white via-gray-400 to-gray-900 border-b border-[var(--border)]" />
906
+ <div className="p-3 text-center">
907
+ <Radio.Label>System</Radio.Label>
908
+ </div>
909
+ </div>
910
+ </Radio>
911
+ </RadioGroup>
912
+ </div>
913
+ ),
914
+ parameters: {
915
+ docs: {
916
+ description: {
917
+ story: 'Card-style radio with visual previews, perfect for theme or template selection.',
918
+ },
919
+ },
920
+ },
921
+ };
922
+
923
+ export const CardStyleCompact: Story = {
924
+ render: () => (
925
+ <div className="w-80">
926
+ <RadioGroup label="Select size" orientation="horizontal" size="sm" defaultValue="m">
927
+ <Radio value="xs" className="flex-1 justify-center">
928
+ <Radio.Label>XS</Radio.Label>
929
+ </Radio>
930
+ <Radio value="s" className="flex-1 justify-center">
931
+ <Radio.Label>S</Radio.Label>
932
+ </Radio>
933
+ <Radio value="m" className="flex-1 justify-center">
934
+ <Radio.Label>M</Radio.Label>
935
+ </Radio>
936
+ <Radio value="l" className="flex-1 justify-center">
937
+ <Radio.Label>L</Radio.Label>
938
+ </Radio>
939
+ <Radio value="xl" className="flex-1 justify-center">
940
+ <Radio.Label>XL</Radio.Label>
941
+ </Radio>
942
+ </RadioGroup>
943
+ </div>
944
+ ),
945
+ parameters: {
946
+ docs: {
947
+ description: {
948
+ story: 'Compact card-style radio for size or variant selection, similar to e-commerce size pickers.',
949
+ },
950
+ },
951
+ },
952
+ };
953
+
954
+ // ============================================================================
955
+ // Accessibility Stories
956
+ // ============================================================================
957
+
958
+ export const FocusVisible: Story = {
959
+ render: (args) => (
960
+ <RadioGroup {...args}>
961
+ <Radio value="opt1">
962
+ <Radio.Label>Focus me with Tab</Radio.Label>
963
+ </Radio>
964
+ <Radio value="opt2">
965
+ <Radio.Label>Use arrow keys to navigate</Radio.Label>
966
+ </Radio>
967
+ <Radio value="opt3">
968
+ <Radio.Label>Press Space/Enter to select</Radio.Label>
969
+ </Radio>
970
+ </RadioGroup>
971
+ ),
972
+ args: {
973
+ label: 'Keyboard Navigation',
974
+ description: 'Tab into the group, then use arrow keys to navigate',
975
+ },
976
+ parameters: {
977
+ docs: {
978
+ description: {
979
+ story: 'Press Tab to see the focus ring. Meets WCAG 2.2 AAA standards with visible focus indicator.',
980
+ },
981
+ },
982
+ },
983
+ };
984
+
985
+ export const TouchTarget: Story = {
986
+ render: (args) => (
987
+ <RadioGroup {...args}>
988
+ <Radio value="opt1">
989
+ <Radio.Label>Touch-friendly option</Radio.Label>
990
+ </Radio>
991
+ <Radio value="opt2">
992
+ <Radio.Label>44px+ minimum height</Radio.Label>
993
+ </Radio>
994
+ </RadioGroup>
995
+ ),
996
+ args: {
997
+ size: 'sm',
998
+ label: 'Touch Targets',
999
+ description: 'Even small size maintains 44px minimum touch targets',
1000
+ },
1001
+ parameters: {
1002
+ docs: {
1003
+ description: {
1004
+ story: 'All sizes maintain 44px+ minimum touch targets (exceeds WCAG 2.2 requirement).',
1005
+ },
1006
+ },
1007
+ },
1008
+ };
1009
+
1010
+ export const RTLSupport: Story = {
1011
+ render: () => (
1012
+ <div dir="rtl" className="w-96">
1013
+ <RadioGroup label="اختر خيارًا" defaultValue="opt1">
1014
+ <Radio value="opt1">
1015
+ <Radio.Label>الخيار الأول</Radio.Label>
1016
+ <Radio.Description>وصف للخيار الأول</Radio.Description>
1017
+ </Radio>
1018
+ <Radio value="opt2">
1019
+ <Radio.Label>الخيار الثاني</Radio.Label>
1020
+ <Radio.Description>وصف للخيار الثاني</Radio.Description>
1021
+ </Radio>
1022
+ <Radio value="opt3">
1023
+ <Radio.Label>الخيار الثالث</Radio.Label>
1024
+ <Radio.Description>وصف للخيار الثالث</Radio.Description>
1025
+ </Radio>
1026
+ </RadioGroup>
1027
+ </div>
1028
+ ),
1029
+ parameters: {
1030
+ docs: {
1031
+ description: {
1032
+ story: 'RTL support with indicator auto-flipping to the right side.',
1033
+ },
1034
+ },
1035
+ },
1036
+ };
1037
+
1038
+ export const WithAriaLabel: Story = {
1039
+ render: () => (
1040
+ <RadioGroup aria-label="Hidden label for screen readers" defaultValue="opt1">
1041
+ <Radio value="opt1">
1042
+ <Radio.Label>Option 1</Radio.Label>
1043
+ </Radio>
1044
+ <Radio value="opt2">
1045
+ <Radio.Label>Option 2</Radio.Label>
1046
+ </Radio>
1047
+ </RadioGroup>
1048
+ ),
1049
+ parameters: {
1050
+ docs: {
1051
+ description: {
1052
+ story: 'RadioGroup without visible label, using aria-label for screen readers.',
1053
+ },
1054
+ },
1055
+ },
1056
+ };
1057
+
1058
+ // ============================================================================
1059
+ // Theme Integration Stories
1060
+ // ============================================================================
1061
+
1062
+ export const LightTheme: Story = {
1063
+ render: (args) => (
1064
+ <RadioGroup {...args}>
1065
+ <Radio value="opt1">
1066
+ <Radio.Label>Light theme option</Radio.Label>
1067
+ </Radio>
1068
+ <Radio value="opt2">
1069
+ <Radio.Label>Another option</Radio.Label>
1070
+ </Radio>
1071
+ </RadioGroup>
1072
+ ),
1073
+ args: {
1074
+ label: 'Light Theme',
1075
+ defaultValue: 'opt1',
1076
+ },
1077
+ parameters: {
1078
+ backgrounds: { default: 'light' },
1079
+ },
1080
+ };
1081
+
1082
+ export const DarkTheme: Story = {
1083
+ render: (args) => (
1084
+ <RadioGroup {...args}>
1085
+ <Radio value="opt1">
1086
+ <Radio.Label>Dark theme option</Radio.Label>
1087
+ </Radio>
1088
+ <Radio value="opt2">
1089
+ <Radio.Label>Another option</Radio.Label>
1090
+ </Radio>
1091
+ </RadioGroup>
1092
+ ),
1093
+ args: {
1094
+ label: 'Dark Theme',
1095
+ defaultValue: 'opt1',
1096
+ },
1097
+ parameters: {
1098
+ backgrounds: { default: 'dark' },
1099
+ docs: {
1100
+ description: {
1101
+ story: 'RadioGroup adapts to dark theme via semantic tokens.',
1102
+ },
1103
+ },
1104
+ },
1105
+ };
1106
+
1107
+ export const HighContrast: Story = {
1108
+ render: (args) => (
1109
+ <RadioGroup {...args}>
1110
+ <Radio value="opt1">
1111
+ <Radio.Label>High contrast option</Radio.Label>
1112
+ </Radio>
1113
+ <Radio value="opt2">
1114
+ <Radio.Label>Another option</Radio.Label>
1115
+ </Radio>
1116
+ </RadioGroup>
1117
+ ),
1118
+ args: {
1119
+ label: 'High Contrast',
1120
+ defaultValue: 'opt1',
1121
+ },
1122
+ parameters: {
1123
+ docs: {
1124
+ description: {
1125
+ story: 'RadioGroup with enhanced outlines for high contrast mode.',
1126
+ },
1127
+ },
1128
+ },
1129
+ };
1130
+
1131
+ export const ColorblindTheme: Story = {
1132
+ render: (args) => (
1133
+ <RadioGroup {...args}>
1134
+ <Radio value="opt1">
1135
+ <Radio.Label>Colorblind-friendly option</Radio.Label>
1136
+ </Radio>
1137
+ <Radio value="opt2">
1138
+ <Radio.Label>Another option</Radio.Label>
1139
+ </Radio>
1140
+ </RadioGroup>
1141
+ ),
1142
+ args: {
1143
+ label: 'Colorblind Theme',
1144
+ defaultValue: 'opt1',
1145
+ },
1146
+ parameters: {
1147
+ docs: {
1148
+ description: {
1149
+ story: 'RadioGroup with colorblind-friendly palette (deuteranopia, protanopia, tritanopia support).',
1150
+ },
1151
+ },
1152
+ },
1153
+ };