@dev-dga/react 0.13.0 → 1.1.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 (298) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +14 -0
  3. package/dist/{chunk-Z2LJBEIV.cjs → chunk-2ISGZAMI.cjs} +3 -3
  4. package/dist/{chunk-Z2LJBEIV.cjs.map → chunk-2ISGZAMI.cjs.map} +1 -1
  5. package/dist/{chunk-TPD2GNR6.js → chunk-3BDWXIO2.js} +4 -4
  6. package/dist/{chunk-KDV7V5S4.js → chunk-3GW6NMDL.js} +4 -4
  7. package/dist/{chunk-VN2YHNUE.cjs → chunk-3IJBHHQP.cjs} +4 -4
  8. package/dist/{chunk-VN2YHNUE.cjs.map → chunk-3IJBHHQP.cjs.map} +1 -1
  9. package/dist/{chunk-DI52GZLA.cjs → chunk-3Y6JPEJ3.cjs} +4 -4
  10. package/dist/{chunk-DI52GZLA.cjs.map → chunk-3Y6JPEJ3.cjs.map} +1 -1
  11. package/dist/{chunk-4HBVLISS.js → chunk-4G42XPSB.js} +4 -4
  12. package/dist/{chunk-7EEKESAA.js → chunk-4IUOTHJC.js} +4 -4
  13. package/dist/{chunk-YOKOPO2W.cjs → chunk-5NBC47JU.cjs} +3 -3
  14. package/dist/{chunk-YOKOPO2W.cjs.map → chunk-5NBC47JU.cjs.map} +1 -1
  15. package/dist/{chunk-GHJEE4NW.js → chunk-6AWYGPVV.js} +4 -4
  16. package/dist/{chunk-WRCHASO2.js → chunk-6LRMCCGU.js} +4 -4
  17. package/dist/{chunk-TG2IDU3W.js → chunk-6UMASQFJ.js} +4 -4
  18. package/dist/{chunk-O7BBEN7E.cjs → chunk-7ECWVWEP.cjs} +3 -3
  19. package/dist/{chunk-O7BBEN7E.cjs.map → chunk-7ECWVWEP.cjs.map} +1 -1
  20. package/dist/{chunk-IFZWOLDF.cjs → chunk-7M3PXCTB.cjs} +3 -3
  21. package/dist/{chunk-IFZWOLDF.cjs.map → chunk-7M3PXCTB.cjs.map} +1 -1
  22. package/dist/{chunk-PLT3EZZ5.js → chunk-7NXFVPPR.js} +4 -4
  23. package/dist/{chunk-EQINOHB6.cjs → chunk-A4JJG7ZS.cjs} +4 -4
  24. package/dist/{chunk-EQINOHB6.cjs.map → chunk-A4JJG7ZS.cjs.map} +1 -1
  25. package/dist/{chunk-CUOYBYI4.cjs → chunk-AOGJVMFE.cjs} +9 -9
  26. package/dist/{chunk-CUOYBYI4.cjs.map → chunk-AOGJVMFE.cjs.map} +1 -1
  27. package/dist/{chunk-5N6CFYT6.cjs → chunk-B3MX4XNP.cjs} +3 -3
  28. package/dist/{chunk-5N6CFYT6.cjs.map → chunk-B3MX4XNP.cjs.map} +1 -1
  29. package/dist/{chunk-REDX5DCT.cjs → chunk-BH7XP6DP.cjs} +4 -4
  30. package/dist/{chunk-REDX5DCT.cjs.map → chunk-BH7XP6DP.cjs.map} +1 -1
  31. package/dist/{chunk-GUI2LDJZ.cjs → chunk-BSVWC2OY.cjs} +4 -4
  32. package/dist/{chunk-GUI2LDJZ.cjs.map → chunk-BSVWC2OY.cjs.map} +1 -1
  33. package/dist/{chunk-TGM4JFWI.cjs → chunk-BTXKJ4NE.cjs} +5 -5
  34. package/dist/{chunk-TGM4JFWI.cjs.map → chunk-BTXKJ4NE.cjs.map} +1 -1
  35. package/dist/{chunk-QLV4RQVQ.cjs → chunk-C5BPJIIC.cjs} +5 -5
  36. package/dist/chunk-C5BPJIIC.cjs.map +1 -0
  37. package/dist/{chunk-NKCBDSI2.js → chunk-C7QGHL2M.js} +2 -2
  38. package/dist/{chunk-7F24FFIV.cjs → chunk-DI3WGH7W.cjs} +5 -5
  39. package/dist/{chunk-7F24FFIV.cjs.map → chunk-DI3WGH7W.cjs.map} +1 -1
  40. package/dist/{chunk-BQZ4XAYH.js → chunk-DUJ2QWTC.js} +4 -4
  41. package/dist/{chunk-VYP5GX57.cjs → chunk-DZTHIGMQ.cjs} +3 -3
  42. package/dist/{chunk-VYP5GX57.cjs.map → chunk-DZTHIGMQ.cjs.map} +1 -1
  43. package/dist/{chunk-BP6BOEVE.js → chunk-EBV35LZE.js} +4 -4
  44. package/dist/{chunk-GEVXV4RL.js → chunk-GGWMXMBP.js} +4 -4
  45. package/dist/{chunk-P7WYXL4A.cjs → chunk-GXF5IZEX.cjs} +3 -3
  46. package/dist/{chunk-P7WYXL4A.cjs.map → chunk-GXF5IZEX.cjs.map} +1 -1
  47. package/dist/{chunk-DU4YQEIM.cjs → chunk-H7V6VNFC.cjs} +3 -3
  48. package/dist/{chunk-DU4YQEIM.cjs.map → chunk-H7V6VNFC.cjs.map} +1 -1
  49. package/dist/{chunk-NGDKAG2O.cjs → chunk-HQABMNYD.cjs} +7 -7
  50. package/dist/{chunk-NGDKAG2O.cjs.map → chunk-HQABMNYD.cjs.map} +1 -1
  51. package/dist/{chunk-J53OY747.js → chunk-IS7NNFV3.js} +7 -7
  52. package/dist/{chunk-ANHZT2X2.js → chunk-JADNUODB.js} +3 -3
  53. package/dist/{chunk-ANHZT2X2.js.map → chunk-JADNUODB.js.map} +1 -1
  54. package/dist/{chunk-XB6YHZAG.js → chunk-JBTM3SFO.js} +4 -4
  55. package/dist/{chunk-APD5WA65.js → chunk-JHWACBNX.js} +4 -4
  56. package/dist/{chunk-54KSDBGC.js → chunk-JXMXEBXP.js} +2 -2
  57. package/dist/{chunk-FPXFD5XT.js → chunk-KXBRKW25.js} +4 -4
  58. package/dist/{chunk-FF4QNJOQ.js → chunk-MFBGKD5J.js} +4 -4
  59. package/dist/{chunk-WHKNCDTX.js → chunk-N2OE2MUB.js} +7 -7
  60. package/dist/{chunk-MECGQLHL.js → chunk-NJIQJHJS.js} +4 -4
  61. package/dist/{chunk-QCITJAK6.cjs → chunk-NLAVXC45.cjs} +3 -3
  62. package/dist/{chunk-QCITJAK6.cjs.map → chunk-NLAVXC45.cjs.map} +1 -1
  63. package/dist/{chunk-5GDTEDDH.js → chunk-OUS6KAYF.js} +4 -4
  64. package/dist/{chunk-G6LUBXN2.js → chunk-OXMWQMYF.js} +2 -2
  65. package/dist/{chunk-BNCUXVZF.cjs → chunk-OYSETR4K.cjs} +3 -3
  66. package/dist/{chunk-BNCUXVZF.cjs.map → chunk-OYSETR4K.cjs.map} +1 -1
  67. package/dist/{chunk-ZNDJS2W7.js → chunk-P4AMGEAG.js} +4 -4
  68. package/dist/{chunk-6G2BJQZL.cjs → chunk-P66BFKWQ.cjs} +3 -3
  69. package/dist/{chunk-6G2BJQZL.cjs.map → chunk-P66BFKWQ.cjs.map} +1 -1
  70. package/dist/{chunk-BYSA3YCV.cjs → chunk-RRTB754T.cjs} +4 -4
  71. package/dist/{chunk-BYSA3YCV.cjs.map → chunk-RRTB754T.cjs.map} +1 -1
  72. package/dist/{chunk-GS7QTYLD.js → chunk-S3JTU4FH.js} +4 -4
  73. package/dist/{chunk-RH3CQOEI.cjs → chunk-S6FRVWCG.cjs} +3 -3
  74. package/dist/{chunk-RH3CQOEI.cjs.map → chunk-S6FRVWCG.cjs.map} +1 -1
  75. package/dist/{chunk-4S2DSEXR.js → chunk-S7KATX5T.js} +5 -5
  76. package/dist/{chunk-VJV3K53D.js → chunk-SHP4KSPL.js} +4 -4
  77. package/dist/{chunk-WGCK6KKL.js → chunk-SZRP2ODO.js} +4 -4
  78. package/dist/{chunk-TNIRKGXY.js → chunk-T6RGNFKN.js} +4 -4
  79. package/dist/{chunk-P2CSX4DZ.cjs → chunk-TBI3YP65.cjs} +4 -2
  80. package/dist/chunk-TBI3YP65.cjs.map +1 -0
  81. package/dist/{chunk-WLJHHTE2.js → chunk-TPZTJDCN.js} +9 -9
  82. package/dist/{chunk-J7XCG6SX.cjs → chunk-TQH7AMQ2.cjs} +4 -4
  83. package/dist/{chunk-J7XCG6SX.cjs.map → chunk-TQH7AMQ2.cjs.map} +1 -1
  84. package/dist/{chunk-FV6E33FY.cjs → chunk-TQUB2TCL.cjs} +4 -4
  85. package/dist/{chunk-FV6E33FY.cjs.map → chunk-TQUB2TCL.cjs.map} +1 -1
  86. package/dist/{chunk-YVB5RTKR.js → chunk-TZ6IKB3E.js} +4 -2
  87. package/dist/chunk-TZ6IKB3E.js.map +1 -0
  88. package/dist/{chunk-T3NVC7UU.cjs → chunk-U3W2GAHM.cjs} +4 -4
  89. package/dist/{chunk-T3NVC7UU.cjs.map → chunk-U3W2GAHM.cjs.map} +1 -1
  90. package/dist/{chunk-G6ZOJVIG.cjs → chunk-U6YLGSAQ.cjs} +6 -6
  91. package/dist/{chunk-G6ZOJVIG.cjs.map → chunk-U6YLGSAQ.cjs.map} +1 -1
  92. package/dist/{chunk-J7HSAVFF.cjs → chunk-UG2SQ4Q3.cjs} +11 -11
  93. package/dist/{chunk-J7HSAVFF.cjs.map → chunk-UG2SQ4Q3.cjs.map} +1 -1
  94. package/dist/{chunk-IM6TYL3P.cjs → chunk-UVBZHPKP.cjs} +3 -3
  95. package/dist/{chunk-IM6TYL3P.cjs.map → chunk-UVBZHPKP.cjs.map} +1 -1
  96. package/dist/{chunk-U7SCEB34.js → chunk-VAGYICPO.js} +2 -2
  97. package/dist/{chunk-DVKPFWP2.cjs → chunk-W46J3DNV.cjs} +4 -4
  98. package/dist/{chunk-DVKPFWP2.cjs.map → chunk-W46J3DNV.cjs.map} +1 -1
  99. package/dist/{chunk-KSEN4ESR.js → chunk-WU3IBHA4.js} +6 -6
  100. package/dist/chunk-WU3IBHA4.js.map +1 -0
  101. package/dist/{chunk-FUFFG2UW.cjs → chunk-X5GBT5VI.cjs} +4 -4
  102. package/dist/{chunk-FUFFG2UW.cjs.map → chunk-X5GBT5VI.cjs.map} +1 -1
  103. package/dist/{chunk-55RHNN3T.js → chunk-Y4JUMIH4.js} +4 -4
  104. package/dist/{chunk-ODNO43HV.cjs → chunk-YPC7FRJX.cjs} +4 -4
  105. package/dist/{chunk-ODNO43HV.cjs.map → chunk-YPC7FRJX.cjs.map} +1 -1
  106. package/dist/{chunk-TYZIRV75.cjs → chunk-ZCRO2PBB.cjs} +4 -4
  107. package/dist/{chunk-TYZIRV75.cjs.map → chunk-ZCRO2PBB.cjs.map} +1 -1
  108. package/dist/components/Card/Card.cjs +3 -3
  109. package/dist/components/Card/Card.js +2 -2
  110. package/dist/components/Card/index.cjs +3 -3
  111. package/dist/components/Card/index.js +2 -2
  112. package/dist/components/Charts/Charts.cjs +3 -3
  113. package/dist/components/Charts/Charts.js +2 -2
  114. package/dist/components/Charts/index.cjs +3 -3
  115. package/dist/components/Charts/index.js +2 -2
  116. package/dist/components/Checkbox/Checkbox.cjs +3 -3
  117. package/dist/components/Checkbox/Checkbox.js +2 -2
  118. package/dist/components/Checkbox/index.cjs +3 -3
  119. package/dist/components/Checkbox/index.js +2 -2
  120. package/dist/components/CodeSnippet/CodeSnippet.cjs +5 -5
  121. package/dist/components/CodeSnippet/CodeSnippet.js +4 -4
  122. package/dist/components/CodeSnippet/index.cjs +5 -5
  123. package/dist/components/CodeSnippet/index.js +4 -4
  124. package/dist/components/Command/Command.cjs +3 -3
  125. package/dist/components/Command/Command.js +2 -2
  126. package/dist/components/Command/index.cjs +3 -3
  127. package/dist/components/Command/index.js +2 -2
  128. package/dist/components/DatePicker/DatePicker.cjs +1 -1
  129. package/dist/components/DatePicker/DatePicker.js +1 -1
  130. package/dist/components/DatePicker/index.cjs +1 -1
  131. package/dist/components/DatePicker/index.js +1 -1
  132. package/dist/components/DateRangePicker/DateRangePicker.cjs +1 -1
  133. package/dist/components/DateRangePicker/DateRangePicker.js +1 -1
  134. package/dist/components/DateRangePicker/index.cjs +1 -1
  135. package/dist/components/DateRangePicker/index.js +1 -1
  136. package/dist/components/Drawer/Drawer.cjs +3 -3
  137. package/dist/components/Drawer/Drawer.js +2 -2
  138. package/dist/components/Drawer/index.cjs +3 -3
  139. package/dist/components/Drawer/index.js +2 -2
  140. package/dist/components/Dropdown/Dropdown.cjs +3 -3
  141. package/dist/components/Dropdown/Dropdown.js +2 -2
  142. package/dist/components/Dropdown/index.cjs +3 -3
  143. package/dist/components/Dropdown/index.js +2 -2
  144. package/dist/components/DropdownMenu/DropdownMenu.cjs +3 -3
  145. package/dist/components/DropdownMenu/DropdownMenu.js +2 -2
  146. package/dist/components/DropdownMenu/index.cjs +3 -3
  147. package/dist/components/DropdownMenu/index.js +2 -2
  148. package/dist/components/FileUpload/FileUpload.cjs +4 -4
  149. package/dist/components/FileUpload/FileUpload.js +3 -3
  150. package/dist/components/FileUpload/index.cjs +4 -4
  151. package/dist/components/FileUpload/index.js +3 -3
  152. package/dist/components/Filtration/Filtration.cjs +8 -8
  153. package/dist/components/Filtration/Filtration.js +7 -7
  154. package/dist/components/Filtration/index.cjs +8 -8
  155. package/dist/components/Filtration/index.js +7 -7
  156. package/dist/components/InputOTP/InputOTP.cjs +3 -3
  157. package/dist/components/InputOTP/InputOTP.js +2 -2
  158. package/dist/components/InputOTP/index.cjs +3 -3
  159. package/dist/components/InputOTP/index.js +2 -2
  160. package/dist/components/Menubar/Menubar.cjs +3 -3
  161. package/dist/components/Menubar/Menubar.js +2 -2
  162. package/dist/components/Menubar/index.cjs +3 -3
  163. package/dist/components/Menubar/index.js +2 -2
  164. package/dist/components/Metric/index.cjs +2 -2
  165. package/dist/components/Metric/index.cjs.map +1 -1
  166. package/dist/components/Metric/index.js +4 -4
  167. package/dist/components/Modal/Modal.cjs +3 -3
  168. package/dist/components/Modal/Modal.js +2 -2
  169. package/dist/components/Modal/index.cjs +3 -3
  170. package/dist/components/Modal/index.js +2 -2
  171. package/dist/components/NumberInput/NumberInput.cjs +3 -3
  172. package/dist/components/NumberInput/NumberInput.js +2 -2
  173. package/dist/components/NumberInput/index.cjs +3 -3
  174. package/dist/components/NumberInput/index.js +2 -2
  175. package/dist/components/Pagination/Pagination.cjs +3 -3
  176. package/dist/components/Pagination/Pagination.js +2 -2
  177. package/dist/components/Pagination/index.cjs +3 -3
  178. package/dist/components/Pagination/index.js +2 -2
  179. package/dist/components/Popover/Popover.cjs +3 -3
  180. package/dist/components/Popover/Popover.js +2 -2
  181. package/dist/components/Popover/index.cjs +3 -3
  182. package/dist/components/Popover/index.js +2 -2
  183. package/dist/components/Progress/Progress.cjs +2 -2
  184. package/dist/components/Progress/Progress.js +1 -1
  185. package/dist/components/Progress/index.cjs +2 -2
  186. package/dist/components/Progress/index.js +1 -1
  187. package/dist/components/Radio/Radio.cjs +3 -3
  188. package/dist/components/Radio/Radio.js +2 -2
  189. package/dist/components/Radio/index.cjs +3 -3
  190. package/dist/components/Radio/index.js +2 -2
  191. package/dist/components/Rating/Rating.cjs +3 -3
  192. package/dist/components/Rating/Rating.js +2 -2
  193. package/dist/components/Rating/index.cjs +3 -3
  194. package/dist/components/Rating/index.js +2 -2
  195. package/dist/components/SaudiRiyal/SaudiRiyal.cjs +3 -3
  196. package/dist/components/SaudiRiyal/SaudiRiyal.js +2 -2
  197. package/dist/components/SaudiRiyal/index.cjs +3 -3
  198. package/dist/components/SaudiRiyal/index.js +2 -2
  199. package/dist/components/SearchBox/SearchBox.cjs +5 -5
  200. package/dist/components/SearchBox/SearchBox.js +4 -4
  201. package/dist/components/SearchBox/index.cjs +5 -5
  202. package/dist/components/SearchBox/index.js +4 -4
  203. package/dist/components/Select/Select.cjs +3 -3
  204. package/dist/components/Select/Select.js +2 -2
  205. package/dist/components/Select/index.cjs +3 -3
  206. package/dist/components/Select/index.js +2 -2
  207. package/dist/components/Sidebar/Sidebar.cjs +4 -4
  208. package/dist/components/Sidebar/Sidebar.js +3 -3
  209. package/dist/components/Sidebar/SidebarMenu.cjs +5 -5
  210. package/dist/components/Sidebar/SidebarMenu.js +4 -4
  211. package/dist/components/Sidebar/index.cjs +7 -7
  212. package/dist/components/Sidebar/index.cjs.map +1 -1
  213. package/dist/components/Sidebar/index.js +6 -6
  214. package/dist/components/SlideoutMenu/SlideoutMenu.cjs +3 -3
  215. package/dist/components/SlideoutMenu/SlideoutMenu.js +2 -2
  216. package/dist/components/SlideoutMenu/index.cjs +3 -3
  217. package/dist/components/SlideoutMenu/index.js +2 -2
  218. package/dist/components/Slider/Slider.cjs +3 -3
  219. package/dist/components/Slider/Slider.js +2 -2
  220. package/dist/components/Slider/index.cjs +3 -3
  221. package/dist/components/Slider/index.js +2 -2
  222. package/dist/components/StructuredList/StructuredList.cjs +4 -4
  223. package/dist/components/StructuredList/StructuredList.js +3 -3
  224. package/dist/components/StructuredList/index.cjs +4 -4
  225. package/dist/components/StructuredList/index.js +3 -3
  226. package/dist/components/Switch/Switch.cjs +3 -3
  227. package/dist/components/Switch/Switch.js +2 -2
  228. package/dist/components/Switch/index.cjs +3 -3
  229. package/dist/components/Switch/index.js +2 -2
  230. package/dist/components/Tabs/Tabs.cjs +4 -4
  231. package/dist/components/Tabs/Tabs.js +3 -3
  232. package/dist/components/Tabs/index.cjs +4 -4
  233. package/dist/components/Tabs/index.js +3 -3
  234. package/dist/components/TagInput/TagInput.cjs +3 -3
  235. package/dist/components/TagInput/TagInput.js +2 -2
  236. package/dist/components/TagInput/index.cjs +3 -3
  237. package/dist/components/TagInput/index.js +2 -2
  238. package/dist/components/TextInput/TextInput.cjs +3 -3
  239. package/dist/components/TextInput/TextInput.js +2 -2
  240. package/dist/components/TextInput/index.cjs +3 -3
  241. package/dist/components/TextInput/index.js +2 -2
  242. package/dist/components/Textarea/Textarea.cjs +3 -3
  243. package/dist/components/Textarea/Textarea.js +2 -2
  244. package/dist/components/Textarea/index.cjs +3 -3
  245. package/dist/components/Textarea/index.js +2 -2
  246. package/dist/components/Tooltip/Tooltip.cjs +3 -3
  247. package/dist/components/Tooltip/Tooltip.js +2 -2
  248. package/dist/components/Tooltip/index.cjs +3 -3
  249. package/dist/components/Tooltip/index.js +2 -2
  250. package/dist/date-picker.cjs +25 -0
  251. package/dist/date-picker.cjs.map +1 -0
  252. package/dist/date-picker.d.cts +147 -0
  253. package/dist/date-picker.d.ts +147 -0
  254. package/dist/date-picker.js +25 -0
  255. package/dist/date-picker.js.map +1 -0
  256. package/dist/index.cjs +102 -102
  257. package/dist/index.cjs.map +1 -1
  258. package/dist/index.d.cts +6 -146
  259. package/dist/index.d.ts +6 -146
  260. package/dist/index.js +141 -141
  261. package/dist/providers/DgaProvider.cjs +2 -2
  262. package/dist/providers/DgaProvider.js +1 -1
  263. package/package.json +13 -3
  264. package/dist/chunk-KSEN4ESR.js.map +0 -1
  265. package/dist/chunk-P2CSX4DZ.cjs.map +0 -1
  266. package/dist/chunk-QLV4RQVQ.cjs.map +0 -1
  267. package/dist/chunk-YVB5RTKR.js.map +0 -1
  268. /package/dist/{chunk-TPD2GNR6.js.map → chunk-3BDWXIO2.js.map} +0 -0
  269. /package/dist/{chunk-KDV7V5S4.js.map → chunk-3GW6NMDL.js.map} +0 -0
  270. /package/dist/{chunk-4HBVLISS.js.map → chunk-4G42XPSB.js.map} +0 -0
  271. /package/dist/{chunk-7EEKESAA.js.map → chunk-4IUOTHJC.js.map} +0 -0
  272. /package/dist/{chunk-GHJEE4NW.js.map → chunk-6AWYGPVV.js.map} +0 -0
  273. /package/dist/{chunk-WRCHASO2.js.map → chunk-6LRMCCGU.js.map} +0 -0
  274. /package/dist/{chunk-TG2IDU3W.js.map → chunk-6UMASQFJ.js.map} +0 -0
  275. /package/dist/{chunk-PLT3EZZ5.js.map → chunk-7NXFVPPR.js.map} +0 -0
  276. /package/dist/{chunk-NKCBDSI2.js.map → chunk-C7QGHL2M.js.map} +0 -0
  277. /package/dist/{chunk-BQZ4XAYH.js.map → chunk-DUJ2QWTC.js.map} +0 -0
  278. /package/dist/{chunk-BP6BOEVE.js.map → chunk-EBV35LZE.js.map} +0 -0
  279. /package/dist/{chunk-GEVXV4RL.js.map → chunk-GGWMXMBP.js.map} +0 -0
  280. /package/dist/{chunk-J53OY747.js.map → chunk-IS7NNFV3.js.map} +0 -0
  281. /package/dist/{chunk-XB6YHZAG.js.map → chunk-JBTM3SFO.js.map} +0 -0
  282. /package/dist/{chunk-APD5WA65.js.map → chunk-JHWACBNX.js.map} +0 -0
  283. /package/dist/{chunk-54KSDBGC.js.map → chunk-JXMXEBXP.js.map} +0 -0
  284. /package/dist/{chunk-FPXFD5XT.js.map → chunk-KXBRKW25.js.map} +0 -0
  285. /package/dist/{chunk-FF4QNJOQ.js.map → chunk-MFBGKD5J.js.map} +0 -0
  286. /package/dist/{chunk-WHKNCDTX.js.map → chunk-N2OE2MUB.js.map} +0 -0
  287. /package/dist/{chunk-MECGQLHL.js.map → chunk-NJIQJHJS.js.map} +0 -0
  288. /package/dist/{chunk-5GDTEDDH.js.map → chunk-OUS6KAYF.js.map} +0 -0
  289. /package/dist/{chunk-G6LUBXN2.js.map → chunk-OXMWQMYF.js.map} +0 -0
  290. /package/dist/{chunk-ZNDJS2W7.js.map → chunk-P4AMGEAG.js.map} +0 -0
  291. /package/dist/{chunk-GS7QTYLD.js.map → chunk-S3JTU4FH.js.map} +0 -0
  292. /package/dist/{chunk-4S2DSEXR.js.map → chunk-S7KATX5T.js.map} +0 -0
  293. /package/dist/{chunk-VJV3K53D.js.map → chunk-SHP4KSPL.js.map} +0 -0
  294. /package/dist/{chunk-WGCK6KKL.js.map → chunk-SZRP2ODO.js.map} +0 -0
  295. /package/dist/{chunk-TNIRKGXY.js.map → chunk-T6RGNFKN.js.map} +0 -0
  296. /package/dist/{chunk-WLJHHTE2.js.map → chunk-TPZTJDCN.js.map} +0 -0
  297. /package/dist/{chunk-U7SCEB34.js.map → chunk-VAGYICPO.js.map} +0 -0
  298. /package/dist/{chunk-55RHNN3T.js.map → chunk-Y4JUMIH4.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-RH3CQOEI.cjs","../src/components/Menubar/Menubar.tsx"],"names":[],"mappings":"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","file":"/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-RH3CQOEI.cjs","sourcesContent":[null,"'use client';\n\nimport { useContext, type ReactNode } from 'react';\nimport { Menubar as MenubarPrimitive } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { Check, ChevronRight } from '../../internal/icons';\nimport { DgaContext } from '../../providers/DgaContext';\n\n// ─── 1. Variants ─── //\n\n// Size lives on the dropdown panel (Content / SubContent), mirroring\n// DropdownMenu. The bar itself is a single size, so it carries no cva.\nconst menubarContentVariants = cva('ddga-menubar-menu', {\n variants: {\n size: {\n sm: 'ddga-menubar-menu--sm',\n md: 'ddga-menubar-menu--md',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\n// Trigger look. `default` = flat menu-bar idiom (text + SA-green open underline);\n// `outline` = bordered button-style chip. Apply the same variant to every\n// trigger in a bar for a consistent look.\nconst menubarTriggerVariants = cva('ddga-menubar__trigger', {\n variants: {\n variant: {\n default: 'ddga-menubar__trigger--default',\n outline: 'ddga-menubar__trigger--outline',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\n// ─── 2. Bar (Root + Menu + Trigger) ─── //\n\ntype MenubarProps = React.ComponentProps<typeof MenubarPrimitive.Root>;\n\nfunction Menubar({ className, ...props }: MenubarProps) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn('ddga-menubar', className)}\n {...props}\n />\n );\n}\n\ntype MenubarMenuProps = React.ComponentProps<typeof MenubarPrimitive.Menu>;\n\nfunction MenubarMenu(props: MenubarMenuProps) {\n return <MenubarPrimitive.Menu {...props} />;\n}\n\ntype MenubarTriggerProps = React.ComponentProps<typeof MenubarPrimitive.Trigger> &\n VariantProps<typeof menubarTriggerVariants>;\n\nfunction MenubarTrigger({ variant, className, ...props }: MenubarTriggerProps) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n data-variant={variant ?? 'default'}\n className={cn(menubarTriggerVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\n// ─── 3. Content (portal-anchored) ─── //\n\ntype MenubarContentProps = React.ComponentProps<typeof MenubarPrimitive.Content> &\n VariantProps<typeof menubarContentVariants>;\n\nfunction MenubarContent({ size, className, sideOffset = 6, ...props }: MenubarContentProps) {\n // Radix Portal defaults to <body>, which doesn't inherit DgaProvider's\n // data-theme / CSS vars. Re-anchor at the provider's body-level portal\n // container (mirrors data-theme + dir + theme vars) so the menu inherits\n // theme AND escapes any clipping or transform ancestor. Falls back to\n // <body> when used outside a provider. (Same pattern as DropdownMenu.)\n const ctx = useContext(DgaContext);\n const portalContainer = ctx?.portalEl ?? ctx?.rootEl ?? undefined;\n\n return (\n <MenubarPrimitive.Portal container={portalContainer}>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n sideOffset={sideOffset}\n className={cn(menubarContentVariants({ size }), className)}\n {...props}\n />\n </MenubarPrimitive.Portal>\n );\n}\n\n// ─── 4. Item + variants ─── //\n\ntype MenubarItemProps = React.ComponentProps<typeof MenubarPrimitive.Item> & {\n /** Style as a destructive action (red text, red hover). */\n destructive?: boolean;\n /** Icon rendered before the label. Sized to 1em. */\n startIcon?: ReactNode;\n /** Trailing text shown muted, e.g. a keyboard shortcut hint (\"⌘K\"). */\n shortcut?: ReactNode;\n};\n\nfunction MenubarItem({\n className,\n destructive,\n startIcon,\n shortcut,\n children,\n ...props\n}: MenubarItemProps) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-destructive={destructive ? '' : undefined}\n className={cn('ddga-menubar-menu__item', className)}\n {...props}\n >\n {startIcon ? (\n <span className=\"ddga-menubar-menu__icon\" aria-hidden=\"true\">\n {startIcon}\n </span>\n ) : null}\n <span className=\"ddga-menubar-menu__label\">{children}</span>\n {shortcut ? (\n <span className=\"ddga-menubar-menu__shortcut\" aria-hidden=\"true\">\n {shortcut}\n </span>\n ) : null}\n </MenubarPrimitive.Item>\n );\n}\n\n// ─── 5. CheckboxItem + RadioItem ─── //\n\ntype MenubarCheckboxItemProps = React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>;\n\nfunction MenubarCheckboxItem({\n className,\n children,\n onSelect,\n ...props\n}: MenubarCheckboxItemProps) {\n // Default UX: keep the menu open across toggles so consumers can flip\n // multiple checkboxes in one pass. If a consumer passes their own onSelect,\n // they own the behavior (call `event.preventDefault()` to keep this default).\n const handleSelect =\n onSelect ??\n ((event: Event) => {\n event.preventDefault();\n });\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn('ddga-menubar-menu__item', 'ddga-menubar-menu__item--checkable', className)}\n onSelect={handleSelect}\n {...props}\n >\n <span className=\"ddga-menubar-menu__indicator\" aria-hidden=\"true\">\n <MenubarPrimitive.ItemIndicator>\n <Check className=\"ddga-menubar-menu__indicator-icon\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n <span className=\"ddga-menubar-menu__label\">{children}</span>\n </MenubarPrimitive.CheckboxItem>\n );\n}\n\ntype MenubarRadioGroupProps = React.ComponentProps<typeof MenubarPrimitive.RadioGroup>;\n\nfunction MenubarRadioGroup(props: MenubarRadioGroupProps) {\n return <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />;\n}\n\ntype MenubarRadioItemProps = React.ComponentProps<typeof MenubarPrimitive.RadioItem>;\n\nfunction MenubarRadioItem({ className, children, onSelect, ...props }: MenubarRadioItemProps) {\n // Same default-open behavior as CheckboxItem — selecting a radio without\n // the menu visually confirming the new state is a frustrating dead-feel.\n const handleSelect =\n onSelect ??\n ((event: Event) => {\n event.preventDefault();\n });\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn('ddga-menubar-menu__item', 'ddga-menubar-menu__item--checkable', className)}\n onSelect={handleSelect}\n {...props}\n >\n <span className=\"ddga-menubar-menu__indicator\" aria-hidden=\"true\">\n <MenubarPrimitive.ItemIndicator>\n <span className=\"ddga-menubar-menu__radio-dot\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n <span className=\"ddga-menubar-menu__label\">{children}</span>\n </MenubarPrimitive.RadioItem>\n );\n}\n\n// ─── 6. Label + Separator + Group ─── //\n\ntype MenubarLabelProps = React.ComponentProps<typeof MenubarPrimitive.Label>;\n\nfunction MenubarLabel({ className, ...props }: MenubarLabelProps) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n className={cn('ddga-menubar-menu__group-label', className)}\n {...props}\n />\n );\n}\n\ntype MenubarSeparatorProps = React.ComponentProps<typeof MenubarPrimitive.Separator>;\n\nfunction MenubarSeparator({ className, ...props }: MenubarSeparatorProps) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn('ddga-menubar-menu__separator', className)}\n {...props}\n />\n );\n}\n\ntype MenubarGroupProps = React.ComponentProps<typeof MenubarPrimitive.Group>;\n\nfunction MenubarGroup(props: MenubarGroupProps) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />;\n}\n\n// ─── 7. Submenu (Sub + SubTrigger + SubContent) ─── //\n\ntype MenubarSubProps = React.ComponentProps<typeof MenubarPrimitive.Sub>;\n\nfunction MenubarSub(props: MenubarSubProps) {\n return <MenubarPrimitive.Sub {...props} />;\n}\n\ntype MenubarSubTriggerProps = React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n startIcon?: ReactNode;\n};\n\nfunction MenubarSubTrigger({ className, startIcon, children, ...props }: MenubarSubTriggerProps) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n className={cn('ddga-menubar-menu__item', 'ddga-menubar-menu__item--sub', className)}\n {...props}\n >\n {startIcon ? (\n <span className=\"ddga-menubar-menu__icon\" aria-hidden=\"true\">\n {startIcon}\n </span>\n ) : null}\n <span className=\"ddga-menubar-menu__label\">{children}</span>\n <ChevronRight className=\"ddga-menubar-menu__sub-chevron\" aria-hidden=\"true\" />\n </MenubarPrimitive.SubTrigger>\n );\n}\n\ntype MenubarSubContentProps = React.ComponentProps<typeof MenubarPrimitive.SubContent> &\n VariantProps<typeof menubarContentVariants>;\n\nfunction MenubarSubContent({ size, className, ...props }: MenubarSubContentProps) {\n const ctx = useContext(DgaContext);\n const portalContainer = ctx?.portalEl ?? ctx?.rootEl ?? undefined;\n\n return (\n <MenubarPrimitive.Portal container={portalContainer}>\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(menubarContentVariants({ size }), className)}\n {...props}\n />\n </MenubarPrimitive.Portal>\n );\n}\n\n// ─── 8. Exports ─── //\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarItem,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarLabel,\n MenubarSeparator,\n MenubarGroup,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n menubarContentVariants,\n menubarTriggerVariants,\n};\nexport type {\n MenubarProps,\n MenubarMenuProps,\n MenubarTriggerProps,\n MenubarContentProps,\n MenubarItemProps,\n MenubarCheckboxItemProps,\n MenubarRadioGroupProps,\n MenubarRadioItemProps,\n MenubarLabelProps,\n MenubarSeparatorProps,\n MenubarGroupProps,\n MenubarSubProps,\n MenubarSubTriggerProps,\n MenubarSubContentProps,\n};\n"]}
1
+ {"version":3,"sources":["/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-S6FRVWCG.cjs","../src/components/Menubar/Menubar.tsx"],"names":[],"mappings":"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","file":"/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-S6FRVWCG.cjs","sourcesContent":[null,"'use client';\n\nimport { useContext, type ReactNode } from 'react';\nimport { Menubar as MenubarPrimitive } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { Check, ChevronRight } from '../../internal/icons';\nimport { DgaContext } from '../../providers/DgaContext';\n\n// ─── 1. Variants ─── //\n\n// Size lives on the dropdown panel (Content / SubContent), mirroring\n// DropdownMenu. The bar itself is a single size, so it carries no cva.\nconst menubarContentVariants = cva('ddga-menubar-menu', {\n variants: {\n size: {\n sm: 'ddga-menubar-menu--sm',\n md: 'ddga-menubar-menu--md',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\n// Trigger look. `default` = flat menu-bar idiom (text + SA-green open underline);\n// `outline` = bordered button-style chip. Apply the same variant to every\n// trigger in a bar for a consistent look.\nconst menubarTriggerVariants = cva('ddga-menubar__trigger', {\n variants: {\n variant: {\n default: 'ddga-menubar__trigger--default',\n outline: 'ddga-menubar__trigger--outline',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\n// ─── 2. Bar (Root + Menu + Trigger) ─── //\n\ntype MenubarProps = React.ComponentProps<typeof MenubarPrimitive.Root>;\n\nfunction Menubar({ className, ...props }: MenubarProps) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn('ddga-menubar', className)}\n {...props}\n />\n );\n}\n\ntype MenubarMenuProps = React.ComponentProps<typeof MenubarPrimitive.Menu>;\n\nfunction MenubarMenu(props: MenubarMenuProps) {\n return <MenubarPrimitive.Menu {...props} />;\n}\n\ntype MenubarTriggerProps = React.ComponentProps<typeof MenubarPrimitive.Trigger> &\n VariantProps<typeof menubarTriggerVariants>;\n\nfunction MenubarTrigger({ variant, className, ...props }: MenubarTriggerProps) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n data-variant={variant ?? 'default'}\n className={cn(menubarTriggerVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\n// ─── 3. Content (portal-anchored) ─── //\n\ntype MenubarContentProps = React.ComponentProps<typeof MenubarPrimitive.Content> &\n VariantProps<typeof menubarContentVariants>;\n\nfunction MenubarContent({ size, className, sideOffset = 6, ...props }: MenubarContentProps) {\n // Radix Portal defaults to <body>, which doesn't inherit DgaProvider's\n // data-theme / CSS vars. Re-anchor at the provider's body-level portal\n // container (mirrors data-theme + dir + theme vars) so the menu inherits\n // theme AND escapes any clipping or transform ancestor. Falls back to\n // <body> when used outside a provider. (Same pattern as DropdownMenu.)\n const ctx = useContext(DgaContext);\n const portalContainer = ctx?.portalEl ?? ctx?.rootEl ?? undefined;\n\n return (\n <MenubarPrimitive.Portal container={portalContainer}>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n sideOffset={sideOffset}\n className={cn(menubarContentVariants({ size }), className)}\n {...props}\n />\n </MenubarPrimitive.Portal>\n );\n}\n\n// ─── 4. Item + variants ─── //\n\ntype MenubarItemProps = React.ComponentProps<typeof MenubarPrimitive.Item> & {\n /** Style as a destructive action (red text, red hover). */\n destructive?: boolean;\n /** Icon rendered before the label. Sized to 1em. */\n startIcon?: ReactNode;\n /** Trailing text shown muted, e.g. a keyboard shortcut hint (\"⌘K\"). */\n shortcut?: ReactNode;\n};\n\nfunction MenubarItem({\n className,\n destructive,\n startIcon,\n shortcut,\n children,\n ...props\n}: MenubarItemProps) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-destructive={destructive ? '' : undefined}\n className={cn('ddga-menubar-menu__item', className)}\n {...props}\n >\n {startIcon ? (\n <span className=\"ddga-menubar-menu__icon\" aria-hidden=\"true\">\n {startIcon}\n </span>\n ) : null}\n <span className=\"ddga-menubar-menu__label\">{children}</span>\n {shortcut ? (\n <span className=\"ddga-menubar-menu__shortcut\" aria-hidden=\"true\">\n {shortcut}\n </span>\n ) : null}\n </MenubarPrimitive.Item>\n );\n}\n\n// ─── 5. CheckboxItem + RadioItem ─── //\n\ntype MenubarCheckboxItemProps = React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>;\n\nfunction MenubarCheckboxItem({\n className,\n children,\n onSelect,\n ...props\n}: MenubarCheckboxItemProps) {\n // Default UX: keep the menu open across toggles so consumers can flip\n // multiple checkboxes in one pass. If a consumer passes their own onSelect,\n // they own the behavior (call `event.preventDefault()` to keep this default).\n const handleSelect =\n onSelect ??\n ((event: Event) => {\n event.preventDefault();\n });\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn('ddga-menubar-menu__item', 'ddga-menubar-menu__item--checkable', className)}\n onSelect={handleSelect}\n {...props}\n >\n <span className=\"ddga-menubar-menu__indicator\" aria-hidden=\"true\">\n <MenubarPrimitive.ItemIndicator>\n <Check className=\"ddga-menubar-menu__indicator-icon\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n <span className=\"ddga-menubar-menu__label\">{children}</span>\n </MenubarPrimitive.CheckboxItem>\n );\n}\n\ntype MenubarRadioGroupProps = React.ComponentProps<typeof MenubarPrimitive.RadioGroup>;\n\nfunction MenubarRadioGroup(props: MenubarRadioGroupProps) {\n return <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />;\n}\n\ntype MenubarRadioItemProps = React.ComponentProps<typeof MenubarPrimitive.RadioItem>;\n\nfunction MenubarRadioItem({ className, children, onSelect, ...props }: MenubarRadioItemProps) {\n // Same default-open behavior as CheckboxItem — selecting a radio without\n // the menu visually confirming the new state is a frustrating dead-feel.\n const handleSelect =\n onSelect ??\n ((event: Event) => {\n event.preventDefault();\n });\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn('ddga-menubar-menu__item', 'ddga-menubar-menu__item--checkable', className)}\n onSelect={handleSelect}\n {...props}\n >\n <span className=\"ddga-menubar-menu__indicator\" aria-hidden=\"true\">\n <MenubarPrimitive.ItemIndicator>\n <span className=\"ddga-menubar-menu__radio-dot\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n <span className=\"ddga-menubar-menu__label\">{children}</span>\n </MenubarPrimitive.RadioItem>\n );\n}\n\n// ─── 6. Label + Separator + Group ─── //\n\ntype MenubarLabelProps = React.ComponentProps<typeof MenubarPrimitive.Label>;\n\nfunction MenubarLabel({ className, ...props }: MenubarLabelProps) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n className={cn('ddga-menubar-menu__group-label', className)}\n {...props}\n />\n );\n}\n\ntype MenubarSeparatorProps = React.ComponentProps<typeof MenubarPrimitive.Separator>;\n\nfunction MenubarSeparator({ className, ...props }: MenubarSeparatorProps) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn('ddga-menubar-menu__separator', className)}\n {...props}\n />\n );\n}\n\ntype MenubarGroupProps = React.ComponentProps<typeof MenubarPrimitive.Group>;\n\nfunction MenubarGroup(props: MenubarGroupProps) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />;\n}\n\n// ─── 7. Submenu (Sub + SubTrigger + SubContent) ─── //\n\ntype MenubarSubProps = React.ComponentProps<typeof MenubarPrimitive.Sub>;\n\nfunction MenubarSub(props: MenubarSubProps) {\n return <MenubarPrimitive.Sub {...props} />;\n}\n\ntype MenubarSubTriggerProps = React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n startIcon?: ReactNode;\n};\n\nfunction MenubarSubTrigger({ className, startIcon, children, ...props }: MenubarSubTriggerProps) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n className={cn('ddga-menubar-menu__item', 'ddga-menubar-menu__item--sub', className)}\n {...props}\n >\n {startIcon ? (\n <span className=\"ddga-menubar-menu__icon\" aria-hidden=\"true\">\n {startIcon}\n </span>\n ) : null}\n <span className=\"ddga-menubar-menu__label\">{children}</span>\n <ChevronRight className=\"ddga-menubar-menu__sub-chevron\" aria-hidden=\"true\" />\n </MenubarPrimitive.SubTrigger>\n );\n}\n\ntype MenubarSubContentProps = React.ComponentProps<typeof MenubarPrimitive.SubContent> &\n VariantProps<typeof menubarContentVariants>;\n\nfunction MenubarSubContent({ size, className, ...props }: MenubarSubContentProps) {\n const ctx = useContext(DgaContext);\n const portalContainer = ctx?.portalEl ?? ctx?.rootEl ?? undefined;\n\n return (\n <MenubarPrimitive.Portal container={portalContainer}>\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(menubarContentVariants({ size }), className)}\n {...props}\n />\n </MenubarPrimitive.Portal>\n );\n}\n\n// ─── 8. Exports ─── //\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarItem,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarLabel,\n MenubarSeparator,\n MenubarGroup,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n menubarContentVariants,\n menubarTriggerVariants,\n};\nexport type {\n MenubarProps,\n MenubarMenuProps,\n MenubarTriggerProps,\n MenubarContentProps,\n MenubarItemProps,\n MenubarCheckboxItemProps,\n MenubarRadioGroupProps,\n MenubarRadioItemProps,\n MenubarLabelProps,\n MenubarSeparatorProps,\n MenubarGroupProps,\n MenubarSubProps,\n MenubarSubTriggerProps,\n MenubarSubContentProps,\n};\n"]}
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  TextInput
3
- } from "./chunk-4HBVLISS.js";
3
+ } from "./chunk-4G42XPSB.js";
4
+ import {
5
+ Button
6
+ } from "./chunk-GQAX2CH6.js";
4
7
  import {
5
8
  Close,
6
9
  HelpCircleGlyph,
7
10
  Mic,
8
11
  SearchGlyph
9
12
  } from "./chunk-FFGALWM2.js";
