@zentauri-ui/zentauri-components 1.5.31 → 1.6.2

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 (360) hide show
  1. package/README.md +78 -69
  2. package/dist/charts/area.js.map +1 -1
  3. package/dist/charts/area.mjs.map +1 -1
  4. package/dist/charts/bubble/Bubble.d.ts.map +1 -1
  5. package/dist/charts/bubble.js.map +1 -1
  6. package/dist/charts/bubble.mjs.map +1 -1
  7. package/dist/charts/pie/Pie.d.ts.map +1 -1
  8. package/dist/charts/pie.js +20 -2
  9. package/dist/charts/pie.js.map +1 -1
  10. package/dist/charts/pie.mjs +20 -2
  11. package/dist/charts/pie.mjs.map +1 -1
  12. package/dist/charts/shared/types.d.ts.map +1 -1
  13. package/dist/{chunk-G3LEYBRV.mjs → chunk-25EAVVGS.mjs} +61 -58
  14. package/dist/chunk-25EAVVGS.mjs.map +1 -0
  15. package/dist/{chunk-BCZIYH53.js → chunk-3OXIZ4ZO.js} +28 -28
  16. package/dist/chunk-3OXIZ4ZO.js.map +1 -0
  17. package/dist/{chunk-PWL5WD34.js → chunk-3Z73M5TW.js} +27 -26
  18. package/dist/chunk-3Z73M5TW.js.map +1 -0
  19. package/dist/{chunk-AUGLZ3AN.js → chunk-4F56BLZQ.js} +51 -51
  20. package/dist/chunk-4F56BLZQ.js.map +1 -0
  21. package/dist/{chunk-JJDANNNL.mjs → chunk-4MPNRGUA.mjs} +3 -9
  22. package/dist/chunk-4MPNRGUA.mjs.map +1 -0
  23. package/dist/{chunk-Y745GQR2.js → chunk-4PZIDDC6.js} +45 -45
  24. package/dist/chunk-4PZIDDC6.js.map +1 -0
  25. package/dist/{chunk-TINHLHCN.mjs → chunk-73RHHGIA.mjs} +39 -36
  26. package/dist/chunk-73RHHGIA.mjs.map +1 -0
  27. package/dist/{chunk-OLEMP2HL.js → chunk-746CV3AN.js} +29 -36
  28. package/dist/chunk-746CV3AN.js.map +1 -0
  29. package/dist/chunk-CFTDAGKD.js +130 -0
  30. package/dist/chunk-CFTDAGKD.js.map +1 -0
  31. package/dist/{chunk-N2OAI2HN.js → chunk-D55YIHBN.js} +15 -15
  32. package/dist/chunk-D55YIHBN.js.map +1 -0
  33. package/dist/{chunk-KXUG4WVW.js → chunk-DO2LEXUY.js} +5 -5
  34. package/dist/{chunk-KXUG4WVW.js.map → chunk-DO2LEXUY.js.map} +1 -1
  35. package/dist/chunk-EU63V22F.mjs +126 -0
  36. package/dist/chunk-EU63V22F.mjs.map +1 -0
  37. package/dist/chunk-EZS47EZW.mjs +70 -0
  38. package/dist/chunk-EZS47EZW.mjs.map +1 -0
  39. package/dist/{chunk-E4FZY7O2.js → chunk-GHJN3Z3V.js} +48 -48
  40. package/dist/chunk-GHJN3Z3V.js.map +1 -0
  41. package/dist/{chunk-MTLLJFUI.mjs → chunk-GIC3J6HR.mjs} +28 -28
  42. package/dist/chunk-GIC3J6HR.mjs.map +1 -0
  43. package/dist/chunk-GPAUYUM3.js +232 -0
  44. package/dist/chunk-GPAUYUM3.js.map +1 -0
  45. package/dist/{chunk-C5L465FW.mjs → chunk-HARD4NMB.mjs} +45 -45
  46. package/dist/chunk-HARD4NMB.mjs.map +1 -0
  47. package/dist/{chunk-YTRGRHEB.js → chunk-HV7LVRK3.js} +61 -58
  48. package/dist/chunk-HV7LVRK3.js.map +1 -0
  49. package/dist/{chunk-ZYZJ74XB.mjs → chunk-J5QJEKY2.mjs} +28 -28
  50. package/dist/chunk-J5QJEKY2.mjs.map +1 -0
  51. package/dist/chunk-JE6B3DHW.mjs +220 -0
  52. package/dist/chunk-JE6B3DHW.mjs.map +1 -0
  53. package/dist/{chunk-7TLKLMBM.js → chunk-JOMSI4WH.js} +18 -15
  54. package/dist/chunk-JOMSI4WH.js.map +1 -0
  55. package/dist/{chunk-Q5B44QW7.js → chunk-KA5MORDC.js} +52 -52
  56. package/dist/chunk-KA5MORDC.js.map +1 -0
  57. package/dist/{chunk-TJUNN2PT.mjs → chunk-LPL6NJ5Q.mjs} +27 -26
  58. package/dist/chunk-LPL6NJ5Q.mjs.map +1 -0
  59. package/dist/{chunk-ZBBFOMSJ.mjs → chunk-M6FS7X54.mjs} +22 -22
  60. package/dist/chunk-M6FS7X54.mjs.map +1 -0
  61. package/dist/{chunk-JUDMPOCI.js → chunk-MM3P52WS.js} +22 -22
  62. package/dist/chunk-MM3P52WS.js.map +1 -0
  63. package/dist/{chunk-UWA23DUC.js → chunk-OB6TYS5Q.js} +28 -28
  64. package/dist/chunk-OB6TYS5Q.js.map +1 -0
  65. package/dist/chunk-OHST7AHC.mjs +99 -0
  66. package/dist/chunk-OHST7AHC.mjs.map +1 -0
  67. package/dist/{chunk-QZTEFGZF.mjs → chunk-OVTWPGMW.mjs} +18 -15
  68. package/dist/chunk-OVTWPGMW.mjs.map +1 -0
  69. package/dist/{chunk-7OHC4ERB.mjs → chunk-PPVJ4INP.mjs} +3 -3
  70. package/dist/{chunk-7OHC4ERB.mjs.map → chunk-PPVJ4INP.mjs.map} +1 -1
  71. package/dist/{chunk-LN77JJTY.mjs → chunk-PSIAOIXJ.mjs} +48 -48
  72. package/dist/chunk-PSIAOIXJ.mjs.map +1 -0
  73. package/dist/chunk-QNF4JPFP.js +339 -0
  74. package/dist/chunk-QNF4JPFP.js.map +1 -0
  75. package/dist/{chunk-A6KMZ5ZS.mjs → chunk-QSIJKHC5.mjs} +15 -15
  76. package/dist/chunk-QSIJKHC5.mjs.map +1 -0
  77. package/dist/chunk-RFFGQYDQ.mjs +337 -0
  78. package/dist/chunk-RFFGQYDQ.mjs.map +1 -0
  79. package/dist/{chunk-INMNX3HQ.mjs → chunk-S5H2OMTZ.mjs} +29 -36
  80. package/dist/chunk-S5H2OMTZ.mjs.map +1 -0
  81. package/dist/chunk-TIPNRH26.js +102 -0
  82. package/dist/chunk-TIPNRH26.js.map +1 -0
  83. package/dist/chunk-V2PEOBAT.mjs +324 -0
  84. package/dist/chunk-V2PEOBAT.mjs.map +1 -0
  85. package/dist/chunk-VGWA26BN.js +72 -0
  86. package/dist/chunk-VGWA26BN.js.map +1 -0
  87. package/dist/{chunk-MEJMX4QI.js → chunk-VMCOX3Z2.js} +3 -9
  88. package/dist/chunk-VMCOX3Z2.js.map +1 -0
  89. package/dist/chunk-WNLDXBS6.mjs +323 -0
  90. package/dist/chunk-WNLDXBS6.mjs.map +1 -0
  91. package/dist/{chunk-AD2LA3XN.js → chunk-YIO7DFUA.js} +39 -36
  92. package/dist/chunk-YIO7DFUA.js.map +1 -0
  93. package/dist/hooks/useDynamicStepper/index.d.ts +1 -1
  94. package/dist/hooks/useDynamicStepper/index.d.ts.map +1 -1
  95. package/dist/hooks/useDynamicStepper/useDynamicStepper.d.ts.map +1 -1
  96. package/dist/hooks/useDynamicStepper.js +2 -2
  97. package/dist/hooks/useDynamicStepper.mjs +1 -1
  98. package/dist/ui/accordion/animated.js +7 -7
  99. package/dist/ui/accordion/animated.mjs +2 -2
  100. package/dist/ui/accordion/variants.d.ts.map +1 -1
  101. package/dist/ui/accordion.js +9 -9
  102. package/dist/ui/accordion.mjs +2 -2
  103. package/dist/ui/alert/animated.js +2 -2
  104. package/dist/ui/alert/animated.mjs +1 -1
  105. package/dist/ui/alert/variants.d.ts.map +1 -1
  106. package/dist/ui/alert.js +10 -10
  107. package/dist/ui/alert.mjs +2 -2
  108. package/dist/ui/avatar/animated.js +5 -5
  109. package/dist/ui/avatar/animated.mjs +2 -2
  110. package/dist/ui/avatar/variants.d.ts.map +1 -1
  111. package/dist/ui/avatar.js +9 -9
  112. package/dist/ui/avatar.mjs +2 -2
  113. package/dist/ui/badge/animated.js +2 -2
  114. package/dist/ui/badge/animated.mjs +1 -1
  115. package/dist/ui/badge/variants.d.ts +24 -24
  116. package/dist/ui/badge/variants.d.ts.map +1 -1
  117. package/dist/ui/badge.js +4 -4
  118. package/dist/ui/badge.mjs +2 -2
  119. package/dist/ui/breadcrumb/variants.d.ts.map +1 -1
  120. package/dist/ui/breadcrumb.js +30 -25
  121. package/dist/ui/breadcrumb.js.map +1 -1
  122. package/dist/ui/breadcrumb.mjs +30 -25
  123. package/dist/ui/breadcrumb.mjs.map +1 -1
  124. package/dist/ui/buttons/animated.js +3 -3
  125. package/dist/ui/buttons/animated.mjs +1 -1
  126. package/dist/ui/buttons/variants.d.ts.map +1 -1
  127. package/dist/ui/buttons.js +4 -4
  128. package/dist/ui/buttons.mjs +2 -2
  129. package/dist/ui/card/animated.js +7 -7
  130. package/dist/ui/card/animated.mjs +2 -2
  131. package/dist/ui/card/variants.d.ts.map +1 -1
  132. package/dist/ui/card.js +12 -12
  133. package/dist/ui/card.mjs +2 -2
  134. package/dist/ui/divider/animated.js +2 -2
  135. package/dist/ui/divider/animated.mjs +1 -1
  136. package/dist/ui/divider.js +6 -6
  137. package/dist/ui/divider.mjs +2 -2
  138. package/dist/ui/drawer/animated.js +11 -11
  139. package/dist/ui/drawer/animated.mjs +2 -2
  140. package/dist/ui/drawer/variants.d.ts.map +1 -1
  141. package/dist/ui/drawer.js +11 -11
  142. package/dist/ui/drawer.mjs +1 -1
  143. package/dist/ui/dropdown/variants.d.ts.map +1 -1
  144. package/dist/ui/dropdown.js +52 -52
  145. package/dist/ui/dropdown.js.map +1 -1
  146. package/dist/ui/dropdown.mjs +52 -52
  147. package/dist/ui/dropdown.mjs.map +1 -1
  148. package/dist/ui/dynamic-stepper/index.d.ts +1 -1
  149. package/dist/ui/dynamic-stepper/index.d.ts.map +1 -1
  150. package/dist/ui/dynamic-stepper/variants.d.ts.map +1 -1
  151. package/dist/ui/dynamic-stepper.js +75 -72
  152. package/dist/ui/dynamic-stepper.js.map +1 -1
  153. package/dist/ui/dynamic-stepper.mjs +72 -69
  154. package/dist/ui/dynamic-stepper.mjs.map +1 -1
  155. package/dist/ui/empty-state/animated.js +2 -2
  156. package/dist/ui/empty-state/animated.mjs +1 -1
  157. package/dist/ui/empty-state/variants.d.ts.map +1 -1
  158. package/dist/ui/empty-state.js +10 -10
  159. package/dist/ui/empty-state.mjs +2 -2
  160. package/dist/ui/file-upload/file-upload.d.ts.map +1 -1
  161. package/dist/ui/file-upload/variants.d.ts.map +1 -1
  162. package/dist/ui/file-upload.js +18 -18
  163. package/dist/ui/file-upload.js.map +1 -1
  164. package/dist/ui/file-upload.mjs +18 -18
  165. package/dist/ui/file-upload.mjs.map +1 -1
  166. package/dist/ui/inputs/animated.js +3 -3
  167. package/dist/ui/inputs/animated.mjs +1 -1
  168. package/dist/ui/inputs/types.d.ts +1 -1
  169. package/dist/ui/inputs/types.d.ts.map +1 -1
  170. package/dist/ui/inputs/variants.d.ts +1 -1
  171. package/dist/ui/inputs/variants.d.ts.map +1 -1
  172. package/dist/ui/inputs.js +4 -4
  173. package/dist/ui/inputs.mjs +2 -2
  174. package/dist/ui/modal/animated.js +4 -4
  175. package/dist/ui/modal/animated.mjs +1 -1
  176. package/dist/ui/modal/variants.d.ts.map +1 -1
  177. package/dist/ui/modal.js +12 -12
  178. package/dist/ui/modal.mjs +2 -2
  179. package/dist/ui/pagination/types.d.ts.map +1 -1
  180. package/dist/ui/pagination/variants.d.ts.map +1 -1
  181. package/dist/ui/pagination.js +33 -33
  182. package/dist/ui/pagination.js.map +1 -1
  183. package/dist/ui/pagination.mjs +30 -30
  184. package/dist/ui/pagination.mjs.map +1 -1
  185. package/dist/ui/progress/animated.js +8 -8
  186. package/dist/ui/progress/animated.mjs +2 -2
  187. package/dist/ui/progress/variants.d.ts.map +1 -1
  188. package/dist/ui/progress.js +9 -9
  189. package/dist/ui/progress.mjs +2 -2
  190. package/dist/ui/search/search-bar.d.ts.map +1 -1
  191. package/dist/ui/search/search-suggestion-list.d.ts.map +1 -1
  192. package/dist/ui/search.js +10 -9
  193. package/dist/ui/search.js.map +1 -1
  194. package/dist/ui/search.mjs +9 -8
  195. package/dist/ui/search.mjs.map +1 -1
  196. package/dist/ui/select/variants.d.ts.map +1 -1
  197. package/dist/ui/select.js +67 -67
  198. package/dist/ui/select.js.map +1 -1
  199. package/dist/ui/select.mjs +67 -67
  200. package/dist/ui/select.mjs.map +1 -1
  201. package/dist/ui/skeleton/animated.js +8 -8
  202. package/dist/ui/skeleton/animated.mjs +1 -1
  203. package/dist/ui/skeleton/variants.d.ts.map +1 -1
  204. package/dist/ui/skeleton.js +9 -9
  205. package/dist/ui/skeleton.mjs +1 -1
  206. package/dist/ui/slider.js +25 -25
  207. package/dist/ui/slider.js.map +1 -1
  208. package/dist/ui/slider.mjs +25 -25
  209. package/dist/ui/slider.mjs.map +1 -1
  210. package/dist/ui/spinner/animated.js +22 -22
  211. package/dist/ui/spinner/animated.js.map +1 -1
  212. package/dist/ui/spinner/animated.mjs +22 -22
  213. package/dist/ui/spinner/animated.mjs.map +1 -1
  214. package/dist/ui/stepper/stepper.d.ts.map +1 -1
  215. package/dist/ui/stepper/variants.d.ts.map +1 -1
  216. package/dist/ui/stepper.js +29 -26
  217. package/dist/ui/stepper.js.map +1 -1
  218. package/dist/ui/stepper.mjs +29 -26
  219. package/dist/ui/stepper.mjs.map +1 -1
  220. package/dist/ui/table/animated.js +8 -8
  221. package/dist/ui/table/animated.mjs +2 -2
  222. package/dist/ui/table/variants.d.ts.map +1 -1
  223. package/dist/ui/table.js +14 -14
  224. package/dist/ui/table.mjs +1 -1
  225. package/dist/ui/tabs/animated.js +2 -2
  226. package/dist/ui/tabs/animated.mjs +1 -1
  227. package/dist/ui/tabs/variants.d.ts.map +1 -1
  228. package/dist/ui/tabs.js +9 -9
  229. package/dist/ui/tabs.mjs +1 -1
  230. package/dist/ui/toast/animated.js +7 -7
  231. package/dist/ui/toast/animated.mjs +1 -1
  232. package/dist/ui/toast/toast-base.d.ts.map +1 -1
  233. package/dist/ui/toast/variants.d.ts.map +1 -1
  234. package/dist/ui/toast.js +12 -12
  235. package/dist/ui/toast.mjs +1 -1
  236. package/dist/ui/toggle/animated/toggle-animated.d.ts.map +1 -1
  237. package/dist/ui/toggle/animated.js +5 -4
  238. package/dist/ui/toggle/animated.js.map +1 -1
  239. package/dist/ui/toggle/animated.mjs +4 -3
  240. package/dist/ui/toggle/animated.mjs.map +1 -1
  241. package/dist/ui/toggle/toggle-base.d.ts.map +1 -1
  242. package/dist/ui/toggle/variants.d.ts +1 -0
  243. package/dist/ui/toggle/variants.d.ts.map +1 -1
  244. package/dist/ui/toggle.js +8 -7
  245. package/dist/ui/toggle.js.map +1 -1
  246. package/dist/ui/toggle.mjs +6 -5
  247. package/dist/ui/toggle.mjs.map +1 -1
  248. package/dist/ui/tooltip/animated.js +3 -3
  249. package/dist/ui/tooltip/animated.mjs +1 -1
  250. package/dist/ui/tooltip/variants.d.ts.map +1 -1
  251. package/dist/ui/tooltip.js +7 -7
  252. package/dist/ui/tooltip.mjs +1 -1
  253. package/dist/ui/typography/variants.d.ts.map +1 -1
  254. package/dist/ui/typography.js +19 -19
  255. package/dist/ui/typography.js.map +1 -1
  256. package/dist/ui/typography.mjs +19 -19
  257. package/dist/ui/typography.mjs.map +1 -1
  258. package/package.json +4 -3
  259. package/src/charts/area/Area.tsx +1 -1
  260. package/src/charts/bubble/Bubble.tsx +10 -2
  261. package/src/charts/pie/Pie.tsx +22 -3
  262. package/src/charts/shared/types.ts +1 -1
  263. package/src/hooks/useDynamicStepper/index.ts +1 -3
  264. package/src/hooks/useDynamicStepper/useDynamicStepper.ts +1 -7
  265. package/src/ui/accordion/variants.ts +55 -43
  266. package/src/ui/alert/variants.ts +45 -32
  267. package/src/ui/avatar/variants.ts +34 -26
  268. package/src/ui/badge/variants.ts +42 -29
  269. package/src/ui/breadcrumb/variants.ts +30 -25
  270. package/src/ui/buttons/variants.ts +40 -30
  271. package/src/ui/card/variants.ts +49 -39
  272. package/src/ui/divider/variants.ts +26 -26
  273. package/src/ui/drawer/drawer-base.tsx +2 -2
  274. package/src/ui/drawer/variants.ts +64 -48
  275. package/src/ui/dropdown/dropdown.tsx +1 -1
  276. package/src/ui/dropdown/variants.ts +63 -52
  277. package/src/ui/dynamic-stepper/dynamic-stepper.test.tsx +6 -2
  278. package/src/ui/dynamic-stepper/dynamic-stepper.tsx +2 -2
  279. package/src/ui/dynamic-stepper/index.ts +1 -3
  280. package/src/ui/dynamic-stepper/variants.ts +73 -64
  281. package/src/ui/empty-state/variants.ts +14 -11
  282. package/src/ui/file-upload/file-upload.tsx +5 -3
  283. package/src/ui/file-upload/variants.ts +16 -15
  284. package/src/ui/inputs/types.ts +1 -1
  285. package/src/ui/inputs/variants.ts +106 -47
  286. package/src/ui/modal/modal-base.tsx +2 -2
  287. package/src/ui/modal/variants.ts +64 -47
  288. package/src/ui/pagination/pagination.tsx +1 -1
  289. package/src/ui/pagination/types.ts +1 -4
  290. package/src/ui/pagination/variants.ts +31 -28
  291. package/src/ui/progress/variants.ts +79 -65
  292. package/src/ui/search/search-bar.tsx +2 -1
  293. package/src/ui/search/search-suggestion-list.tsx +7 -5
  294. package/src/ui/select/variants.ts +73 -67
  295. package/src/ui/skeleton/variants.ts +22 -13
  296. package/src/ui/slider/variants.ts +25 -25
  297. package/src/ui/spinner/animated/variants.ts +22 -22
  298. package/src/ui/stepper/stepper.tsx +5 -2
  299. package/src/ui/stepper/variants.ts +25 -24
  300. package/src/ui/table/table-base.tsx +1 -1
  301. package/src/ui/table/variants.ts +53 -45
  302. package/src/ui/tabs/variants.ts +38 -23
  303. package/src/ui/toast/toast-base.tsx +1 -4
  304. package/src/ui/toast/variants.ts +33 -26
  305. package/src/ui/toggle/animated/toggle-animated.tsx +3 -2
  306. package/src/ui/toggle/toggle-base.tsx +4 -3
  307. package/src/ui/toggle/variants.ts +61 -29
  308. package/src/ui/tooltip/variants.ts +21 -20
  309. package/src/ui/typography/code-block-base.tsx +1 -1
  310. package/src/ui/typography/variants.ts +21 -18
  311. package/dist/chunk-2BAMNRAL.mjs +0 -323
  312. package/dist/chunk-2BAMNRAL.mjs.map +0 -1
  313. package/dist/chunk-5TV7EL3H.mjs +0 -70
  314. package/dist/chunk-5TV7EL3H.mjs.map +0 -1
  315. package/dist/chunk-7TLKLMBM.js.map +0 -1
  316. package/dist/chunk-A6KMZ5ZS.mjs.map +0 -1
  317. package/dist/chunk-AD2LA3XN.js.map +0 -1
  318. package/dist/chunk-AOEI4V3W.mjs +0 -286
  319. package/dist/chunk-AOEI4V3W.mjs.map +0 -1
  320. package/dist/chunk-AUGLZ3AN.js.map +0 -1
  321. package/dist/chunk-BCZIYH53.js.map +0 -1
  322. package/dist/chunk-C5L465FW.mjs.map +0 -1
  323. package/dist/chunk-E4FZY7O2.js.map +0 -1
  324. package/dist/chunk-FQBMIZH2.mjs +0 -217
  325. package/dist/chunk-FQBMIZH2.mjs.map +0 -1
  326. package/dist/chunk-G3LEYBRV.mjs.map +0 -1
  327. package/dist/chunk-I6GR234Z.mjs +0 -126
  328. package/dist/chunk-I6GR234Z.mjs.map +0 -1
  329. package/dist/chunk-INMNX3HQ.mjs.map +0 -1
  330. package/dist/chunk-JBAUEGYD.mjs +0 -324
  331. package/dist/chunk-JBAUEGYD.mjs.map +0 -1
  332. package/dist/chunk-JJDANNNL.mjs.map +0 -1
  333. package/dist/chunk-JQ5TIJ4F.mjs +0 -68
  334. package/dist/chunk-JQ5TIJ4F.mjs.map +0 -1
  335. package/dist/chunk-JUDMPOCI.js.map +0 -1
  336. package/dist/chunk-LN77JJTY.mjs.map +0 -1
  337. package/dist/chunk-MCOQHXRW.js +0 -130
  338. package/dist/chunk-MCOQHXRW.js.map +0 -1
  339. package/dist/chunk-MEJMX4QI.js.map +0 -1
  340. package/dist/chunk-MTLLJFUI.mjs.map +0 -1
  341. package/dist/chunk-N2OAI2HN.js.map +0 -1
  342. package/dist/chunk-OB4KJZK2.js +0 -72
  343. package/dist/chunk-OB4KJZK2.js.map +0 -1
  344. package/dist/chunk-OLEMP2HL.js.map +0 -1
  345. package/dist/chunk-PWL5WD34.js.map +0 -1
  346. package/dist/chunk-Q5B44QW7.js.map +0 -1
  347. package/dist/chunk-QZKMFSH5.js +0 -288
  348. package/dist/chunk-QZKMFSH5.js.map +0 -1
  349. package/dist/chunk-QZTEFGZF.mjs.map +0 -1
  350. package/dist/chunk-S7WKFNPT.js +0 -229
  351. package/dist/chunk-S7WKFNPT.js.map +0 -1
  352. package/dist/chunk-TINHLHCN.mjs.map +0 -1
  353. package/dist/chunk-TJUNN2PT.mjs.map +0 -1
  354. package/dist/chunk-UWA23DUC.js.map +0 -1
  355. package/dist/chunk-X22LLJL6.js +0 -71
  356. package/dist/chunk-X22LLJL6.js.map +0 -1
  357. package/dist/chunk-Y745GQR2.js.map +0 -1
  358. package/dist/chunk-YTRGRHEB.js.map +0 -1
  359. package/dist/chunk-ZBBFOMSJ.mjs.map +0 -1
  360. package/dist/chunk-ZYZJ74XB.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/drawer/variants.ts","../src/ui/drawer/drawer-base.tsx"],"names":[],"mappings":"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","file":"chunk-V2PEOBAT.mjs","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const drawerOverlayVariants = cva(\n \"fixed inset-0 z-50 bg-slate-50/70 dark:bg-slate-950/70 backdrop-blur-sm\",\n);\n\nexport const drawerTriggerVariants = cva(\n \"relative inline-flex shrink-0 cursor-pointer border rounded px-3 py-1.5\",\n {\n variants: {\n appearance: {\n default: \"bg-slate-950\",\n glass:\n \"border-black/15 dark:border-white/15 bg-slate-50/70 dark:bg-slate-950/70 backdrop-blur-xl text-slate-900 dark:text-white\",\n sky: \"border-sky-800 dark:border-sky-600 bg-sky-50 dark:bg-sky-950/70 backdrop-blur-xl text-sky-800 dark:text-white\",\n rose: \"border-rose-800 dark:border-rose-600 bg-rose-50 dark:bg-rose-950/70 backdrop-blur-xl text-rose-800 dark:text-white\",\n purple:\n \"border-purple-800 dark:border-purple-600 bg-purple-50 dark:bg-purple-950/70 backdrop-blur-xl text-purple-800 dark:text-white\",\n pink: \"border-pink-800 dark:border-pink-600 bg-pink-50 dark:bg-pink-950/70 backdrop-blur-xl text-pink-800 dark:text-white\",\n orange:\n \"border-orange-800 dark:border-orange-600 bg-orange-50 dark:bg-orange-950/70 backdrop-blur-xl text-orange-800 dark:text-white\",\n yellow:\n \"border-yellow-800 dark:border-yellow-600 bg-yellow-50 dark:bg-yellow-950/70 backdrop-blur-xl text-yellow-800 dark:text-white\",\n teal: \"border-teal-800 dark:border-teal-600 bg-teal-50 dark:bg-teal-950/70 backdrop-blur-xl text-teal-800 dark:text-white\",\n indigo:\n \"border-indigo-800 dark:border-indigo-600 bg-indigo-50 dark:bg-indigo-950/70 backdrop-blur-xl text-indigo-800 dark:text-white\",\n emerald:\n \"border-emerald-800 dark:border-emerald-600 bg-emerald-50 dark:bg-emerald-950/70 backdrop-blur-xl text-emerald-800 dark:text-white\",\n gray: \"border-gray-800 dark:border-gray-600 bg-gray-50 dark:bg-gray-950/70 backdrop-blur-xl text-gray-800 dark:text-white\",\n amber:\n \"border-amber-800 dark:border-amber-600 bg-amber-50 dark:bg-amber-950/70 backdrop-blur-xl text-amber-800 dark:text-white\",\n violet:\n \"border-violet-800 dark:border-violet-600 bg-violet-50 dark:bg-violet-950/70 backdrop-blur-xl text-violet-800 dark:text-white\",\n \"gradient-blue\":\n \"border-blue-800 dark:border-blue-600 bg-linear-to-r from-blue-50 dark:from-blue-950/70 to-purple-50 dark:to-purple-950/70 backdrop-blur-xl text-blue-800 dark:text-white\",\n \"gradient-green\":\n \"border-green-800 dark:border-green-600 bg-linear-to-r from-green-50 dark:from-green-950/70 to-lime-50 dark:to-lime-950/70 backdrop-blur-xl text-green-800 dark:text-white\",\n \"gradient-red\":\n \"border-red-800 dark:border-red-600 bg-linear-to-r from-red-50 dark:from-red-950/70 to-pink-50 dark:to-pink-950/70 backdrop-blur-xl text-red-800 dark:text-white\",\n \"gradient-yellow\":\n \"border-yellow-800 dark:border-yellow-600 bg-linear-to-r from-yellow-50 dark:from-yellow-950/70 to-orange-50 dark:to-orange-950/70 backdrop-blur-xl text-yellow-800 dark:text-white\",\n \"gradient-purple\":\n \"border-purple-800 dark:border-purple-600 bg-linear-to-r from-purple-50 dark:from-purple-950/70 to-pink-50 dark:to-pink-950/70 backdrop-blur-xl text-purple-800 dark:text-white\",\n \"gradient-teal\":\n \"border-teal-800 dark:border-teal-600 bg-linear-to-r from-teal-50 dark:from-teal-950/70 to-cyan-50 dark:to-cyan-950/70 backdrop-blur-xl text-teal-800 dark:text-white\",\n \"gradient-indigo\":\n \"border-indigo-800 dark:border-indigo-600 bg-linear-to-r from-indigo-50 dark:from-indigo-950/70 to-purple-50 dark:to-purple-950/70 backdrop-blur-xl text-indigo-800 dark:text-white\",\n \"gradient-pink\":\n \"border-pink-800 dark:border-pink-600 bg-linear-to-r from-pink-50 dark:from-pink-950/70 to-rose-50 dark:to-rose-950/70 backdrop-blur-xl text-pink-800 dark:text-white\",\n \"gradient-orange\":\n \"border-orange-800 dark:border-orange-600 bg-linear-to-r from-orange-50 dark:from-orange-950/70 to-red-50 dark:to-red-950/70 backdrop-blur-xl text-orange-800 dark:text-white\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n },\n },\n);\n\nexport const drawerContentVariants = cva(\n \"fixed z-50 flex max-h-[min(92vh,900px)] flex-col border border-black/10 dark:border-white/10 bg-slate-50 dark:bg-slate-950 p-6 text-slate-900 dark:text-slate-50 shadow-[0_12px_40px_rgba(15,23,42,0.14)] dark:shadow-[0_24px_80px_rgba(15,23,42,0.55)] focus:outline-none\",\n {\n variants: {\n side: {\n left: \"left-0 top-0 h-full w-[min(100%,420px)]\",\n right: \"right-0 top-0 h-full w-[min(100%,420px)]\",\n top: \"left-0 top-0 w-full max-h-[min(92vh,520px)]\",\n bottom: \"bottom-0 left-0 w-full max-h-[min(92vh,520px)]\",\n },\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n xl: \"\",\n full: \"\",\n },\n appearance: {\n default: \"bg-slate-50 dark:bg-slate-950 text-slate-900 dark:text-white\",\n glass:\n \"border-black/15 dark:border-white/15 bg-slate-50/70 dark:bg-slate-950/70 backdrop-blur-xl\",\n sky: \"border-sky-800 dark:border-sky-600 bg-sky-50 dark:bg-sky-950/70 backdrop-blur-xl\",\n rose: \"border-rose-800 dark:border-rose-600 bg-rose-50 dark:bg-rose-950/70 backdrop-blur-xl\",\n purple:\n \"border-purple-800 dark:border-purple-600 bg-purple-50 dark:bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-800 dark:border-pink-600 bg-pink-50 dark:bg-pink-950/70 backdrop-blur-xl\",\n orange:\n \"border-orange-800 dark:border-orange-600 bg-orange-50 dark:bg-orange-950/70 backdrop-blur-xl\",\n yellow:\n \"border-yellow-800 dark:border-yellow-600 bg-yellow-50 dark:bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-800 dark:border-teal-600 bg-teal-50 dark:bg-teal-950/70 backdrop-blur-xl\",\n indigo:\n \"border-indigo-800 dark:border-indigo-600 bg-indigo-50 dark:bg-indigo-950/70 backdrop-blur-xl\",\n emerald:\n \"border-emerald-800 dark:border-emerald-600 bg-emerald-50 dark:bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-800 dark:border-gray-600 bg-gray-50 dark:bg-gray-950/70 backdrop-blur-xl\",\n amber:\n \"border-amber-800 dark:border-amber-600 bg-amber-50 dark:bg-amber-950/70 backdrop-blur-xl\",\n violet:\n \"border-violet-800 dark:border-violet-600 bg-violet-50 dark:bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\":\n \"border-blue-800 dark:border-blue-600 bg-linear-to-r from-blue-50 dark:from-blue-950/70 to-purple-50 dark:to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\":\n \"border-green-800 dark:border-green-600 bg-linear-to-r from-green-50 dark:from-green-950/70 to-lime-50 dark:to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\":\n \"border-red-800 dark:border-red-600 bg-linear-to-r from-red-50 dark:from-red-950/70 to-pink-50 dark:to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\":\n \"border-yellow-800 dark:border-yellow-600 bg-linear-to-r from-yellow-50 dark:from-yellow-950/70 to-orange-50 dark:to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\":\n \"border-purple-800 dark:border-purple-600 bg-linear-to-r from-purple-50 dark:from-purple-950/70 to-pink-50 dark:to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\":\n \"border-teal-800 dark:border-teal-600 bg-linear-to-r from-teal-50 dark:from-teal-950/70 to-cyan-50 dark:to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\":\n \"border-indigo-800 dark:border-indigo-600 bg-linear-to-r from-indigo-50 dark:from-indigo-950/70 to-purple-50 dark:to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\":\n \"border-pink-800 dark:border-pink-600 bg-linear-to-r from-pink-50 dark:from-pink-950/70 to-rose-50 dark:to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\":\n \"border-orange-800 dark:border-orange-600 bg-linear-to-r from-orange-50 dark:from-orange-950/70 to-red-50 dark:to-red-950/70 backdrop-blur-xl\",\n },\n },\n compoundVariants: [\n { side: \"left\", size: \"sm\", class: \"w-[min(100%,320px)]\" },\n { side: \"left\", size: \"md\", class: \"w-[min(100%,420px)]\" },\n { side: \"left\", size: \"lg\", class: \"w-[min(100%,520px)]\" },\n { side: \"left\", size: \"xl\", class: \"w-[min(100%,640px)]\" },\n { side: \"left\", size: \"full\", class: \"w-full max-w-none\" },\n { side: \"right\", size: \"sm\", class: \"w-[min(100%,320px)]\" },\n { side: \"right\", size: \"md\", class: \"w-[min(100%,420px)]\" },\n { side: \"right\", size: \"lg\", class: \"w-[min(100%,520px)]\" },\n { side: \"right\", size: \"xl\", class: \"w-[min(100%,640px)]\" },\n { side: \"right\", size: \"full\", class: \"w-full max-w-none\" },\n ],\n defaultVariants: {\n side: \"right\",\n size: \"md\",\n appearance: \"default\",\n },\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useState,\n type RefObject,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils\";\nimport { useFocusManagement } from \"../../hooks/useFocusManagement\";\n\nimport type {\n DrawerContentProps,\n DrawerCtx,\n DrawerProps,\n DrawerSectionProps,\n DrawerTriggerProps,\n} from \"./types\";\nimport {\n drawerContentVariants,\n drawerOverlayVariants,\n drawerTriggerVariants,\n} from \"./variants\";\n\nconst DrawerContext = createContext<DrawerCtx | null>(null);\n\nexport function useDrawerContext(component: string): DrawerCtx {\n const ctx = useContext(DrawerContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Drawer>`);\n }\n return ctx;\n}\n\nexport function Drawer({\n open,\n defaultOpen = false,\n onOpenChange,\n children,\n}: DrawerProps) {\n const isControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const resolvedOpen = isControlled ? Boolean(open) : uncontrolledOpen;\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next);\n }\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n const baseId = useId();\n const titleId = `${baseId}-title`;\n const descriptionId = `${baseId}-description`;\n const contentRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const ctx = useMemo(\n () => ({\n open: resolvedOpen,\n setOpen,\n titleId,\n descriptionId,\n contentRef,\n triggerRef,\n }),\n [descriptionId, resolvedOpen, setOpen, titleId],\n );\n\n return (\n <DrawerContext.Provider value={ctx}>{children}</DrawerContext.Provider>\n );\n}\n\nDrawer.displayName = \"Drawer\";\n\nexport function DrawerTrigger({\n className,\n children,\n appearance,\n onClick,\n ref: refProp,\n ...rest\n}: DrawerTriggerProps) {\n const { setOpen, triggerRef } = useDrawerContext(\"DrawerTrigger\");\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n if (typeof refProp === \"function\") {\n refProp(node);\n } else if (refProp) {\n (refProp as RefObject<HTMLButtonElement | null>).current = node;\n }\n }}\n type=\"button\"\n data-slot=\"drawer-trigger\"\n className={cn(drawerTriggerVariants({ appearance }), className)}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n setOpen(true);\n }\n }}\n {...rest}\n >\n {children}\n </button>\n );\n}\n\nDrawerTrigger.displayName = \"DrawerTrigger\";\n\nexport function DrawerContent({\n className,\n side = \"right\",\n size,\n appearance,\n children,\n ref,\n id,\n style,\n}: DrawerContentProps) {\n const { open, setOpen, titleId, descriptionId, contentRef, triggerRef } =\n useDrawerContext(\"DrawerContent\");\n const resolvedSide = side ?? \"right\";\n\n useFocusManagement({\n open,\n setOpen,\n contentRef,\n triggerRef,\n });\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n if (!portalTarget) {\n return null;\n }\n\n return createPortal(\n open ? (\n <div className=\"fixed inset-0 z-50\" data-slot=\"drawer-portal\">\n <div\n role=\"presentation\"\n data-slot=\"drawer-overlay\"\n className={drawerOverlayVariants()}\n onClick={() => setOpen(false)}\n />\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as RefObject<HTMLDivElement | null>).current = node;\n }\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n data-slot=\"drawer-content\"\n tabIndex={-1}\n className={cn(\n drawerContentVariants({ side: resolvedSide, size, appearance }),\n className,\n )}\n id={id}\n style={style}\n >\n {children}\n </div>\n </div>\n ) : null,\n portalTarget,\n );\n}\n\nDrawerContent.displayName = \"DrawerContent\";\n\nexport function DrawerHeader({ className, children }: DrawerSectionProps) {\n return (\n <header\n data-slot=\"drawer-header\"\n className={cn(\"mb-4 flex flex-col gap-2\", className)}\n >\n {children}\n </header>\n );\n}\n\nDrawerHeader.displayName = \"DrawerHeader\";\n\nexport function DrawerBody({ className, children }: DrawerSectionProps) {\n return (\n <div\n data-slot=\"drawer-body\"\n className={cn(\"flex-1 text-sm\", className)}\n >\n {children}\n </div>\n );\n}\n\nDrawerBody.displayName = \"DrawerBody\";\n\nexport function DrawerFooter({ className, children }: DrawerSectionProps) {\n return (\n <footer\n data-slot=\"drawer-footer\"\n className={cn(\"mt-6 flex justify-end gap-2\", className)}\n >\n {children}\n </footer>\n );\n}\n\nDrawerFooter.displayName = \"DrawerFooter\";\n\nexport function DrawerTitle({ className, children }: DrawerSectionProps) {\n const { titleId } = useDrawerContext(\"DrawerTitle\");\n return (\n <h2\n id={titleId}\n data-slot=\"drawer-title\"\n className={cn(\"text-lg font-semibold\", className)}\n >\n {children}\n </h2>\n );\n}\n\nDrawerTitle.displayName = \"DrawerTitle\";\n\nexport function DrawerClose({\n className,\n children,\n ...rest\n}: DrawerSectionProps) {\n const { setOpen } = useDrawerContext(\"DrawerClose\");\n return (\n <button\n type=\"button\"\n data-slot=\"drawer-close\"\n className={cn(\n \"absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-md dark:text-slate-200 text-slate-900 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30\",\n className,\n )}\n aria-label=\"Close drawer\"\n onClick={() => setOpen(false)}\n {...rest}\n >\n {children ?? \"×\"}\n </button>\n );\n}\n\nDrawerClose.displayName = \"DrawerClose\";\n"]}
@@ -0,0 +1,72 @@
1
+ 'use strict';
2
+
3
+ var classVarianceAuthority = require('class-variance-authority');
4
+
5
+ // src/ui/buttons/variants.ts
6
+ var buttonVariants = classVarianceAuthority.cva(
7
+ [
8
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl",
9
+ "text-sm font-medium ring-offset-slate-50 dark:ring-offset-slate-950 transition-colors",
10
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-600 dark:focus-visible:ring-slate-300 focus-visible:ring-offset-2",
11
+ "disabled:pointer-events-none disabled:opacity-50",
12
+ "select-none"
13
+ ],
14
+ {
15
+ variants: {
16
+ appearance: {
17
+ default: "bg-slate-900 dark:bg-slate-50 text-slate-50 dark:text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.08)] dark:shadow-[0_1px_2px_rgba(15,23,42,0.12)] hover:bg-black dark:hover:bg-white",
18
+ secondary: "bg-slate-200 dark:bg-slate-800 text-slate-900 dark:text-slate-50 hover:bg-slate-300 dark:hover:bg-slate-700",
19
+ destructive: "bg-rose-500 dark:bg-rose-700 text-white hover:bg-rose-500 dark:hover:bg-rose-800",
20
+ outline: "border border-black/10 dark:border-white/10 bg-black/5 dark:bg-white/5 text-slate-900 dark:text-slate-50 hover:bg-black/10 dark:hover:bg-white/10",
21
+ ghost: "bg-transparent text-slate-700 dark:text-slate-200 hover:bg-black/5 dark:hover:bg-white/5",
22
+ link: "bg-transparent text-cyan-700 dark:text-cyan-300 underline-offset-4 hover:underline",
23
+ glass: "border border-black/15 dark:border-white/15 bg-black/10 dark:bg-white/10 text-slate-900 dark:text-white backdrop-blur-md hover:bg-black/15 dark:hover:bg-white/15",
24
+ emerald: "bg-emerald-500 dark:bg-emerald-800 text-white hover:bg-emerald-500 dark:hover:bg-emerald-900",
25
+ indigo: "bg-indigo-800 dark:bg-indigo-600 text-white hover:bg-indigo-800 dark:hover:bg-indigo-600",
26
+ purple: "bg-purple-800 dark:bg-purple-600 text-white hover:bg-purple-800 dark:hover:bg-purple-600",
27
+ pink: "bg-pink-800 dark:bg-pink-600 text-white hover:bg-pink-800 dark:hover:bg-pink-600",
28
+ rose: "bg-rose-800 dark:bg-rose-600 text-white hover:bg-rose-800 dark:hover:bg-rose-600",
29
+ sky: "bg-sky-500 dark:bg-sky-700 text-white hover:bg-sky-500 dark:hover:bg-sky-800",
30
+ teal: "bg-teal-500 dark:bg-teal-700 text-white hover:bg-teal-500 dark:hover:bg-teal-800",
31
+ yellow: "bg-yellow-500 dark:bg-yellow-800 text-white hover:bg-yellow-500 dark:hover:bg-yellow-900",
32
+ orange: "bg-orange-500 dark:bg-orange-800 text-white hover:bg-orange-500 dark:hover:bg-orange-900",
33
+ gray: "bg-gray-500 dark:bg-gray-700 text-white hover:bg-gray-500 dark:hover:bg-gray-800",
34
+ amber: "bg-amber-500 dark:bg-amber-800 text-white hover:bg-amber-500 dark:hover:bg-amber-900",
35
+ violet: "bg-violet-800 dark:bg-violet-600 text-white hover:bg-violet-800 dark:hover:bg-violet-600",
36
+ "gradient-blue": "bg-linear-to-r from-blue-800 dark:from-blue-600 to-purple-800 dark:to-purple-600 text-white hover:from-blue-800 dark:hover:from-blue-600 hover:to-purple-800 dark:hover:to-purple-600",
37
+ "gradient-green": "bg-linear-to-r from-green-800 dark:from-green-600 to-lime-800 dark:to-lime-600 text-white hover:from-green-800 dark:hover:from-green-600 hover:to-lime-800 dark:hover:to-lime-600",
38
+ "gradient-red": "bg-linear-to-r from-red-800 dark:from-red-600 to-pink-800 dark:to-pink-600 text-white hover:from-red-800 dark:hover:from-red-600 hover:to-pink-800 dark:hover:to-pink-600",
39
+ "gradient-yellow": "bg-linear-to-r from-yellow-800 dark:from-yellow-600 to-orange-800 dark:to-orange-600 text-white hover:from-yellow-800 dark:hover:from-yellow-600 hover:to-orange-800 dark:hover:to-orange-600",
40
+ "gradient-purple": "bg-linear-to-r from-purple-800 dark:from-purple-600 to-pink-800 dark:to-pink-600 text-white hover:from-purple-800 dark:hover:from-purple-600 hover:to-pink-800 dark:hover:to-pink-600",
41
+ "gradient-teal": "bg-linear-to-r from-teal-800 dark:from-teal-600 to-cyan-800 dark:to-cyan-600 text-white hover:from-teal-800 dark:hover:from-teal-600 hover:to-cyan-800 dark:hover:to-cyan-600",
42
+ "gradient-indigo": "bg-linear-to-r from-indigo-800 dark:from-indigo-600 to-purple-800 dark:to-purple-600 text-white hover:from-indigo-800 dark:hover:from-indigo-600 hover:to-purple-800 dark:hover:to-purple-600",
43
+ "gradient-pink": "bg-linear-to-r from-pink-800 dark:from-pink-600 to-rose-800 dark:to-rose-600 text-white hover:from-pink-800 dark:hover:from-pink-600 hover:to-rose-800 dark:hover:to-rose-600",
44
+ "gradient-orange": "bg-linear-to-r from-orange-800 dark:from-orange-600 to-red-800 dark:to-red-600 text-white hover:from-orange-800 dark:hover:from-orange-600 hover:to-red-800 dark:hover:to-red-600"
45
+ },
46
+ size: {
47
+ sm: "h-7 md:h-9 px-3 text-xs",
48
+ md: "h-9 md:h-11 px-4",
49
+ lg: "h-10 md:h-12 px-5 text-base",
50
+ xl: "h-12 md:h-14 px-6 text-lg",
51
+ "2xl": "h-14 md:h-16 px-6 md:px-8 text-xl",
52
+ "3xl": "h-16 md:h-18 px-8 md:px-10 text-2xl",
53
+ "4xl": "h-18 md:h-20 px-10 md:px-12 text-2xl",
54
+ "5xl": "h-20 md:h-22 px-12 md:px-14 text-2xl",
55
+ "6xl": "h-22 md:h-24 px-14 md:px-16 text-2xl",
56
+ "7xl": "h-24 md:h-26 px-16 md:px-18 text-2xl",
57
+ "8xl": "h-26 md:h-28 px-20 text-2xl",
58
+ "9xl": "h-24 md:h-30 px-18 md:px-22 text-2xl",
59
+ "10xl": "h-26 md:h-32 px-20 md:px-24 text-2xl",
60
+ icon: "h-10 w-10"
61
+ }
62
+ },
63
+ defaultVariants: {
64
+ appearance: "default",
65
+ size: "md"
66
+ }
67
+ }
68
+ );
69
+
70
+ exports.buttonVariants = buttonVariants;
71
+ //# sourceMappingURL=chunk-VGWA26BN.js.map
72
+ //# sourceMappingURL=chunk-VGWA26BN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/buttons/variants.ts"],"names":["cva"],"mappings":";;;;;AAEO,IAAM,cAAA,GAAiBA,0BAAA;AAAA,EAC5B;AAAA,IACE,4EAAA;AAAA,IACA,uFAAA;AAAA,IACA,4IAAA;AAAA,IACA,kDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,UAAA,EAAY;AAAA,QACV,OAAA,EACE,uLAAA;AAAA,QACF,SAAA,EACE,6GAAA;AAAA,QACF,WAAA,EACE,kFAAA;AAAA,QACF,OAAA,EACE,mJAAA;AAAA,QACF,KAAA,EACE,0FAAA;AAAA,QACF,IAAA,EAAM,oFAAA;AAAA,QACN,KAAA,EACE,mKAAA;AAAA,QACF,OAAA,EACE,8FAAA;AAAA,QACF,MAAA,EACE,0FAAA;AAAA,QACF,MAAA,EACE,0FAAA;AAAA,QACF,IAAA,EAAM,kFAAA;AAAA,QACN,IAAA,EAAM,kFAAA;AAAA,QACN,GAAA,EAAK,8EAAA;AAAA,QACL,IAAA,EAAM,kFAAA;AAAA,QACN,MAAA,EACE,0FAAA;AAAA,QACF,MAAA,EACE,0FAAA;AAAA,QACF,IAAA,EAAM,kFAAA;AAAA,QACN,KAAA,EACE,sFAAA;AAAA,QACF,MAAA,EACE,0FAAA;AAAA,QACF,eAAA,EACE,uLAAA;AAAA,QACF,gBAAA,EACE,mLAAA;AAAA,QACF,cAAA,EACE,2KAAA;AAAA,QACF,iBAAA,EACE,+LAAA;AAAA,QACF,iBAAA,EACE,uLAAA;AAAA,QACF,eAAA,EACE,+KAAA;AAAA,QACF,iBAAA,EACE,+LAAA;AAAA,QACF,eAAA,EACE,+KAAA;AAAA,QACF,iBAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,yBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,6BAAA;AAAA,QACJ,EAAA,EAAI,2BAAA;AAAA,QACJ,KAAA,EAAO,mCAAA;AAAA,QACP,KAAA,EAAO,qCAAA;AAAA,QACP,KAAA,EAAO,sCAAA;AAAA,QACP,KAAA,EAAO,sCAAA;AAAA,QACP,KAAA,EAAO,sCAAA;AAAA,QACP,KAAA,EAAO,sCAAA;AAAA,QACP,KAAA,EAAO,6BAAA;AAAA,QACP,KAAA,EAAO,sCAAA;AAAA,QACP,MAAA,EAAQ,sCAAA;AAAA,QACR,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM;AAAA;AACR;AAEJ","file":"chunk-VGWA26BN.js","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl\",\n \"text-sm font-medium ring-offset-slate-50 dark:ring-offset-slate-950 transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-600 dark:focus-visible:ring-slate-300 focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"select-none\",\n ],\n {\n variants: {\n appearance: {\n default:\n \"bg-slate-900 dark:bg-slate-50 text-slate-50 dark:text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.08)] dark:shadow-[0_1px_2px_rgba(15,23,42,0.12)] hover:bg-black dark:hover:bg-white\",\n secondary:\n \"bg-slate-200 dark:bg-slate-800 text-slate-900 dark:text-slate-50 hover:bg-slate-300 dark:hover:bg-slate-700\",\n destructive:\n \"bg-rose-500 dark:bg-rose-700 text-white hover:bg-rose-500 dark:hover:bg-rose-800\",\n outline:\n \"border border-black/10 dark:border-white/10 bg-black/5 dark:bg-white/5 text-slate-900 dark:text-slate-50 hover:bg-black/10 dark:hover:bg-white/10\",\n ghost:\n \"bg-transparent text-slate-700 dark:text-slate-200 hover:bg-black/5 dark:hover:bg-white/5\",\n link: \"bg-transparent text-cyan-700 dark:text-cyan-300 underline-offset-4 hover:underline\",\n glass:\n \"border border-black/15 dark:border-white/15 bg-black/10 dark:bg-white/10 text-slate-900 dark:text-white backdrop-blur-md hover:bg-black/15 dark:hover:bg-white/15\",\n emerald:\n \"bg-emerald-500 dark:bg-emerald-800 text-white hover:bg-emerald-500 dark:hover:bg-emerald-900\",\n indigo:\n \"bg-indigo-800 dark:bg-indigo-600 text-white hover:bg-indigo-800 dark:hover:bg-indigo-600\",\n purple:\n \"bg-purple-800 dark:bg-purple-600 text-white hover:bg-purple-800 dark:hover:bg-purple-600\",\n pink: \"bg-pink-800 dark:bg-pink-600 text-white hover:bg-pink-800 dark:hover:bg-pink-600\",\n rose: \"bg-rose-800 dark:bg-rose-600 text-white hover:bg-rose-800 dark:hover:bg-rose-600\",\n sky: \"bg-sky-500 dark:bg-sky-700 text-white hover:bg-sky-500 dark:hover:bg-sky-800\",\n teal: \"bg-teal-500 dark:bg-teal-700 text-white hover:bg-teal-500 dark:hover:bg-teal-800\",\n yellow:\n \"bg-yellow-500 dark:bg-yellow-800 text-white hover:bg-yellow-500 dark:hover:bg-yellow-900\",\n orange:\n \"bg-orange-500 dark:bg-orange-800 text-white hover:bg-orange-500 dark:hover:bg-orange-900\",\n gray: \"bg-gray-500 dark:bg-gray-700 text-white hover:bg-gray-500 dark:hover:bg-gray-800\",\n amber:\n \"bg-amber-500 dark:bg-amber-800 text-white hover:bg-amber-500 dark:hover:bg-amber-900\",\n violet:\n \"bg-violet-800 dark:bg-violet-600 text-white hover:bg-violet-800 dark:hover:bg-violet-600\",\n \"gradient-blue\":\n \"bg-linear-to-r from-blue-800 dark:from-blue-600 to-purple-800 dark:to-purple-600 text-white hover:from-blue-800 dark:hover:from-blue-600 hover:to-purple-800 dark:hover:to-purple-600\",\n \"gradient-green\":\n \"bg-linear-to-r from-green-800 dark:from-green-600 to-lime-800 dark:to-lime-600 text-white hover:from-green-800 dark:hover:from-green-600 hover:to-lime-800 dark:hover:to-lime-600\",\n \"gradient-red\":\n \"bg-linear-to-r from-red-800 dark:from-red-600 to-pink-800 dark:to-pink-600 text-white hover:from-red-800 dark:hover:from-red-600 hover:to-pink-800 dark:hover:to-pink-600\",\n \"gradient-yellow\":\n \"bg-linear-to-r from-yellow-800 dark:from-yellow-600 to-orange-800 dark:to-orange-600 text-white hover:from-yellow-800 dark:hover:from-yellow-600 hover:to-orange-800 dark:hover:to-orange-600\",\n \"gradient-purple\":\n \"bg-linear-to-r from-purple-800 dark:from-purple-600 to-pink-800 dark:to-pink-600 text-white hover:from-purple-800 dark:hover:from-purple-600 hover:to-pink-800 dark:hover:to-pink-600\",\n \"gradient-teal\":\n \"bg-linear-to-r from-teal-800 dark:from-teal-600 to-cyan-800 dark:to-cyan-600 text-white hover:from-teal-800 dark:hover:from-teal-600 hover:to-cyan-800 dark:hover:to-cyan-600\",\n \"gradient-indigo\":\n \"bg-linear-to-r from-indigo-800 dark:from-indigo-600 to-purple-800 dark:to-purple-600 text-white hover:from-indigo-800 dark:hover:from-indigo-600 hover:to-purple-800 dark:hover:to-purple-600\",\n \"gradient-pink\":\n \"bg-linear-to-r from-pink-800 dark:from-pink-600 to-rose-800 dark:to-rose-600 text-white hover:from-pink-800 dark:hover:from-pink-600 hover:to-rose-800 dark:hover:to-rose-600\",\n \"gradient-orange\":\n \"bg-linear-to-r from-orange-800 dark:from-orange-600 to-red-800 dark:to-red-600 text-white hover:from-orange-800 dark:hover:from-orange-600 hover:to-red-800 dark:hover:to-red-600\",\n },\n size: {\n sm: \"h-7 md:h-9 px-3 text-xs\",\n md: \"h-9 md:h-11 px-4\",\n lg: \"h-10 md:h-12 px-5 text-base\",\n xl: \"h-12 md:h-14 px-6 text-lg\",\n \"2xl\": \"h-14 md:h-16 px-6 md:px-8 text-xl\",\n \"3xl\": \"h-16 md:h-18 px-8 md:px-10 text-2xl\",\n \"4xl\": \"h-18 md:h-20 px-10 md:px-12 text-2xl\",\n \"5xl\": \"h-20 md:h-22 px-12 md:px-14 text-2xl\",\n \"6xl\": \"h-22 md:h-24 px-14 md:px-16 text-2xl\",\n \"7xl\": \"h-24 md:h-26 px-16 md:px-18 text-2xl\",\n \"8xl\": \"h-26 md:h-28 px-20 text-2xl\",\n \"9xl\": \"h-24 md:h-30 px-18 md:px-22 text-2xl\",\n \"10xl\": \"h-26 md:h-32 px-20 md:px-24 text-2xl\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n },\n);\n"]}
@@ -42,13 +42,7 @@ function useDynamicStepper({
42
42
  const nextStep = clampDynamicStepperIndex(activeStep - 1, stepCount);
43
43
  setStoredStep(nextStep);
44
44
  onPrevious?.(nextStep);
45
- }, [
46
- activeStep,
47
- canGoPrevious,
48
- onPrevious,
49
- setStoredStep,
50
- stepCount
51
- ]);
45
+ }, [activeStep, canGoPrevious, onPrevious, setStoredStep, stepCount]);
52
46
  const goNext = react.useCallback(() => {
53
47
  if (!canGoNext) {
54
48
  return;
@@ -69,5 +63,5 @@ function useDynamicStepper({
69
63
  }
70
64
 
71
65
  exports.useDynamicStepper = useDynamicStepper;
72
- //# sourceMappingURL=chunk-MEJMX4QI.js.map
73
- //# sourceMappingURL=chunk-MEJMX4QI.js.map
66
+ //# sourceMappingURL=chunk-VMCOX3Z2.js.map
67
+ //# sourceMappingURL=chunk-VMCOX3Z2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useDynamicStepper/useDynamicStepper.ts"],"names":["useControllableState","useMemo","useCallback"],"mappings":";;;;;AAWA,SAAS,wBAAA,CAAyB,OAAe,SAAA,EAA2B;AAC1E,EAAA,IAAI,aAAa,CAAA,EAAG;AAClB,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA,CAAK,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAC,CAAA,EAAG,YAAY,CAAC,CAAA;AACnD;AAQO,SAAS,iBAAA,CAAkB;AAAA,EAChC,SAAA;AAAA,EACA,UAAA,EAAY,cAAA;AAAA,EACZ,iBAAA,GAAoB,CAAA;AAAA,EACpB,kBAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAAqD;AACnD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,qCAAA,CAA6B;AAAA,IAC/D,KAAA,EAAO,cAAA;AAAA,IACP,YAAA,EAAc,wBAAA,CAAyB,iBAAA,EAAmB,SAAS,CAAA;AAAA,IACnE,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,MAAM,UAAA,GAAaC,aAAA;AAAA,IACjB,MAAM,wBAAA,CAAyB,UAAA,EAAY,SAAS,CAAA;AAAA,IACpD,CAAC,YAAY,SAAS;AAAA,GACxB;AAEA,EAAA,MAAM,aAAA,GAAgB,SAAA,GAAY,CAAA,IAAK,UAAA,GAAa,CAAA;AACpD,EAAA,MAAM,SAAA,GAAY,SAAA,GAAY,CAAA,IAAK,UAAA,GAAa,SAAA,GAAY,CAAA;AAE5D,EAAA,MAAM,aAAA,GAAgBC,iBAAA;AAAA,IACpB,CAAC,IAAA,KAA8C;AAC7C,MAAA,MAAM,WACJ,OAAO,IAAA,KAAS,UAAA,GACX,IAAA,CAAkC,UAAU,CAAA,GAC7C,IAAA;AACN,MAAA,aAAA,CAAc,wBAAA,CAAyB,QAAA,EAAU,SAAS,CAAC,CAAA;AAAA,IAC7D,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,aAAA,EAAe,SAAS;AAAA,GACvC;AAEA,EAAA,MAAM,UAAA,GAAaA,kBAAY,MAAM;AACnC,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAW,wBAAA,CAAyB,UAAA,GAAa,CAAA,EAAG,SAAS,CAAA;AACnE,IAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,IAAA,UAAA,GAAa,QAAQ,CAAA;AAAA,EACvB,GAAG,CAAC,UAAA,EAAY,eAAe,UAAA,EAAY,aAAA,EAAe,SAAS,CAAC,CAAA;AAEpE,EAAA,MAAM,MAAA,GAASA,kBAAY,MAAM;AAC/B,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAW,wBAAA,CAAyB,UAAA,GAAa,CAAA,EAAG,SAAS,CAAA;AACnE,IAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,IAAA,MAAA,GAAS,QAAQ,CAAA;AAAA,EACnB,GAAG,CAAC,UAAA,EAAY,WAAW,MAAA,EAAQ,aAAA,EAAe,SAAS,CAAC,CAAA;AAE5D,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-VMCOX3Z2.js","sourcesContent":["\"use client\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport { useControllableState } from \"../useControllableState/useControllableState\";\n\nimport type {\n UseDynamicStepperParams,\n UseDynamicStepperResult,\n} from \"../../ui/dynamic-stepper/types\";\n\nfunction clampDynamicStepperIndex(index: number, stepCount: number): number {\n if (stepCount <= 0) {\n return 0;\n }\n return Math.min(Math.max(index, 0), stepCount - 1);\n}\n\n/**\n * Headless multi-step index with prev/next navigation.\n *\n * @param params.stepCount - Number of steps (0-based count semantics via indices).\n * @returns Active step, setter, navigation helpers, and boundary flags.\n */\nexport function useDynamicStepper({\n stepCount,\n activeStep: activeStepProp,\n defaultActiveStep = 0,\n onActiveStepChange,\n onPrevious,\n onNext,\n}: UseDynamicStepperParams): UseDynamicStepperResult {\n const [storedStep, setStoredStep] = useControllableState<number>({\n value: activeStepProp,\n defaultValue: clampDynamicStepperIndex(defaultActiveStep, stepCount),\n onChange: onActiveStepChange,\n });\n\n const activeStep = useMemo(\n () => clampDynamicStepperIndex(storedStep, stepCount),\n [storedStep, stepCount],\n );\n\n const canGoPrevious = stepCount > 0 && activeStep > 0;\n const canGoNext = stepCount > 0 && activeStep < stepCount - 1;\n\n const setActiveStep = useCallback(\n (next: number | ((prev: number) => number)) => {\n const resolved =\n typeof next === \"function\"\n ? (next as (prev: number) => number)(activeStep)\n : next;\n setStoredStep(clampDynamicStepperIndex(resolved, stepCount));\n },\n [activeStep, setStoredStep, stepCount],\n );\n\n const goPrevious = useCallback(() => {\n if (!canGoPrevious) {\n return;\n }\n const nextStep = clampDynamicStepperIndex(activeStep - 1, stepCount);\n setStoredStep(nextStep);\n onPrevious?.(nextStep);\n }, [activeStep, canGoPrevious, onPrevious, setStoredStep, stepCount]);\n\n const goNext = useCallback(() => {\n if (!canGoNext) {\n return;\n }\n const nextStep = clampDynamicStepperIndex(activeStep + 1, stepCount);\n setStoredStep(nextStep);\n onNext?.(nextStep);\n }, [activeStep, canGoNext, onNext, setStoredStep, stepCount]);\n\n return {\n activeStep,\n setActiveStep,\n goPrevious,\n goNext,\n canGoPrevious,\n canGoNext,\n stepCount,\n };\n}\n"]}
@@ -0,0 +1,323 @@
1
+ import { useFocusManagement } from './chunk-K6YI4FJO.mjs';
2
+ import { cn } from './chunk-4D54YOL6.mjs';
3
+ import { cva } from 'class-variance-authority';
4
+ import { createContext, useContext, useState, useCallback, useId, useRef, useMemo } from 'react';
5
+ import { createPortal } from 'react-dom';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ var modalOverlayVariants = cva(
9
+ "fixed inset-0 z-50 bg-slate-950/70 backdrop-blur-sm data-[state=open]:animate-in"
10
+ );
11
+ var modalTriggerVariants = cva(
12
+ "relative inline-flex shrink-0 cursor-pointer rounded-md border",
13
+ {
14
+ variants: {
15
+ appearance: {
16
+ default: "bg-slate-50 dark:bg-slate-950 text-slate-900 dark:text-slate-50",
17
+ glass: "border-black/15 dark:border-white/15 bg-slate-50/70 dark:bg-slate-950/70 backdrop-blur-xl text-slate-900 dark:text-slate-50",
18
+ sky: "border-sky-800 dark:border-sky-600 bg-sky-50 dark:bg-sky-950/70 backdrop-blur-xl text-sky-800 dark:text-sky-50",
19
+ rose: "border-rose-800 dark:border-rose-600 bg-rose-50 dark:bg-rose-950/70 backdrop-blur-xl text-rose-800 dark:text-rose-50",
20
+ purple: "border-purple-800 dark:border-purple-600 bg-purple-50 dark:bg-purple-950/70 backdrop-blur-xl text-purple-800 dark:text-purple-50",
21
+ pink: "border-pink-800 dark:border-pink-600 bg-pink-50 dark:bg-pink-950/70 backdrop-blur-xl text-pink-800 dark:text-pink-50",
22
+ orange: "border-orange-800 dark:border-orange-600 bg-orange-50 dark:bg-orange-950/70 backdrop-blur-xl text-orange-800 dark:text-orange-50",
23
+ yellow: "border-yellow-800 dark:border-yellow-600 bg-yellow-50 dark:bg-yellow-950/70 backdrop-blur-xl text-yellow-800 dark:text-yellow-50",
24
+ teal: "border-teal-800 dark:border-teal-600 bg-teal-50 dark:bg-teal-950/70 backdrop-blur-xl text-teal-800 dark:text-teal-50",
25
+ indigo: "border-indigo-800 dark:border-indigo-600 bg-indigo-50 dark:bg-indigo-950/70 backdrop-blur-xl text-indigo-800 dark:text-indigo-50",
26
+ emerald: "border-emerald-800 dark:border-emerald-600 bg-emerald-50 dark:bg-emerald-950/70 backdrop-blur-xl text-emerald-800 dark:text-emerald-50",
27
+ gray: "border-gray-800 dark:border-gray-600 bg-gray-50 dark:bg-gray-950/70 backdrop-blur-xl text-gray-800 dark:text-gray-50",
28
+ amber: "border-amber-800 dark:border-amber-600 bg-amber-50 dark:bg-amber-950/70 backdrop-blur-xl text-amber-800 dark:text-amber-50",
29
+ violet: "border-violet-800 dark:border-violet-600 bg-violet-50 dark:bg-violet-950/70 backdrop-blur-xl text-violet-800 dark:text-violet-50",
30
+ "gradient-blue": "border-blue-800 dark:border-blue-600 bg-linear-to-r from-blue-50 dark:from-blue-950/70 to-purple-50 dark:to-purple-950/70 backdrop-blur-xl text-blue-800 dark:text-blue-50",
31
+ "gradient-green": "border-green-800 dark:border-green-600 bg-linear-to-r from-green-50 dark:from-green-950/70 to-lime-50 dark:to-lime-950/70 backdrop-blur-xl text-green-800 dark:text-green-50",
32
+ "gradient-red": "border-red-800 dark:border-red-600 bg-linear-to-r from-red-50 dark:from-red-950/70 to-pink-50 dark:to-pink-950/70 backdrop-blur-xl text-red-800 dark:text-red-50",
33
+ "gradient-yellow": "border-yellow-800 dark:border-yellow-600 bg-linear-to-r from-yellow-50 dark:from-yellow-950/70 to-orange-50 dark:to-orange-950/70 backdrop-blur-xl text-yellow-800 dark:text-yellow-50",
34
+ "gradient-purple": "border-purple-800 dark:border-purple-600 bg-linear-to-r from-purple-50 dark:from-purple-950/70 to-pink-50 dark:to-pink-950/70 backdrop-blur-xl text-purple-800 dark:text-purple-50",
35
+ "gradient-teal": "border-teal-800 dark:border-teal-600 bg-linear-to-r from-teal-50 dark:from-teal-950/70 to-cyan-50 dark:to-cyan-950/70 backdrop-blur-xl text-teal-800 dark:text-teal-50",
36
+ "gradient-indigo": "border-indigo-800 dark:border-indigo-600 bg-linear-to-r from-indigo-50 dark:from-indigo-950/70 to-purple-50 dark:to-purple-950/70 backdrop-blur-xl text-indigo-800 dark:text-indigo-50",
37
+ "gradient-pink": "border-pink-800 dark:border-pink-600 bg-linear-to-r from-pink-50 dark:from-pink-950/70 to-rose-50 dark:to-rose-950/70 backdrop-blur-xl text-pink-800 dark:text-pink-50",
38
+ "gradient-orange": "border-orange-800 dark:border-orange-600 bg-linear-to-r from-orange-50 dark:from-orange-950/70 to-red-50 dark:to-red-950/70 backdrop-blur-xl text-orange-800 dark:text-orange-50"
39
+ }
40
+ },
41
+ defaultVariants: {
42
+ appearance: "default"
43
+ }
44
+ }
45
+ );
46
+ var modalContentVariants = cva(
47
+ "fixed left-1/2 z-50 w-[calc(100%-2rem)] max-h-[min(90vh,720px)] translate-x-[-50%] overflow-y-auto border border-black/10 dark:border-white/10 bg-slate-50 dark:bg-slate-950 p-6 text-slate-900 dark:text-slate-50 shadow-[0_12px_40px_rgba(15,23,42,0.14)] dark:shadow-[0_24px_80px_rgba(15,23,42,0.55)] focus:outline-none",
48
+ {
49
+ variants: {
50
+ size: {
51
+ sm: "max-w-md",
52
+ md: "max-w-lg",
53
+ lg: "max-w-2xl",
54
+ xl: "max-w-4xl",
55
+ full: "max-w-[calc(100%-2rem)]"
56
+ },
57
+ position: {
58
+ center: "top-1/2 translate-y-[-50%]",
59
+ top: "top-10 translate-y-0",
60
+ bottom: "bottom-10 translate-y-0"
61
+ },
62
+ appearance: {
63
+ default: "bg-slate-50 dark:bg-slate-950",
64
+ glass: "border-black/15 dark:border-white/15 bg-slate-50/70 dark:bg-slate-950/70 backdrop-blur-xl",
65
+ sky: "border-sky-800 dark:border-sky-600 bg-sky-50 dark:bg-sky-950/70 backdrop-blur-xl",
66
+ rose: "border-rose-800 dark:border-rose-600 bg-rose-50 dark:bg-rose-950/70 backdrop-blur-xl",
67
+ purple: "border-purple-800 dark:border-purple-600 bg-purple-50 dark:bg-purple-950/70 backdrop-blur-xl",
68
+ pink: "border-pink-800 dark:border-pink-600 bg-pink-50 dark:bg-pink-950/70 backdrop-blur-xl",
69
+ orange: "border-orange-800 dark:border-orange-600 bg-orange-50 dark:bg-orange-950/70 backdrop-blur-xl",
70
+ yellow: "border-yellow-800 dark:border-yellow-600 bg-yellow-50 dark:bg-yellow-950/70 backdrop-blur-xl",
71
+ teal: "border-teal-800 dark:border-teal-600 bg-teal-50 dark:bg-teal-950/70 backdrop-blur-xl",
72
+ indigo: "border-indigo-800 dark:border-indigo-600 bg-indigo-50 dark:bg-indigo-950/70 backdrop-blur-xl",
73
+ emerald: "border-emerald-800 dark:border-emerald-600 bg-emerald-50 dark:bg-emerald-950/70 backdrop-blur-xl",
74
+ gray: "border-gray-800 dark:border-gray-600 bg-gray-50 dark:bg-gray-950/70 backdrop-blur-xl",
75
+ amber: "border-amber-800 dark:border-amber-600 bg-amber-50 dark:bg-amber-950/70 backdrop-blur-xl",
76
+ violet: "border-violet-800 dark:border-violet-600 bg-violet-50 dark:bg-violet-950/70 backdrop-blur-xl",
77
+ "gradient-blue": "border-blue-800 dark:border-blue-600 bg-linear-to-r from-blue-50 dark:from-blue-950/70 to-purple-50 dark:to-purple-950/70 backdrop-blur-xl",
78
+ "gradient-green": "border-green-800 dark:border-green-600 bg-linear-to-r from-green-50 dark:from-green-950/70 to-lime-50 dark:to-lime-950/70 backdrop-blur-xl",
79
+ "gradient-red": "border-red-800 dark:border-red-600 bg-linear-to-r from-red-50 dark:from-red-950/70 to-pink-50 dark:to-pink-950/70 backdrop-blur-xl",
80
+ "gradient-yellow": "border-yellow-800 dark:border-yellow-600 bg-linear-to-r from-yellow-50 dark:from-yellow-950/70 to-orange-50 dark:to-orange-950/70 backdrop-blur-xl",
81
+ "gradient-purple": "border-purple-800 dark:border-purple-600 bg-linear-to-r from-purple-50 dark:from-purple-950/70 to-pink-50 dark:to-pink-950/70 backdrop-blur-xl",
82
+ "gradient-teal": "border-teal-800 dark:border-teal-600 bg-linear-to-r from-teal-50 dark:from-teal-950/70 to-cyan-50 dark:to-cyan-950/70 backdrop-blur-xl",
83
+ "gradient-indigo": "border-indigo-800 dark:border-indigo-600 bg-linear-to-r from-indigo-50 dark:from-indigo-950/70 to-purple-50 dark:to-purple-950/70 backdrop-blur-xl",
84
+ "gradient-pink": "border-pink-800 dark:border-pink-600 bg-linear-to-r from-pink-50 dark:from-pink-950/70 to-rose-50 dark:to-rose-950/70 backdrop-blur-xl",
85
+ "gradient-orange": "border-orange-800 dark:border-orange-600 bg-linear-to-r from-orange-50 dark:from-orange-950/70 to-red-50 dark:to-red-950/70 backdrop-blur-xl"
86
+ }
87
+ },
88
+ defaultVariants: {
89
+ size: "md",
90
+ position: "center",
91
+ appearance: "default"
92
+ }
93
+ }
94
+ );
95
+ var ModalContext = createContext(null);
96
+ function useModalContext(component) {
97
+ const ctx = useContext(ModalContext);
98
+ if (!ctx) {
99
+ throw new Error(`${component} must be used within <Modal>`);
100
+ }
101
+ return ctx;
102
+ }
103
+ function Modal({
104
+ open,
105
+ defaultOpen = false,
106
+ onOpenChange,
107
+ children
108
+ }) {
109
+ const isControlled = open !== void 0;
110
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
111
+ const resolvedOpen = isControlled ? Boolean(open) : uncontrolledOpen;
112
+ const setOpen = useCallback(
113
+ (next) => {
114
+ if (!isControlled) {
115
+ setUncontrolledOpen(next);
116
+ }
117
+ onOpenChange?.(next);
118
+ },
119
+ [isControlled, onOpenChange]
120
+ );
121
+ const baseId = useId();
122
+ const titleId = `${baseId}-title`;
123
+ const descriptionId = `${baseId}-description`;
124
+ const contentRef = useRef(null);
125
+ const triggerRef = useRef(null);
126
+ const ctx = useMemo(
127
+ () => ({
128
+ open: resolvedOpen,
129
+ setOpen,
130
+ titleId,
131
+ descriptionId,
132
+ contentRef,
133
+ triggerRef
134
+ }),
135
+ [descriptionId, resolvedOpen, setOpen, titleId]
136
+ );
137
+ return /* @__PURE__ */ jsx(ModalContext.Provider, { value: ctx, children });
138
+ }
139
+ Modal.displayName = "Modal";
140
+ function ModalTrigger({
141
+ className,
142
+ children,
143
+ appearance,
144
+ onClick,
145
+ ref: refProp,
146
+ ...rest
147
+ }) {
148
+ const { setOpen, triggerRef } = useModalContext("ModalTrigger");
149
+ return /* @__PURE__ */ jsx(
150
+ "button",
151
+ {
152
+ ref: (node) => {
153
+ triggerRef.current = node;
154
+ if (typeof refProp === "function") {
155
+ refProp(node);
156
+ } else if (refProp) {
157
+ refProp.current = node;
158
+ }
159
+ },
160
+ type: "button",
161
+ "data-slot": "modal-trigger",
162
+ className: cn(modalTriggerVariants({ appearance }), className),
163
+ onClick: (event) => {
164
+ onClick?.(event);
165
+ if (!event.defaultPrevented) {
166
+ setOpen(true);
167
+ }
168
+ },
169
+ ...rest,
170
+ children
171
+ }
172
+ );
173
+ }
174
+ ModalTrigger.displayName = "ModalTrigger";
175
+ function ModalContent({
176
+ className,
177
+ size,
178
+ position,
179
+ appearance,
180
+ children,
181
+ ref,
182
+ id,
183
+ style
184
+ }) {
185
+ const { open, setOpen, titleId, descriptionId, contentRef, triggerRef } = useModalContext("ModalContent");
186
+ useFocusManagement({
187
+ open,
188
+ setOpen,
189
+ contentRef,
190
+ triggerRef
191
+ });
192
+ const portalTarget = typeof document !== "undefined" ? document.body : null;
193
+ if (!portalTarget) {
194
+ return null;
195
+ }
196
+ return createPortal(
197
+ open ? /* @__PURE__ */ jsxs("div", { className: "fixed inset-0 z-9999", "data-slot": "modal-portal", children: [
198
+ /* @__PURE__ */ jsx(
199
+ "div",
200
+ {
201
+ role: "presentation",
202
+ "data-slot": "modal-overlay",
203
+ className: modalOverlayVariants(),
204
+ onClick: () => setOpen(false)
205
+ }
206
+ ),
207
+ /* @__PURE__ */ jsx(
208
+ "div",
209
+ {
210
+ ref: (node) => {
211
+ contentRef.current = node;
212
+ if (typeof ref === "function") {
213
+ ref(node);
214
+ } else if (ref) {
215
+ ref.current = node;
216
+ }
217
+ },
218
+ role: "dialog",
219
+ "aria-modal": "true",
220
+ "aria-labelledby": titleId,
221
+ "aria-describedby": descriptionId,
222
+ "data-slot": "modal-content",
223
+ tabIndex: -1,
224
+ className: cn(
225
+ modalContentVariants({ size, position, appearance }),
226
+ className
227
+ ),
228
+ id,
229
+ style,
230
+ children
231
+ }
232
+ )
233
+ ] }) : null,
234
+ portalTarget
235
+ );
236
+ }
237
+ ModalContent.displayName = "ModalContent";
238
+ function ModalHeader({ className, children }) {
239
+ return /* @__PURE__ */ jsx(
240
+ "header",
241
+ {
242
+ "data-slot": "modal-header",
243
+ className: cn("mb-4 flex flex-col gap-2", className),
244
+ children
245
+ }
246
+ );
247
+ }
248
+ ModalHeader.displayName = "ModalHeader";
249
+ function ModalBody({ className, children }) {
250
+ return /* @__PURE__ */ jsx(
251
+ "div",
252
+ {
253
+ "data-slot": "modal-body",
254
+ className: cn("text-sm text-slate-300", className),
255
+ children
256
+ }
257
+ );
258
+ }
259
+ ModalBody.displayName = "ModalBody";
260
+ function ModalFooter({ className, children }) {
261
+ return /* @__PURE__ */ jsx(
262
+ "footer",
263
+ {
264
+ "data-slot": "modal-footer",
265
+ className: cn("mt-6 flex justify-end gap-2", className),
266
+ children
267
+ }
268
+ );
269
+ }
270
+ ModalFooter.displayName = "ModalFooter";
271
+ function ModalTitle({ className, children }) {
272
+ const { titleId } = useModalContext("ModalTitle");
273
+ return /* @__PURE__ */ jsx(
274
+ "h2",
275
+ {
276
+ id: titleId,
277
+ "data-slot": "modal-title",
278
+ className: cn("text-lg font-semibold", className),
279
+ children
280
+ }
281
+ );
282
+ }
283
+ ModalTitle.displayName = "ModalTitle";
284
+ function ModalDescription({ className, children }) {
285
+ const { descriptionId } = useModalContext("ModalDescription");
286
+ return /* @__PURE__ */ jsx(
287
+ "p",
288
+ {
289
+ id: descriptionId,
290
+ "data-slot": "modal-description",
291
+ className: cn("text-sm text-slate-400", className),
292
+ children
293
+ }
294
+ );
295
+ }
296
+ ModalDescription.displayName = "ModalDescription";
297
+ function ModalClose({
298
+ className,
299
+ children,
300
+ ...rest
301
+ }) {
302
+ const { setOpen } = useModalContext("ModalClose");
303
+ return /* @__PURE__ */ jsx(
304
+ "button",
305
+ {
306
+ type: "button",
307
+ "data-slot": "modal-close",
308
+ className: cn(
309
+ "absolute right-4 top-4 inline-flex size-14 items-center cursor-pointer justify-center rounded-md text-slate-800 dark:text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30",
310
+ className
311
+ ),
312
+ "aria-label": "Close dialog",
313
+ onClick: () => setOpen(false),
314
+ ...rest,
315
+ children: children ?? "\xD7"
316
+ }
317
+ );
318
+ }
319
+ ModalClose.displayName = "ModalClose";
320
+
321
+ export { Modal, ModalBody, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, modalContentVariants, modalOverlayVariants, useModalContext };
322
+ //# sourceMappingURL=chunk-WNLDXBS6.mjs.map
323
+ //# sourceMappingURL=chunk-WNLDXBS6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/modal/variants.ts","../src/ui/modal/modal-base.tsx"],"names":[],"mappings":"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","file":"chunk-WNLDXBS6.mjs","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const modalOverlayVariants = cva(\n \"fixed inset-0 z-50 bg-slate-950/70 backdrop-blur-sm data-[state=open]:animate-in\",\n);\n\nexport const modalTriggerVariants = cva(\n \"relative inline-flex shrink-0 cursor-pointer rounded-md border\",\n {\n variants: {\n appearance: {\n default:\n \"bg-slate-50 dark:bg-slate-950 text-slate-900 dark:text-slate-50\",\n glass:\n \"border-black/15 dark:border-white/15 bg-slate-50/70 dark:bg-slate-950/70 backdrop-blur-xl text-slate-900 dark:text-slate-50\",\n sky: \"border-sky-800 dark:border-sky-600 bg-sky-50 dark:bg-sky-950/70 backdrop-blur-xl text-sky-800 dark:text-sky-50\",\n rose: \"border-rose-800 dark:border-rose-600 bg-rose-50 dark:bg-rose-950/70 backdrop-blur-xl text-rose-800 dark:text-rose-50\",\n purple:\n \"border-purple-800 dark:border-purple-600 bg-purple-50 dark:bg-purple-950/70 backdrop-blur-xl text-purple-800 dark:text-purple-50\",\n pink: \"border-pink-800 dark:border-pink-600 bg-pink-50 dark:bg-pink-950/70 backdrop-blur-xl text-pink-800 dark:text-pink-50\",\n orange:\n \"border-orange-800 dark:border-orange-600 bg-orange-50 dark:bg-orange-950/70 backdrop-blur-xl text-orange-800 dark:text-orange-50\",\n yellow:\n \"border-yellow-800 dark:border-yellow-600 bg-yellow-50 dark:bg-yellow-950/70 backdrop-blur-xl text-yellow-800 dark:text-yellow-50\",\n teal: \"border-teal-800 dark:border-teal-600 bg-teal-50 dark:bg-teal-950/70 backdrop-blur-xl text-teal-800 dark:text-teal-50\",\n indigo:\n \"border-indigo-800 dark:border-indigo-600 bg-indigo-50 dark:bg-indigo-950/70 backdrop-blur-xl text-indigo-800 dark:text-indigo-50\",\n emerald:\n \"border-emerald-800 dark:border-emerald-600 bg-emerald-50 dark:bg-emerald-950/70 backdrop-blur-xl text-emerald-800 dark:text-emerald-50\",\n gray: \"border-gray-800 dark:border-gray-600 bg-gray-50 dark:bg-gray-950/70 backdrop-blur-xl text-gray-800 dark:text-gray-50\",\n amber:\n \"border-amber-800 dark:border-amber-600 bg-amber-50 dark:bg-amber-950/70 backdrop-blur-xl text-amber-800 dark:text-amber-50\",\n violet:\n \"border-violet-800 dark:border-violet-600 bg-violet-50 dark:bg-violet-950/70 backdrop-blur-xl text-violet-800 dark:text-violet-50\",\n \"gradient-blue\":\n \"border-blue-800 dark:border-blue-600 bg-linear-to-r from-blue-50 dark:from-blue-950/70 to-purple-50 dark:to-purple-950/70 backdrop-blur-xl text-blue-800 dark:text-blue-50\",\n \"gradient-green\":\n \"border-green-800 dark:border-green-600 bg-linear-to-r from-green-50 dark:from-green-950/70 to-lime-50 dark:to-lime-950/70 backdrop-blur-xl text-green-800 dark:text-green-50\",\n \"gradient-red\":\n \"border-red-800 dark:border-red-600 bg-linear-to-r from-red-50 dark:from-red-950/70 to-pink-50 dark:to-pink-950/70 backdrop-blur-xl text-red-800 dark:text-red-50\",\n \"gradient-yellow\":\n \"border-yellow-800 dark:border-yellow-600 bg-linear-to-r from-yellow-50 dark:from-yellow-950/70 to-orange-50 dark:to-orange-950/70 backdrop-blur-xl text-yellow-800 dark:text-yellow-50\",\n \"gradient-purple\":\n \"border-purple-800 dark:border-purple-600 bg-linear-to-r from-purple-50 dark:from-purple-950/70 to-pink-50 dark:to-pink-950/70 backdrop-blur-xl text-purple-800 dark:text-purple-50\",\n \"gradient-teal\":\n \"border-teal-800 dark:border-teal-600 bg-linear-to-r from-teal-50 dark:from-teal-950/70 to-cyan-50 dark:to-cyan-950/70 backdrop-blur-xl text-teal-800 dark:text-teal-50\",\n \"gradient-indigo\":\n \"border-indigo-800 dark:border-indigo-600 bg-linear-to-r from-indigo-50 dark:from-indigo-950/70 to-purple-50 dark:to-purple-950/70 backdrop-blur-xl text-indigo-800 dark:text-indigo-50\",\n \"gradient-pink\":\n \"border-pink-800 dark:border-pink-600 bg-linear-to-r from-pink-50 dark:from-pink-950/70 to-rose-50 dark:to-rose-950/70 backdrop-blur-xl text-pink-800 dark:text-pink-50\",\n \"gradient-orange\":\n \"border-orange-800 dark:border-orange-600 bg-linear-to-r from-orange-50 dark:from-orange-950/70 to-red-50 dark:to-red-950/70 backdrop-blur-xl text-orange-800 dark:text-orange-50\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n },\n },\n);\n\nexport const modalContentVariants = cva(\n \"fixed left-1/2 z-50 w-[calc(100%-2rem)] max-h-[min(90vh,720px)] translate-x-[-50%] overflow-y-auto border border-black/10 dark:border-white/10 bg-slate-50 dark:bg-slate-950 p-6 text-slate-900 dark:text-slate-50 shadow-[0_12px_40px_rgba(15,23,42,0.14)] dark:shadow-[0_24px_80px_rgba(15,23,42,0.55)] focus:outline-none\",\n {\n variants: {\n size: {\n sm: \"max-w-md\",\n md: \"max-w-lg\",\n lg: \"max-w-2xl\",\n xl: \"max-w-4xl\",\n full: \"max-w-[calc(100%-2rem)]\",\n },\n position: {\n center: \"top-1/2 translate-y-[-50%]\",\n top: \"top-10 translate-y-0\",\n bottom: \"bottom-10 translate-y-0\",\n },\n appearance: {\n default: \"bg-slate-50 dark:bg-slate-950\",\n glass:\n \"border-black/15 dark:border-white/15 bg-slate-50/70 dark:bg-slate-950/70 backdrop-blur-xl\",\n sky: \"border-sky-800 dark:border-sky-600 bg-sky-50 dark:bg-sky-950/70 backdrop-blur-xl\",\n rose: \"border-rose-800 dark:border-rose-600 bg-rose-50 dark:bg-rose-950/70 backdrop-blur-xl\",\n purple:\n \"border-purple-800 dark:border-purple-600 bg-purple-50 dark:bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-800 dark:border-pink-600 bg-pink-50 dark:bg-pink-950/70 backdrop-blur-xl\",\n orange:\n \"border-orange-800 dark:border-orange-600 bg-orange-50 dark:bg-orange-950/70 backdrop-blur-xl\",\n yellow:\n \"border-yellow-800 dark:border-yellow-600 bg-yellow-50 dark:bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-800 dark:border-teal-600 bg-teal-50 dark:bg-teal-950/70 backdrop-blur-xl\",\n indigo:\n \"border-indigo-800 dark:border-indigo-600 bg-indigo-50 dark:bg-indigo-950/70 backdrop-blur-xl\",\n emerald:\n \"border-emerald-800 dark:border-emerald-600 bg-emerald-50 dark:bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-800 dark:border-gray-600 bg-gray-50 dark:bg-gray-950/70 backdrop-blur-xl\",\n amber:\n \"border-amber-800 dark:border-amber-600 bg-amber-50 dark:bg-amber-950/70 backdrop-blur-xl\",\n violet:\n \"border-violet-800 dark:border-violet-600 bg-violet-50 dark:bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\":\n \"border-blue-800 dark:border-blue-600 bg-linear-to-r from-blue-50 dark:from-blue-950/70 to-purple-50 dark:to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\":\n \"border-green-800 dark:border-green-600 bg-linear-to-r from-green-50 dark:from-green-950/70 to-lime-50 dark:to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\":\n \"border-red-800 dark:border-red-600 bg-linear-to-r from-red-50 dark:from-red-950/70 to-pink-50 dark:to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\":\n \"border-yellow-800 dark:border-yellow-600 bg-linear-to-r from-yellow-50 dark:from-yellow-950/70 to-orange-50 dark:to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\":\n \"border-purple-800 dark:border-purple-600 bg-linear-to-r from-purple-50 dark:from-purple-950/70 to-pink-50 dark:to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\":\n \"border-teal-800 dark:border-teal-600 bg-linear-to-r from-teal-50 dark:from-teal-950/70 to-cyan-50 dark:to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\":\n \"border-indigo-800 dark:border-indigo-600 bg-linear-to-r from-indigo-50 dark:from-indigo-950/70 to-purple-50 dark:to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\":\n \"border-pink-800 dark:border-pink-600 bg-linear-to-r from-pink-50 dark:from-pink-950/70 to-rose-50 dark:to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\":\n \"border-orange-800 dark:border-orange-600 bg-linear-to-r from-orange-50 dark:from-orange-950/70 to-red-50 dark:to-red-950/70 backdrop-blur-xl\",\n },\n },\n defaultVariants: {\n size: \"md\",\n position: \"center\",\n appearance: \"default\",\n },\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useState,\n type RefObject,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils\";\nimport { useFocusManagement } from \"../../hooks/useFocusManagement\";\n\nimport type {\n ModalContentProps,\n ModalProps,\n ModalSectionProps,\n ModalTriggerProps,\n} from \"./types\";\nimport {\n modalContentVariants,\n modalOverlayVariants,\n modalTriggerVariants,\n} from \"./variants\";\n\ntype ModalCtx = {\n open: boolean;\n setOpen: (next: boolean) => void;\n titleId: string;\n descriptionId: string;\n contentRef: RefObject<HTMLDivElement | null>;\n triggerRef: RefObject<HTMLElement | null>;\n};\n\nconst ModalContext = createContext<ModalCtx | null>(null);\n\nexport function useModalContext(component: string): ModalCtx {\n const ctx = useContext(ModalContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Modal>`);\n }\n return ctx;\n}\n\nexport function Modal({\n open,\n defaultOpen = false,\n onOpenChange,\n children,\n}: ModalProps) {\n const isControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const resolvedOpen = isControlled ? Boolean(open) : uncontrolledOpen;\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next);\n }\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n const baseId = useId();\n const titleId = `${baseId}-title`;\n const descriptionId = `${baseId}-description`;\n const contentRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const ctx = useMemo(\n () => ({\n open: resolvedOpen,\n setOpen,\n titleId,\n descriptionId,\n contentRef,\n triggerRef,\n }),\n [descriptionId, resolvedOpen, setOpen, titleId],\n );\n\n return <ModalContext.Provider value={ctx}>{children}</ModalContext.Provider>;\n}\n\nModal.displayName = \"Modal\";\n\nexport function ModalTrigger({\n className,\n children,\n appearance,\n onClick,\n ref: refProp,\n ...rest\n}: ModalTriggerProps) {\n const { setOpen, triggerRef } = useModalContext(\"ModalTrigger\");\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n if (typeof refProp === \"function\") {\n refProp(node);\n } else if (refProp) {\n (refProp as RefObject<HTMLButtonElement | null>).current = node;\n }\n }}\n type=\"button\"\n data-slot=\"modal-trigger\"\n className={cn(modalTriggerVariants({ appearance }), className)}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n setOpen(true);\n }\n }}\n {...rest}\n >\n {children}\n </button>\n );\n}\n\nModalTrigger.displayName = \"ModalTrigger\";\n\nexport function ModalContent({\n className,\n size,\n position,\n appearance,\n children,\n ref,\n id,\n style,\n}: ModalContentProps) {\n const { open, setOpen, titleId, descriptionId, contentRef, triggerRef } =\n useModalContext(\"ModalContent\");\n\n useFocusManagement({\n open,\n setOpen,\n contentRef,\n triggerRef,\n });\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n\n if (!portalTarget) {\n return null;\n }\n\n return createPortal(\n open ? (\n <div className=\"fixed inset-0 z-9999\" data-slot=\"modal-portal\">\n <div\n role=\"presentation\"\n data-slot=\"modal-overlay\"\n className={modalOverlayVariants()}\n onClick={() => setOpen(false)}\n />\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.RefObject<HTMLDivElement | null>).current = node;\n }\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n data-slot=\"modal-content\"\n tabIndex={-1}\n className={cn(\n modalContentVariants({ size, position, appearance }),\n className,\n )}\n id={id}\n style={style}\n >\n {children}\n </div>\n </div>\n ) : null,\n portalTarget,\n );\n}\n\nModalContent.displayName = \"ModalContent\";\n\nexport function ModalHeader({ className, children }: ModalSectionProps) {\n return (\n <header\n data-slot=\"modal-header\"\n className={cn(\"mb-4 flex flex-col gap-2\", className)}\n >\n {children}\n </header>\n );\n}\n\nModalHeader.displayName = \"ModalHeader\";\n\nexport function ModalBody({ className, children }: ModalSectionProps) {\n return (\n <div\n data-slot=\"modal-body\"\n className={cn(\"text-sm text-slate-300\", className)}\n >\n {children}\n </div>\n );\n}\n\nModalBody.displayName = \"ModalBody\";\n\nexport function ModalFooter({ className, children }: ModalSectionProps) {\n return (\n <footer\n data-slot=\"modal-footer\"\n className={cn(\"mt-6 flex justify-end gap-2\", className)}\n >\n {children}\n </footer>\n );\n}\n\nModalFooter.displayName = \"ModalFooter\";\n\nexport function ModalTitle({ className, children }: ModalSectionProps) {\n const { titleId } = useModalContext(\"ModalTitle\");\n return (\n <h2\n id={titleId}\n data-slot=\"modal-title\"\n className={cn(\"text-lg font-semibold\", className)}\n >\n {children}\n </h2>\n );\n}\n\nModalTitle.displayName = \"ModalTitle\";\n\nexport function ModalDescription({ className, children }: ModalSectionProps) {\n const { descriptionId } = useModalContext(\"ModalDescription\");\n return (\n <p\n id={descriptionId}\n data-slot=\"modal-description\"\n className={cn(\"text-sm text-slate-400\", className)}\n >\n {children}\n </p>\n );\n}\n\nModalDescription.displayName = \"ModalDescription\";\n\nexport function ModalClose({\n className,\n children,\n ...rest\n}: ModalSectionProps) {\n const { setOpen } = useModalContext(\"ModalClose\");\n return (\n <button\n type=\"button\"\n data-slot=\"modal-close\"\n className={cn(\n \"absolute right-4 top-4 inline-flex size-14 items-center cursor-pointer justify-center rounded-md text-slate-800 dark:text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30\",\n className,\n )}\n aria-label=\"Close dialog\"\n onClick={() => setOpen(false)}\n {...rest}\n >\n {children ?? \"×\"}\n </button>\n );\n}\n\nModalClose.displayName = \"ModalClose\";\n"]}