10
- import {
11
- Button
12
- } from "./chunk-GQAX2CH6.js";
13
13
  import {
14
14
  cn
15
15
  } from "./chunk-7NTT2UXP.js";
@@ -127,4 +127,4 @@ function SearchBox({
127
127
  export {
128
128
  SearchBox
129
129
  };
130
- //# sourceMappingURL=chunk-4S2DSEXR.js.map
130
+ //# sourceMappingURL=chunk-S7KATX5T.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  Star
3
3
  } from "./chunk-FFGALWM2.js";
4
+ import {
5
+ cn
6
+ } from "./chunk-7NTT2UXP.js";
4
7
  import {
5
8
  FieldMessage
6
9
  } from "./chunk-E5ZIKIGB.js";
7
10
  import {
8
11
  useFieldA11y
9
12
  } from "./chunk-HN5AFDQA.js";
10
- import {
11
- cn
12
- } from "./chunk-7NTT2UXP.js";
13
13
 
14
14
  // src/components/Rating/Rating.tsx
15
15
  import { useRef, useState } from "react";
@@ -187,4 +187,4 @@ export {
187
187
  ratingVariants,
188
188
  Rating
189
189
  };
190
- //# sourceMappingURL=chunk-VJV3K53D.js.map
190
+ //# sourceMappingURL=chunk-SHP4KSPL.js.map
@@ -1,12 +1,12 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-7NTT2UXP.js";
1
4
  import {
2
5
  FieldMessage
3
6
  } from "./chunk-E5ZIKIGB.js";
4
7
  import {
5
8
  useFieldA11y
6
9
  } from "./chunk-HN5AFDQA.js";
7
- import {
8
- cn
9
- } from "./chunk-7NTT2UXP.js";
10
10
 
11
11
  // src/components/Radio/Radio.tsx
12
12
  import { useId } from "react";
@@ -137,4 +137,4 @@ export {
137
137
  RadioGroup,
138
138
  Radio
139
139
  };
140
- //# sourceMappingURL=chunk-WGCK6KKL.js.map
140
+ //# sourceMappingURL=chunk-SZRP2ODO.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  Check
3
3
  } from "./chunk-FFGALWM2.js";
4
+ import {
5
+ cn
6
+ } from "./chunk-7NTT2UXP.js";
4
7
  import {
5
8
  FieldMessage
6
9
  } from "./chunk-E5ZIKIGB.js";
7
10
  import {
8
11
  useFieldA11y
9
12
  } from "./chunk-HN5AFDQA.js";
10
- import {
11
- cn
12
- } from "./chunk-7NTT2UXP.js";
13
13
 
14
14
  // src/components/Checkbox/Checkbox.tsx
15
15
  import { Checkbox as CheckboxPrimitive } from "radix-ui";
@@ -102,4 +102,4 @@ export {
102
102
  checkboxVariants,
103
103
  Checkbox
104
104
  };
105
- //# sourceMappingURL=chunk-TNIRKGXY.js.map
105
+ //# sourceMappingURL=chunk-T6RGNFKN.js.map
@@ -28,7 +28,9 @@ function DgaProvider({
28
28
  if (typeof document === "undefined") return;
29
29
  const el = document.createElement("div");
30
30
  el.setAttribute("data-slot", "dga-portal");
31
- el.style.position = "relative";
31
+ el.style.position = "fixed";
32
+ el.style.top = "0";
33
+ el.style.left = "0";
32
34
  el.style.zIndex = "50";
33
35
  document.body.appendChild(el);
34
36
  portalRef.current = el;
@@ -74,4 +76,4 @@ function DgaProvider({
74
76
 
75
77
 
76
78
  exports.DgaProvider = DgaProvider;
77
- //# sourceMappingURL=chunk-P2CSX4DZ.cjs.map
79
+ //# sourceMappingURL=chunk-TBI3YP65.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-TBI3YP65.cjs","../src/providers/DgaProvider.tsx"],"names":[],"mappings":"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","file":"/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-TBI3YP65.cjs","sourcesContent":[null,"'use client';\n\nimport { useState, useMemo, useContext, useEffect, useRef } from 'react';\nimport { Direction as DirectionPrimitive, Tooltip as TooltipPrimitive } from 'radix-ui';\nimport { buildTheme, type DgaTheme } from '@dev-dga/tokens';\nimport { DgaContext, type DgaContextValue } from './DgaContext';\n\ntype DgaRootElement =\n | 'div'\n | 'main'\n | 'nav'\n | 'section'\n | 'article'\n | 'aside'\n | 'header'\n | 'footer';\n\nexport interface DgaProviderProps {\n dir?: 'ltr' | 'rtl';\n locale?: string;\n mode?: 'light' | 'dark';\n /**\n * Brand theme. `theme.primary` accepts a palette name (`'lavender'`),\n * any CSS color string (`'#7C3AED'` , hover/active auto-derived via\n * `color-mix()`), or an explicit `{ base, hover, active, foreground? }`\n * triplet. The override-object pattern (`style={{ '--ddga-color-primary':\n * '...' }}`) still works , `style` wins over `theme`.\n */\n theme?: DgaTheme;\n as?: DgaRootElement;\n className?: string;\n style?: React.CSSProperties;\n children: React.ReactNode;\n}\n\nexport function DgaProvider({\n dir = 'ltr',\n locale,\n mode = 'light',\n theme,\n as: Component = 'div',\n className,\n style: consumerStyle,\n children,\n}: DgaProviderProps) {\n const parentCtx = useContext(DgaContext);\n const isNested = parentCtx !== null;\n // Callback ref + state so context subscribers (e.g. Select's portal\n // container) re-render when the element actually mounts. With useRef\n // the .current update wouldn't trigger a render and a defaultOpen\n // portal would race to <body> before the ref populated.\n const [rootEl, setRootEl] = useState<HTMLElement | null>(null);\n // The portal element is held in a ref (we directly mutate its attributes\n // + inline CSS variables, which the react-hooks/immutability lint rule\n // forbids on state values). A parallel `portalEl` state mirrors the ref\n // so context subscribers re-render once the element mounts.\n const portalRef = useRef<HTMLDivElement | null>(null);\n const [portalEl, setPortalEl] = useState<HTMLElement | null>(null);\n const resolvedLocale = locale ?? (dir === 'rtl' ? 'ar' : 'en');\n\n // Memoize by reference. Stable palette-name themes (`{ primary: 'lavender' }`\n // declared at module scope) never recompute; consumers passing an inline\n // object accept a per-render `buildTheme` call (cheap , small switch\n // statement over a single string).\n const themeVars = useMemo(() => (theme ? buildTheme(theme) : null), [theme]);\n\n // ─── Body-level portal container ─── //\n //\n // Create a sibling-of-body div that mirrors this provider's theme\n // attributes. Overlay portals (Modal, Drawer, DropdownMenu, etc.) anchor\n // here instead of `rootEl` so:\n //\n // - They escape `overflow: hidden` / `transform` ancestors the consumer\n // might wrap us in (Storybook's docs-story preview block is the\n // motivating case — a `transform` ancestor breaks `position: fixed`\n // descendants, clipping modals to the preview rect).\n // - Theme variables, dark mode, RTL still resolve because we copy\n // `data-theme`, `dir`, and inline CSS vars from this provider onto\n // the portal element.\n //\n // One container per DgaProvider instance — cleaned up on unmount. SSR-safe\n // (effects only run client-side; consumers see `portalEl: null` and the\n // overlays fall back to `rootEl`).\n useEffect(() => {\n if (typeof document === 'undefined') return;\n const el = document.createElement('div');\n el.setAttribute('data-slot', 'dga-portal');\n // Fixed at the viewport origin, NOT `relative`. This zero-size div is a\n // child of <body>, so in flow it is placed by whatever layout body uses —\n // a centered flex body parks it at the far edge — and because it is\n // positioned it becomes the containing block for react-aria's absolutely\n // positioned popovers, which then resolve against that stray origin and\n // render off-screen (DatePicker on a `justify-content: center` body).\n // `absolute; top/left: 0` also fixes the origin but breaks react-aria's\n // `maxHeight` on a scrolled page (it collapses the popover to 0) — fixed\n // keeps the container rect viewport-relative, which its math expects.\n // z-index still applies (position !== static), and Radix overlays are\n // unaffected: a plain fixed ancestor is not a containing block for fixed\n // descendants, so they still resolve to the viewport.\n el.style.position = 'fixed';\n el.style.top = '0';\n el.style.left = '0';\n el.style.zIndex = '50';\n document.body.appendChild(el);\n portalRef.current = el;\n // The setState here exposes the freshly-mounted DOM element to context\n // subscribers (overlay components) so they re-render and target the\n // portal on first commit. Single call on mount + single on unmount;\n // not the cascading-render footgun the lint rule guards against.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setPortalEl(el);\n return () => {\n el.remove();\n portalRef.current = null;\n\n setPortalEl(null);\n };\n }, []);\n\n // Mirror theme attributes onto the portal element so its descendants\n // resolve `var(--ddga-*)` and respect dark mode / RTL the same way as\n // descendants of `rootEl`. We mutate via the ref (not the state) so the\n // react-hooks/immutability rule stays happy — and run this on every prop\n // change that affects appearance.\n useEffect(() => {\n const el = portalRef.current;\n if (!el) return;\n el.setAttribute('data-theme', mode);\n el.setAttribute('dir', dir);\n el.style.colorScheme = mode;\n if (themeVars) {\n for (const [k, v] of Object.entries(themeVars)) {\n el.style.setProperty(k, String(v));\n }\n }\n }, [mode, dir, themeVars, portalEl]);\n\n const ctxValue = useMemo<DgaContextValue>(\n () => ({ dir, locale: resolvedLocale, mode, rootEl, portalEl }),\n [dir, resolvedLocale, mode, rootEl, portalEl],\n );\n\n // Radix's Direction.Provider propagates `dir` to portal-rendered content\n // (Tooltip/Select/Toast/Modal) that would otherwise inherit body dir,\n // not the dir on this wrapper element. Nested providers reuse the parent\n // direction via their own Direction.Provider, so this is safe to repeat.\n const inner = <DirectionPrimitive.Provider dir={dir}>{children}</DirectionPrimitive.Provider>;\n\n return (\n <DgaContext.Provider value={ctxValue}>\n <Component\n ref={setRootEl}\n dir={dir}\n lang={resolvedLocale}\n data-slot=\"dga-root\"\n data-theme={mode}\n className={className}\n // Order: colorScheme → theme vars → consumer style. A manually-\n // supplied `style` overrides `theme` (escape hatch preserved per\n // THEMING-PLAN.md: every `--ddga-*` remains plain-CSS overridable).\n style={{ colorScheme: mode, ...(themeVars ?? {}), ...consumerStyle }}\n >\n {isNested ? (\n inner\n ) : (\n <TooltipPrimitive.Provider delayDuration={300} skipDelayDuration={100}>\n {inner}\n </TooltipPrimitive.Provider>\n )}\n </Component>\n </DgaContext.Provider>\n );\n}\n"]}
@@ -1,3 +1,9 @@
1
+ import {
2
+ Button
3
+ } from "./chunk-GQAX2CH6.js";
4
+ import {
5
+ Spinner
6
+ } from "./chunk-FO7IICMM.js";
1
7
  import {
2
8
  Check,
3
9
  Close,
@@ -5,20 +11,14 @@ import {
5
11
  Upload
6
12
  } from "./chunk-FFGALWM2.js";
7
13
  import {
8
- Button
9
- } from "./chunk-GQAX2CH6.js";
10
- import {
11
- Spinner
12
- } from "./chunk-FO7IICMM.js";
14
+ cn
15
+ } from "./chunk-7NTT2UXP.js";
13
16
  import {
14
17
  FieldMessage
15
18
  } from "./chunk-E5ZIKIGB.js";
16
19
  import {
17
20
  useFieldA11y
18
21
  } from "./chunk-HN5AFDQA.js";
19
- import {
20
- cn
21
- } from "./chunk-7NTT2UXP.js";
22
22
 
23
23
  // src/components/FileUpload/FileUpload.tsx
24
24
  import { useRef, useState } from "react";
@@ -269,4 +269,4 @@ function FileUpload({
269
269
  export {
270
270
  FileUpload
271
271
  };
272
- //# sourceMappingURL=chunk-WLJHHTE2.js.map
272
+ //# sourceMappingURL=chunk-TPZTJDCN.js.map
@@ -1,12 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunk3UT22WQMcjs = require('./chunk-3UT22WQM.cjs');
3
+ var _chunkV6MXOJQ4cjs = require('./chunk-V6MXOJQ4.cjs');
4
4
 
5
5
 
6
- var _chunkNH3KGR65cjs = require('./chunk-NH3KGR65.cjs');
6
+ var _chunk3UT22WQMcjs = require('./chunk-3UT22WQM.cjs');
7
7
 
8
8
 
9
- var _chunkV6MXOJQ4cjs = require('./chunk-V6MXOJQ4.cjs');
9
+ var _chunkNH3KGR65cjs = require('./chunk-NH3KGR65.cjs');
10
10
 
11
11
  // src/components/InputOTP/InputOTP.tsx
12
12
  var _react = require('react');
@@ -213,4 +213,4 @@ function InputOTP({
213
213
 
214
214
 
215
215
  exports.inputOTPVariants = inputOTPVariants; exports.InputOTP = InputOTP;
216
- //# sourceMappingURL=chunk-J7XCG6SX.cjs.map
216
+ //# sourceMappingURL=chunk-TQH7AMQ2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-J7XCG6SX.cjs","../src/components/InputOTP/InputOTP.tsx"],"names":[],"mappings":"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","file":"/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-J7XCG6SX.cjs","sourcesContent":[null,"'use client';\n\nimport { useMemo, useRef, useState, Fragment, type ReactNode } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { useFieldA11y, FieldMessage } from '../../field';\n\n// Default: digits-only, allows the empty string so clearing works. Consumers\n// can pass any full-string regex (e.g. '^[a-zA-Z0-9]+$' for alphanumeric).\nconst DEFAULT_PATTERN = '^[0-9]*$';\n\n// ─── 1. Variants (cva) ─── //\n\n// Applied to the container that overlays the (visually-hidden) input on top of\n// the decorative slot row, mirroring NumberInput's control box.\nconst inputOTPVariants = cva('ddga-input-otp', {\n variants: {\n size: {\n sm: 'ddga-input-otp--sm',\n md: 'ddga-input-otp--md',\n lg: 'ddga-input-otp--lg',\n },\n error: {\n true: 'ddga-input-otp--error',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\n// ─── 2. Types ─── //\n\ninterface InputOTPProps\n extends\n Omit<React.ComponentProps<'div'>, 'onChange' | 'defaultValue' | 'children'>,\n VariantProps<typeof inputOTPVariants> {\n /** Number of slots. Defaults to 6 (Saudi SMS OTP length). */\n length?: number;\n /** Optional visual grouping; must sum to `length`. Default: one group. */\n groupSizes?: number[];\n /** Controlled value (the entered characters). */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n onChange?: (value: string) => void;\n /** Fires when all `length` slots are filled. */\n onComplete?: (value: string) => void;\n /** Full-string regex the entered value must match. Defaults to digits-only. */\n pattern?: string;\n /** Render dots instead of characters (PIN entry). */\n mask?: boolean;\n /** Override the divider rendered between groups. */\n separator?: ReactNode;\n disabled?: boolean;\n autoFocus?: boolean;\n name?: string;\n required?: boolean;\n /** Visible field label, auto-associated to the input via `htmlFor`/`id`. */\n label?: ReactNode;\n /** Hint shown below the field. Hidden while an error message is showing. */\n helperText?: ReactNode;\n /** Message shown below the field when invalid. */\n errorMessage?: ReactNode;\n /** Marks the field invalid: sets `aria-invalid` and error styling. */\n error?: boolean;\n}\n\n// ─── 3. Helpers ─── //\n\n// Resolve the per-group slot counts. An absent/empty `groupSizes` is one group;\n// a mismatched sum is a caller bug, so dev-warn and fall back rather than render\n// a code whose layout doesn't match its length.\nfunction resolveGroups(length: number, groupSizes: number[] | undefined): number[] {\n if (!groupSizes || groupSizes.length === 0) return [length];\n const sum = groupSizes.reduce((total, n) => total + n, 0);\n if (sum !== length) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n `[@dev-dga/react] InputOTP: groupSizes must sum to length (${length}); ` +\n `got ${sum}. Falling back to a single group.`,\n );\n }\n return [length];\n }\n return groupSizes;\n}\n\nfunction Slot({\n char,\n active,\n caret,\n mask,\n}: {\n char: string | undefined;\n active: boolean;\n caret: boolean;\n mask: boolean;\n}) {\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={active || undefined}\n data-filled={char != null || undefined}\n className=\"ddga-input-otp__slot\"\n >\n {char != null ? (mask ? '•' : char) : null}\n {caret && (\n <div aria-hidden=\"true\" data-slot=\"input-otp-caret\" className=\"ddga-input-otp__caret\" />\n )}\n </div>\n );\n}\n\n// ─── 4. Component ─── //\n\nfunction InputOTP({\n id: externalId,\n length = 6,\n groupSizes,\n value,\n defaultValue,\n onChange,\n onComplete,\n pattern = DEFAULT_PATTERN,\n mask = false,\n separator,\n size,\n disabled,\n autoFocus,\n name,\n required,\n label,\n helperText,\n errorMessage,\n error,\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n ...props\n}: InputOTPProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n const [focused, setFocused] = useState(false);\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState(defaultValue ?? '');\n const current = isControlled ? value : internal;\n\n // Compile the pattern once per change to `pattern`. A malformed regex is a\n // caller bug — dev-warn and fall back to digits-only rather than throw on\n // every keystroke (mirrors the groupSizes-mismatch handling).\n const compiledPattern = useMemo(() => {\n try {\n return new RegExp(pattern);\n } catch {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n `[@dev-dga/react] InputOTP: invalid \\`pattern\\` regex \"${pattern}\". ` +\n 'Falling back to digits-only.',\n );\n }\n return new RegExp(DEFAULT_PATTERN);\n }\n }, [pattern]);\n\n // Guards onComplete against firing more than once for the same full value\n // (IME / autofill can deliver the same value across repeated change events).\n const completedRef = useRef<string | null>(null);\n\n const { fieldId, errorId, helperId, hasError, hasErrorMessage, hasHelper, controlProps } =\n useFieldA11y({\n name: 'InputOTP',\n id: externalId,\n label,\n error,\n errorMessage,\n helperText,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n });\n\n function handleChange(event: React.ChangeEvent<HTMLInputElement>) {\n // Strip whitespace + hyphens first, so a code pasted with display\n // separators (\"123 456\", \"123-456\") still fills — neither is ever a valid\n // OTP/PIN character. Then cap to `length`.\n const next = event.target.value.replace(/[\\s-]/g, '').slice(0, length);\n // Reject the whole (cleaned) candidate if it still doesn't match — the\n // keystroke/paste never lands (mirrors NumberInput). The default pattern\n // allows the empty string, so clearing always works.\n if (!compiledPattern.test(next)) return;\n if (!isControlled) setInternal(next);\n onChange?.(next);\n if (next.length === length) {\n if (completedRef.current !== next) {\n completedRef.current = next;\n onComplete?.(next);\n }\n } else {\n completedRef.current = null;\n }\n }\n\n // Keep the caret at the end so Backspace always removes the last entered char;\n // the visible caret is the fake one we draw on the active slot.\n function moveCaretToEnd() {\n const el = inputRef.current;\n if (el) el.setSelectionRange(el.value.length, el.value.length);\n }\n\n const groups = resolveGroups(length, groupSizes);\n const lastGroup = groups.length - 1;\n // The active slot is where the next character lands (clamped to the last slot\n // when the code is full). Only shown while focused.\n const activeIndex = focused ? Math.min(current.length, length - 1) : -1;\n const inputMode = pattern === DEFAULT_PATTERN ? 'numeric' : 'text';\n\n return (\n <div data-slot=\"input-otp-field\" className=\"ddga-field\" {...props}>\n {label && (\n <label htmlFor={fieldId} className=\"ddga-input-otp__label\">\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"ddga-input-otp__required\">\n *\n </span>\n )}\n </label>\n )}\n <div\n className={cn(inputOTPVariants({ size, error: hasError }), className)}\n data-slot=\"input-otp\"\n >\n {/* The real control — overlays the row, visually transparent. Paste,\n SMS autofill, typing, and Backspace all flow through its onChange. */}\n <input\n {...controlProps}\n ref={inputRef}\n type=\"text\"\n inputMode={inputMode}\n autoComplete=\"one-time-code\"\n // The slots are the visible UI, but the value itself never renders\n // here (the input is transparent), so masking is purely the slots'\n // concern — even password managers can't read a visually-empty field.\n value={current}\n maxLength={length}\n disabled={disabled}\n autoFocus={autoFocus}\n name={name}\n required={required}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n onChange={handleChange}\n onFocus={() => {\n setFocused(true);\n moveCaretToEnd();\n }}\n onBlur={() => setFocused(false)}\n onPointerUp={moveCaretToEnd}\n className=\"ddga-input-otp__input\"\n data-slot=\"input-otp-input\"\n />\n {/* Decorative slot row. Forced LTR so the code is always read/entered\n left-to-right even in an RTL form (DGA convention). */}\n <div dir=\"ltr\" aria-hidden=\"true\" data-slot=\"input-otp-row\" className=\"ddga-input-otp__row\">\n {groups.map((count, groupIndex) => {\n const start = groups.slice(0, groupIndex).reduce((total, n) => total + n, 0);\n return (\n <Fragment key={groupIndex}>\n <div data-slot=\"input-otp-group\" className=\"ddga-input-otp__group\">\n {Array.from({ length: count }, (_, offset) => {\n const index = start + offset;\n return (\n <Slot\n key={index}\n char={current[index]}\n active={index === activeIndex}\n caret={index === activeIndex && current.length < length}\n mask={mask}\n />\n );\n })}\n </div>\n {groupIndex < lastGroup && (\n <span\n aria-hidden=\"true\"\n data-slot=\"input-otp-separator\"\n className=\"ddga-input-otp__separator\"\n >\n {separator ?? <span className=\"ddga-input-otp__separator-dash\" />}\n </span>\n )}\n </Fragment>\n );\n })}\n </div>\n </div>\n {hasErrorMessage && (\n <FieldMessage id={errorId} variant=\"error\">\n {errorMessage}\n </FieldMessage>\n )}\n {hasHelper && (\n <FieldMessage id={helperId} variant=\"helper\">\n {helperText}\n </FieldMessage>\n )}\n </div>\n );\n}\n\n// ─── 5. Exports ─── //\n\nexport { InputOTP, inputOTPVariants };\nexport type { InputOTPProps };\n"]}
1
+ {"version":3,"sources":["/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-TQH7AMQ2.cjs","../src/components/InputOTP/InputOTP.tsx"],"names":[],"mappings":"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","file":"/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-TQH7AMQ2.cjs","sourcesContent":[null,"'use client';\n\nimport { useMemo, useRef, useState, Fragment, type ReactNode } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { useFieldA11y, FieldMessage } from '../../field';\n\n// Default: digits-only, allows the empty string so clearing works. Consumers\n// can pass any full-string regex (e.g. '^[a-zA-Z0-9]+$' for alphanumeric).\nconst DEFAULT_PATTERN = '^[0-9]*$';\n\n// ─── 1. Variants (cva) ─── //\n\n// Applied to the container that overlays the (visually-hidden) input on top of\n// the decorative slot row, mirroring NumberInput's control box.\nconst inputOTPVariants = cva('ddga-input-otp', {\n variants: {\n size: {\n sm: 'ddga-input-otp--sm',\n md: 'ddga-input-otp--md',\n lg: 'ddga-input-otp--lg',\n },\n error: {\n true: 'ddga-input-otp--error',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\n// ─── 2. Types ─── //\n\ninterface InputOTPProps\n extends\n Omit<React.ComponentProps<'div'>, 'onChange' | 'defaultValue' | 'children'>,\n VariantProps<typeof inputOTPVariants> {\n /** Number of slots. Defaults to 6 (Saudi SMS OTP length). */\n length?: number;\n /** Optional visual grouping; must sum to `length`. Default: one group. */\n groupSizes?: number[];\n /** Controlled value (the entered characters). */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n onChange?: (value: string) => void;\n /** Fires when all `length` slots are filled. */\n onComplete?: (value: string) => void;\n /** Full-string regex the entered value must match. Defaults to digits-only. */\n pattern?: string;\n /** Render dots instead of characters (PIN entry). */\n mask?: boolean;\n /** Override the divider rendered between groups. */\n separator?: ReactNode;\n disabled?: boolean;\n autoFocus?: boolean;\n name?: string;\n required?: boolean;\n /** Visible field label, auto-associated to the input via `htmlFor`/`id`. */\n label?: ReactNode;\n /** Hint shown below the field. Hidden while an error message is showing. */\n helperText?: ReactNode;\n /** Message shown below the field when invalid. */\n errorMessage?: ReactNode;\n /** Marks the field invalid: sets `aria-invalid` and error styling. */\n error?: boolean;\n}\n\n// ─── 3. Helpers ─── //\n\n// Resolve the per-group slot counts. An absent/empty `groupSizes` is one group;\n// a mismatched sum is a caller bug, so dev-warn and fall back rather than render\n// a code whose layout doesn't match its length.\nfunction resolveGroups(length: number, groupSizes: number[] | undefined): number[] {\n if (!groupSizes || groupSizes.length === 0) return [length];\n const sum = groupSizes.reduce((total, n) => total + n, 0);\n if (sum !== length) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n `[@dev-dga/react] InputOTP: groupSizes must sum to length (${length}); ` +\n `got ${sum}. Falling back to a single group.`,\n );\n }\n return [length];\n }\n return groupSizes;\n}\n\nfunction Slot({\n char,\n active,\n caret,\n mask,\n}: {\n char: string | undefined;\n active: boolean;\n caret: boolean;\n mask: boolean;\n}) {\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={active || undefined}\n data-filled={char != null || undefined}\n className=\"ddga-input-otp__slot\"\n >\n {char != null ? (mask ? '•' : char) : null}\n {caret && (\n <div aria-hidden=\"true\" data-slot=\"input-otp-caret\" className=\"ddga-input-otp__caret\" />\n )}\n </div>\n );\n}\n\n// ─── 4. Component ─── //\n\nfunction InputOTP({\n id: externalId,\n length = 6,\n groupSizes,\n value,\n defaultValue,\n onChange,\n onComplete,\n pattern = DEFAULT_PATTERN,\n mask = false,\n separator,\n size,\n disabled,\n autoFocus,\n name,\n required,\n label,\n helperText,\n errorMessage,\n error,\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n ...props\n}: InputOTPProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n const [focused, setFocused] = useState(false);\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState(defaultValue ?? '');\n const current = isControlled ? value : internal;\n\n // Compile the pattern once per change to `pattern`. A malformed regex is a\n // caller bug — dev-warn and fall back to digits-only rather than throw on\n // every keystroke (mirrors the groupSizes-mismatch handling).\n const compiledPattern = useMemo(() => {\n try {\n return new RegExp(pattern);\n } catch {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n `[@dev-dga/react] InputOTP: invalid \\`pattern\\` regex \"${pattern}\". ` +\n 'Falling back to digits-only.',\n );\n }\n return new RegExp(DEFAULT_PATTERN);\n }\n }, [pattern]);\n\n // Guards onComplete against firing more than once for the same full value\n // (IME / autofill can deliver the same value across repeated change events).\n const completedRef = useRef<string | null>(null);\n\n const { fieldId, errorId, helperId, hasError, hasErrorMessage, hasHelper, controlProps } =\n useFieldA11y({\n name: 'InputOTP',\n id: externalId,\n label,\n error,\n errorMessage,\n helperText,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n });\n\n function handleChange(event: React.ChangeEvent<HTMLInputElement>) {\n // Strip whitespace + hyphens first, so a code pasted with display\n // separators (\"123 456\", \"123-456\") still fills — neither is ever a valid\n // OTP/PIN character. Then cap to `length`.\n const next = event.target.value.replace(/[\\s-]/g, '').slice(0, length);\n // Reject the whole (cleaned) candidate if it still doesn't match — the\n // keystroke/paste never lands (mirrors NumberInput). The default pattern\n // allows the empty string, so clearing always works.\n if (!compiledPattern.test(next)) return;\n if (!isControlled) setInternal(next);\n onChange?.(next);\n if (next.length === length) {\n if (completedRef.current !== next) {\n completedRef.current = next;\n onComplete?.(next);\n }\n } else {\n completedRef.current = null;\n }\n }\n\n // Keep the caret at the end so Backspace always removes the last entered char;\n // the visible caret is the fake one we draw on the active slot.\n function moveCaretToEnd() {\n const el = inputRef.current;\n if (el) el.setSelectionRange(el.value.length, el.value.length);\n }\n\n const groups = resolveGroups(length, groupSizes);\n const lastGroup = groups.length - 1;\n // The active slot is where the next character lands (clamped to the last slot\n // when the code is full). Only shown while focused.\n const activeIndex = focused ? Math.min(current.length, length - 1) : -1;\n const inputMode = pattern === DEFAULT_PATTERN ? 'numeric' : 'text';\n\n return (\n <div data-slot=\"input-otp-field\" className=\"ddga-field\" {...props}>\n {label && (\n <label htmlFor={fieldId} className=\"ddga-input-otp__label\">\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"ddga-input-otp__required\">\n *\n </span>\n )}\n </label>\n )}\n <div\n className={cn(inputOTPVariants({ size, error: hasError }), className)}\n data-slot=\"input-otp\"\n >\n {/* The real control — overlays the row, visually transparent. Paste,\n SMS autofill, typing, and Backspace all flow through its onChange. */}\n <input\n {...controlProps}\n ref={inputRef}\n type=\"text\"\n inputMode={inputMode}\n autoComplete=\"one-time-code\"\n // The slots are the visible UI, but the value itself never renders\n // here (the input is transparent), so masking is purely the slots'\n // concern — even password managers can't read a visually-empty field.\n value={current}\n maxLength={length}\n disabled={disabled}\n autoFocus={autoFocus}\n name={name}\n required={required}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n onChange={handleChange}\n onFocus={() => {\n setFocused(true);\n moveCaretToEnd();\n }}\n onBlur={() => setFocused(false)}\n onPointerUp={moveCaretToEnd}\n className=\"ddga-input-otp__input\"\n data-slot=\"input-otp-input\"\n />\n {/* Decorative slot row. Forced LTR so the code is always read/entered\n left-to-right even in an RTL form (DGA convention). */}\n <div dir=\"ltr\" aria-hidden=\"true\" data-slot=\"input-otp-row\" className=\"ddga-input-otp__row\">\n {groups.map((count, groupIndex) => {\n const start = groups.slice(0, groupIndex).reduce((total, n) => total + n, 0);\n return (\n <Fragment key={groupIndex}>\n <div data-slot=\"input-otp-group\" className=\"ddga-input-otp__group\">\n {Array.from({ length: count }, (_, offset) => {\n const index = start + offset;\n return (\n <Slot\n key={index}\n char={current[index]}\n active={index === activeIndex}\n caret={index === activeIndex && current.length < length}\n mask={mask}\n />\n );\n })}\n </div>\n {groupIndex < lastGroup && (\n <span\n aria-hidden=\"true\"\n data-slot=\"input-otp-separator\"\n className=\"ddga-input-otp__separator\"\n >\n {separator ?? <span className=\"ddga-input-otp__separator-dash\" />}\n </span>\n )}\n </Fragment>\n );\n })}\n </div>\n </div>\n {hasErrorMessage && (\n <FieldMessage id={errorId} variant=\"error\">\n {errorMessage}\n </FieldMessage>\n )}\n {hasHelper && (\n <FieldMessage id={helperId} variant=\"helper\">\n {helperText}\n </FieldMessage>\n )}\n </div>\n );\n}\n\n// ─── 5. Exports ─── //\n\nexport { InputOTP, inputOTPVariants };\nexport type { InputOTPProps };\n"]}
@@ -3,13 +3,13 @@
3
3
  var _chunkYS2JJ73Mcjs = require('./chunk-YS2JJ73M.cjs');
4
4
 
5
5
 
6
- var _chunk3UT22WQMcjs = require('./chunk-3UT22WQM.cjs');
6
+ var _chunkV6MXOJQ4cjs = require('./chunk-V6MXOJQ4.cjs');
7
7
 
8
8
 
9
- var _chunkNH3KGR65cjs = require('./chunk-NH3KGR65.cjs');
9
+ var _chunk3UT22WQMcjs = require('./chunk-3UT22WQM.cjs');
10
10
 
11
11
 
12
- var _chunkV6MXOJQ4cjs = require('./chunk-V6MXOJQ4.cjs');
12
+ var _chunkNH3KGR65cjs = require('./chunk-NH3KGR65.cjs');
13
13
 
14
14
  // src/components/Checkbox/Checkbox.tsx
15
15
  var _radixui = require('radix-ui');
@@ -102,4 +102,4 @@ function Checkbox({
102
102
 
103
103
 
104
104
  exports.checkboxVariants = checkboxVariants; exports.Checkbox = Checkbox;
105
- //# sourceMappingURL=chunk-FV6E33FY.cjs.map
105
+ //# sourceMappingURL=chunk-TQUB2TCL.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-FV6E33FY.cjs","../src/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"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","file":"/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-FV6E33FY.cjs","sourcesContent":[null,"'use client';\n\nimport type { ReactNode } from 'react';\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { Check } from '../../internal/icons';\nimport { useFieldA11y, FieldMessage } from '../../field';\n\n// ─── 1. Variants (cva) ─── //\n\nconst checkboxVariants = cva('ddga-checkbox', {\n variants: {\n size: {\n xs: 'ddga-checkbox--xs',\n sm: 'ddga-checkbox--sm',\n md: 'ddga-checkbox--md',\n },\n variant: {\n primary: '',\n neutral: 'ddga-checkbox--neutral',\n },\n error: {\n true: 'ddga-checkbox--error',\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'primary',\n },\n});\n\n// ─── 2. Types ─── //\n\n// Radix owns the state model (checked / defaultChecked / onCheckedChange /\n// indeterminate via checked=\"indeterminate\" / disabled / required / name /\n// value). We add the composed label + helper/error + a11y wiring. `children`\n// is omitted , the indicator is rendered internally.\ninterface CheckboxProps\n extends\n Omit<React.ComponentProps<typeof CheckboxPrimitive.Root>, 'children'>,\n VariantProps<typeof checkboxVariants> {\n /** Visible label, sits beside the box, associated via `htmlFor`/`id`. */\n label?: ReactNode;\n /** Hint shown below the row. Hidden while an error message is showing. */\n helperText?: ReactNode;\n /** Message shown below the row when `error` is true. */\n errorMessage?: ReactNode;\n /** Marks the field invalid: sets `aria-invalid` and error styling. */\n error?: boolean;\n /** Locks the value: shows state but can't be toggled; stays focusable, sets `aria-readonly`. */\n readOnly?: boolean;\n}\n\n// ─── 3. Component ─── //\n\nfunction Checkbox({\n id: externalId,\n label,\n helperText,\n errorMessage,\n error,\n size,\n variant,\n readOnly,\n required,\n className,\n onClick,\n ...props\n}: CheckboxProps) {\n const { fieldId, errorId, helperId, hasError, hasErrorMessage, hasHelper, controlProps } =\n useFieldA11y({\n name: 'Checkbox',\n id: externalId,\n label,\n error,\n errorMessage,\n helperText,\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby'],\n });\n\n return (\n <div data-slot=\"checkbox-field\" className=\"ddga-field\">\n <div className=\"ddga-checkbox-row\">\n <CheckboxPrimitive.Root\n // Spread props first, then the a11y contract (controlProps) so a\n // consumer cannot accidentally clobber the wiring.\n {...props}\n {...controlProps}\n data-slot=\"checkbox\"\n data-readonly={readOnly ? '' : undefined}\n aria-readonly={readOnly || undefined}\n required={required}\n // Read-only: preventDefault runs before Radix's composed handler, skipping the toggle.\n onClick={(event) => {\n if (readOnly) event.preventDefault();\n onClick?.(event);\n }}\n className={cn(checkboxVariants({ size, variant, error: hasError }), className)}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"ddga-checkbox__indicator\"\n >\n {/* CSS shows one per data-state; minus is a bar, check is the glyph. */}\n <Check className=\"ddga-checkbox__check\" aria-hidden=\"true\" />\n <span className=\"ddga-checkbox__minus\" aria-hidden=\"true\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label && (\n <label htmlFor={fieldId} className=\"ddga-checkbox__label\">\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"ddga-checkbox__required\">\n *\n </span>\n )}\n </label>\n )}\n </div>\n {hasErrorMessage && (\n <FieldMessage id={errorId} variant=\"error\">\n {errorMessage}\n </FieldMessage>\n )}\n {hasHelper && (\n <FieldMessage id={helperId} variant=\"helper\">\n {helperText}\n </FieldMessage>\n )}\n </div>\n );\n}\n\n// ─── 4. Exports ─── //\n\nexport { Checkbox, checkboxVariants };\nexport type { CheckboxProps };\n"]}
1
+ {"version":3,"sources":["/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-TQUB2TCL.cjs","../src/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"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","file":"/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-TQUB2TCL.cjs","sourcesContent":[null,"'use client';\n\nimport type { ReactNode } from 'react';\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { Check } from '../../internal/icons';\nimport { useFieldA11y, FieldMessage } from '../../field';\n\n// ─── 1. Variants (cva) ─── //\n\nconst checkboxVariants = cva('ddga-checkbox', {\n variants: {\n size: {\n xs: 'ddga-checkbox--xs',\n sm: 'ddga-checkbox--sm',\n md: 'ddga-checkbox--md',\n },\n variant: {\n primary: '',\n neutral: 'ddga-checkbox--neutral',\n },\n error: {\n true: 'ddga-checkbox--error',\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'primary',\n },\n});\n\n// ─── 2. Types ─── //\n\n// Radix owns the state model (checked / defaultChecked / onCheckedChange /\n// indeterminate via checked=\"indeterminate\" / disabled / required / name /\n// value). We add the composed label + helper/error + a11y wiring. `children`\n// is omitted , the indicator is rendered internally.\ninterface CheckboxProps\n extends\n Omit<React.ComponentProps<typeof CheckboxPrimitive.Root>, 'children'>,\n VariantProps<typeof checkboxVariants> {\n /** Visible label, sits beside the box, associated via `htmlFor`/`id`. */\n label?: ReactNode;\n /** Hint shown below the row. Hidden while an error message is showing. */\n helperText?: ReactNode;\n /** Message shown below the row when `error` is true. */\n errorMessage?: ReactNode;\n /** Marks the field invalid: sets `aria-invalid` and error styling. */\n error?: boolean;\n /** Locks the value: shows state but can't be toggled; stays focusable, sets `aria-readonly`. */\n readOnly?: boolean;\n}\n\n// ─── 3. Component ─── //\n\nfunction Checkbox({\n id: externalId,\n label,\n helperText,\n errorMessage,\n error,\n size,\n variant,\n readOnly,\n required,\n className,\n onClick,\n ...props\n}: CheckboxProps) {\n const { fieldId, errorId, helperId, hasError, hasErrorMessage, hasHelper, controlProps } =\n useFieldA11y({\n name: 'Checkbox',\n id: externalId,\n label,\n error,\n errorMessage,\n helperText,\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby'],\n });\n\n return (\n <div data-slot=\"checkbox-field\" className=\"ddga-field\">\n <div className=\"ddga-checkbox-row\">\n <CheckboxPrimitive.Root\n // Spread props first, then the a11y contract (controlProps) so a\n // consumer cannot accidentally clobber the wiring.\n {...props}\n {...controlProps}\n data-slot=\"checkbox\"\n data-readonly={readOnly ? '' : undefined}\n aria-readonly={readOnly || undefined}\n required={required}\n // Read-only: preventDefault runs before Radix's composed handler, skipping the toggle.\n onClick={(event) => {\n if (readOnly) event.preventDefault();\n onClick?.(event);\n }}\n className={cn(checkboxVariants({ size, variant, error: hasError }), className)}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"ddga-checkbox__indicator\"\n >\n {/* CSS shows one per data-state; minus is a bar, check is the glyph. */}\n <Check className=\"ddga-checkbox__check\" aria-hidden=\"true\" />\n <span className=\"ddga-checkbox__minus\" aria-hidden=\"true\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label && (\n <label htmlFor={fieldId} className=\"ddga-checkbox__label\">\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"ddga-checkbox__required\">\n *\n </span>\n )}\n </label>\n )}\n </div>\n {hasErrorMessage && (\n <FieldMessage id={errorId} variant=\"error\">\n {errorMessage}\n </FieldMessage>\n )}\n {hasHelper && (\n <FieldMessage id={helperId} variant=\"helper\">\n {helperText}\n </FieldMessage>\n )}\n </div>\n );\n}\n\n// ─── 4. Exports ─── //\n\nexport { Checkbox, checkboxVariants };\nexport type { CheckboxProps };\n"]}
@@ -28,7 +28,9 @@ function DgaProvider({
28
28
  if (typeof document === "undefined") return;
29
29
  const el = document.createElement("div");
30
30
  el.setAttribute("data-slot", "dga-portal");
31
- el.style.position = "relative";
31
+ el.style.position = "fixed";
32
+ el.style.top = "0";
33
+ el.style.left = "0";
32
34
  el.style.zIndex = "50";
33
35
  document.body.appendChild(el);
34
36
  portalRef.current = el;
@@ -74,4 +76,4 @@ function DgaProvider({
74
76
  export {
75
77
  DgaProvider
76
78
  };
77
- //# sourceMappingURL=chunk-YVB5RTKR.js.map
79
+ //# sourceMappingURL=chunk-TZ6IKB3E.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/DgaProvider.tsx"],"sourcesContent":["'use client';\n\nimport { useState, useMemo, useContext, useEffect, useRef } from 'react';\nimport { Direction as DirectionPrimitive, Tooltip as TooltipPrimitive } from 'radix-ui';\nimport { buildTheme, type DgaTheme } from '@dev-dga/tokens';\nimport { DgaContext, type DgaContextValue } from './DgaContext';\n\ntype DgaRootElement =\n | 'div'\n | 'main'\n | 'nav'\n | 'section'\n | 'article'\n | 'aside'\n | 'header'\n | 'footer';\n\nexport interface DgaProviderProps {\n dir?: 'ltr' | 'rtl';\n locale?: string;\n mode?: 'light' | 'dark';\n /**\n * Brand theme. `theme.primary` accepts a palette name (`'lavender'`),\n * any CSS color string (`'#7C3AED'` , hover/active auto-derived via\n * `color-mix()`), or an explicit `{ base, hover, active, foreground? }`\n * triplet. The override-object pattern (`style={{ '--ddga-color-primary':\n * '...' }}`) still works , `style` wins over `theme`.\n */\n theme?: DgaTheme;\n as?: DgaRootElement;\n className?: string;\n style?: React.CSSProperties;\n children: React.ReactNode;\n}\n\nexport function DgaProvider({\n dir = 'ltr',\n locale,\n mode = 'light',\n theme,\n as: Component = 'div',\n className,\n style: consumerStyle,\n children,\n}: DgaProviderProps) {\n const parentCtx = useContext(DgaContext);\n const isNested = parentCtx !== null;\n // Callback ref + state so context subscribers (e.g. Select's portal\n // container) re-render when the element actually mounts. With useRef\n // the .current update wouldn't trigger a render and a defaultOpen\n // portal would race to <body> before the ref populated.\n const [rootEl, setRootEl] = useState<HTMLElement | null>(null);\n // The portal element is held in a ref (we directly mutate its attributes\n // + inline CSS variables, which the react-hooks/immutability lint rule\n // forbids on state values). A parallel `portalEl` state mirrors the ref\n // so context subscribers re-render once the element mounts.\n const portalRef = useRef<HTMLDivElement | null>(null);\n const [portalEl, setPortalEl] = useState<HTMLElement | null>(null);\n const resolvedLocale = locale ?? (dir === 'rtl' ? 'ar' : 'en');\n\n // Memoize by reference. Stable palette-name themes (`{ primary: 'lavender' }`\n // declared at module scope) never recompute; consumers passing an inline\n // object accept a per-render `buildTheme` call (cheap , small switch\n // statement over a single string).\n const themeVars = useMemo(() => (theme ? buildTheme(theme) : null), [theme]);\n\n // ─── Body-level portal container ─── //\n //\n // Create a sibling-of-body div that mirrors this provider's theme\n // attributes. Overlay portals (Modal, Drawer, DropdownMenu, etc.) anchor\n // here instead of `rootEl` so:\n //\n // - They escape `overflow: hidden` / `transform` ancestors the consumer\n // might wrap us in (Storybook's docs-story preview block is the\n // motivating case — a `transform` ancestor breaks `position: fixed`\n // descendants, clipping modals to the preview rect).\n // - Theme variables, dark mode, RTL still resolve because we copy\n // `data-theme`, `dir`, and inline CSS vars from this provider onto\n // the portal element.\n //\n // One container per DgaProvider instance — cleaned up on unmount. SSR-safe\n // (effects only run client-side; consumers see `portalEl: null` and the\n // overlays fall back to `rootEl`).\n useEffect(() => {\n if (typeof document === 'undefined') return;\n const el = document.createElement('div');\n el.setAttribute('data-slot', 'dga-portal');\n // Fixed at the viewport origin, NOT `relative`. This zero-size div is a\n // child of <body>, so in flow it is placed by whatever layout body uses —\n // a centered flex body parks it at the far edge — and because it is\n // positioned it becomes the containing block for react-aria's absolutely\n // positioned popovers, which then resolve against that stray origin and\n // render off-screen (DatePicker on a `justify-content: center` body).\n // `absolute; top/left: 0` also fixes the origin but breaks react-aria's\n // `maxHeight` on a scrolled page (it collapses the popover to 0) — fixed\n // keeps the container rect viewport-relative, which its math expects.\n // z-index still applies (position !== static), and Radix overlays are\n // unaffected: a plain fixed ancestor is not a containing block for fixed\n // descendants, so they still resolve to the viewport.\n el.style.position = 'fixed';\n el.style.top = '0';\n el.style.left = '0';\n el.style.zIndex = '50';\n document.body.appendChild(el);\n portalRef.current = el;\n // The setState here exposes the freshly-mounted DOM element to context\n // subscribers (overlay components) so they re-render and target the\n // portal on first commit. Single call on mount + single on unmount;\n // not the cascading-render footgun the lint rule guards against.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setPortalEl(el);\n return () => {\n el.remove();\n portalRef.current = null;\n\n setPortalEl(null);\n };\n }, []);\n\n // Mirror theme attributes onto the portal element so its descendants\n // resolve `var(--ddga-*)` and respect dark mode / RTL the same way as\n // descendants of `rootEl`. We mutate via the ref (not the state) so the\n // react-hooks/immutability rule stays happy — and run this on every prop\n // change that affects appearance.\n useEffect(() => {\n const el = portalRef.current;\n if (!el) return;\n el.setAttribute('data-theme', mode);\n el.setAttribute('dir', dir);\n el.style.colorScheme = mode;\n if (themeVars) {\n for (const [k, v] of Object.entries(themeVars)) {\n el.style.setProperty(k, String(v));\n }\n }\n }, [mode, dir, themeVars, portalEl]);\n\n const ctxValue = useMemo<DgaContextValue>(\n () => ({ dir, locale: resolvedLocale, mode, rootEl, portalEl }),\n [dir, resolvedLocale, mode, rootEl, portalEl],\n );\n\n // Radix's Direction.Provider propagates `dir` to portal-rendered content\n // (Tooltip/Select/Toast/Modal) that would otherwise inherit body dir,\n // not the dir on this wrapper element. Nested providers reuse the parent\n // direction via their own Direction.Provider, so this is safe to repeat.\n const inner = <DirectionPrimitive.Provider dir={dir}>{children}</DirectionPrimitive.Provider>;\n\n return (\n <DgaContext.Provider value={ctxValue}>\n <Component\n ref={setRootEl}\n dir={dir}\n lang={resolvedLocale}\n data-slot=\"dga-root\"\n data-theme={mode}\n className={className}\n // Order: colorScheme → theme vars → consumer style. A manually-\n // supplied `style` overrides `theme` (escape hatch preserved per\n // THEMING-PLAN.md: every `--ddga-*` remains plain-CSS overridable).\n style={{ colorScheme: mode, ...(themeVars ?? {}), ...consumerStyle }}\n >\n {isNested ? (\n inner\n ) : (\n <TooltipPrimitive.Provider delayDuration={300} skipDelayDuration={100}>\n {inner}\n </TooltipPrimitive.Provider>\n )}\n </Component>\n </DgaContext.Provider>\n );\n}\n"],"mappings":";;;;;AAEA,SAAS,UAAU,SAAS,YAAY,WAAW,cAAc;AACjE,SAAS,aAAa,oBAAoB,WAAW,wBAAwB;AAC7E,SAAS,kBAAiC;AA8I1B;AA/GT,SAAS,YAAY;AAAA,EAC1B,MAAM;AAAA,EACN;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,IAAI,YAAY;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,EACP;AACF,GAAqB;AACnB,QAAM,YAAY,WAAW,UAAU;AACvC,QAAM,WAAW,cAAc;AAK/B,QAAM,CAAC,QAAQ,SAAS,IAAI,SAA6B,IAAI;AAK7D,QAAM,YAAY,OAA8B,IAAI;AACpD,QAAM,CAAC,UAAU,WAAW,IAAI,SAA6B,IAAI;AACjE,QAAM,iBAAiB,WAAW,QAAQ,QAAQ,OAAO;AAMzD,QAAM,YAAY,QAAQ,MAAO,QAAQ,WAAW,KAAK,IAAI,MAAO,CAAC,KAAK,CAAC;AAmB3E,YAAU,MAAM;AACd,QAAI,OAAO,aAAa,YAAa;AACrC,UAAM,KAAK,SAAS,cAAc,KAAK;AACvC,OAAG,aAAa,aAAa,YAAY;AAazC,OAAG,MAAM,WAAW;AACpB,OAAG,MAAM,MAAM;AACf,OAAG,MAAM,OAAO;AAChB,OAAG,MAAM,SAAS;AAClB,aAAS,KAAK,YAAY,EAAE;AAC5B,cAAU,UAAU;AAMpB,gBAAY,EAAE;AACd,WAAO,MAAM;AACX,SAAG,OAAO;AACV,gBAAU,UAAU;AAEpB,kBAAY,IAAI;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,CAAC;AAOL,YAAU,MAAM;AACd,UAAM,KAAK,UAAU;AACrB,QAAI,CAAC,GAAI;AACT,OAAG,aAAa,cAAc,IAAI;AAClC,OAAG,aAAa,OAAO,GAAG;AAC1B,OAAG,MAAM,cAAc;AACvB,QAAI,WAAW;AACb,iBAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC9C,WAAG,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC;AAAA,MACnC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,MAAM,KAAK,WAAW,QAAQ,CAAC;AAEnC,QAAM,WAAW;AAAA,IACf,OAAO,EAAE,KAAK,QAAQ,gBAAgB,MAAM,QAAQ,SAAS;AAAA,IAC7D,CAAC,KAAK,gBAAgB,MAAM,QAAQ,QAAQ;AAAA,EAC9C;AAMA,QAAM,QAAQ,oBAAC,mBAAmB,UAAnB,EAA4B,KAAW,UAAS;AAE/D,SACE,oBAAC,WAAW,UAAX,EAAoB,OAAO,UAC1B;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,aAAU;AAAA,MACV,cAAY;AAAA,MACZ;AAAA,MAIA,OAAO,EAAE,aAAa,MAAM,GAAI,aAAa,CAAC,GAAI,GAAG,cAAc;AAAA,MAElE,qBACC,QAEA,oBAAC,iBAAiB,UAAjB,EAA0B,eAAe,KAAK,mBAAmB,KAC/D,iBACH;AAAA;AAAA,EAEJ,GACF;AAEJ;","names":[]}
@@ -8,7 +8,7 @@ var _chunkVXR7IJMHcjs = require('./chunk-VXR7IJMH.cjs');
8
8
 
9
9
 
10
10
 
11
- var _chunk6G2BJQZLcjs = require('./chunk-6G2BJQZL.cjs');
11
+ var _chunkP66BFKWQcjs = require('./chunk-P66BFKWQ.cjs');
12
12
 
13
13
 
14
14
  var _chunkYS2JJ73Mcjs = require('./chunk-YS2JJ73M.cjs');
@@ -92,8 +92,8 @@ function Sidebar({
92
92
  }) {
93
93
  const { isMobile, openMobile, setOpenMobile, state } = _chunkYUJZEQJWcjs.useSidebar.call(void 0, );
94
94
  if (isMobile) {
95
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6G2BJQZLcjs.Drawer, { open: openMobile, onOpenChange: setOpenMobile, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
96
- _chunk6G2BJQZLcjs.DrawerContent,
95
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP66BFKWQcjs.Drawer, { open: openMobile, onOpenChange: setOpenMobile, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
96
+ _chunkP66BFKWQcjs.DrawerContent,
97
97
  {
98
98
  side,
99
99
  size: "sm",
@@ -227,4 +227,4 @@ function SidebarSeparator({ className, ...props }) {
227
227
 
228
228
 
229
229
  exports.SidebarProvider = SidebarProvider; exports.Sidebar = Sidebar; exports.SidebarTrigger = SidebarTrigger; exports.SidebarRail = SidebarRail; exports.SidebarInset = SidebarInset; exports.SidebarHeader = SidebarHeader; exports.SidebarContent = SidebarContent; exports.SidebarFooter = SidebarFooter; exports.SidebarSeparator = SidebarSeparator;
230
- //# sourceMappingURL=chunk-T3NVC7UU.cjs.map
230
+ //# sourceMappingURL=chunk-U3W2GAHM.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-T3NVC7UU.cjs","../src/components/Sidebar/Sidebar.tsx"],"names":["value"],"mappings":"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","file":"/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-T3NVC7UU.cjs","sourcesContent":[null,"'use client';\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Slot as SlotPrimitive } from 'radix-ui';\nimport { cn } from '../../utils/cn';\nimport { Drawer, DrawerContent } from '../Drawer';\nimport { PanelLeft } from '../../internal/icons';\nimport { SidebarContext, useSidebar, type SidebarContextValue } from './SidebarContext';\nimport { useIsMobile } from './useIsMobile';\n\n// ─── SidebarProvider ─── //\n\ninterface SidebarProviderProps extends React.ComponentProps<'div'> {\n /** Uncontrolled initial desktop state. Default true (expanded). */\n defaultOpen?: boolean;\n /** Controlled desktop open state. */\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Viewport width (px) below which the mobile Drawer engages. Default 768. */\n mobileBreakpoint?: number;\n /** Register Cmd/Ctrl+B to toggle. Default true. */\n keyboardShortcut?: boolean;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange,\n mobileBreakpoint = 768,\n keyboardShortcut = true,\n className,\n style,\n children,\n ...props\n}: SidebarProviderProps) {\n const isMobile = useIsMobile(mobileBreakpoint);\n const [openMobile, setOpenMobile] = useState(false);\n\n const isControlled = openProp !== undefined;\n const [openInternal, setOpenInternal] = useState(defaultOpen);\n const open = isControlled ? (openProp as boolean) : openInternal;\n\n const setOpen = useCallback(\n (value: boolean) => {\n if (!isControlled) setOpenInternal(value);\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange],\n );\n\n const toggleSidebar = useCallback(() => {\n if (isMobile) {\n setOpenMobile((v) => !v);\n return;\n }\n if (isControlled) {\n onOpenChange?.(!open);\n } else {\n setOpenInternal((v) => !v);\n }\n }, [isMobile, isControlled, onOpenChange, open]);\n\n useEffect(() => {\n if (!keyboardShortcut) return;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key.toLowerCase() === 'b' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n toggleSidebar();\n }\n };\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [keyboardShortcut, toggleSidebar]);\n\n const state: 'expanded' | 'collapsed' = open ? 'expanded' : 'collapsed';\n\n const value = useMemo<SidebarContextValue>(\n () => ({ state, open, setOpen, openMobile, setOpenMobile, isMobile, toggleSidebar }),\n [state, open, setOpen, openMobile, isMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={value}>\n <div\n data-slot=\"sidebar-wrapper\"\n className={cn('ddga-sidebar-wrapper', className)}\n style={style}\n {...props}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n );\n}\n\n// ─── Sidebar (container) ─── //\n\ninterface SidebarProps extends React.ComponentProps<'div'> {\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'icon' | 'offcanvas' | 'none';\n /** Logical side; flips with dir. Default 'start'. */\n side?: 'start' | 'end';\n}\n\nfunction Sidebar({\n variant = 'sidebar',\n collapsible = 'icon',\n side = 'start',\n className,\n children,\n 'aria-label': ariaLabel = 'Sidebar',\n ...props\n}: SidebarProps) {\n const { isMobile, openMobile, setOpenMobile, state } = useSidebar();\n\n if (isMobile) {\n return (\n <Drawer open={openMobile} onOpenChange={setOpenMobile}>\n <DrawerContent\n side={side}\n size=\"sm\"\n aria-label={ariaLabel}\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n data-variant={variant}\n data-side={side}\n className={cn('ddga-sidebar', 'ddga-sidebar--mobile', className)}\n {...props}\n >\n {children}\n </DrawerContent>\n </Drawer>\n );\n }\n\n return (\n <aside\n data-slot=\"sidebar\"\n aria-label={ariaLabel}\n data-state={state}\n data-collapsible={collapsible}\n data-variant={variant}\n data-side={side}\n className={cn('ddga-sidebar', className)}\n {...props}\n >\n {children}\n </aside>\n );\n}\n\n// ─── Trigger / Rail / Inset ─── //\n\ninterface SidebarTriggerProps extends React.ComponentProps<'button'> {\n asChild?: boolean;\n}\n\nfunction SidebarTrigger({\n asChild,\n className,\n onClick,\n children,\n 'aria-label': ariaLabel = 'Toggle sidebar',\n ...props\n}: SidebarTriggerProps) {\n const { toggleSidebar, open, openMobile, isMobile } = useSidebar();\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n type={asChild ? undefined : 'button'}\n data-slot=\"sidebar-trigger\"\n // Don't override the child element's accessible name when asChild.\n aria-label={asChild ? undefined : ariaLabel}\n aria-haspopup={isMobile ? 'dialog' : undefined}\n aria-expanded={isMobile ? openMobile : open}\n className={cn('ddga-sidebar__trigger', className)}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n toggleSidebar();\n }}\n {...props}\n >\n {children ?? <PanelLeft aria-hidden=\"true\" />}\n </Comp>\n );\n}\n\nfunction SidebarRail({\n className,\n 'aria-label': ariaLabel = 'Toggle sidebar',\n ...props\n}: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n return (\n <button\n type=\"button\"\n data-slot=\"sidebar-rail\"\n aria-label={ariaLabel}\n title={ariaLabel}\n tabIndex={-1}\n className={cn('ddga-sidebar__rail', className)}\n onClick={toggleSidebar}\n {...props}\n />\n );\n}\n\ninterface SidebarInsetProps extends React.ComponentProps<'main'> {\n asChild?: boolean;\n /**\n * Make the inset its own vertical scroll region: tall content scrolls inside\n * it (the sidebar + footer stay put) with zero consumer layout CSS — no\n * `flex` / `min-block-size:0` / `overflow-y:auto` boilerplate. The whole inset\n * scrolls, header included; for a fixed header with only the body scrolling,\n * leave this off and compose a nested scroll region inside the inset (see the\n * App shell story).\n */\n scrollable?: boolean;\n}\n\nfunction SidebarInset({ asChild, scrollable, className, ...props }: SidebarInsetProps) {\n const Comp = asChild ? SlotPrimitive.Slot : 'main';\n return (\n <Comp\n data-slot=\"sidebar-inset\"\n className={cn(\n 'ddga-sidebar-inset',\n scrollable && 'ddga-sidebar-inset--scrollable',\n className,\n )}\n {...props}\n />\n );\n}\n\n// ─── Structure ─── //\n\ntype SidebarSectionProps = React.ComponentProps<'div'> & { asChild?: boolean };\n\nfunction SidebarHeader({ asChild, className, ...props }: SidebarSectionProps) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n return (\n <Comp data-slot=\"sidebar-header\" className={cn('ddga-sidebar__header', className)} {...props} />\n );\n}\n\nfunction SidebarContent({ asChild, className, ...props }: SidebarSectionProps) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n return (\n <Comp\n data-slot=\"sidebar-content\"\n className={cn('ddga-sidebar__content', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ asChild, className, ...props }: SidebarSectionProps) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n return (\n <Comp data-slot=\"sidebar-footer\" className={cn('ddga-sidebar__footer', className)} {...props} />\n );\n}\n\nfunction SidebarSeparator({ className, ...props }: React.ComponentProps<'hr'>) {\n return (\n <hr\n data-slot=\"sidebar-separator\"\n className={cn('ddga-sidebar__separator', className)}\n {...props}\n />\n );\n}\n\n// ─── Exports ─── //\n\nexport { SidebarProvider };\nexport type { SidebarProviderProps };\n\nexport { Sidebar };\nexport type { SidebarProps };\n\nexport { SidebarTrigger, SidebarRail, SidebarInset };\nexport type { SidebarTriggerProps, SidebarInsetProps };\n\nexport { SidebarHeader, SidebarContent, SidebarFooter, SidebarSeparator };\nexport type { SidebarSectionProps };\n\nexport { useSidebar };\nexport type { SidebarContextValue };\n"]}
1
+ {"version":3,"sources":["/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-U3W2GAHM.cjs","../src/components/Sidebar/Sidebar.tsx"],"names":["value"],"mappings":"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","file":"/home/devdhaif/work/react/dga-dev/packages/react/dist/chunk-U3W2GAHM.cjs","sourcesContent":[null,"'use client';\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Slot as SlotPrimitive } from 'radix-ui';\nimport { cn } from '../../utils/cn';\nimport { Drawer, DrawerContent } from '../Drawer';\nimport { PanelLeft } from '../../internal/icons';\nimport { SidebarContext, useSidebar, type SidebarContextValue } from './SidebarContext';\nimport { useIsMobile } from './useIsMobile';\n\n// ─── SidebarProvider ─── //\n\ninterface SidebarProviderProps extends React.ComponentProps<'div'> {\n /** Uncontrolled initial desktop state. Default true (expanded). */\n defaultOpen?: boolean;\n /** Controlled desktop open state. */\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Viewport width (px) below which the mobile Drawer engages. Default 768. */\n mobileBreakpoint?: number;\n /** Register Cmd/Ctrl+B to toggle. Default true. */\n keyboardShortcut?: boolean;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange,\n mobileBreakpoint = 768,\n keyboardShortcut = true,\n className,\n style,\n children,\n ...props\n}: SidebarProviderProps) {\n const isMobile = useIsMobile(mobileBreakpoint);\n const [openMobile, setOpenMobile] = useState(false);\n\n const isControlled = openProp !== undefined;\n const [openInternal, setOpenInternal] = useState(defaultOpen);\n const open = isControlled ? (openProp as boolean) : openInternal;\n\n const setOpen = useCallback(\n (value: boolean) => {\n if (!isControlled) setOpenInternal(value);\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange],\n );\n\n const toggleSidebar = useCallback(() => {\n if (isMobile) {\n setOpenMobile((v) => !v);\n return;\n }\n if (isControlled) {\n onOpenChange?.(!open);\n } else {\n setOpenInternal((v) => !v);\n }\n }, [isMobile, isControlled, onOpenChange, open]);\n\n useEffect(() => {\n if (!keyboardShortcut) return;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key.toLowerCase() === 'b' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n toggleSidebar();\n }\n };\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [keyboardShortcut, toggleSidebar]);\n\n const state: 'expanded' | 'collapsed' = open ? 'expanded' : 'collapsed';\n\n const value = useMemo<SidebarContextValue>(\n () => ({ state, open, setOpen, openMobile, setOpenMobile, isMobile, toggleSidebar }),\n [state, open, setOpen, openMobile, isMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={value}>\n <div\n data-slot=\"sidebar-wrapper\"\n className={cn('ddga-sidebar-wrapper', className)}\n style={style}\n {...props}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n );\n}\n\n// ─── Sidebar (container) ─── //\n\ninterface SidebarProps extends React.ComponentProps<'div'> {\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'icon' | 'offcanvas' | 'none';\n /** Logical side; flips with dir. Default 'start'. */\n side?: 'start' | 'end';\n}\n\nfunction Sidebar({\n variant = 'sidebar',\n collapsible = 'icon',\n side = 'start',\n className,\n children,\n 'aria-label': ariaLabel = 'Sidebar',\n ...props\n}: SidebarProps) {\n const { isMobile, openMobile, setOpenMobile, state } = useSidebar();\n\n if (isMobile) {\n return (\n <Drawer open={openMobile} onOpenChange={setOpenMobile}>\n <DrawerContent\n side={side}\n size=\"sm\"\n aria-label={ariaLabel}\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n data-variant={variant}\n data-side={side}\n className={cn('ddga-sidebar', 'ddga-sidebar--mobile', className)}\n {...props}\n >\n {children}\n </DrawerContent>\n </Drawer>\n );\n }\n\n return (\n <aside\n data-slot=\"sidebar\"\n aria-label={ariaLabel}\n data-state={state}\n data-collapsible={collapsible}\n data-variant={variant}\n data-side={side}\n className={cn('ddga-sidebar', className)}\n {...props}\n >\n {children}\n </aside>\n );\n}\n\n// ─── Trigger / Rail / Inset ─── //\n\ninterface SidebarTriggerProps extends React.ComponentProps<'button'> {\n asChild?: boolean;\n}\n\nfunction SidebarTrigger({\n asChild,\n className,\n onClick,\n children,\n 'aria-label': ariaLabel = 'Toggle sidebar',\n ...props\n}: SidebarTriggerProps) {\n const { toggleSidebar, open, openMobile, isMobile } = useSidebar();\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n type={asChild ? undefined : 'button'}\n data-slot=\"sidebar-trigger\"\n // Don't override the child element's accessible name when asChild.\n aria-label={asChild ? undefined : ariaLabel}\n aria-haspopup={isMobile ? 'dialog' : undefined}\n aria-expanded={isMobile ? openMobile : open}\n className={cn('ddga-sidebar__trigger', className)}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n toggleSidebar();\n }}\n {...props}\n >\n {children ?? <PanelLeft aria-hidden=\"true\" />}\n </Comp>\n );\n}\n\nfunction SidebarRail({\n className,\n 'aria-label': ariaLabel = 'Toggle sidebar',\n ...props\n}: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n return (\n <button\n type=\"button\"\n data-slot=\"sidebar-rail\"\n aria-label={ariaLabel}\n title={ariaLabel}\n tabIndex={-1}\n className={cn('ddga-sidebar__rail', className)}\n onClick={toggleSidebar}\n {...props}\n />\n );\n}\n\ninterface SidebarInsetProps extends React.ComponentProps<'main'> {\n asChild?: boolean;\n /**\n * Make the inset its own vertical scroll region: tall content scrolls inside\n * it (the sidebar + footer stay put) with zero consumer layout CSS — no\n * `flex` / `min-block-size:0` / `overflow-y:auto` boilerplate. The whole inset\n * scrolls, header included; for a fixed header with only the body scrolling,\n * leave this off and compose a nested scroll region inside the inset (see the\n * App shell story).\n */\n scrollable?: boolean;\n}\n\nfunction SidebarInset({ asChild, scrollable, className, ...props }: SidebarInsetProps) {\n const Comp = asChild ? SlotPrimitive.Slot : 'main';\n return (\n <Comp\n data-slot=\"sidebar-inset\"\n className={cn(\n 'ddga-sidebar-inset',\n scrollable && 'ddga-sidebar-inset--scrollable',\n className,\n )}\n {...props}\n />\n );\n}\n\n// ─── Structure ─── //\n\ntype SidebarSectionProps = React.ComponentProps<'div'> & { asChild?: boolean };\n\nfunction SidebarHeader({ asChild, className, ...props }: SidebarSectionProps) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n return (\n <Comp data-slot=\"sidebar-header\" className={cn('ddga-sidebar__header', className)} {...props} />\n );\n}\n\nfunction SidebarContent({ asChild, className, ...props }: SidebarSectionProps) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n return (\n <Comp\n data-slot=\"sidebar-content\"\n className={cn('ddga-sidebar__content', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ asChild, className, ...props }: SidebarSectionProps) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n return (\n <Comp data-slot=\"sidebar-footer\" className={cn('ddga-sidebar__footer', className)} {...props} />\n );\n}\n\nfunction SidebarSeparator({ className, ...props }: React.ComponentProps<'hr'>) {\n return (\n <hr\n data-slot=\"sidebar-separator\"\n className={cn('ddga-sidebar__separator', className)}\n {...props}\n />\n );\n}\n\n// ─── Exports ─── //\n\nexport { SidebarProvider };\nexport type { SidebarProviderProps };\n\nexport { Sidebar };\nexport type { SidebarProps };\n\nexport { SidebarTrigger, SidebarRail, SidebarInset };\nexport type { SidebarTriggerProps, SidebarInsetProps };\n\nexport { SidebarHeader, SidebarContent, SidebarFooter, SidebarSeparator };\nexport type { SidebarSectionProps };\n\nexport { useSidebar };\nexport type { SidebarContextValue };\n"]}