@arolariu/components 0.5.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (892) hide show
  1. package/{changelog.md → CHANGELOG.md} +25 -0
  2. package/CONTRIBUTING.md +344 -265
  3. package/DEBUGGING.md +185 -103
  4. package/EXAMPLES.md +470 -345
  5. package/{readme.md → README.md} +306 -203
  6. package/dist/components/ui/accordion.d.ts +157 -5
  7. package/dist/components/ui/accordion.d.ts.map +1 -1
  8. package/dist/components/ui/accordion.js +100 -22
  9. package/dist/components/ui/accordion.js.map +1 -1
  10. package/dist/components/ui/accordion.module.js +12 -0
  11. package/dist/components/ui/accordion.module.js.map +1 -0
  12. package/dist/components/ui/accordion_module.css +72 -0
  13. package/dist/components/ui/accordion_module.css.map +1 -0
  14. package/dist/components/ui/alert-dialog.d.ts +321 -18
  15. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  16. package/dist/components/ui/alert-dialog.js +145 -52
  17. package/dist/components/ui/alert-dialog.js.map +1 -1
  18. package/dist/components/ui/alert-dialog.module.js +13 -0
  19. package/dist/components/ui/alert-dialog.module.js.map +1 -0
  20. package/dist/components/ui/alert-dialog_module.css +89 -0
  21. package/dist/components/ui/alert-dialog_module.css.map +1 -0
  22. package/dist/components/ui/alert.d.ts +109 -6
  23. package/dist/components/ui/alert.d.ts.map +1 -1
  24. package/dist/components/ui/alert.js +12 -21
  25. package/dist/components/ui/alert.js.map +1 -1
  26. package/dist/components/ui/alert.module.js +11 -0
  27. package/dist/components/ui/alert.module.js.map +1 -0
  28. package/dist/components/ui/alert_module.css +59 -0
  29. package/dist/components/ui/alert_module.css.map +1 -0
  30. package/dist/components/ui/aspect-ratio.d.ts +24 -2
  31. package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
  32. package/dist/components/ui/aspect-ratio.js +14 -3
  33. package/dist/components/ui/aspect-ratio.js.map +1 -1
  34. package/dist/components/ui/aspect-ratio.module.js +7 -0
  35. package/dist/components/ui/aspect-ratio.module.js.map +1 -0
  36. package/dist/components/ui/aspect-ratio_module.css +10 -0
  37. package/dist/components/ui/aspect-ratio_module.css.map +1 -0
  38. package/dist/components/ui/async-boundary.js +17 -0
  39. package/dist/components/ui/async-boundary.js.map +1 -0
  40. package/dist/components/ui/avatar.d.ts +97 -4
  41. package/dist/components/ui/avatar.d.ts.map +1 -1
  42. package/dist/components/ui/avatar.js +50 -21
  43. package/dist/components/ui/avatar.js.map +1 -1
  44. package/dist/components/ui/avatar.module.js +9 -0
  45. package/dist/components/ui/avatar.module.js.map +1 -0
  46. package/dist/components/ui/avatar_module.css +35 -0
  47. package/dist/components/ui/avatar_module.css.map +1 -0
  48. package/dist/components/ui/background-beams.d.ts +21 -3
  49. package/dist/components/ui/background-beams.d.ts.map +1 -1
  50. package/dist/components/ui/background-beams.js +22 -11
  51. package/dist/components/ui/background-beams.js.map +1 -1
  52. package/dist/components/ui/background-beams.module.js +8 -0
  53. package/dist/components/ui/background-beams.module.js.map +1 -0
  54. package/dist/components/ui/background-beams_module.css +22 -0
  55. package/dist/components/ui/background-beams_module.css.map +1 -0
  56. package/dist/components/ui/badge.d.ts +79 -6
  57. package/dist/components/ui/badge.d.ts.map +1 -1
  58. package/dist/components/ui/badge.js +19 -23
  59. package/dist/components/ui/badge.js.map +1 -1
  60. package/dist/components/ui/badge.module.js +11 -0
  61. package/dist/components/ui/badge.module.js.map +1 -0
  62. package/dist/components/ui/badge_module.css +63 -0
  63. package/dist/components/ui/badge_module.css.map +1 -0
  64. package/dist/components/ui/breadcrumb.d.ts +158 -13
  65. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  66. package/dist/components/ui/breadcrumb.js +39 -30
  67. package/dist/components/ui/breadcrumb.js.map +1 -1
  68. package/dist/components/ui/breadcrumb.module.js +14 -0
  69. package/dist/components/ui/breadcrumb.module.js.map +1 -0
  70. package/dist/components/ui/breadcrumb_module.css +90 -0
  71. package/dist/components/ui/breadcrumb_module.css.map +1 -0
  72. package/dist/components/ui/bubble-background.d.ts +38 -10
  73. package/dist/components/ui/bubble-background.d.ts.map +1 -1
  74. package/dist/components/ui/bubble-background.js +33 -35
  75. package/dist/components/ui/bubble-background.js.map +1 -1
  76. package/dist/components/ui/bubble-background.module.js +20 -0
  77. package/dist/components/ui/bubble-background.module.js.map +1 -0
  78. package/dist/components/ui/bubble-background_module.css +99 -0
  79. package/dist/components/ui/bubble-background_module.css.map +1 -0
  80. package/dist/components/ui/button-group.d.ts +88 -8
  81. package/dist/components/ui/button-group.d.ts.map +1 -1
  82. package/dist/components/ui/button-group.js +35 -32
  83. package/dist/components/ui/button-group.js.map +1 -1
  84. package/dist/components/ui/button-group.module.js +11 -0
  85. package/dist/components/ui/button-group.module.js.map +1 -0
  86. package/dist/components/ui/button-group_module.css +79 -0
  87. package/dist/components/ui/button-group_module.css.map +1 -0
  88. package/dist/components/ui/button.d.ts +82 -7
  89. package/dist/components/ui/button.d.ts.map +1 -1
  90. package/dist/components/ui/button.js +69 -34
  91. package/dist/components/ui/button.js.map +1 -1
  92. package/dist/components/ui/button.module.js +17 -0
  93. package/dist/components/ui/button.module.js.map +1 -0
  94. package/dist/components/ui/button_module.css +137 -0
  95. package/dist/components/ui/button_module.css.map +1 -0
  96. package/dist/components/ui/calendar.d.ts +39 -5
  97. package/dist/components/ui/calendar.d.ts.map +1 -1
  98. package/dist/components/ui/calendar.js +72 -61
  99. package/dist/components/ui/calendar.js.map +1 -1
  100. package/dist/components/ui/calendar.module.js +35 -0
  101. package/dist/components/ui/calendar.module.js.map +1 -0
  102. package/dist/components/ui/calendar_module.css +245 -0
  103. package/dist/components/ui/calendar_module.css.map +1 -0
  104. package/dist/components/ui/card-skeleton.js +41 -0
  105. package/dist/components/ui/card-skeleton.js.map +1 -0
  106. package/dist/components/ui/card-skeleton.module.js +15 -0
  107. package/dist/components/ui/card-skeleton.module.js.map +1 -0
  108. package/dist/components/ui/card-skeleton_module.css +54 -0
  109. package/dist/components/ui/card-skeleton_module.css.map +1 -0
  110. package/dist/components/ui/card.d.ts +162 -7
  111. package/dist/components/ui/card.d.ts.map +1 -1
  112. package/dist/components/ui/card.js +13 -13
  113. package/dist/components/ui/card.js.map +1 -1
  114. package/dist/components/ui/card.module.js +13 -0
  115. package/dist/components/ui/card.module.js.map +1 -0
  116. package/dist/components/ui/card_module.css +43 -0
  117. package/dist/components/ui/card_module.css.map +1 -0
  118. package/dist/components/ui/carousel.d.ts +127 -3
  119. package/dist/components/ui/carousel.d.ts.map +1 -1
  120. package/dist/components/ui/carousel.js +63 -36
  121. package/dist/components/ui/carousel.js.map +1 -1
  122. package/dist/components/ui/carousel.module.js +17 -0
  123. package/dist/components/ui/carousel.module.js.map +1 -0
  124. package/dist/components/ui/carousel_module.css +82 -0
  125. package/dist/components/ui/carousel_module.css.map +1 -0
  126. package/dist/components/ui/chart.d.ts +323 -13
  127. package/dist/components/ui/chart.d.ts.map +1 -1
  128. package/dist/components/ui/chart.js +158 -53
  129. package/dist/components/ui/chart.js.map +1 -1
  130. package/dist/components/ui/chart.module.js +27 -0
  131. package/dist/components/ui/chart.module.js.map +1 -0
  132. package/dist/components/ui/chart_module.css +159 -0
  133. package/dist/components/ui/chart_module.css.map +1 -0
  134. package/dist/components/ui/checkbox-group.d.ts +31 -0
  135. package/dist/components/ui/checkbox-group.d.ts.map +1 -0
  136. package/dist/components/ui/checkbox-group.js +25 -0
  137. package/dist/components/ui/checkbox-group.js.map +1 -0
  138. package/dist/components/ui/checkbox-group.module.js +7 -0
  139. package/dist/components/ui/checkbox-group.module.js.map +1 -0
  140. package/dist/components/ui/checkbox-group_module.css +11 -0
  141. package/dist/components/ui/checkbox-group_module.css.map +1 -0
  142. package/dist/components/ui/checkbox.d.ts +33 -2
  143. package/dist/components/ui/checkbox.d.ts.map +1 -1
  144. package/dist/components/ui/checkbox.js +37 -12
  145. package/dist/components/ui/checkbox.js.map +1 -1
  146. package/dist/components/ui/checkbox.module.js +8 -0
  147. package/dist/components/ui/checkbox.module.js.map +1 -0
  148. package/dist/components/ui/checkbox_module.css +45 -0
  149. package/dist/components/ui/checkbox_module.css.map +1 -0
  150. package/dist/components/ui/collapsible.d.ts +87 -3
  151. package/dist/components/ui/collapsible.d.ts.map +1 -1
  152. package/dist/components/ui/collapsible.js +46 -32
  153. package/dist/components/ui/collapsible.js.map +1 -1
  154. package/dist/components/ui/collapsible.module.js +8 -0
  155. package/dist/components/ui/collapsible.module.js.map +1 -0
  156. package/dist/components/ui/collapsible_module.css +26 -0
  157. package/dist/components/ui/collapsible_module.css.map +1 -0
  158. package/dist/components/ui/command.d.ts +284 -51
  159. package/dist/components/ui/command.d.ts.map +1 -1
  160. package/dist/components/ui/command.js +387 -51
  161. package/dist/components/ui/command.js.map +1 -1
  162. package/dist/components/ui/command.module.js +20 -0
  163. package/dist/components/ui/command.module.js.map +1 -0
  164. package/dist/components/ui/command_module.css +194 -0
  165. package/dist/components/ui/command_module.css.map +1 -0
  166. package/dist/components/ui/context-menu.d.ts +414 -21
  167. package/dist/components/ui/context-menu.d.ts.map +1 -1
  168. package/dist/components/ui/context-menu.js +190 -68
  169. package/dist/components/ui/context-menu.js.map +1 -1
  170. package/dist/components/ui/context-menu.module.js +19 -0
  171. package/dist/components/ui/context-menu.module.js.map +1 -0
  172. package/dist/components/ui/context-menu_module.css +114 -0
  173. package/dist/components/ui/context-menu_module.css.map +1 -0
  174. package/dist/components/ui/copy-button.d.ts +41 -0
  175. package/dist/components/ui/copy-button.d.ts.map +1 -0
  176. package/dist/components/ui/copy-button.js +51 -0
  177. package/dist/components/ui/copy-button.js.map +1 -0
  178. package/dist/components/ui/copy-button.module.js +8 -0
  179. package/dist/components/ui/copy-button.module.js.map +1 -0
  180. package/dist/components/ui/copy-button_module.css +37 -0
  181. package/dist/components/ui/copy-button_module.css.map +1 -0
  182. package/dist/components/ui/counting-number.d.ts +28 -2
  183. package/dist/components/ui/counting-number.d.ts.map +1 -1
  184. package/dist/components/ui/counting-number.js +31 -27
  185. package/dist/components/ui/counting-number.js.map +1 -1
  186. package/dist/components/ui/counting-number.module.js +7 -0
  187. package/dist/components/ui/counting-number.module.js.map +1 -0
  188. package/dist/components/ui/counting-number_module.css +7 -0
  189. package/dist/components/ui/counting-number_module.css.map +1 -0
  190. package/dist/components/ui/dialog.d.ts +287 -17
  191. package/dist/components/ui/dialog.d.ts.map +1 -1
  192. package/dist/components/ui/dialog.js +129 -52
  193. package/dist/components/ui/dialog.js.map +1 -1
  194. package/dist/components/ui/dialog.module.js +13 -0
  195. package/dist/components/ui/dialog.module.js.map +1 -0
  196. package/dist/components/ui/dialog_module.css +114 -0
  197. package/dist/components/ui/dialog_module.css.map +1 -0
  198. package/dist/components/ui/dot-background.d.ts +25 -35
  199. package/dist/components/ui/dot-background.d.ts.map +1 -1
  200. package/dist/components/ui/dot-background.js +31 -22
  201. package/dist/components/ui/dot-background.js.map +1 -1
  202. package/dist/components/ui/dot-background.module.js +8 -0
  203. package/dist/components/ui/dot-background.module.js.map +1 -0
  204. package/dist/components/ui/dot-background_module.css +15 -0
  205. package/dist/components/ui/dot-background_module.css.map +1 -0
  206. package/dist/components/ui/drawer.d.ts +287 -18
  207. package/dist/components/ui/drawer.d.ts.map +1 -1
  208. package/dist/components/ui/drawer.js +117 -40
  209. package/dist/components/ui/drawer.js.map +1 -1
  210. package/dist/components/ui/drawer.module.js +14 -0
  211. package/dist/components/ui/drawer.module.js.map +1 -0
  212. package/dist/components/ui/drawer_module.css +86 -0
  213. package/dist/components/ui/drawer_module.css.map +1 -0
  214. package/dist/components/ui/dropdown-menu.d.ts +414 -21
  215. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  216. package/dist/components/ui/dropdown-menu.js +189 -68
  217. package/dist/components/ui/dropdown-menu.js.map +1 -1
  218. package/dist/components/ui/dropdown-menu.module.js +19 -0
  219. package/dist/components/ui/dropdown-menu.module.js.map +1 -0
  220. package/dist/components/ui/dropdown-menu_module.css +114 -0
  221. package/dist/components/ui/dropdown-menu_module.css.map +1 -0
  222. package/dist/components/ui/dropdrawer.d.ts +313 -17
  223. package/dist/components/ui/dropdrawer.d.ts.map +1 -1
  224. package/dist/components/ui/dropdrawer.js +423 -159
  225. package/dist/components/ui/dropdrawer.js.map +1 -1
  226. package/dist/components/ui/dropdrawer.module.js +43 -0
  227. package/dist/components/ui/dropdrawer.module.js.map +1 -0
  228. package/dist/components/ui/dropdrawer_module.css +307 -0
  229. package/dist/components/ui/dropdrawer_module.css.map +1 -0
  230. package/dist/components/ui/empty.d.ts +129 -10
  231. package/dist/components/ui/empty.d.ts.map +1 -1
  232. package/dist/components/ui/empty.js +32 -47
  233. package/dist/components/ui/empty.js.map +1 -1
  234. package/dist/components/ui/empty.module.js +13 -0
  235. package/dist/components/ui/empty.module.js.map +1 -0
  236. package/dist/components/ui/empty_module.css +85 -0
  237. package/dist/components/ui/empty_module.css.map +1 -0
  238. package/dist/components/ui/error-boundary.js +61 -0
  239. package/dist/components/ui/error-boundary.js.map +1 -0
  240. package/dist/components/ui/error-boundary.module.js +10 -0
  241. package/dist/components/ui/error-boundary.module.js.map +1 -0
  242. package/dist/components/ui/error-boundary_module.css +41 -0
  243. package/dist/components/ui/error-boundary_module.css.map +1 -0
  244. package/dist/components/ui/field.d.ts +222 -23
  245. package/dist/components/ui/field.d.ts.map +1 -1
  246. package/dist/components/ui/field.js +76 -86
  247. package/dist/components/ui/field.js.map +1 -1
  248. package/dist/components/ui/field.module.js +24 -0
  249. package/dist/components/ui/field.module.js.map +1 -0
  250. package/dist/components/ui/field_module.css +185 -0
  251. package/dist/components/ui/field_module.css.map +1 -0
  252. package/dist/components/ui/fireworks-background.d.ts +27 -3
  253. package/dist/components/ui/fireworks-background.d.ts.map +1 -1
  254. package/dist/components/ui/fireworks-background.js +36 -35
  255. package/dist/components/ui/fireworks-background.js.map +1 -1
  256. package/dist/components/ui/fireworks-background.module.js +8 -0
  257. package/dist/components/ui/fireworks-background.module.js.map +1 -0
  258. package/dist/components/ui/fireworks-background_module.css +17 -0
  259. package/dist/components/ui/fireworks-background_module.css.map +1 -0
  260. package/dist/components/ui/flip-button.d.ts +27 -3
  261. package/dist/components/ui/flip-button.d.ts.map +1 -1
  262. package/dist/components/ui/flip-button.js +27 -17
  263. package/dist/components/ui/flip-button.js.map +1 -1
  264. package/dist/components/ui/flip-button.module.js +11 -0
  265. package/dist/components/ui/flip-button.module.js.map +1 -0
  266. package/dist/components/ui/flip-button_module.css +47 -0
  267. package/dist/components/ui/flip-button_module.css.map +1 -0
  268. package/dist/components/ui/focus-scope.js +70 -0
  269. package/dist/components/ui/focus-scope.js.map +1 -0
  270. package/dist/components/ui/focus-scope.module.js +7 -0
  271. package/dist/components/ui/focus-scope.module.js.map +1 -0
  272. package/dist/components/ui/focus-scope_module.css +6 -0
  273. package/dist/components/ui/focus-scope_module.css.map +1 -0
  274. package/dist/components/ui/form-skeleton.js +32 -0
  275. package/dist/components/ui/form-skeleton.js.map +1 -0
  276. package/dist/components/ui/form-skeleton.module.js +11 -0
  277. package/dist/components/ui/form-skeleton.module.js.map +1 -0
  278. package/dist/components/ui/form-skeleton_module.css +30 -0
  279. package/dist/components/ui/form-skeleton_module.css.map +1 -0
  280. package/dist/components/ui/form.d.ts +143 -13
  281. package/dist/components/ui/form.d.ts.map +1 -1
  282. package/dist/components/ui/form.js +55 -21
  283. package/dist/components/ui/form.js.map +1 -1
  284. package/dist/components/ui/form.module.js +10 -0
  285. package/dist/components/ui/form.module.js.map +1 -0
  286. package/dist/components/ui/form_module.css +22 -0
  287. package/dist/components/ui/form_module.css.map +1 -0
  288. package/dist/components/ui/gradient-background.d.ts +21 -3
  289. package/dist/components/ui/gradient-background.d.ts.map +1 -1
  290. package/dist/components/ui/gradient-background.js +8 -4
  291. package/dist/components/ui/gradient-background.js.map +1 -1
  292. package/dist/components/ui/gradient-background.module.js +7 -0
  293. package/dist/components/ui/gradient-background.module.js.map +1 -0
  294. package/dist/components/ui/gradient-background_module.css +9 -0
  295. package/dist/components/ui/gradient-background_module.css.map +1 -0
  296. package/dist/components/ui/gradient-text.d.ts +23 -2
  297. package/dist/components/ui/gradient-text.d.ts.map +1 -1
  298. package/dist/components/ui/gradient-text.js +8 -6
  299. package/dist/components/ui/gradient-text.js.map +1 -1
  300. package/dist/components/ui/gradient-text.module.js +9 -0
  301. package/dist/components/ui/gradient-text.module.js.map +1 -0
  302. package/dist/components/ui/gradient-text_module.css +24 -0
  303. package/dist/components/ui/gradient-text_module.css.map +1 -0
  304. package/dist/components/ui/highlight-text.d.ts +24 -2
  305. package/dist/components/ui/highlight-text.d.ts.map +1 -1
  306. package/dist/components/ui/highlight-text.js +7 -10
  307. package/dist/components/ui/highlight-text.js.map +1 -1
  308. package/dist/components/ui/highlight-text.module.js +7 -0
  309. package/dist/components/ui/highlight-text.module.js.map +1 -0
  310. package/dist/components/ui/highlight-text_module.css +16 -0
  311. package/dist/components/ui/highlight-text_module.css.map +1 -0
  312. package/dist/components/ui/hole-background.d.ts +23 -2
  313. package/dist/components/ui/hole-background.d.ts.map +1 -1
  314. package/dist/components/ui/hole-background.js +155 -118
  315. package/dist/components/ui/hole-background.js.map +1 -1
  316. package/dist/components/ui/hole-background.module.js +10 -0
  317. package/dist/components/ui/hole-background.module.js.map +1 -0
  318. package/dist/components/ui/hole-background_module.css +85 -0
  319. package/dist/components/ui/hole-background_module.css.map +1 -0
  320. package/dist/components/ui/hover-card.d.ts +85 -4
  321. package/dist/components/ui/hover-card.d.ts.map +1 -1
  322. package/dist/components/ui/hover-card.js +52 -10
  323. package/dist/components/ui/hover-card.js.map +1 -1
  324. package/dist/components/ui/hover-card.module.js +8 -0
  325. package/dist/components/ui/hover-card.module.js.map +1 -0
  326. package/dist/components/ui/hover-card_module.css +23 -0
  327. package/dist/components/ui/hover-card_module.css.map +1 -0
  328. package/dist/components/ui/input-group.d.ts +132 -13
  329. package/dist/components/ui/input-group.d.ts.map +1 -1
  330. package/dist/components/ui/input-group.js +62 -66
  331. package/dist/components/ui/input-group.js.map +1 -1
  332. package/dist/components/ui/input-group.module.js +20 -0
  333. package/dist/components/ui/input-group.module.js.map +1 -0
  334. package/dist/components/ui/input-group_module.css +150 -0
  335. package/dist/components/ui/input-group_module.css.map +1 -0
  336. package/dist/components/ui/input-otp.d.ts +110 -30
  337. package/dist/components/ui/input-otp.d.ts.map +1 -1
  338. package/dist/components/ui/input-otp.js +24 -15
  339. package/dist/components/ui/input-otp.js.map +1 -1
  340. package/dist/components/ui/input-otp.module.js +17 -0
  341. package/dist/components/ui/input-otp.module.js.map +1 -0
  342. package/dist/components/ui/input-otp_module.css +89 -0
  343. package/dist/components/ui/input-otp_module.css.map +1 -0
  344. package/dist/components/ui/input.d.ts +31 -1
  345. package/dist/components/ui/input.d.ts.map +1 -1
  346. package/dist/components/ui/input.js +21 -8
  347. package/dist/components/ui/input.js.map +1 -1
  348. package/dist/components/ui/input.module.js +7 -0
  349. package/dist/components/ui/input.module.js.map +1 -0
  350. package/dist/components/ui/input_module.css +40 -0
  351. package/dist/components/ui/input_module.css.map +1 -0
  352. package/dist/components/ui/item.d.ts +221 -19
  353. package/dist/components/ui/item.d.ts.map +1 -1
  354. package/dist/components/ui/item.js +66 -90
  355. package/dist/components/ui/item.js.map +1 -1
  356. package/dist/components/ui/item.module.js +22 -0
  357. package/dist/components/ui/item.module.js.map +1 -0
  358. package/dist/components/ui/item_module.css +143 -0
  359. package/dist/components/ui/item_module.css.map +1 -0
  360. package/dist/components/ui/kbd.d.ts +43 -2
  361. package/dist/components/ui/kbd.d.ts.map +1 -1
  362. package/dist/components/ui/kbd.js +12 -12
  363. package/dist/components/ui/kbd.js.map +1 -1
  364. package/dist/components/ui/kbd.module.js +8 -0
  365. package/dist/components/ui/kbd.module.js.map +1 -0
  366. package/dist/components/ui/kbd_module.css +35 -0
  367. package/dist/components/ui/kbd_module.css.map +1 -0
  368. package/dist/components/ui/label.d.ts +30 -3
  369. package/dist/components/ui/label.d.ts.map +1 -1
  370. package/dist/components/ui/label.js +7 -8
  371. package/dist/components/ui/label.js.map +1 -1
  372. package/dist/components/ui/label.module.js +7 -0
  373. package/dist/components/ui/label.module.js.map +1 -0
  374. package/dist/components/ui/label_module.css +17 -0
  375. package/dist/components/ui/label_module.css.map +1 -0
  376. package/dist/components/ui/list-skeleton.js +35 -0
  377. package/dist/components/ui/list-skeleton.js.map +1 -0
  378. package/dist/components/ui/list-skeleton.module.js +12 -0
  379. package/dist/components/ui/list-skeleton.module.js.map +1 -0
  380. package/dist/components/ui/list-skeleton_module.css +39 -0
  381. package/dist/components/ui/list-skeleton_module.css.map +1 -0
  382. package/dist/components/ui/loading-overlay.js +21 -0
  383. package/dist/components/ui/loading-overlay.js.map +1 -0
  384. package/dist/components/ui/loading-overlay.module.js +9 -0
  385. package/dist/components/ui/loading-overlay.module.js.map +1 -0
  386. package/dist/components/ui/loading-overlay_module.css +22 -0
  387. package/dist/components/ui/loading-overlay_module.css.map +1 -0
  388. package/dist/components/ui/menubar.d.ts +422 -22
  389. package/dist/components/ui/menubar.d.ts.map +1 -1
  390. package/dist/components/ui/menubar.js +199 -100
  391. package/dist/components/ui/menubar.js.map +1 -1
  392. package/dist/components/ui/menubar.module.js +21 -0
  393. package/dist/components/ui/menubar.module.js.map +1 -0
  394. package/dist/components/ui/menubar_module.css +145 -0
  395. package/dist/components/ui/menubar_module.css.map +1 -0
  396. package/dist/components/ui/meter.d.ts +101 -0
  397. package/dist/components/ui/meter.d.ts.map +1 -0
  398. package/dist/components/ui/meter.js +71 -0
  399. package/dist/components/ui/meter.js.map +1 -0
  400. package/dist/components/ui/meter.module.js +10 -0
  401. package/dist/components/ui/meter.module.js.map +1 -0
  402. package/dist/components/ui/meter_module.css +31 -0
  403. package/dist/components/ui/meter_module.css.map +1 -0
  404. package/dist/components/ui/navigation-menu.d.ts +242 -11
  405. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  406. package/dist/components/ui/navigation-menu.js +135 -49
  407. package/dist/components/ui/navigation-menu.js.map +1 -1
  408. package/dist/components/ui/navigation-menu.module.js +18 -0
  409. package/dist/components/ui/navigation-menu.module.js.map +1 -0
  410. package/dist/components/ui/navigation-menu_module.css +112 -0
  411. package/dist/components/ui/navigation-menu_module.css.map +1 -0
  412. package/dist/components/ui/number-field.d.ts +144 -0
  413. package/dist/components/ui/number-field.d.ts.map +1 -0
  414. package/dist/components/ui/number-field.js +111 -0
  415. package/dist/components/ui/number-field.js.map +1 -0
  416. package/dist/components/ui/number-field.module.js +15 -0
  417. package/dist/components/ui/number-field.module.js.map +1 -0
  418. package/dist/components/ui/number-field_module.css +125 -0
  419. package/dist/components/ui/number-field_module.css.map +1 -0
  420. package/dist/components/ui/pagination.d.ts +150 -24
  421. package/dist/components/ui/pagination.d.ts.map +1 -1
  422. package/dist/components/ui/pagination.js +41 -38
  423. package/dist/components/ui/pagination.js.map +1 -1
  424. package/dist/components/ui/pagination.module.js +14 -0
  425. package/dist/components/ui/pagination.module.js.map +1 -0
  426. package/dist/components/ui/pagination_module.css +66 -0
  427. package/dist/components/ui/pagination_module.css.map +1 -0
  428. package/dist/components/ui/popover.d.ts +133 -5
  429. package/dist/components/ui/popover.d.ts.map +1 -1
  430. package/dist/components/ui/popover.js +68 -14
  431. package/dist/components/ui/popover.js.map +1 -1
  432. package/dist/components/ui/popover.module.js +9 -0
  433. package/dist/components/ui/popover.module.js.map +1 -0
  434. package/dist/components/ui/popover_module.css +28 -0
  435. package/dist/components/ui/popover_module.css.map +1 -0
  436. package/dist/components/ui/progress.d.ts +34 -2
  437. package/dist/components/ui/progress.d.ts.map +1 -1
  438. package/dist/components/ui/progress.js +22 -14
  439. package/dist/components/ui/progress.js.map +1 -1
  440. package/dist/components/ui/progress.module.js +8 -0
  441. package/dist/components/ui/progress.module.js.map +1 -0
  442. package/dist/components/ui/progress_module.css +20 -0
  443. package/dist/components/ui/progress_module.css.map +1 -0
  444. package/dist/components/ui/radio-group.d.ts +44 -3
  445. package/dist/components/ui/radio-group.d.ts.map +1 -1
  446. package/dist/components/ui/radio-group.js +38 -16
  447. package/dist/components/ui/radio-group.js.map +1 -1
  448. package/dist/components/ui/radio-group.module.js +10 -0
  449. package/dist/components/ui/radio-group.module.js.map +1 -0
  450. package/dist/components/ui/radio-group_module.css +44 -0
  451. package/dist/components/ui/radio-group_module.css.map +1 -0
  452. package/dist/components/ui/resizable.d.ts +79 -6
  453. package/dist/components/ui/resizable.d.ts.map +1 -1
  454. package/dist/components/ui/resizable.js +23 -13
  455. package/dist/components/ui/resizable.js.map +1 -1
  456. package/dist/components/ui/resizable.module.js +10 -0
  457. package/dist/components/ui/resizable.module.js.map +1 -0
  458. package/dist/components/ui/resizable_module.css +70 -0
  459. package/dist/components/ui/resizable_module.css.map +1 -0
  460. package/dist/components/ui/ripple-button.d.ts +23 -2
  461. package/dist/components/ui/ripple-button.d.ts.map +1 -1
  462. package/dist/components/ui/ripple-button.js +26 -11
  463. package/dist/components/ui/ripple-button.js.map +1 -1
  464. package/dist/components/ui/ripple-button.module.js +9 -0
  465. package/dist/components/ui/ripple-button.module.js.map +1 -0
  466. package/dist/components/ui/ripple-button_module.css +38 -0
  467. package/dist/components/ui/ripple-button_module.css.map +1 -0
  468. package/dist/components/ui/scratcher.d.ts +25 -2
  469. package/dist/components/ui/scratcher.d.ts.map +1 -1
  470. package/dist/components/ui/scratcher.js +85 -87
  471. package/dist/components/ui/scratcher.js.map +1 -1
  472. package/dist/components/ui/scratcher.module.js +8 -0
  473. package/dist/components/ui/scratcher.module.js.map +1 -0
  474. package/dist/components/ui/scratcher_module.css +13 -0
  475. package/dist/components/ui/scratcher_module.css.map +1 -0
  476. package/dist/components/ui/scroll-area.d.ts +46 -3
  477. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  478. package/dist/components/ui/scroll-area.js +44 -19
  479. package/dist/components/ui/scroll-area.js.map +1 -1
  480. package/dist/components/ui/scroll-area.module.js +14 -0
  481. package/dist/components/ui/scroll-area.module.js.map +1 -0
  482. package/dist/components/ui/scroll-area_module.css +51 -0
  483. package/dist/components/ui/scroll-area_module.css.map +1 -0
  484. package/dist/components/ui/select.d.ts +269 -11
  485. package/dist/components/ui/select.d.ts.map +1 -1
  486. package/dist/components/ui/select.js +152 -67
  487. package/dist/components/ui/select.js.map +1 -1
  488. package/dist/components/ui/select.module.js +20 -0
  489. package/dist/components/ui/select.module.js.map +1 -0
  490. package/dist/components/ui/select_module.css +134 -0
  491. package/dist/components/ui/select_module.css.map +1 -0
  492. package/dist/components/ui/separator.d.ts +36 -2
  493. package/dist/components/ui/separator.d.ts.map +1 -1
  494. package/dist/components/ui/separator.js +20 -10
  495. package/dist/components/ui/separator.js.map +1 -1
  496. package/dist/components/ui/separator.module.js +9 -0
  497. package/dist/components/ui/separator.module.js.map +1 -0
  498. package/dist/components/ui/separator_module.css +17 -0
  499. package/dist/components/ui/separator_module.css.map +1 -0
  500. package/dist/components/ui/sheet.d.ts +297 -23
  501. package/dist/components/ui/sheet.d.ts.map +1 -1
  502. package/dist/components/ui/sheet.js +121 -63
  503. package/dist/components/ui/sheet.js.map +1 -1
  504. package/dist/components/ui/sheet.module.js +18 -0
  505. package/dist/components/ui/sheet.module.js.map +1 -0
  506. package/dist/components/ui/sheet_module.css +136 -0
  507. package/dist/components/ui/sheet_module.css.map +1 -0
  508. package/dist/components/ui/sidebar.d.ts +491 -23
  509. package/dist/components/ui/sidebar.d.ts.map +1 -1
  510. package/dist/components/ui/sidebar.js +214 -143
  511. package/dist/components/ui/sidebar.js.map +1 -1
  512. package/dist/components/ui/sidebar.module.js +50 -0
  513. package/dist/components/ui/sidebar.module.js.map +1 -0
  514. package/dist/components/ui/sidebar_module.css +569 -0
  515. package/dist/components/ui/sidebar_module.css.map +1 -0
  516. package/dist/components/ui/skeleton.d.ts +30 -1
  517. package/dist/components/ui/skeleton.d.ts.map +1 -1
  518. package/dist/components/ui/skeleton.js +7 -7
  519. package/dist/components/ui/skeleton.js.map +1 -1
  520. package/dist/components/ui/skeleton.module.js +8 -0
  521. package/dist/components/ui/skeleton.module.js.map +1 -0
  522. package/dist/components/ui/skeleton_module.css +18 -0
  523. package/dist/components/ui/skeleton_module.css.map +1 -0
  524. package/dist/components/ui/slider.d.ts +48 -2
  525. package/dist/components/ui/slider.d.ts.map +1 -1
  526. package/dist/components/ui/slider.js +44 -17
  527. package/dist/components/ui/slider.js.map +1 -1
  528. package/dist/components/ui/slider.module.js +11 -0
  529. package/dist/components/ui/slider.module.js.map +1 -0
  530. package/dist/components/ui/slider_module.css +55 -0
  531. package/dist/components/ui/slider_module.css.map +1 -0
  532. package/dist/components/ui/sonner.d.ts +137 -4
  533. package/dist/components/ui/sonner.d.ts.map +1 -1
  534. package/dist/components/ui/sonner.js +450 -18
  535. package/dist/components/ui/sonner.js.map +1 -1
  536. package/dist/components/ui/sonner.module.js +34 -0
  537. package/dist/components/ui/sonner.module.js.map +1 -0
  538. package/dist/components/ui/sonner_module.css +233 -0
  539. package/dist/components/ui/sonner_module.css.map +1 -0
  540. package/dist/components/ui/spinner.d.ts +20 -1
  541. package/dist/components/ui/spinner.d.ts.map +1 -1
  542. package/dist/components/ui/spinner.js +29 -11
  543. package/dist/components/ui/spinner.js.map +1 -1
  544. package/dist/components/ui/spinner.module.js +10 -0
  545. package/dist/components/ui/spinner.module.js.map +1 -0
  546. package/dist/components/ui/spinner_module.css +28 -0
  547. package/dist/components/ui/spinner_module.css.map +1 -0
  548. package/dist/components/ui/stepper.d.ts +48 -0
  549. package/dist/components/ui/stepper.d.ts.map +1 -0
  550. package/dist/components/ui/stepper.js +41 -0
  551. package/dist/components/ui/stepper.js.map +1 -0
  552. package/dist/components/ui/stepper.module.js +12 -0
  553. package/dist/components/ui/stepper.module.js.map +1 -0
  554. package/dist/components/ui/stepper_module.css +75 -0
  555. package/dist/components/ui/stepper_module.css.map +1 -0
  556. package/dist/components/ui/switch.d.ts +29 -2
  557. package/dist/components/ui/switch.d.ts.map +1 -1
  558. package/dist/components/ui/switch.js +21 -9
  559. package/dist/components/ui/switch.js.map +1 -1
  560. package/dist/components/ui/switch.module.js +8 -0
  561. package/dist/components/ui/switch.module.js.map +1 -0
  562. package/dist/components/ui/switch_module.css +45 -0
  563. package/dist/components/ui/switch_module.css.map +1 -0
  564. package/dist/components/ui/table-skeleton.js +34 -0
  565. package/dist/components/ui/table-skeleton.js.map +1 -0
  566. package/dist/components/ui/table-skeleton.module.js +11 -0
  567. package/dist/components/ui/table-skeleton.module.js.map +1 -0
  568. package/dist/components/ui/table-skeleton_module.css +32 -0
  569. package/dist/components/ui/table-skeleton_module.css.map +1 -0
  570. package/dist/components/ui/table.d.ts +170 -8
  571. package/dist/components/ui/table.d.ts.map +1 -1
  572. package/dist/components/ui/table.js +17 -17
  573. package/dist/components/ui/table.js.map +1 -1
  574. package/dist/components/ui/table.module.js +15 -0
  575. package/dist/components/ui/table.module.js.map +1 -0
  576. package/dist/components/ui/table_module.css +71 -0
  577. package/dist/components/ui/table_module.css.map +1 -0
  578. package/dist/components/ui/tabs.d.ts +114 -5
  579. package/dist/components/ui/tabs.d.ts.map +1 -1
  580. package/dist/components/ui/tabs.js +71 -20
  581. package/dist/components/ui/tabs.js.map +1 -1
  582. package/dist/components/ui/tabs.module.js +10 -0
  583. package/dist/components/ui/tabs.module.js.map +1 -0
  584. package/dist/components/ui/tabs_module.css +89 -0
  585. package/dist/components/ui/tabs_module.css.map +1 -0
  586. package/dist/components/ui/textarea.d.ts +24 -1
  587. package/dist/components/ui/textarea.d.ts.map +1 -1
  588. package/dist/components/ui/textarea.js +2 -2
  589. package/dist/components/ui/textarea.js.map +1 -1
  590. package/dist/components/ui/textarea.module.js +7 -0
  591. package/dist/components/ui/textarea.module.js.map +1 -0
  592. package/dist/components/ui/textarea_module.css +33 -0
  593. package/dist/components/ui/textarea_module.css.map +1 -0
  594. package/dist/components/ui/timeline.d.ts +111 -0
  595. package/dist/components/ui/timeline.d.ts.map +1 -0
  596. package/dist/components/ui/timeline.js +34 -0
  597. package/dist/components/ui/timeline.js.map +1 -0
  598. package/dist/components/ui/timeline.module.js +10 -0
  599. package/dist/components/ui/timeline.module.js.map +1 -0
  600. package/dist/components/ui/timeline_module.css +47 -0
  601. package/dist/components/ui/timeline_module.css.map +1 -0
  602. package/dist/components/ui/toggle-group.d.ts +81 -10
  603. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  604. package/dist/components/ui/toggle-group.js +32 -23
  605. package/dist/components/ui/toggle-group.js.map +1 -1
  606. package/dist/components/ui/toggle-group.module.js +7 -0
  607. package/dist/components/ui/toggle-group.module.js.map +1 -0
  608. package/dist/components/ui/toggle-group_module.css +8 -0
  609. package/dist/components/ui/toggle-group_module.css.map +1 -0
  610. package/dist/components/ui/toggle.d.ts +60 -11
  611. package/dist/components/ui/toggle.d.ts.map +1 -1
  612. package/dist/components/ui/toggle.js +29 -29
  613. package/dist/components/ui/toggle.js.map +1 -1
  614. package/dist/components/ui/toggle.module.js +12 -0
  615. package/dist/components/ui/toggle.module.js.map +1 -0
  616. package/dist/components/ui/toggle_module.css +62 -0
  617. package/dist/components/ui/toggle_module.css.map +1 -0
  618. package/dist/components/ui/toolbar.d.ts +127 -0
  619. package/dist/components/ui/toolbar.d.ts.map +1 -0
  620. package/dist/components/ui/toolbar.js +85 -0
  621. package/dist/components/ui/toolbar.js.map +1 -0
  622. package/dist/components/ui/toolbar.module.js +12 -0
  623. package/dist/components/ui/toolbar.module.js.map +1 -0
  624. package/dist/components/ui/toolbar_module.css +115 -0
  625. package/dist/components/ui/toolbar_module.css.map +1 -0
  626. package/dist/components/ui/tooltip.d.ts +119 -5
  627. package/dist/components/ui/tooltip.d.ts.map +1 -1
  628. package/dist/components/ui/tooltip.js +48 -13
  629. package/dist/components/ui/tooltip.js.map +1 -1
  630. package/dist/components/ui/tooltip.module.js +9 -0
  631. package/dist/components/ui/tooltip.module.js.map +1 -0
  632. package/dist/components/ui/tooltip_module.css +35 -0
  633. package/dist/components/ui/tooltip_module.css.map +1 -0
  634. package/dist/components/ui/typewriter.d.ts +48 -13
  635. package/dist/components/ui/typewriter.d.ts.map +1 -1
  636. package/dist/components/ui/typewriter.js +46 -49
  637. package/dist/components/ui/typewriter.js.map +1 -1
  638. package/dist/components/ui/typewriter.module.js +16 -0
  639. package/dist/components/ui/typewriter.module.js.map +1 -0
  640. package/dist/components/ui/typewriter_module.css +102 -0
  641. package/dist/components/ui/typewriter_module.css.map +1 -0
  642. package/dist/components/ui/visually-hidden.d.ts +38 -0
  643. package/dist/components/ui/visually-hidden.d.ts.map +1 -0
  644. package/dist/components/ui/visually-hidden.js +13 -0
  645. package/dist/components/ui/visually-hidden.js.map +1 -0
  646. package/dist/components/ui/visually-hidden.module.js +7 -0
  647. package/dist/components/ui/visually-hidden.module.js.map +1 -0
  648. package/dist/components/ui/visually-hidden_module.css +14 -0
  649. package/dist/components/ui/visually-hidden_module.css.map +1 -0
  650. package/dist/hooks/useAnnounce.js +46 -0
  651. package/dist/hooks/useAnnounce.js.map +1 -0
  652. package/dist/hooks/useBreakpoint.d.ts +17 -0
  653. package/dist/hooks/useBreakpoint.d.ts.map +1 -0
  654. package/dist/hooks/useBreakpoint.js +16 -0
  655. package/dist/hooks/useBreakpoint.js.map +1 -0
  656. package/dist/hooks/useColorScheme.d.ts +14 -0
  657. package/dist/hooks/useColorScheme.d.ts.map +1 -0
  658. package/dist/hooks/useColorScheme.js +9 -0
  659. package/dist/hooks/useColorScheme.js.map +1 -0
  660. package/dist/hooks/useFocusManager.js +51 -0
  661. package/dist/hooks/useFocusManager.js.map +1 -0
  662. package/dist/hooks/useFocusVisible.d.ts +50 -0
  663. package/dist/hooks/useFocusVisible.d.ts.map +1 -0
  664. package/dist/hooks/useFocusVisible.js +35 -0
  665. package/dist/hooks/useFocusVisible.js.map +1 -0
  666. package/dist/hooks/useIsMobile.d.ts +5 -11
  667. package/dist/hooks/useIsMobile.d.ts.map +1 -1
  668. package/dist/hooks/useIsMobile.js +2 -13
  669. package/dist/hooks/useIsMobile.js.map +1 -1
  670. package/dist/hooks/useMediaQuery.d.ts +14 -0
  671. package/dist/hooks/useMediaQuery.d.ts.map +1 -0
  672. package/dist/hooks/useMediaQuery.js +20 -0
  673. package/dist/hooks/useMediaQuery.js.map +1 -0
  674. package/dist/hooks/usePrefersContrast.d.ts +19 -0
  675. package/dist/hooks/usePrefersContrast.d.ts.map +1 -0
  676. package/dist/hooks/usePrefersContrast.js +8 -0
  677. package/dist/hooks/usePrefersContrast.js.map +1 -0
  678. package/dist/hooks/useReducedMotion.d.ts +19 -0
  679. package/dist/hooks/useReducedMotion.d.ts.map +1 -0
  680. package/dist/hooks/useReducedMotion.js +2 -0
  681. package/dist/index.css +104 -5363
  682. package/dist/index.css.map +1 -1
  683. package/dist/index.d.ts +38 -8
  684. package/dist/index.d.ts.map +1 -1
  685. package/dist/index.js +89 -72
  686. package/dist/lib/utilities.d.ts +5 -4
  687. package/dist/lib/utilities.d.ts.map +1 -1
  688. package/dist/lib/utilities.js +1 -2
  689. package/dist/lib/utilities.js.map +1 -1
  690. package/dist/motion/Collapse.js +19 -0
  691. package/dist/motion/Collapse.js.map +1 -0
  692. package/dist/motion/Collapse.module.js +8 -0
  693. package/dist/motion/Collapse.module.js.map +1 -0
  694. package/dist/motion/Collapse_module.css +25 -0
  695. package/dist/motion/Collapse_module.css.map +1 -0
  696. package/dist/motion/Presence.js +14 -0
  697. package/dist/motion/Presence.js.map +1 -0
  698. package/dist/motion/index.js +5 -0
  699. package/dist/motion/presets.js +117 -0
  700. package/dist/motion/presets.js.map +1 -0
  701. package/dist/motion/tokens.js +41 -0
  702. package/dist/motion/tokens.js.map +1 -0
  703. package/package.json +154 -67
  704. package/src/components/ui/accordion.module.css +70 -0
  705. package/src/components/ui/accordion.tsx +278 -44
  706. package/src/components/ui/alert-dialog.module.css +87 -0
  707. package/src/components/ui/alert-dialog.tsx +474 -99
  708. package/src/components/ui/alert.module.css +57 -0
  709. package/src/components/ui/alert.tsx +136 -43
  710. package/src/components/ui/aspect-ratio.module.css +7 -0
  711. package/src/components/ui/aspect-ratio.tsx +38 -3
  712. package/src/components/ui/async-boundary.tsx +56 -0
  713. package/src/components/ui/avatar.module.css +31 -0
  714. package/src/components/ui/avatar.tsx +146 -36
  715. package/src/components/ui/background-beams.module.css +20 -0
  716. package/src/components/ui/background-beams.tsx +173 -134
  717. package/src/components/ui/badge.module.css +60 -0
  718. package/src/components/ui/badge.tsx +100 -32
  719. package/src/components/ui/breadcrumb.module.css +87 -0
  720. package/src/components/ui/breadcrumb.tsx +256 -74
  721. package/src/components/ui/bubble-background.module.css +97 -0
  722. package/src/components/ui/bubble-background.tsx +92 -52
  723. package/src/components/ui/button-group.module.css +76 -0
  724. package/src/components/ui/button-group.tsx +135 -46
  725. package/src/components/ui/button.module.css +138 -0
  726. package/src/components/ui/button.tsx +159 -41
  727. package/src/components/ui/calendar.module.css +250 -0
  728. package/src/components/ui/calendar.tsx +133 -103
  729. package/src/components/ui/card-skeleton.module.css +50 -0
  730. package/src/components/ui/card-skeleton.tsx +69 -0
  731. package/src/components/ui/card.module.css +41 -0
  732. package/src/components/ui/card.tsx +175 -22
  733. package/src/components/ui/carousel.module.css +80 -0
  734. package/src/components/ui/carousel.tsx +184 -43
  735. package/src/components/ui/chart.module.css +164 -0
  736. package/src/components/ui/chart.tsx +444 -102
  737. package/src/components/ui/checkbox-group.module.css +8 -0
  738. package/src/components/ui/checkbox-group.tsx +54 -0
  739. package/src/components/ui/checkbox.module.css +43 -0
  740. package/src/components/ui/checkbox.tsx +73 -19
  741. package/src/components/ui/collapsible.module.css +24 -0
  742. package/src/components/ui/collapsible.tsx +139 -3
  743. package/src/components/ui/command.module.css +193 -0
  744. package/src/components/ui/command.tsx +877 -114
  745. package/src/components/ui/context-menu.module.css +113 -0
  746. package/src/components/ui/context-menu.tsx +616 -157
  747. package/src/components/ui/copy-button.module.css +34 -0
  748. package/src/components/ui/copy-button.tsx +116 -0
  749. package/src/components/ui/counting-number.module.css +4 -0
  750. package/src/components/ui/counting-number.tsx +69 -31
  751. package/src/components/ui/dialog.module.css +113 -0
  752. package/src/components/ui/dialog.tsx +427 -81
  753. package/src/components/ui/dot-background.module.css +12 -0
  754. package/src/components/ui/dot-background.tsx +134 -126
  755. package/src/components/ui/drawer.module.css +85 -0
  756. package/src/components/ui/drawer.tsx +408 -80
  757. package/src/components/ui/dropdown-menu.module.css +113 -0
  758. package/src/components/ui/dropdown-menu.tsx +616 -159
  759. package/src/components/ui/dropdrawer.module.css +322 -0
  760. package/src/components/ui/dropdrawer.tsx +850 -398
  761. package/src/components/ui/empty.module.css +84 -0
  762. package/src/components/ui/empty.tsx +176 -52
  763. package/src/components/ui/error-boundary.module.css +36 -0
  764. package/src/components/ui/error-boundary.tsx +127 -0
  765. package/src/components/ui/field.module.css +179 -0
  766. package/src/components/ui/field.tsx +345 -139
  767. package/src/components/ui/fireworks-background.module.css +13 -0
  768. package/src/components/ui/fireworks-background.tsx +89 -51
  769. package/src/components/ui/flip-button.module.css +44 -0
  770. package/src/components/ui/flip-button.tsx +59 -28
  771. package/src/components/ui/focus-scope.module.css +3 -0
  772. package/src/components/ui/focus-scope.tsx +160 -0
  773. package/src/components/ui/form-skeleton.module.css +28 -0
  774. package/src/components/ui/form-skeleton.tsx +62 -0
  775. package/src/components/ui/form.module.css +20 -0
  776. package/src/components/ui/form.tsx +244 -33
  777. package/src/components/ui/gradient-background.module.css +6 -0
  778. package/src/components/ui/gradient-background.tsx +27 -5
  779. package/src/components/ui/gradient-text.module.css +23 -0
  780. package/src/components/ui/gradient-text.tsx +36 -9
  781. package/src/components/ui/highlight-text.module.css +14 -0
  782. package/src/components/ui/highlight-text.tsx +37 -15
  783. package/src/components/ui/hole-background.module.css +84 -0
  784. package/src/components/ui/hole-background.tsx +290 -162
  785. package/src/components/ui/hover-card.module.css +21 -0
  786. package/src/components/ui/hover-card.tsx +142 -21
  787. package/src/components/ui/input-group.module.css +148 -0
  788. package/src/components/ui/input-group.tsx +222 -98
  789. package/src/components/ui/input-otp.module.css +92 -0
  790. package/src/components/ui/input-otp.tsx +159 -33
  791. package/src/components/ui/input.module.css +37 -0
  792. package/src/components/ui/input.tsx +56 -14
  793. package/src/components/ui/item.module.css +143 -0
  794. package/src/components/ui/item.tsx +331 -104
  795. package/src/components/ui/kbd.module.css +31 -0
  796. package/src/components/ui/kbd.tsx +60 -17
  797. package/src/components/ui/label.module.css +13 -0
  798. package/src/components/ui/label.tsx +38 -14
  799. package/src/components/ui/list-skeleton.module.css +35 -0
  800. package/src/components/ui/list-skeleton.tsx +70 -0
  801. package/src/components/ui/loading-overlay.module.css +19 -0
  802. package/src/components/ui/loading-overlay.tsx +72 -0
  803. package/src/components/ui/menubar.module.css +144 -0
  804. package/src/components/ui/menubar.tsx +605 -192
  805. package/src/components/ui/meter.module.css +32 -0
  806. package/src/components/ui/meter.tsx +170 -0
  807. package/src/components/ui/navigation-menu.module.css +110 -0
  808. package/src/components/ui/navigation-menu.tsx +375 -101
  809. package/src/components/ui/number-field.module.css +126 -0
  810. package/src/components/ui/number-field.tsx +254 -0
  811. package/src/components/ui/pagination.module.css +64 -0
  812. package/src/components/ui/pagination.tsx +250 -72
  813. package/src/components/ui/popover.module.css +26 -0
  814. package/src/components/ui/popover.tsx +207 -25
  815. package/src/components/ui/progress.module.css +15 -0
  816. package/src/components/ui/progress.tsx +53 -16
  817. package/src/components/ui/radio-group.module.css +41 -0
  818. package/src/components/ui/radio-group.tsx +91 -34
  819. package/src/components/ui/resizable.module.css +67 -0
  820. package/src/components/ui/resizable.tsx +106 -26
  821. package/src/components/ui/ripple-button.module.css +35 -0
  822. package/src/components/ui/ripple-button.tsx +55 -21
  823. package/src/components/ui/scratcher.module.css +9 -0
  824. package/src/components/ui/scratcher.tsx +129 -99
  825. package/src/components/ui/scroll-area.module.css +47 -0
  826. package/src/components/ui/scroll-area.tsx +96 -34
  827. package/src/components/ui/select.module.css +131 -0
  828. package/src/components/ui/select.tsx +435 -124
  829. package/src/components/ui/separator.module.css +14 -0
  830. package/src/components/ui/separator.tsx +59 -18
  831. package/src/components/ui/sheet.module.css +138 -0
  832. package/src/components/ui/sheet.tsx +424 -95
  833. package/src/components/ui/sidebar.module.css +594 -0
  834. package/src/components/ui/sidebar.tsx +899 -425
  835. package/src/components/ui/skeleton.module.css +14 -0
  836. package/src/components/ui/skeleton.tsx +39 -9
  837. package/src/components/ui/slider.module.css +48 -0
  838. package/src/components/ui/slider.tsx +89 -16
  839. package/src/components/ui/sonner.module.css +246 -0
  840. package/src/components/ui/sonner.tsx +769 -25
  841. package/src/components/ui/spinner.module.css +25 -0
  842. package/src/components/ui/spinner.tsx +51 -12
  843. package/src/components/ui/stepper.module.css +72 -0
  844. package/src/components/ui/stepper.tsx +95 -0
  845. package/src/components/ui/switch.module.css +42 -0
  846. package/src/components/ui/switch.tsx +53 -20
  847. package/src/components/ui/table-skeleton.module.css +29 -0
  848. package/src/components/ui/table-skeleton.tsx +79 -0
  849. package/src/components/ui/table.module.css +66 -0
  850. package/src/components/ui/table.tsx +235 -61
  851. package/src/components/ui/tabs.module.css +89 -0
  852. package/src/components/ui/tabs.tsx +192 -45
  853. package/src/components/ui/textarea.module.css +30 -0
  854. package/src/components/ui/textarea.tsx +30 -10
  855. package/src/components/ui/timeline.module.css +43 -0
  856. package/src/components/ui/timeline.tsx +153 -0
  857. package/src/components/ui/toggle-group.module.css +5 -0
  858. package/src/components/ui/toggle-group.tsx +116 -35
  859. package/src/components/ui/toggle.module.css +57 -0
  860. package/src/components/ui/toggle.tsx +89 -33
  861. package/src/components/ui/toolbar.module.css +112 -0
  862. package/src/components/ui/toolbar.tsx +210 -0
  863. package/src/components/ui/tooltip.module.css +39 -0
  864. package/src/components/ui/tooltip.tsx +181 -24
  865. package/src/components/ui/typewriter.module.css +101 -0
  866. package/src/components/ui/typewriter.tsx +130 -128
  867. package/src/components/ui/visually-hidden.module.css +11 -0
  868. package/src/components/ui/visually-hidden.tsx +50 -0
  869. package/src/css-modules.d.ts +9 -0
  870. package/src/hooks/useAnnounce.tsx +73 -0
  871. package/src/hooks/useBreakpoint.tsx +41 -0
  872. package/src/hooks/useColorScheme.tsx +23 -0
  873. package/src/hooks/useFocusManager.tsx +89 -0
  874. package/src/hooks/useFocusVisible.tsx +88 -0
  875. package/src/hooks/useIsMobile.tsx +7 -28
  876. package/src/hooks/useMediaQuery.tsx +34 -0
  877. package/src/hooks/usePrefersContrast.tsx +24 -0
  878. package/src/hooks/useReducedMotion.tsx +20 -0
  879. package/src/index.css +127 -65
  880. package/src/index.ts +196 -18
  881. package/src/lib/utilities.ts +7 -6
  882. package/src/motion/Collapse.module.css +22 -0
  883. package/src/motion/Collapse.tsx +52 -0
  884. package/src/motion/Presence.tsx +44 -0
  885. package/src/motion/index.ts +13 -0
  886. package/src/motion/presets.ts +77 -0
  887. package/src/motion/tokens.ts +37 -0
  888. package/src/hooks/useIsMobile.test.tsx +0 -96
  889. package/src/hooks/useWindowSize.test.tsx +0 -57
  890. package/src/index.test.ts +0 -537
  891. package/src/lib/color-conversion-utilities.test.ts +0 -225
  892. package/src/lib/utilities.test.ts +0 -37
@@ -1 +1 @@
1
- {"version":3,"file":"components/ui/dropdrawer.js","sources":["../../../src/components/ui/dropdrawer.tsx"],"sourcesContent":["\"use client\";\r\n\r\n/* eslint-disable */\r\n\r\nimport {ChevronLeftIcon, ChevronRightIcon} from \"lucide-react\";\r\nimport {AnimatePresence, motion, Transition} from \"motion/react\";\r\nimport * as React from \"react\";\r\n\r\nimport {Drawer, DrawerClose, DrawerContent, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger} from \"@/components/ui/drawer\";\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuTrigger,\r\n} from \"@/components/ui/dropdown-menu\";\r\nimport {useIsMobile} from \"@/hooks/useIsMobile\";\r\nimport {cn} from \"@/lib/utilities\";\r\n\r\nconst DropDrawerContext = React.createContext<{isMobile: boolean}>({\r\n isMobile: false,\r\n});\r\n\r\nconst useDropDrawerContext = () => {\r\n const context = React.useContext(DropDrawerContext);\r\n if (!context) {\r\n throw new Error(\"DropDrawer components cannot be rendered outside the Context\");\r\n }\r\n return context;\r\n};\r\n\r\nfunction DropDrawer({children, ...props}: React.ComponentProps<typeof Drawer> | React.ComponentProps<typeof DropdownMenu>) {\r\n const isMobile = useIsMobile();\r\n const DropdownComponent = isMobile ? Drawer : DropdownMenu;\r\n\r\n return (\r\n <DropDrawerContext.Provider value={{isMobile}}>\r\n <DropdownComponent\r\n data-slot='drop-drawer'\r\n {...(isMobile && {autoFocus: true})}\r\n {...props}>\r\n {children}\r\n </DropdownComponent>\r\n </DropDrawerContext.Provider>\r\n );\r\n}\r\n\r\nfunction DropDrawerTrigger({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DrawerTrigger> | React.ComponentProps<typeof DropdownMenuTrigger>) {\r\n const {isMobile} = useDropDrawerContext();\r\n const TriggerComponent = isMobile ? DrawerTrigger : DropdownMenuTrigger;\r\n\r\n return (\r\n <TriggerComponent\r\n data-slot='drop-drawer-trigger'\r\n className={className}\r\n {...props}>\r\n {children}\r\n </TriggerComponent>\r\n );\r\n}\r\n\r\nfunction DropDrawerContent({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DrawerContent> | React.ComponentProps<typeof DropdownMenuContent>) {\r\n const {isMobile} = useDropDrawerContext();\r\n const [activeSubmenu, setActiveSubmenu] = React.useState<string | null>(null);\r\n const [submenuTitle, setSubmenuTitle] = React.useState<string | null>(null);\r\n const [submenuStack, setSubmenuStack] = React.useState<{id: string; title: string}[]>([]);\r\n // Add animation direction state\r\n const [animationDirection, setAnimationDirection] = React.useState<\"forward\" | \"backward\">(\"forward\");\r\n\r\n // Create a ref to store submenu content by ID\r\n const submenuContentRef = React.useRef<Map<string, React.ReactNode[]>>(new Map());\r\n\r\n // Function to navigate to a submenu\r\n const navigateToSubmenu = React.useCallback((id: string, title: string) => {\r\n // Set animation direction to forward when navigating to a submenu\r\n setAnimationDirection(\"forward\");\r\n setActiveSubmenu(id);\r\n setSubmenuTitle(title);\r\n setSubmenuStack((prev) => [...prev, {id, title}]);\r\n }, []);\r\n\r\n // Function to go back to previous menu\r\n const goBack = React.useCallback(() => {\r\n // Set animation direction to backward when going back\r\n setAnimationDirection(\"backward\");\r\n\r\n if (submenuStack.length <= 1) {\r\n // If we're at the first level, go back to main menu\r\n setActiveSubmenu(null);\r\n setSubmenuTitle(null);\r\n setSubmenuStack([]);\r\n } else {\r\n // Go back to previous submenu\r\n const newStack = [...submenuStack];\r\n newStack.pop(); // Remove current\r\n const previous = newStack[newStack.length - 1];\r\n setActiveSubmenu(previous.id);\r\n setSubmenuTitle(previous.title);\r\n setSubmenuStack(newStack);\r\n }\r\n }, [submenuStack]);\r\n\r\n // Function to register submenu content\r\n const registerSubmenuContent = React.useCallback((id: string, content: React.ReactNode[]) => {\r\n submenuContentRef.current.set(id, content);\r\n }, []);\r\n\r\n // Function to extract submenu content\r\n const extractSubmenuContent = React.useCallback((elements: React.ReactNode, targetId: string): React.ReactNode[] => {\r\n const result: React.ReactNode[] = [];\r\n\r\n // Recursive function to search through all children\r\n const findSubmenuContent = (node: React.ReactNode) => {\r\n // Skip if not a valid element\r\n if (!React.isValidElement(node)) return;\r\n\r\n const element = node as React.ReactElement;\r\n // Use a more specific type to avoid 'any'\r\n const props = element.props as {\r\n id?: string;\r\n \"data-submenu-id\"?: string;\r\n children?: React.ReactNode;\r\n };\r\n\r\n // Check if this is a DropDrawerSub\r\n if (element.type === DropDrawerSub) {\r\n // Get all possible ID values\r\n const elementId = props.id;\r\n const dataSubmenuId = props[\"data-submenu-id\"];\r\n\r\n // If this is the submenu we're looking for\r\n if (elementId === targetId || dataSubmenuId === targetId) {\r\n // Find the SubContent within this Sub\r\n if (props.children) {\r\n React.Children.forEach(props.children, (child) => {\r\n if (React.isValidElement(child) && child.type === DropDrawerSubContent) {\r\n // Add all children of the SubContent to the result\r\n const subContentProps = child.props as {\r\n children?: React.ReactNode;\r\n };\r\n if (subContentProps.children) {\r\n React.Children.forEach(subContentProps.children, (contentChild) => {\r\n result.push(contentChild);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n return; // Found what we needed, no need to search deeper\r\n }\r\n }\r\n\r\n // If this element has children, search through them\r\n if (props.children) {\r\n if (Array.isArray(props.children)) {\r\n props.children.forEach((child: React.ReactNode) => findSubmenuContent(child));\r\n } else {\r\n findSubmenuContent(props.children);\r\n }\r\n }\r\n };\r\n\r\n // Start the search from the root elements\r\n if (Array.isArray(elements)) {\r\n elements.forEach((child) => findSubmenuContent(child));\r\n } else {\r\n findSubmenuContent(elements);\r\n }\r\n\r\n return result;\r\n }, []);\r\n\r\n // Get submenu content (either from cache or extract it)\r\n const getSubmenuContent = React.useCallback(\r\n (id: string) => {\r\n // Check if we have the content in our ref\r\n const cachedContent = submenuContentRef.current.get(id || \"\");\r\n if (cachedContent && cachedContent.length > 0) {\r\n return cachedContent;\r\n }\r\n\r\n // If not in cache, extract it\r\n const submenuContent = extractSubmenuContent(children, id);\r\n\r\n if (submenuContent.length === 0) {\r\n return [];\r\n }\r\n\r\n // Store in cache for future use\r\n if (id) {\r\n submenuContentRef.current.set(id, submenuContent);\r\n }\r\n\r\n return submenuContent;\r\n },\r\n [children, extractSubmenuContent],\r\n );\r\n\r\n // Animation variants for Framer Motion\r\n const variants = {\r\n enter: (direction: \"forward\" | \"backward\") => ({\r\n x: direction === \"forward\" ? \"100%\" : \"-100%\",\r\n opacity: 0,\r\n }),\r\n center: {\r\n x: 0,\r\n opacity: 1,\r\n },\r\n exit: (direction: \"forward\" | \"backward\") => ({\r\n x: direction === \"forward\" ? \"-100%\" : \"100%\",\r\n opacity: 0,\r\n }),\r\n };\r\n\r\n // Animation transition\r\n const transition = {\r\n duration: 0.3,\r\n ease: [0.25, 0.1, 0.25, 1.0], // cubic-bezier easing\r\n } satisfies Transition;\r\n\r\n if (isMobile) {\r\n return (\r\n <SubmenuContext.Provider\r\n value={{\r\n activeSubmenu,\r\n setActiveSubmenu: (id) => {\r\n if (id === null) {\r\n setActiveSubmenu(null);\r\n setSubmenuTitle(null);\r\n setSubmenuStack([]);\r\n }\r\n },\r\n submenuTitle,\r\n setSubmenuTitle,\r\n navigateToSubmenu,\r\n registerSubmenuContent,\r\n }}>\r\n <DrawerContent\r\n data-slot='drop-drawer-content'\r\n className={cn(\"max-h-[90vh]\", className)}\r\n {...props}>\r\n {activeSubmenu ? (\r\n <>\r\n <DrawerHeader>\r\n <div className='flex items-center gap-2'>\r\n <button\r\n onClick={goBack}\r\n className='rounded-full p-1 hover:bg-neutral-100/50 dark:hover:bg-neutral-800/50'>\r\n <ChevronLeftIcon className='h-5 w-5' />\r\n </button>\r\n <DrawerTitle>{submenuTitle || \"Submenu\"}</DrawerTitle>\r\n </div>\r\n </DrawerHeader>\r\n <div className='relative max-h-[70vh] flex-1 overflow-y-auto'>\r\n {/* Use AnimatePresence to handle exit animations */}\r\n <AnimatePresence\r\n initial={false}\r\n mode='wait'\r\n custom={animationDirection}>\r\n <motion.div\r\n key={activeSubmenu || \"main\"}\r\n custom={animationDirection}\r\n variants={variants}\r\n initial='enter'\r\n animate='center'\r\n exit='exit'\r\n transition={transition}\r\n className='h-full w-full space-y-1.5 pb-6'>\r\n {activeSubmenu ? getSubmenuContent(activeSubmenu) : children}\r\n </motion.div>\r\n </AnimatePresence>\r\n </div>\r\n </>\r\n ) : (\r\n <>\r\n <DrawerHeader className='sr-only'>\r\n <DrawerTitle>Menu</DrawerTitle>\r\n </DrawerHeader>\r\n <div className='max-h-[70vh] overflow-y-auto'>\r\n <AnimatePresence\r\n initial={false}\r\n mode='wait'\r\n custom={animationDirection}>\r\n <motion.div\r\n key='main-menu'\r\n custom={animationDirection}\r\n variants={variants}\r\n initial='enter'\r\n animate='center'\r\n exit='exit'\r\n transition={transition}\r\n className='w-full space-y-1.5 pb-6'>\r\n {children}\r\n </motion.div>\r\n </AnimatePresence>\r\n </div>\r\n </>\r\n )}\r\n </DrawerContent>\r\n </SubmenuContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <SubmenuContext.Provider\r\n value={{\r\n activeSubmenu,\r\n setActiveSubmenu,\r\n submenuTitle,\r\n setSubmenuTitle,\r\n registerSubmenuContent,\r\n }}>\r\n <DropdownMenuContent\r\n data-slot='drop-drawer-content'\r\n align='end'\r\n sideOffset={4}\r\n className={cn(\"max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[220px] overflow-y-auto\", className)}\r\n {...props}>\r\n {children}\r\n </DropdownMenuContent>\r\n </SubmenuContext.Provider>\r\n );\r\n}\r\n\r\nfunction DropDrawerItem({\r\n className,\r\n children,\r\n onSelect,\r\n onClick,\r\n icon,\r\n inset,\r\n disabled,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuItem> & {\r\n icon?: React.ReactNode;\r\n}) {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n // Define hooks outside of conditionals to follow React rules\r\n // Check if this item is inside a group by looking at parent elements\r\n const isInGroup = React.useCallback((element: HTMLElement | null): boolean => {\r\n if (!element) return false;\r\n\r\n // Check if any parent has a data-drop-drawer-group attribute\r\n let parent = element.parentElement;\r\n while (parent) {\r\n if (parent.hasAttribute(\"data-drop-drawer-group\")) {\r\n return true;\r\n }\r\n parent = parent.parentElement;\r\n }\r\n return false;\r\n }, []);\r\n\r\n // Create a ref to check if the item is in a group\r\n const itemRef = React.useRef<HTMLDivElement>(null);\r\n const [isInsideGroup, setIsInsideGroup] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n // Only run this effect in mobile mode\r\n if (!isMobile) return;\r\n\r\n // Use a short timeout to ensure the DOM is fully rendered\r\n const timer = setTimeout(() => {\r\n if (itemRef.current) {\r\n setIsInsideGroup(isInGroup(itemRef.current));\r\n }\r\n }, 0);\r\n\r\n return () => clearTimeout(timer);\r\n }, [isInGroup, isMobile]);\r\n\r\n if (isMobile) {\r\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (disabled) return;\r\n if (onClick) onClick(e);\r\n if (onSelect) onSelect(e as unknown as Event);\r\n };\r\n\r\n // Only wrap in DrawerClose if it's not a submenu item\r\n const content = (\r\n <div\r\n ref={itemRef}\r\n data-slot='drop-drawer-item'\r\n data-inset={inset}\r\n data-disabled={disabled}\r\n className={cn(\r\n \"flex cursor-pointer items-center justify-between px-4 py-4\",\r\n // Only apply margin, background and rounded corners if not in a group\r\n !isInsideGroup && \"mx-2 my-1.5 rounded-md bg-neutral-100 dark:bg-neutral-100 dark:bg-neutral-800 dark:dark:bg-neutral-800\",\r\n // For items in a group, don't add background but add more padding\r\n isInsideGroup && \"bg-transparent py-4\",\r\n inset && \"pl-8\",\r\n disabled && \"pointer-events-none opacity-50\",\r\n className,\r\n )}\r\n onClick={handleClick}\r\n aria-disabled={disabled}\r\n {...props}>\r\n <div className='flex items-center gap-2'>{children}</div>\r\n {icon && <div className='flex-shrink-0'>{icon}</div>}\r\n </div>\r\n );\r\n\r\n // Check if this is inside a submenu\r\n const isInSubmenu =\r\n (props as Record<string, unknown>)[\"data-parent-submenu-id\"] || (props as Record<string, unknown>)[\"data-parent-submenu\"];\r\n\r\n if (isInSubmenu) {\r\n return content;\r\n }\r\n\r\n return <DrawerClose asChild>{content}</DrawerClose>;\r\n }\r\n\r\n return (\r\n <DropdownMenuItem\r\n data-slot='drop-drawer-item'\r\n data-inset={inset}\r\n className={className}\r\n onSelect={onSelect}\r\n onClick={onClick as React.MouseEventHandler<HTMLDivElement>}\r\n inset={inset}\r\n disabled={disabled}\r\n {...props}>\r\n <div className='flex w-full items-center justify-between'>\r\n <div>{children}</div>\r\n {icon && <div>{icon}</div>}\r\n </div>\r\n </DropdownMenuItem>\r\n );\r\n}\r\n\r\nfunction DropDrawerSeparator({className, ...props}: React.ComponentProps<typeof DropdownMenuSeparator>) {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n // For mobile, render a simple divider\r\n if (isMobile) {\r\n return null;\r\n }\r\n\r\n // For desktop, use the standard dropdown separator\r\n return (\r\n <DropdownMenuSeparator\r\n data-slot='drop-drawer-separator'\r\n className={className}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction DropDrawerLabel({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuLabel> | React.ComponentProps<typeof DrawerTitle>) {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n if (isMobile) {\r\n return (\r\n <DrawerHeader className='p-0'>\r\n <DrawerTitle\r\n data-slot='drop-drawer-label'\r\n className={cn(\"px-4 py-2 text-sm font-medium text-neutral-500 dark:text-neutral-400\", className)}\r\n {...props}>\r\n {children}\r\n </DrawerTitle>\r\n </DrawerHeader>\r\n );\r\n }\r\n\r\n return (\r\n <DropdownMenuLabel\r\n data-slot='drop-drawer-label'\r\n className={className}\r\n {...props}>\r\n {children}\r\n </DropdownMenuLabel>\r\n );\r\n}\r\n\r\nfunction DropDrawerFooter({className, children, ...props}: React.ComponentProps<typeof DrawerFooter> | React.ComponentProps<\"div\">) {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n if (isMobile) {\r\n return (\r\n <DrawerFooter\r\n data-slot='drop-drawer-footer'\r\n className={cn(\"p-4\", className)}\r\n {...props}>\r\n {children}\r\n </DrawerFooter>\r\n );\r\n }\r\n\r\n // No direct equivalent in DropdownMenu, so we'll just render a div\r\n return (\r\n <div\r\n data-slot='drop-drawer-footer'\r\n className={cn(\"p-2\", className)}\r\n {...props}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nfunction DropDrawerGroup({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n children: React.ReactNode;\r\n}) {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n // Add separators between children on mobile\r\n const childrenWithSeparators = React.useMemo(() => {\r\n if (!isMobile) return children;\r\n\r\n const childArray = React.Children.toArray(children);\r\n\r\n // Filter out any existing separators\r\n const filteredChildren = childArray.filter((child) => React.isValidElement(child) && child.type !== DropDrawerSeparator);\r\n\r\n // Add separators between items\r\n return filteredChildren.flatMap((child, index) => {\r\n if (index === filteredChildren.length - 1) return [child];\r\n return [\r\n child,\r\n <div\r\n key={`separator-${index}`}\r\n className='h-px bg-neutral-200 dark:bg-neutral-800'\r\n aria-hidden='true'\r\n />,\r\n ];\r\n });\r\n }, [children, isMobile]);\r\n\r\n if (isMobile) {\r\n return (\r\n <div\r\n data-drop-drawer-group\r\n data-slot='drop-drawer-group'\r\n role='group'\r\n className={cn(\r\n \"mx-2 my-3 overflow-hidden rounded-xl bg-neutral-100 dark:bg-neutral-100 dark:bg-neutral-800 dark:dark:bg-neutral-800\",\r\n className,\r\n )}\r\n {...props}>\r\n {childrenWithSeparators}\r\n </div>\r\n );\r\n }\r\n\r\n // On desktop, use a div with proper role and attributes\r\n return (\r\n <div\r\n data-drop-drawer-group\r\n data-slot='drop-drawer-group'\r\n role='group'\r\n className={className}\r\n {...props}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\n// Context for managing submenu state on mobile\r\ninterface SubmenuContextType {\r\n activeSubmenu: string | null;\r\n setActiveSubmenu: (id: string | null) => void;\r\n submenuTitle: string | null;\r\n setSubmenuTitle: (title: string | null) => void;\r\n navigateToSubmenu?: (id: string, title: string) => void;\r\n registerSubmenuContent?: (id: string, content: React.ReactNode[]) => void;\r\n}\r\n\r\nconst SubmenuContext = React.createContext<SubmenuContextType>({\r\n activeSubmenu: null,\r\n setActiveSubmenu: () => {},\r\n submenuTitle: null,\r\n setSubmenuTitle: () => {},\r\n navigateToSubmenu: undefined,\r\n registerSubmenuContent: undefined,\r\n});\r\n\r\n// Submenu components\r\n// Counter for generating simple numeric IDs\r\nlet submenuIdCounter = 0;\r\n\r\nfunction DropDrawerSub({\r\n children,\r\n id,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuSub> & {\r\n id?: string;\r\n}) {\r\n const {isMobile} = useDropDrawerContext();\r\n const {registerSubmenuContent} = React.useContext(SubmenuContext);\r\n\r\n // Generate a simple numeric ID instead of using React.useId()\r\n const [generatedId] = React.useState(() => `submenu-${submenuIdCounter++}`);\r\n const submenuId = id || generatedId;\r\n\r\n // Extract submenu content to register with parent\r\n React.useEffect(() => {\r\n if (!registerSubmenuContent) return;\r\n\r\n // Find the SubContent within this Sub\r\n const contentItems: React.ReactNode[] = [];\r\n React.Children.forEach(children, (child) => {\r\n if (React.isValidElement(child) && child.type === DropDrawerSubContent) {\r\n // Add all children of the SubContent to the result\r\n React.Children.forEach((child.props as {children?: React.ReactNode}).children, (contentChild) => {\r\n contentItems.push(contentChild);\r\n });\r\n }\r\n });\r\n\r\n // Register the content with the parent\r\n if (contentItems.length > 0) {\r\n registerSubmenuContent(submenuId, contentItems);\r\n }\r\n }, [children, registerSubmenuContent, submenuId]);\r\n\r\n if (isMobile) {\r\n // For mobile, we'll use the context to manage submenu state\r\n // Process children to pass the submenu ID to the trigger and content\r\n const processedChildren = React.Children.map(children, (child) => {\r\n if (!React.isValidElement(child)) return child;\r\n\r\n if (child.type === DropDrawerSubTrigger) {\r\n return React.cloneElement(\r\n child as React.ReactElement,\r\n {\r\n ...(child.props as object),\r\n \"data-parent-submenu-id\": submenuId,\r\n \"data-submenu-id\": submenuId,\r\n // Use only data attributes, not custom props\r\n \"data-parent-submenu\": submenuId,\r\n } as React.HTMLAttributes<HTMLElement>,\r\n );\r\n }\r\n\r\n if (child.type === DropDrawerSubContent) {\r\n return React.cloneElement(\r\n child as React.ReactElement,\r\n {\r\n ...(child.props as object),\r\n \"data-parent-submenu-id\": submenuId,\r\n \"data-submenu-id\": submenuId,\r\n // Use only data attributes, not custom props\r\n \"data-parent-submenu\": submenuId,\r\n } as React.HTMLAttributes<HTMLElement>,\r\n );\r\n }\r\n\r\n return child;\r\n });\r\n\r\n return (\r\n <div\r\n data-slot='drop-drawer-sub'\r\n data-submenu-id={submenuId}\r\n id={submenuId}>\r\n {processedChildren}\r\n </div>\r\n );\r\n }\r\n\r\n // For desktop, pass the generated ID to the DropdownMenuSub\r\n return (\r\n <DropdownMenuSub\r\n data-slot='drop-drawer-sub'\r\n data-submenu-id={submenuId}\r\n // Don't pass id to DropdownMenuSub as it doesn't accept this prop\r\n {...props}>\r\n {children}\r\n </DropdownMenuSub>\r\n );\r\n}\r\n\r\nfunction DropDrawerSubTrigger({\r\n className,\r\n inset,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuSubTrigger> & {\r\n icon?: React.ReactNode;\r\n}) {\r\n const {isMobile} = useDropDrawerContext();\r\n const {navigateToSubmenu} = React.useContext(SubmenuContext);\r\n\r\n // Define hooks outside of conditionals to follow React rules\r\n // Check if this item is inside a group by looking at parent elements\r\n const isInGroup = React.useCallback((element: HTMLElement | null): boolean => {\r\n if (!element) return false;\r\n\r\n // Check if any parent has a data-drop-drawer-group attribute\r\n let parent = element.parentElement;\r\n while (parent) {\r\n if (parent.hasAttribute(\"data-drop-drawer-group\")) {\r\n return true;\r\n }\r\n parent = parent.parentElement;\r\n }\r\n return false;\r\n }, []);\r\n\r\n // Create a ref to check if the item is in a group\r\n const itemRef = React.useRef<HTMLDivElement>(null);\r\n const [isInsideGroup, setIsInsideGroup] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n // Only run this effect in mobile mode\r\n if (!isMobile) return;\r\n\r\n // Use a short timeout to ensure the DOM is fully rendered\r\n const timer = setTimeout(() => {\r\n if (itemRef.current) {\r\n setIsInsideGroup(isInGroup(itemRef.current));\r\n }\r\n }, 0);\r\n\r\n return () => clearTimeout(timer);\r\n }, [isInGroup, isMobile]);\r\n\r\n if (isMobile) {\r\n // Find the parent submenu ID\r\n const handleClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // Get the closest parent with data-submenu-id attribute\r\n const element = e.currentTarget as HTMLElement;\r\n let submenuId: string | null = null;\r\n\r\n // First check if the element itself has the data attribute\r\n if (element.closest(\"[data-submenu-id]\")) {\r\n const closestElement = element.closest(\"[data-submenu-id]\");\r\n const id = closestElement?.getAttribute(\"data-submenu-id\");\r\n if (id) {\r\n submenuId = id;\r\n }\r\n }\r\n\r\n // If not found, try props\r\n if (!submenuId) {\r\n submenuId =\r\n ((props as Record<string, unknown>)[\"data-parent-submenu-id\"] as string)\r\n || ((props as Record<string, unknown>)[\"data-parent-submenu\"] as string);\r\n }\r\n\r\n if (!submenuId) {\r\n return;\r\n }\r\n\r\n // Get the title\r\n const title = typeof children === \"string\" ? children : \"Submenu\";\r\n\r\n // Navigate to the submenu\r\n if (navigateToSubmenu) {\r\n navigateToSubmenu(submenuId, title);\r\n }\r\n };\r\n\r\n // Combine onClick handlers\r\n const combinedOnClick = (e: React.MouseEvent) => {\r\n // Call the original onClick if provided\r\n const typedProps = props as Record<string, unknown>;\r\n if (typedProps[\"onClick\"]) {\r\n const originalOnClick = typedProps[\"onClick\"] as React.MouseEventHandler<HTMLDivElement>;\r\n originalOnClick(e as React.MouseEvent<HTMLDivElement>);\r\n }\r\n\r\n // Call our navigation handler\r\n handleClick(e);\r\n };\r\n\r\n // Remove onClick from props to avoid duplicate handlers\r\n const {...restProps} = props as Record<string, unknown>;\r\n\r\n // Don't wrap in DrawerClose for submenu triggers\r\n return (\r\n <div\r\n ref={itemRef}\r\n data-slot='drop-drawer-sub-trigger'\r\n data-inset={inset}\r\n className={cn(\r\n \"flex cursor-pointer items-center justify-between px-4 py-4\",\r\n // Only apply margin, background and rounded corners if not in a group\r\n !isInsideGroup && \"mx-2 my-1.5 rounded-md bg-neutral-100 dark:bg-neutral-100 dark:bg-neutral-800 dark:dark:bg-neutral-800\",\r\n // For items in a group, don't add background but add more padding\r\n isInsideGroup && \"bg-transparent py-4\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n onClick={combinedOnClick}\r\n {...restProps}>\r\n <div className='flex items-center gap-2'>{children}</div>\r\n <ChevronRightIcon className='h-5 w-5' />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <DropdownMenuSubTrigger\r\n data-slot='drop-drawer-sub-trigger'\r\n data-inset={inset}\r\n className={className}\r\n inset={inset}\r\n {...props}>\r\n {children}\r\n </DropdownMenuSubTrigger>\r\n );\r\n}\r\n\r\nfunction DropDrawerSubContent({className, sideOffset = 4, children, ...props}: React.ComponentProps<typeof DropdownMenuSubContent>) {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n if (isMobile) {\r\n // For mobile, we don't render the content directly\r\n // It will be rendered by the DropDrawerContent component when active\r\n return null;\r\n }\r\n\r\n return (\r\n <DropdownMenuSubContent\r\n data-slot='drop-drawer-sub-content'\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border border-neutral-200 p-1 shadow-lg dark:border-neutral-800\",\r\n className,\r\n )}\r\n {...props}>\r\n {children}\r\n </DropdownMenuSubContent>\r\n );\r\n}\r\n\r\nexport {\r\n DropDrawer,\r\n DropDrawerContent,\r\n DropDrawerFooter,\r\n DropDrawerGroup,\r\n DropDrawerItem,\r\n DropDrawerLabel,\r\n DropDrawerSeparator,\r\n DropDrawerSub,\r\n DropDrawerSubContent,\r\n DropDrawerSubTrigger,\r\n DropDrawerTrigger,\r\n};\r\n"],"names":["DropDrawerContext","React","useDropDrawerContext","context","Error","DropDrawer","children","props","isMobile","useIsMobile","DropdownComponent","Drawer","DropdownMenu","DropDrawerTrigger","className","TriggerComponent","DrawerTrigger","DropdownMenuTrigger","DropDrawerContent","activeSubmenu","setActiveSubmenu","submenuTitle","setSubmenuTitle","submenuStack","setSubmenuStack","animationDirection","setAnimationDirection","submenuContentRef","Map","navigateToSubmenu","id","title","prev","goBack","newStack","previous","registerSubmenuContent","content","extractSubmenuContent","elements","targetId","result","findSubmenuContent","node","element","DropDrawerSub","elementId","dataSubmenuId","child","DropDrawerSubContent","subContentProps","contentChild","Array","getSubmenuContent","cachedContent","submenuContent","variants","direction","transition","SubmenuContext","DrawerContent","cn","DrawerHeader","ChevronLeftIcon","DrawerTitle","AnimatePresence","motion","DropdownMenuContent","DropDrawerItem","onSelect","onClick","icon","inset","disabled","isInGroup","parent","itemRef","isInsideGroup","setIsInsideGroup","timer","setTimeout","clearTimeout","handleClick","e","isInSubmenu","DrawerClose","DropdownMenuItem","DropDrawerSeparator","DropdownMenuSeparator","DropDrawerLabel","DropdownMenuLabel","DropDrawerFooter","DrawerFooter","DropDrawerGroup","childrenWithSeparators","childArray","filteredChildren","index","undefined","submenuIdCounter","generatedId","submenuId","contentItems","processedChildren","DropDrawerSubTrigger","DropdownMenuSub","closestElement","combinedOnClick","typedProps","originalOnClick","restProps","ChevronRightIcon","DropdownMenuSubTrigger","sideOffset","DropdownMenuSubContent"],"mappings":"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"}
1
+ {"version":3,"file":"components/ui/dropdrawer.js","sources":["../../../src/components/ui/dropdrawer.tsx"],"sourcesContent":["\"use client\";\r\n\r\n/* eslint-disable react/no-children-prop, react-x/no-children-for-each, react-x/no-children-map, react-x/no-children-to-array, react-x/no-clone-element, sonarjs/function-return-type, sonarjs/no-identical-functions, sonarjs/no-unused-vars, max-lines, unicorn/no-array-callback-reference, unicorn/no-useless-undefined, unicorn/prefer-at, unicorn/prefer-dom-node-dataset, jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\r\n\r\nimport {Drawer as BaseDrawer} from \"@base-ui/react/drawer\";\r\nimport {Menu as BaseMenu} from \"@base-ui/react/menu\";\r\nimport {mergeProps} from \"@base-ui/react/merge-props\";\r\nimport {useRender} from \"@base-ui/react/use-render\";\r\nimport {ChevronLeftIcon, ChevronRightIcon} from \"lucide-react\";\r\nimport {AnimatePresence, motion, type Transition} from \"motion/react\";\r\nimport * as React from \"react\";\r\n\r\nimport {useIsMobile} from \"@/hooks/useIsMobile\";\r\nimport {cn} from \"@/lib/utilities\";\r\nimport styles from \"./dropdrawer.module.css\";\r\n\r\nconst MOBILE_MENU_TITLE = \"Menu\";\r\nconst MOBILE_SUBMENU_TITLE = \"Submenu\";\r\nconst MOBILE_BACK_LABEL = \"Go back\";\r\n\r\ninterface DropDrawerContextValue {\r\n isMobile: boolean;\r\n}\r\n\r\nconst DropDrawerContext = React.createContext<DropDrawerContextValue | null>(null);\r\n\r\nconst useDropDrawerContext = (): DropDrawerContextValue => {\r\n const context = React.useContext(DropDrawerContext);\r\n\r\n if (context === null) {\r\n throw new Error(\"DropDrawer components cannot be rendered outside the Context\");\r\n }\r\n\r\n return context;\r\n};\r\n\r\nconst Drawer = BaseDrawer.Root;\r\nconst DrawerPortal = BaseDrawer.Portal;\r\n\r\nfunction DrawerTrigger(props: Readonly<React.ComponentPropsWithRef<typeof BaseDrawer.Trigger> & {asChild?: boolean}>): React.ReactElement {\r\n const {asChild = false, children, className, render, ...otherProps} = props;\r\n const renderProp = asChild && React.isValidElement(children) ? children : render;\r\n\r\n return (\r\n <BaseDrawer.Trigger\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"button\",\r\n render: renderProp as never,\r\n props: mergeProps({className}, {}),\r\n })}>\r\n {renderProp ? undefined : children}\r\n </BaseDrawer.Trigger>\r\n );\r\n}\r\n\r\nfunction DrawerOverlay(props: Readonly<React.ComponentPropsWithRef<typeof BaseDrawer.Backdrop>>): React.ReactElement {\r\n const {className, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseDrawer.Backdrop\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.drawerOverlay, className)}, {}),\r\n })}\r\n />\r\n );\r\n}\r\n\r\nfunction DrawerContent(\r\n props: Readonly<React.ComponentPropsWithRef<typeof BaseDrawer.Popup> & {children?: React.ReactNode}>,\r\n): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return (\r\n <DrawerPortal>\r\n <DrawerOverlay />\r\n <BaseDrawer.Viewport className={styles.drawerViewport}>\r\n <BaseDrawer.Popup\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.drawerContent, className)}, {}),\r\n })}>\r\n <div className={styles.drawerHandle} />\r\n <BaseDrawer.Content className={styles.drawerInnerContent}>{children}</BaseDrawer.Content>\r\n </BaseDrawer.Popup>\r\n </BaseDrawer.Viewport>\r\n </DrawerPortal>\r\n );\r\n}\r\n\r\nfunction DrawerHeader(\r\n props: Readonly<React.ComponentPropsWithRef<\"div\"> & {render?: useRender.RenderProp<Record<string, never>>}>,\r\n): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.drawerHeader, className)}, otherProps, {children}),\r\n });\r\n}\r\n\r\nfunction DrawerFooter(\r\n props: Readonly<React.ComponentPropsWithRef<\"div\"> & {render?: useRender.RenderProp<Record<string, never>>}>,\r\n): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.drawerFooter, className)}, otherProps, {children}),\r\n });\r\n}\r\n\r\nfunction DrawerTitle(props: Readonly<React.ComponentPropsWithRef<typeof BaseDrawer.Title>>): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseDrawer.Title\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"h2\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.drawerTitle, className)}, {}),\r\n })}>\r\n {children}\r\n </BaseDrawer.Title>\r\n );\r\n}\r\n\r\nconst DropdownMenu = BaseMenu.Root;\r\nconst DropdownMenuSub = BaseMenu.SubmenuRoot;\r\n\r\nfunction DropdownMenuTrigger(\r\n props: Readonly<React.ComponentPropsWithRef<typeof BaseMenu.Trigger> & {asChild?: boolean}>,\r\n): React.ReactElement {\r\n const {asChild = false, children, className, render, ...otherProps} = props;\r\n const renderProp = asChild && React.isValidElement(children) ? children : render;\r\n\r\n return (\r\n <BaseMenu.Trigger\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"button\",\r\n render: renderProp as never,\r\n props: mergeProps({className}, {}),\r\n })}>\r\n {renderProp ? undefined : children}\r\n </BaseMenu.Trigger>\r\n );\r\n}\r\n\r\nfunction DropdownMenuContent(\r\n props: Readonly<React.ComponentPropsWithRef<typeof BaseMenu.Positioner> & {children?: React.ReactNode}>,\r\n): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseMenu.Portal>\r\n <BaseMenu.Positioner\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n props: mergeProps({className: styles.dropdownPositioner}, {}),\r\n })}>\r\n <BaseMenu.Popup\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.dropdownContent, className)}, {}),\r\n })}>\r\n {children}\r\n </BaseMenu.Popup>\r\n </BaseMenu.Positioner>\r\n </BaseMenu.Portal>\r\n );\r\n}\r\n\r\ninterface DropdownMenuItemProps extends React.ComponentPropsWithRef<typeof BaseMenu.Item> {\r\n /** @deprecated Prefer Base UI's `render` prop. */\r\n asChild?: boolean;\r\n /**\r\n * Whether to apply inset spacing to align with grouped menu content.\r\n * @default false\r\n */\r\n inset?: boolean;\r\n}\r\n\r\nfunction DropdownMenuItem(props: Readonly<DropdownMenuItemProps>): React.ReactElement {\r\n const {asChild = false, children, className, inset = false, render, ...otherProps} = props;\r\n const renderProp = asChild && React.isValidElement(children) ? children : render;\r\n\r\n return (\r\n <BaseMenu.Item\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: renderProp as never,\r\n props: mergeProps({className: cn(styles.desktopItem, inset && styles.inset, className)}, {}),\r\n })}>\r\n {renderProp ? undefined : children}\r\n </BaseMenu.Item>\r\n );\r\n}\r\n\r\nfunction DropdownMenuLabel(props: Readonly<React.ComponentPropsWithRef<typeof BaseMenu.GroupLabel>>): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseMenu.GroupLabel\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.desktopLabel, className)}, {}),\r\n })}>\r\n {children}\r\n </BaseMenu.GroupLabel>\r\n );\r\n}\r\n\r\nfunction DropdownMenuSeparator(props: Readonly<React.ComponentPropsWithRef<typeof BaseMenu.Separator>>): React.ReactElement {\r\n const {className, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseMenu.Separator\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.desktopSeparator, className)}, {}),\r\n })}\r\n />\r\n );\r\n}\r\n\r\nfunction DropdownMenuSubTrigger(\r\n props: Readonly<React.ComponentPropsWithRef<typeof BaseMenu.SubmenuTrigger> & {inset?: boolean}>,\r\n): React.ReactElement {\r\n const {className, children, inset = false, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseMenu.SubmenuTrigger\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.desktopSubTrigger, inset && styles.inset, className)}, {}),\r\n })}>\r\n {children}\r\n <ChevronRightIcon className={styles.chevron} />\r\n </BaseMenu.SubmenuTrigger>\r\n );\r\n}\r\n\r\nfunction DropdownMenuSubContent(\r\n props: Readonly<React.ComponentPropsWithRef<typeof BaseMenu.Positioner> & {children?: React.ReactNode}>,\r\n): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseMenu.Positioner\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n props: mergeProps({className: styles.dropdownPositioner}, {}),\r\n })}>\r\n <BaseMenu.Popup\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.dropdownSubContent, className)}, {}),\r\n })}>\r\n {children}\r\n </BaseMenu.Popup>\r\n </BaseMenu.Positioner>\r\n );\r\n}\r\n\r\ntype DropDrawerRootProps = React.ComponentProps<typeof Drawer> | React.ComponentProps<typeof DropdownMenu>;\r\ntype DropDrawerTriggerProps =\r\n | React.ComponentPropsWithoutRef<typeof DrawerTrigger>\r\n | React.ComponentPropsWithoutRef<typeof DropdownMenuTrigger>;\r\ntype DropDrawerContentProps =\r\n | React.ComponentPropsWithoutRef<typeof DrawerContent>\r\n | React.ComponentPropsWithoutRef<typeof DropdownMenuContent>;\r\n\r\ninterface MobileSubmenuDataAttributes {\r\n \"data-parent-submenu-id\"?: string;\r\n \"data-parent-submenu\"?: string;\r\n \"data-submenu-id\"?: string;\r\n}\r\n\r\ninterface SharedDropDrawerItemProps\r\n extends Omit<React.ComponentPropsWithoutRef<typeof BaseMenu.Item>, \"children\" | \"onClick\" | \"onSelect\">, MobileSubmenuDataAttributes {\r\n /**\r\n * Item contents.\r\n * @default undefined\r\n */\r\n children?: React.ReactNode;\r\n /**\r\n * Additional CSS classes merged with the item styles.\r\n * @default undefined\r\n */\r\n className?: string;\r\n /**\r\n * Whether the desktop dropdown should close after the item is activated.\r\n * @default undefined\r\n */\r\n closeOnClick?: boolean;\r\n /**\r\n * Optional trailing icon or affordance rendered alongside the item content.\r\n * @default undefined\r\n */\r\n icon?: React.ReactNode;\r\n /**\r\n * Whether to apply inset spacing to align the item with grouped content.\r\n * @default undefined\r\n */\r\n inset?: boolean;\r\n /**\r\n * Mouse click handler invoked when the item is activated.\r\n * @default undefined\r\n */\r\n onClick?: React.MouseEventHandler<HTMLElement>;\r\n /**\r\n * Selection callback invoked with the native event when the item is activated.\r\n * @default undefined\r\n */\r\n onSelect?: (event: Event) => void;\r\n}\r\n\r\ninterface SubmenuContextType {\r\n activeSubmenu: string | null;\r\n navigateToSubmenu?: (id: string, title: string) => void;\r\n registerSubmenuContent?: (id: string, content: ReadonlyArray<React.ReactNode>) => void;\r\n setActiveSubmenu: (id: string | null) => void;\r\n setSubmenuTitle: (title: string | null) => void;\r\n submenuTitle: string | null;\r\n}\r\n\r\nconst SubmenuContext = React.createContext<SubmenuContextType>({\r\n activeSubmenu: null,\r\n navigateToSubmenu: undefined,\r\n registerSubmenuContent: undefined,\r\n setActiveSubmenu: () => undefined,\r\n setSubmenuTitle: () => undefined,\r\n submenuTitle: null,\r\n});\r\n\r\n/**\r\n * Provides a responsive dropdown-on-desktop, drawer-on-mobile navigation surface.\r\n *\r\n * @remarks\r\n * - Renders either Base UI `Menu.Root` or `Drawer.Root` depending on viewport size\r\n * - Built on Base UI Menu and Drawer primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawer>\r\n * <DropDrawerTrigger>Open menu</DropDrawerTrigger>\r\n * <DropDrawerContent>\r\n * <DropDrawerItem>Profile</DropDrawerItem>\r\n * </DropDrawerContent>\r\n * </DropDrawer>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawer({children, ...props}: DropDrawerRootProps): React.JSX.Element {\r\n const isMobile = useIsMobile();\r\n\r\n return (\r\n <DropDrawerContext.Provider value={{isMobile}}>\r\n {isMobile ? (\r\n <Drawer\r\n data-slot='drop-drawer'\r\n {...(props as React.ComponentProps<typeof Drawer>)}>\r\n {children}\r\n </Drawer>\r\n ) : (\r\n <DropdownMenu\r\n data-slot='drop-drawer'\r\n {...(props as React.ComponentProps<typeof DropdownMenu>)}>\r\n {children}\r\n </DropdownMenu>\r\n )}\r\n </DropDrawerContext.Provider>\r\n );\r\n}\r\n\r\n/**\r\n * Renders the control that opens the dropdown or drawer surface.\r\n *\r\n * @remarks\r\n * - Renders either a Base UI menu trigger or drawer trigger\r\n * - Built on Base UI Menu and Drawer primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerTrigger>Open menu</DropDrawerTrigger>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/drawer | Base UI Drawer Docs}\r\n */\r\nfunction DropDrawerTrigger({className, children, ...props}: DropDrawerTriggerProps): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n return isMobile ? (\r\n <DrawerTrigger\r\n data-slot='drop-drawer-trigger'\r\n className={className}\r\n {...(props as React.ComponentProps<typeof DrawerTrigger>)}>\r\n {children}\r\n </DrawerTrigger>\r\n ) : (\r\n <DropdownMenuTrigger\r\n data-slot='drop-drawer-trigger'\r\n className={className}\r\n {...(props as React.ComponentProps<typeof DropdownMenuTrigger>)}>\r\n {children}\r\n </DropdownMenuTrigger>\r\n );\r\n}\r\n\r\n/**\r\n * Renders the responsive dropdown or drawer content surface.\r\n *\r\n * @remarks\r\n * - Renders a Base UI popup on desktop and drawer content on mobile\r\n * - Built on Base UI Menu and Drawer primitives with animated mobile submenu navigation\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerContent>\r\n * <DropDrawerItem>Settings</DropDrawerItem>\r\n * </DropDrawerContent>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerContent({className, children, ...props}: DropDrawerContentProps): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n const [activeSubmenu, setActiveSubmenu] = React.useState<string | null>(null);\r\n const [submenuTitle, setSubmenuTitle] = React.useState<string | null>(null);\r\n const [submenuStack, setSubmenuStack] = React.useState<ReadonlyArray<{id: string; title: string}>>([]);\r\n const [animationDirection, setAnimationDirection] = React.useState<\"forward\" | \"backward\">(\"forward\");\r\n const submenuContentRef = React.useRef(new Map<string, ReadonlyArray<React.ReactNode>>());\r\n\r\n React.useEffect(() => {\r\n submenuContentRef.current.clear();\r\n }, [children]);\r\n\r\n const navigateToSubmenu = React.useCallback((id: string, title: string): void => {\r\n setAnimationDirection(\"forward\");\r\n setActiveSubmenu(id);\r\n setSubmenuTitle(title);\r\n setSubmenuStack((previousStack) => [...previousStack, {id, title}]);\r\n }, []);\r\n\r\n const goBack = React.useCallback((): void => {\r\n setAnimationDirection(\"backward\");\r\n\r\n if (submenuStack.length <= 1) {\r\n setActiveSubmenu(null);\r\n setSubmenuTitle(null);\r\n setSubmenuStack([]);\r\n return;\r\n }\r\n\r\n const newStack = [...submenuStack];\r\n newStack.pop();\r\n const previousSubmenu = newStack[newStack.length - 1];\r\n\r\n if (!previousSubmenu) {\r\n setActiveSubmenu(null);\r\n setSubmenuTitle(null);\r\n setSubmenuStack([]);\r\n return;\r\n }\r\n\r\n setActiveSubmenu(previousSubmenu.id);\r\n setSubmenuTitle(previousSubmenu.title);\r\n setSubmenuStack(newStack);\r\n }, [submenuStack]);\r\n\r\n const registerSubmenuContent = React.useCallback((id: string, content: ReadonlyArray<React.ReactNode>): void => {\r\n submenuContentRef.current.set(id, content);\r\n }, []);\r\n\r\n const extractSubmenuContent = React.useCallback((elements: React.ReactNode, targetId: string): ReadonlyArray<React.ReactNode> => {\r\n const result: Array<React.ReactNode> = [];\r\n\r\n const findSubmenuContent = (node: React.ReactNode): void => {\r\n if (!React.isValidElement(node)) {\r\n return;\r\n }\r\n\r\n const element = node as React.ReactElement<{\r\n \"data-submenu-id\"?: string;\r\n children?: React.ReactNode;\r\n id?: string;\r\n }>;\r\n\r\n if (element.type === DropDrawerSub) {\r\n const elementId = element.props.id;\r\n const dataSubmenuId = element.props[\"data-submenu-id\"];\r\n\r\n if (elementId === targetId || dataSubmenuId === targetId) {\r\n if (element.props.children) {\r\n React.Children.forEach(element.props.children, (child) => {\r\n if (React.isValidElement(child) && child.type === DropDrawerSubContent) {\r\n const subContentElement = child as React.ReactElement<{children?: React.ReactNode}>;\r\n\r\n React.Children.forEach(subContentElement.props.children, (contentChild) => {\r\n result.push(contentChild);\r\n });\r\n }\r\n });\r\n }\r\n\r\n return;\r\n }\r\n }\r\n\r\n if (element.props.children) {\r\n React.Children.forEach(element.props.children, findSubmenuContent);\r\n }\r\n };\r\n\r\n React.Children.forEach(elements, findSubmenuContent);\r\n return result;\r\n }, []);\r\n\r\n const getSubmenuContent = React.useCallback(\r\n (id: string): ReadonlyArray<React.ReactNode> => {\r\n const cachedContent = submenuContentRef.current.get(id);\r\n\r\n if (cachedContent && cachedContent.length > 0) {\r\n return cachedContent;\r\n }\r\n\r\n const submenuContent = extractSubmenuContent(children, id);\r\n\r\n if (submenuContent.length > 0) {\r\n submenuContentRef.current.set(id, submenuContent);\r\n }\r\n\r\n return submenuContent;\r\n },\r\n [children, extractSubmenuContent],\r\n );\r\n\r\n const variants = {\r\n center: {\r\n opacity: 1,\r\n x: 0,\r\n },\r\n enter: (direction: \"forward\" | \"backward\") => ({\r\n opacity: 0,\r\n x: direction === \"forward\" ? \"100%\" : \"-100%\",\r\n }),\r\n exit: (direction: \"forward\" | \"backward\") => ({\r\n opacity: 0,\r\n x: direction === \"forward\" ? \"-100%\" : \"100%\",\r\n }),\r\n };\r\n\r\n const transition = {\r\n duration: 0.3,\r\n ease: [0.25, 0.1, 0.25, 1],\r\n } satisfies Transition;\r\n\r\n if (isMobile) {\r\n return (\r\n <SubmenuContext.Provider\r\n value={{\r\n activeSubmenu,\r\n navigateToSubmenu,\r\n registerSubmenuContent,\r\n setActiveSubmenu: (id) => {\r\n if (id === null) {\r\n setActiveSubmenu(null);\r\n setSubmenuTitle(null);\r\n setSubmenuStack([]);\r\n }\r\n },\r\n setSubmenuTitle,\r\n submenuTitle,\r\n }}>\r\n <DrawerContent\r\n data-slot='drop-drawer-content'\r\n className={cn(styles.mobileContent, className)}\r\n {...(props as React.ComponentProps<typeof DrawerContent>)}>\r\n {activeSubmenu ? (\r\n <>\r\n <DrawerHeader>\r\n <div className={styles.mobileHeaderRow}>\r\n <button\r\n type='button'\r\n aria-label={MOBILE_BACK_LABEL}\r\n onClick={goBack}\r\n className={styles.backButton}>\r\n <ChevronLeftIcon className={styles.chevron} />\r\n </button>\r\n <DrawerTitle>{submenuTitle || MOBILE_SUBMENU_TITLE}</DrawerTitle>\r\n </div>\r\n </DrawerHeader>\r\n <div className={styles.mobileViewport}>\r\n <AnimatePresence\r\n initial={false}\r\n mode='wait'\r\n custom={animationDirection}>\r\n <motion.div\r\n key={activeSubmenu}\r\n custom={animationDirection}\r\n variants={variants}\r\n initial='enter'\r\n animate='center'\r\n exit='exit'\r\n transition={transition}\r\n className={styles.mobileMotionPanel}>\r\n {getSubmenuContent(activeSubmenu)}\r\n </motion.div>\r\n </AnimatePresence>\r\n </div>\r\n </>\r\n ) : (\r\n <>\r\n <DrawerHeader className={styles.screenReaderOnlyHeader}>\r\n <DrawerTitle>{MOBILE_MENU_TITLE}</DrawerTitle>\r\n </DrawerHeader>\r\n <div className={styles.mobileMainViewport}>\r\n <AnimatePresence\r\n initial={false}\r\n mode='wait'\r\n custom={animationDirection}>\r\n <motion.div\r\n key='main-menu'\r\n custom={animationDirection}\r\n variants={variants}\r\n initial='enter'\r\n animate='center'\r\n exit='exit'\r\n transition={transition}\r\n className={styles.mobileMotionPanel}>\r\n {children}\r\n </motion.div>\r\n </AnimatePresence>\r\n </div>\r\n </>\r\n )}\r\n </DrawerContent>\r\n </SubmenuContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <SubmenuContext.Provider\r\n value={{\r\n activeSubmenu,\r\n registerSubmenuContent,\r\n setActiveSubmenu,\r\n setSubmenuTitle,\r\n submenuTitle,\r\n }}>\r\n <DropdownMenuContent\r\n data-slot='drop-drawer-content'\r\n align='end'\r\n sideOffset={4}\r\n className={cn(styles.desktopContent, className)}\r\n {...(props as React.ComponentProps<typeof DropdownMenuContent>)}>\r\n {children}\r\n </DropdownMenuContent>\r\n </SubmenuContext.Provider>\r\n );\r\n}\r\n\r\n/**\r\n * Renders an actionable item inside the drop drawer surface.\r\n *\r\n * @remarks\r\n * - Renders a Base UI menu item on desktop and a keyboard-accessible `<div>` on mobile\r\n * - Built on Base UI Menu and Drawer close primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerItem icon={<ChevronRightIcon />}>Account</DropDrawerItem>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerItem({\r\n className,\r\n children,\r\n closeOnClick,\r\n disabled,\r\n icon,\r\n inset,\r\n onClick,\r\n onSelect,\r\n ...props\r\n}: SharedDropDrawerItemProps): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n const isInGroup = React.useCallback((element: HTMLElement | null): boolean => {\r\n if (!element) {\r\n return false;\r\n }\r\n\r\n let parent = element.parentElement;\r\n\r\n while (parent) {\r\n if (parent.hasAttribute(\"data-drop-drawer-group\")) {\r\n return true;\r\n }\r\n\r\n parent = parent.parentElement;\r\n }\r\n\r\n return false;\r\n }, []);\r\n\r\n const itemRef = React.useRef<HTMLDivElement>(null);\r\n const [isInsideGroup, setIsInsideGroup] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (!isMobile) {\r\n return;\r\n }\r\n\r\n const timer = globalThis.window.setTimeout(() => {\r\n if (itemRef.current) {\r\n setIsInsideGroup(isInGroup(itemRef.current));\r\n }\r\n }, 0);\r\n\r\n return () => globalThis.window.clearTimeout(timer);\r\n }, [isInGroup, isMobile]);\r\n\r\n const handleSelect = React.useCallback(\r\n (event: Event): void => {\r\n if (!disabled) {\r\n onSelect?.(event);\r\n }\r\n },\r\n [disabled, onSelect],\r\n );\r\n\r\n if (isMobile) {\r\n const handleClick: React.MouseEventHandler<HTMLDivElement> = (event): void => {\r\n if (disabled) {\r\n return;\r\n }\r\n\r\n onClick?.(event);\r\n handleSelect(event.nativeEvent);\r\n };\r\n\r\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (event): void => {\r\n if (event.key !== \"Enter\" && event.key !== \" \") {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n event.currentTarget.click();\r\n };\r\n\r\n const content = (\r\n <div\r\n ref={itemRef}\r\n data-slot='drop-drawer-item'\r\n data-disabled={disabled}\r\n data-inset={inset}\r\n role='menuitem'\r\n tabIndex={disabled ? -1 : 0}\r\n className={cn(\r\n styles.mobileItem,\r\n !isInsideGroup && styles.mobileStandaloneItem,\r\n isInsideGroup && styles.mobileGroupedItem,\r\n inset && styles.inset,\r\n className,\r\n )}\r\n onClick={handleClick}\r\n onKeyDown={handleKeyDown}\r\n aria-disabled={disabled}\r\n {...props}>\r\n <div className={styles.itemChildren}>{children}</div>\r\n {icon ? <div className={styles.itemIcon}>{icon}</div> : null}\r\n </div>\r\n );\r\n\r\n const parentSubmenuId = props[\"data-parent-submenu-id\"] ?? props[\"data-parent-submenu\"];\r\n\r\n if (parentSubmenuId) {\r\n return content;\r\n }\r\n\r\n return (\r\n <BaseDrawer.Close\r\n nativeButton={false}\r\n render={content}\r\n />\r\n );\r\n }\r\n\r\n const handleDesktopClick: React.MouseEventHandler<HTMLElement> = (event): void => {\r\n if (disabled) {\r\n return;\r\n }\r\n\r\n onClick?.(event);\r\n handleSelect(event.nativeEvent);\r\n };\r\n\r\n return (\r\n <DropdownMenuItem\r\n data-slot='drop-drawer-item'\r\n data-inset={inset}\r\n className={cn(styles.desktopItem, className)}\r\n closeOnClick={closeOnClick}\r\n disabled={disabled}\r\n inset={inset}\r\n onClick={handleDesktopClick}\r\n {...props}>\r\n <div className={styles.itemRow}>\r\n <div className={styles.itemChildren}>{children}</div>\r\n {icon ? <div className={styles.itemIcon}>{icon}</div> : null}\r\n </div>\r\n </DropdownMenuItem>\r\n );\r\n}\r\n\r\n/**\r\n * Renders a visual separator between desktop drop drawer sections.\r\n *\r\n * @remarks\r\n * - Renders a separator only in desktop dropdown mode\r\n * - Built on Base UI Menu separator primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerSeparator />\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerSeparator({\r\n className,\r\n ...props\r\n}: React.ComponentPropsWithoutRef<typeof DropdownMenuSeparator>): React.JSX.Element | null {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n if (isMobile) {\r\n return null;\r\n }\r\n\r\n return (\r\n <DropdownMenuSeparator\r\n data-slot='drop-drawer-separator'\r\n className={className}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Renders a section label for the drop drawer surface.\r\n *\r\n * @remarks\r\n * - Renders a drawer title on mobile and a menu label on desktop\r\n * - Built on Base UI Drawer and Menu primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerLabel>Actions</DropDrawerLabel>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerLabel({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuLabel> | React.ComponentProps<typeof DrawerTitle>): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n return isMobile ? (\r\n <DrawerHeader className={styles.mobileLabelWrapper}>\r\n <DrawerTitle\r\n data-slot='drop-drawer-label'\r\n className={cn(styles.mobileLabel, className)}\r\n {...(props as React.ComponentProps<typeof DrawerTitle>)}>\r\n {children}\r\n </DrawerTitle>\r\n </DrawerHeader>\r\n ) : (\r\n <DropdownMenuLabel\r\n data-slot='drop-drawer-label'\r\n className={className}\r\n {...(props as React.ComponentProps<typeof DropdownMenuLabel>)}>\r\n {children}\r\n </DropdownMenuLabel>\r\n );\r\n}\r\n\r\n/**\r\n * Renders footer content aligned to the bottom of the responsive surface.\r\n *\r\n * @remarks\r\n * - Renders a drawer footer on mobile and a styled `<div>` on desktop\r\n * - Built on Base UI Drawer primitives for mobile layouts\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerFooter>Signed in as Alex</DropDrawerFooter>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/drawer | Base UI Drawer Docs}\r\n */\r\nfunction DropDrawerFooter({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DrawerFooter> | React.ComponentProps<\"div\">): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n return isMobile ? (\r\n <DrawerFooter\r\n data-slot='drop-drawer-footer'\r\n className={cn(styles.mobileFooter, className)}\r\n {...(props as React.ComponentProps<typeof DrawerFooter>)}>\r\n {children}\r\n </DrawerFooter>\r\n ) : (\r\n <div\r\n data-slot='drop-drawer-footer'\r\n className={cn(styles.desktopFooter, className)}\r\n {...props}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\n/**\r\n * Renders a grouped collection of drop drawer items.\r\n *\r\n * @remarks\r\n * - Renders a Base UI menu group on desktop and a `<div role=\"group\">` on mobile\r\n * - Inserts mobile-only separators between adjacent children\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerGroup>\r\n * <DropDrawerItem>Profile</DropDrawerItem>\r\n * <DropDrawerItem>Billing</DropDrawerItem>\r\n * </DropDrawerGroup>\r\n * ```\r\n *\r\n * @see {@link https://developer.mozilla.org/docs/Web/Accessibility/ARIA/Roles/group_role | ARIA Group Role}\r\n */\r\nfunction DropDrawerGroup({className, children, ...props}: React.ComponentProps<\"div\"> & {children: React.ReactNode}): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n const childrenWithSeparators = React.useMemo(() => {\r\n if (!isMobile) {\r\n return children;\r\n }\r\n\r\n const childArray = React.Children.toArray(children);\r\n const filteredChildren = childArray.filter((child) => !(React.isValidElement(child) && child.type === DropDrawerSeparator));\r\n\r\n return filteredChildren.flatMap((child, index) => {\r\n if (index === filteredChildren.length - 1) {\r\n return [child];\r\n }\r\n\r\n return [\r\n child,\r\n <div\r\n key={`separator-${index}`}\r\n className={styles.mobileGroupSeparator}\r\n aria-hidden='true'\r\n />,\r\n ];\r\n });\r\n }, [children, isMobile]);\r\n\r\n return isMobile ? (\r\n <div\r\n data-drop-drawer-group\r\n data-slot='drop-drawer-group'\r\n role='group'\r\n className={cn(styles.mobileGroup, className)}\r\n {...props}>\r\n {childrenWithSeparators}\r\n </div>\r\n ) : (\r\n <BaseMenu.Group\r\n data-drop-drawer-group\r\n data-slot='drop-drawer-group'\r\n className={className}\r\n {...(props as React.ComponentPropsWithoutRef<typeof BaseMenu.Group>)}>\r\n {children}\r\n </BaseMenu.Group>\r\n );\r\n}\r\n\r\n/**\r\n * Renders a submenu root within the drop drawer surface.\r\n *\r\n * @remarks\r\n * - Renders a Base UI submenu on desktop and a mobile-aware container on small screens\r\n * - Registers submenu content for animated mobile drill-down navigation\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerSub>\r\n * <DropDrawerSubTrigger>More</DropDrawerSubTrigger>\r\n * <DropDrawerSubContent>\r\n * <DropDrawerItem>Sub item</DropDrawerItem>\r\n * </DropDrawerSubContent>\r\n * </DropDrawerSub>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerSub({\r\n children,\r\n id,\r\n ...props\r\n}: React.ComponentPropsWithoutRef<typeof DropdownMenuSub> & {children?: React.ReactNode; id?: string}): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n const {registerSubmenuContent} = React.useContext(SubmenuContext);\r\n const generatedId = React.useId();\r\n const submenuId = id || generatedId;\r\n\r\n React.useEffect(() => {\r\n if (!registerSubmenuContent) {\r\n return;\r\n }\r\n\r\n const contentItems: Array<React.ReactNode> = [];\r\n\r\n React.Children.forEach(children, (child) => {\r\n if (React.isValidElement(child) && child.type === DropDrawerSubContent) {\r\n const childElement = child as React.ReactElement<{children?: React.ReactNode}>;\r\n\r\n React.Children.forEach(childElement.props.children, (contentChild) => {\r\n contentItems.push(contentChild);\r\n });\r\n }\r\n });\r\n\r\n if (contentItems.length > 0) {\r\n registerSubmenuContent(submenuId, contentItems);\r\n }\r\n }, [children, registerSubmenuContent, submenuId]);\r\n\r\n if (isMobile) {\r\n const processedChildren = React.Children.map(children, (child) => {\r\n if (!React.isValidElement(child)) {\r\n return child;\r\n }\r\n\r\n if (child.type === DropDrawerSubTrigger || child.type === DropDrawerSubContent) {\r\n return React.cloneElement(child as React.ReactElement<MobileSubmenuDataAttributes>, {\r\n \"data-parent-submenu\": submenuId,\r\n \"data-parent-submenu-id\": submenuId,\r\n \"data-submenu-id\": submenuId,\r\n });\r\n }\r\n\r\n return child;\r\n });\r\n\r\n return (\r\n <div\r\n data-slot='drop-drawer-sub'\r\n data-submenu-id={submenuId}\r\n id={submenuId}>\r\n {processedChildren}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <DropdownMenuSub\r\n data-slot='drop-drawer-sub'\r\n data-submenu-id={submenuId}\r\n {...props}>\r\n {children}\r\n </DropdownMenuSub>\r\n );\r\n}\r\n\r\ninterface DropDrawerSubTriggerProps\r\n extends Omit<React.ComponentPropsWithoutRef<typeof DropdownMenuSubTrigger>, \"children\" | \"onClick\">, MobileSubmenuDataAttributes {\r\n /**\r\n * Trigger contents.\r\n * @default undefined\r\n */\r\n children?: React.ReactNode;\r\n /**\r\n * Additional CSS classes merged with the trigger styles.\r\n * @default undefined\r\n */\r\n className?: string;\r\n /**\r\n * Whether to apply inset spacing to align the trigger with grouped content.\r\n * @default undefined\r\n */\r\n inset?: boolean;\r\n /**\r\n * Mouse click handler invoked before submenu navigation occurs.\r\n * @default undefined\r\n */\r\n onClick?: React.MouseEventHandler<HTMLElement>;\r\n}\r\n\r\n/**\r\n * Renders the trigger that opens a nested submenu.\r\n *\r\n * @remarks\r\n * - Renders a Base UI submenu trigger on desktop and a keyboard-accessible `<div>` on mobile\r\n * - Built on Base UI Menu submenu primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerSubTrigger>Advanced</DropDrawerSubTrigger>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerSubTrigger({className, inset, children, onClick, ...props}: DropDrawerSubTriggerProps): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n const {navigateToSubmenu} = React.useContext(SubmenuContext);\r\n\r\n const isInGroup = React.useCallback((element: HTMLElement | null): boolean => {\r\n if (!element) {\r\n return false;\r\n }\r\n\r\n let parent = element.parentElement;\r\n\r\n while (parent) {\r\n if (parent.hasAttribute(\"data-drop-drawer-group\")) {\r\n return true;\r\n }\r\n\r\n parent = parent.parentElement;\r\n }\r\n\r\n return false;\r\n }, []);\r\n\r\n const itemRef = React.useRef<HTMLDivElement>(null);\r\n const [isInsideGroup, setIsInsideGroup] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (!isMobile) {\r\n return;\r\n }\r\n\r\n const timer = globalThis.window.setTimeout(() => {\r\n if (itemRef.current) {\r\n setIsInsideGroup(isInGroup(itemRef.current));\r\n }\r\n }, 0);\r\n\r\n return () => globalThis.window.clearTimeout(timer);\r\n }, [isInGroup, isMobile]);\r\n\r\n if (isMobile) {\r\n const navigate = (eventTarget: HTMLElement): void => {\r\n let submenuId: string | null = null;\r\n const closestElement = eventTarget.closest(\"[data-submenu-id]\");\r\n const closestId = closestElement?.getAttribute(\"data-submenu-id\");\r\n\r\n if (closestId) {\r\n submenuId = closestId;\r\n }\r\n\r\n if (!submenuId) {\r\n submenuId = props[\"data-parent-submenu-id\"] ?? props[\"data-parent-submenu\"] ?? null;\r\n }\r\n\r\n if (!submenuId) {\r\n return;\r\n }\r\n\r\n const title = typeof children === \"string\" ? children : MOBILE_SUBMENU_TITLE;\r\n navigateToSubmenu?.(submenuId, title);\r\n };\r\n\r\n const handleClick: React.MouseEventHandler<HTMLDivElement> = (event): void => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n onClick?.(event);\r\n navigate(event.currentTarget);\r\n };\r\n\r\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (event): void => {\r\n if (event.key !== \"Enter\" && event.key !== \" \") {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.currentTarget.click();\r\n };\r\n\r\n return (\r\n <div\r\n ref={itemRef}\r\n data-slot='drop-drawer-sub-trigger'\r\n data-inset={inset}\r\n role='menuitem'\r\n tabIndex={0}\r\n className={cn(\r\n styles.mobileItem,\r\n !isInsideGroup && styles.mobileStandaloneItem,\r\n isInsideGroup && styles.mobileGroupedItem,\r\n inset && styles.inset,\r\n className,\r\n )}\r\n onClick={handleClick}\r\n onKeyDown={handleKeyDown}\r\n {...props}>\r\n <div className={styles.itemChildren}>{children}</div>\r\n <ChevronRightIcon className={styles.chevron} />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <DropdownMenuSubTrigger\r\n data-slot='drop-drawer-sub-trigger'\r\n data-inset={inset}\r\n className={className}\r\n inset={inset}\r\n onClick={onClick}\r\n {...props}>\r\n {children}\r\n </DropdownMenuSubTrigger>\r\n );\r\n}\r\n\r\n/**\r\n * Renders the content region for a nested submenu.\r\n *\r\n * @remarks\r\n * - Renders only in desktop dropdown mode\r\n * - Built on Base UI Menu submenu popup primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerSubContent>\r\n * <DropDrawerItem>Details</DropDrawerItem>\r\n * </DropDrawerSubContent>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerSubContent({\r\n className,\r\n sideOffset = 4,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuSubContent>): React.JSX.Element | null {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n if (isMobile) {\r\n return null;\r\n }\r\n\r\n return (\r\n <DropdownMenuSubContent\r\n data-slot='drop-drawer-sub-content'\r\n sideOffset={sideOffset}\r\n className={cn(styles.dropdownSubContent, className)}\r\n {...props}>\r\n {children}\r\n </DropdownMenuSubContent>\r\n );\r\n}\r\n\r\nDropDrawer.displayName = \"DropDrawer\";\r\nDropDrawerTrigger.displayName = \"DropDrawerTrigger\";\r\nDropDrawerContent.displayName = \"DropDrawerContent\";\r\nDropDrawerItem.displayName = \"DropDrawerItem\";\r\nDropDrawerSeparator.displayName = \"DropDrawerSeparator\";\r\nDropDrawerLabel.displayName = \"DropDrawerLabel\";\r\nDropDrawerFooter.displayName = \"DropDrawerFooter\";\r\nDropDrawerGroup.displayName = \"DropDrawerGroup\";\r\nDropDrawerSub.displayName = \"DropDrawerSub\";\r\nDropDrawerSubTrigger.displayName = \"DropDrawerSubTrigger\";\r\nDropDrawerSubContent.displayName = \"DropDrawerSubContent\";\r\n\r\nexport {\r\n DropDrawer,\r\n DropDrawerContent,\r\n DropDrawerFooter,\r\n DropDrawerGroup,\r\n DropDrawerItem,\r\n DropDrawerLabel,\r\n DropDrawerSeparator,\r\n DropDrawerSub,\r\n DropDrawerSubContent,\r\n DropDrawerSubTrigger,\r\n DropDrawerTrigger,\r\n};\r\n"],"names":["MOBILE_MENU_TITLE","MOBILE_SUBMENU_TITLE","MOBILE_BACK_LABEL","DropDrawerContext","React","useDropDrawerContext","context","Error","Drawer","BaseDrawer","DrawerPortal","DrawerTrigger","props","asChild","children","className","render","otherProps","renderProp","useRender","mergeProps","undefined","DrawerOverlay","cn","styles","DrawerContent","DrawerHeader","DrawerFooter","DrawerTitle","DropdownMenu","BaseMenu","DropdownMenuSub","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","inset","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuSubTrigger","ChevronRightIcon","DropdownMenuSubContent","SubmenuContext","DropDrawer","isMobile","useIsMobile","DropDrawerTrigger","DropDrawerContent","activeSubmenu","setActiveSubmenu","submenuTitle","setSubmenuTitle","submenuStack","setSubmenuStack","animationDirection","setAnimationDirection","submenuContentRef","Map","navigateToSubmenu","id","title","previousStack","goBack","newStack","previousSubmenu","registerSubmenuContent","content","extractSubmenuContent","elements","targetId","result","findSubmenuContent","node","element","DropDrawerSub","elementId","dataSubmenuId","child","DropDrawerSubContent","subContentElement","contentChild","getSubmenuContent","cachedContent","submenuContent","variants","direction","transition","ChevronLeftIcon","AnimatePresence","motion","DropDrawerItem","closeOnClick","disabled","icon","onClick","onSelect","isInGroup","parent","itemRef","isInsideGroup","setIsInsideGroup","timer","globalThis","handleSelect","event","handleClick","handleKeyDown","parentSubmenuId","handleDesktopClick","DropDrawerSeparator","DropDrawerLabel","DropDrawerFooter","DropDrawerGroup","childrenWithSeparators","childArray","filteredChildren","index","generatedId","submenuId","contentItems","childElement","processedChildren","DropDrawerSubTrigger","navigate","eventTarget","closestElement","closestId","sideOffset"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import "./dropdrawer_module.css";
2
+ const dropdrawer_module = {
3
+ drawerOverlay: "drawerOverlay-FGEeTq",
4
+ drawerViewport: "drawerViewport-TlEqEQ",
5
+ drawerContent: "drawerContent-WQbO66",
6
+ drawerInnerContent: "drawerInnerContent-Y3I8oJ",
7
+ drawerHandle: "drawerHandle-sRMRMM",
8
+ drawerHeader: "drawerHeader-O5p056",
9
+ drawerTitle: "drawerTitle-dSviUE",
10
+ drawerFooter: "drawerFooter-qY7asZ",
11
+ mobileFooter: "mobileFooter-f20nGx",
12
+ desktopFooter: "desktopFooter-ONeD9L",
13
+ dropdownPositioner: "dropdownPositioner-W0xcuV",
14
+ desktopContent: "desktopContent-RZKVPR",
15
+ dropdownContent: "dropdownContent-fE8EQa",
16
+ dropdownSubContent: "dropdownSubContent-OV24Od",
17
+ desktopItem: "desktopItem-b0ExOL",
18
+ desktopSubTrigger: "desktopSubTrigger-Up6mAV",
19
+ desktopLabel: "desktopLabel-tFggqC",
20
+ desktopSeparator: "desktopSeparator-plLeiH",
21
+ mobileContent: "mobileContent-YJOYyH",
22
+ mobileHeaderRow: "mobileHeaderRow-qNFUjI",
23
+ backButton: "backButton-Z7hq2B",
24
+ mobileItem: "mobileItem-oAK1bl",
25
+ mobileMainViewport: "mobileMainViewport-n9VQaa",
26
+ mobileViewport: "mobileViewport-Gl4NCJ",
27
+ mobileMotionPanel: "mobileMotionPanel-OvrSdM",
28
+ screenReaderOnlyHeader: "screenReaderOnlyHeader-R6L8Ih",
29
+ mobileStandaloneItem: "mobileStandaloneItem-RZQ_8s",
30
+ mobileGroupedItem: "mobileGroupedItem-aRfEd_",
31
+ mobileLabelWrapper: "mobileLabelWrapper-nJJ5Li",
32
+ mobileLabel: "mobileLabel-pUqmzL",
33
+ mobileGroup: "mobileGroup-TRwLzU",
34
+ mobileGroupSeparator: "mobileGroupSeparator-DBNAEM",
35
+ itemChildren: "itemChildren-KW73hd",
36
+ itemRow: "itemRow-EvnMNv",
37
+ chevron: "chevron-W6muV5",
38
+ itemIcon: "itemIcon-faT4mo",
39
+ inset: "inset-MwMTbk"
40
+ };
41
+ export default dropdrawer_module;
42
+
43
+ //# sourceMappingURL=dropdrawer.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components/ui/dropdrawer.module.js","sources":["../../../src/components/ui/dropdrawer.module.css"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./dropdrawer_module.css\"\nexport default {\"drawerOverlay\":\"drawerOverlay-FGEeTq\",\"drawerViewport\":\"drawerViewport-TlEqEQ\",\"drawerContent\":\"drawerContent-WQbO66\",\"drawerInnerContent\":\"drawerInnerContent-Y3I8oJ\",\"drawerHandle\":\"drawerHandle-sRMRMM\",\"drawerHeader\":\"drawerHeader-O5p056\",\"drawerTitle\":\"drawerTitle-dSviUE\",\"drawerFooter\":\"drawerFooter-qY7asZ\",\"mobileFooter\":\"mobileFooter-f20nGx\",\"desktopFooter\":\"desktopFooter-ONeD9L\",\"dropdownPositioner\":\"dropdownPositioner-W0xcuV\",\"desktopContent\":\"desktopContent-RZKVPR\",\"dropdownContent\":\"dropdownContent-fE8EQa\",\"dropdownSubContent\":\"dropdownSubContent-OV24Od\",\"desktopItem\":\"desktopItem-b0ExOL\",\"desktopSubTrigger\":\"desktopSubTrigger-Up6mAV\",\"desktopLabel\":\"desktopLabel-tFggqC\",\"desktopSeparator\":\"desktopSeparator-plLeiH\",\"mobileContent\":\"mobileContent-YJOYyH\",\"mobileHeaderRow\":\"mobileHeaderRow-qNFUjI\",\"backButton\":\"backButton-Z7hq2B\",\"mobileItem\":\"mobileItem-oAK1bl\",\"mobileMainViewport\":\"mobileMainViewport-n9VQaa\",\"mobileViewport\":\"mobileViewport-Gl4NCJ\",\"mobileMotionPanel\":\"mobileMotionPanel-OvrSdM\",\"screenReaderOnlyHeader\":\"screenReaderOnlyHeader-R6L8Ih\",\"mobileStandaloneItem\":\"mobileStandaloneItem-RZQ_8s\",\"mobileGroupedItem\":\"mobileGroupedItem-aRfEd_\",\"mobileLabelWrapper\":\"mobileLabelWrapper-nJJ5Li\",\"mobileLabel\":\"mobileLabel-pUqmzL\",\"mobileGroup\":\"mobileGroup-TRwLzU\",\"mobileGroupSeparator\":\"mobileGroupSeparator-DBNAEM\",\"itemChildren\":\"itemChildren-KW73hd\",\"itemRow\":\"itemRow-EvnMNv\",\"chevron\":\"chevron-W6muV5\",\"itemIcon\":\"itemIcon-faT4mo\",\"inset\":\"inset-MwMTbk\"};"],"names":[],"mappings":";AAEA,0BAAe;IAAC,eAAgB;IAAuB,gBAAiB;IAAwB,eAAgB;IAAuB,oBAAqB;IAA4B,cAAe;IAAsB,cAAe;IAAsB,aAAc;IAAqB,cAAe;IAAsB,cAAe;IAAsB,eAAgB;IAAuB,oBAAqB;IAA4B,gBAAiB;IAAwB,iBAAkB;IAAyB,oBAAqB;IAA4B,aAAc;IAAqB,mBAAoB;IAA2B,cAAe;IAAsB,kBAAmB;IAA0B,eAAgB;IAAuB,iBAAkB;IAAyB,YAAa;IAAoB,YAAa;IAAoB,oBAAqB;IAA4B,gBAAiB;IAAwB,mBAAoB;IAA2B,wBAAyB;IAAgC,sBAAuB;IAA8B,mBAAoB;IAA2B,oBAAqB;IAA4B,aAAc;IAAqB,aAAc;IAAqB,sBAAuB;IAA8B,cAAe;IAAsB,SAAU;IAAiB,SAAU;IAAiB,UAAW;IAAkB,OAAQ;AAAc"}
@@ -0,0 +1,307 @@
1
+ .drawerOverlay-FGEeTq {
2
+ transition: opacity var(--ac-transition-normal);
3
+ z-index: 50;
4
+ background: #0000008c;
5
+ position: fixed;
6
+ inset: 0;
7
+
8
+ @supports (-webkit-touch-callout: none) {
9
+ position: absolute;
10
+ }
11
+ }
12
+
13
+ .drawerOverlay-FGEeTq[data-ending-style], .drawerOverlay-FGEeTq[data-starting-style] {
14
+ opacity: 0;
15
+ }
16
+
17
+ .drawerViewport-TlEqEQ {
18
+ pointer-events: none;
19
+ z-index: 51;
20
+ justify-content: center;
21
+ align-items: flex-end;
22
+ display: flex;
23
+ position: fixed;
24
+ inset: 0;
25
+ }
26
+
27
+ .drawerContent-WQbO66 {
28
+ background: var(--ac-popover);
29
+ border: 1px solid var(--ac-border);
30
+ border-radius: var(--ac-radius-lg) var(--ac-radius-lg) 0 0;
31
+ color: var(--ac-popover-foreground);
32
+ pointer-events: auto;
33
+ max-height: 95vh;
34
+ transition: opacity var(--ac-transition-normal),transform var(--ac-transition-normal);
35
+ border-bottom: 0;
36
+ flex-direction: column;
37
+ width: min(100%, 48rem);
38
+ margin-top: 6rem;
39
+ padding: 1rem 1rem 1.5rem;
40
+ display: flex;
41
+ position: relative;
42
+ inset-inline: 0;
43
+ box-shadow: 0 -16px 40px -16px #00000059;
44
+ }
45
+
46
+ .drawerContent-WQbO66[data-ending-style], .drawerContent-WQbO66[data-starting-style] {
47
+ opacity: 0;
48
+ transform: translateY(1rem);
49
+ }
50
+
51
+ .drawerInnerContent-Y3I8oJ {
52
+ flex-direction: column;
53
+ flex: 1;
54
+ min-height: 0;
55
+ display: flex;
56
+ }
57
+
58
+ .drawerHandle-sRMRMM {
59
+ background: var(--ac-border);
60
+ border-radius: 9999px;
61
+ width: 4rem;
62
+ height: .25rem;
63
+ margin: 0 auto 1rem;
64
+ }
65
+
66
+ .drawerHeader-O5p056 {
67
+ text-align: center;
68
+ gap: .375rem;
69
+ padding: 0 0 1rem;
70
+ display: grid;
71
+ }
72
+
73
+ .drawerTitle-dSviUE {
74
+ font-size: var(--ac-text-lg);
75
+ letter-spacing: -.02em;
76
+ font-weight: 600;
77
+ line-height: 1.2;
78
+ }
79
+
80
+ .drawerFooter-qY7asZ, .mobileFooter-f20nGx {
81
+ flex-direction: column;
82
+ gap: .5rem;
83
+ margin-top: auto;
84
+ padding-top: 1rem;
85
+ display: flex;
86
+ }
87
+
88
+ .desktopFooter-ONeD9L {
89
+ padding: .5rem;
90
+ }
91
+
92
+ .dropdownPositioner-W0xcuV {
93
+ z-index: 50;
94
+ }
95
+
96
+ .desktopContent-RZKVPR, .dropdownContent-fE8EQa, .dropdownSubContent-OV24Od {
97
+ background: var(--ac-popover);
98
+ border: 1px solid var(--ac-border);
99
+ border-radius: var(--ac-radius-md);
100
+ color: var(--ac-popover-foreground);
101
+ min-width: 13.75rem;
102
+ transition: opacity var(--ac-transition-normal),transform var(--ac-transition-normal);
103
+ overflow: hidden auto;
104
+ box-shadow: 0 16px 40px -16px #00000059;
105
+ }
106
+
107
+ .desktopContent-RZKVPR[data-ending-style], .desktopContent-RZKVPR[data-starting-style], .dropdownContent-fE8EQa[data-ending-style], .dropdownContent-fE8EQa[data-starting-style], .dropdownSubContent-OV24Od[data-ending-style], .dropdownSubContent-OV24Od[data-starting-style] {
108
+ opacity: 0;
109
+ transform: scale(.96);
110
+ }
111
+
112
+ .desktopContent-RZKVPR, .dropdownContent-fE8EQa {
113
+ max-height: min(70vh,var(--available-height, 70vh));
114
+ padding: .25rem;
115
+ }
116
+
117
+ .dropdownSubContent-OV24Od {
118
+ max-height: min(60vh,var(--available-height, 60vh));
119
+ padding: .25rem;
120
+ }
121
+
122
+ .desktopItem-b0ExOL, .desktopSubTrigger-Up6mAV {
123
+ border-radius: var(--ac-radius-sm);
124
+ color: inherit;
125
+ cursor: default;
126
+ font-size: var(--ac-text-sm);
127
+ -webkit-user-select: none;
128
+ user-select: none;
129
+ outline: none;
130
+ align-items: center;
131
+ gap: .5rem;
132
+ width: 100%;
133
+ min-height: 2rem;
134
+ padding: .375rem .5rem;
135
+ display: flex;
136
+ position: relative;
137
+ }
138
+
139
+ .desktopItem-b0ExOL[data-highlighted], .desktopSubTrigger-Up6mAV[data-highlighted], .desktopSubTrigger-Up6mAV[data-popup-open] {
140
+ background: var(--ac-accent);
141
+ color: var(--ac-accent-foreground);
142
+ }
143
+
144
+ .desktopItem-b0ExOL[data-disabled], .desktopSubTrigger-Up6mAV[data-disabled] {
145
+ opacity: .5;
146
+ pointer-events: none;
147
+ }
148
+
149
+ .desktopLabel-tFggqC {
150
+ font-size: var(--ac-text-sm);
151
+ padding: .375rem .5rem;
152
+ font-weight: 600;
153
+ }
154
+
155
+ .desktopSeparator-plLeiH {
156
+ background: var(--ac-border);
157
+ height: 1px;
158
+ margin: .25rem -.25rem;
159
+ }
160
+
161
+ .mobileContent-YJOYyH {
162
+ max-height: 90vh;
163
+ }
164
+
165
+ .mobileHeaderRow-qNFUjI {
166
+ align-items: center;
167
+ gap: .5rem;
168
+ display: flex;
169
+ }
170
+
171
+ .backButton-Z7hq2B {
172
+ color: inherit;
173
+ background: none;
174
+ border: 0;
175
+ border-radius: 9999px;
176
+ justify-content: center;
177
+ align-items: center;
178
+ width: 2rem;
179
+ height: 2rem;
180
+ padding: .25rem;
181
+ display: inline-flex;
182
+ }
183
+
184
+ .backButton-Z7hq2B:hover {
185
+ background: color-mix(in oklch,var(--ac-muted),transparent 50%);
186
+ }
187
+
188
+ .backButton-Z7hq2B:focus-visible, .mobileItem-oAK1bl:focus-visible {
189
+ outline: 2px solid var(--ac-ring);
190
+ outline-offset: 2px;
191
+ }
192
+
193
+ .mobileMainViewport-n9VQaa, .mobileViewport-Gl4NCJ {
194
+ overflow-y: auto;
195
+ }
196
+
197
+ .mobileViewport-Gl4NCJ {
198
+ flex: 1;
199
+ max-height: 70vh;
200
+ position: relative;
201
+ }
202
+
203
+ .mobileMainViewport-n9VQaa {
204
+ max-height: 70vh;
205
+ }
206
+
207
+ .mobileMotionPanel-OvrSdM {
208
+ width: 100%;
209
+ min-height: 100%;
210
+ padding-bottom: 1.5rem;
211
+ }
212
+
213
+ .screenReaderOnlyHeader-R6L8Ih {
214
+ clip: rect(0,0,0,0);
215
+ white-space: nowrap;
216
+ border: 0;
217
+ width: 1px;
218
+ height: 1px;
219
+ margin: -1px;
220
+ padding: 0;
221
+ position: absolute;
222
+ overflow: hidden;
223
+ }
224
+
225
+ .mobileItem-oAK1bl {
226
+ color: inherit;
227
+ cursor: pointer;
228
+ text-align: left;
229
+ background: none;
230
+ border: 0;
231
+ justify-content: space-between;
232
+ align-items: center;
233
+ width: 100%;
234
+ padding: 1rem;
235
+ display: flex;
236
+ }
237
+
238
+ .mobileStandaloneItem-RZQ_8s {
239
+ background: var(--ac-muted);
240
+ border-radius: var(--ac-radius-md);
241
+ margin: .375rem .5rem;
242
+ }
243
+
244
+ .mobileGroupedItem-aRfEd_ {
245
+ background: none;
246
+ }
247
+
248
+ .mobileLabelWrapper-nJJ5Li {
249
+ padding: 0;
250
+ }
251
+
252
+ .mobileLabel-pUqmzL {
253
+ color: var(--ac-muted-foreground);
254
+ font-size: var(--ac-text-sm);
255
+ padding: .5rem 1rem;
256
+ font-weight: 500;
257
+ }
258
+
259
+ .mobileGroup-TRwLzU {
260
+ background: var(--ac-muted);
261
+ border-radius: var(--ac-radius-xl);
262
+ margin: .75rem .5rem;
263
+ overflow: hidden;
264
+ }
265
+
266
+ .mobileGroupSeparator-DBNAEM {
267
+ background: var(--ac-border);
268
+ height: 1px;
269
+ }
270
+
271
+ .itemChildren-KW73hd, .itemRow-EvnMNv {
272
+ align-items: center;
273
+ gap: .5rem;
274
+ display: flex;
275
+ }
276
+
277
+ .itemRow-EvnMNv {
278
+ justify-content: space-between;
279
+ width: 100%;
280
+ }
281
+
282
+ .chevron-W6muV5, .itemIcon-faT4mo {
283
+ flex-shrink: 0;
284
+ }
285
+
286
+ .chevron-W6muV5 {
287
+ width: 1rem;
288
+ height: 1rem;
289
+ }
290
+
291
+ .inset-MwMTbk {
292
+ padding-left: 2rem;
293
+ }
294
+
295
+ .mobileItem-oAK1bl[data-disabled="true"] {
296
+ opacity: .5;
297
+ pointer-events: none;
298
+ }
299
+
300
+ @media (width >= 640px) {
301
+ .drawerHeader-O5p056 {
302
+ text-align: left;
303
+ }
304
+ }
305
+
306
+
307
+ /*# sourceMappingURL=dropdrawer_module.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack://./home/runner/work/arolariu.ro/arolariu.ro/packages/components/src/components/ui/dropdrawer.module.css","webpack://./src/components/ui/dropdrawer.module.css"],"names":[],"mappings":"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","sourcesContent":[".drawerOverlay{background:rgba(0,0,0,.55);inset:0;position:fixed;transition:opacity var(--ac-transition-normal);z-index:50;@supports (-webkit-touch-callout:none){position:absolute}}.drawerOverlay[data-ending-style],.drawerOverlay[data-starting-style]{opacity:0}.drawerViewport{align-items:flex-end;display:flex;inset:0;justify-content:center;pointer-events:none;position:fixed;z-index:51}.drawerContent{background:var(--ac-popover);border:1px solid var(--ac-border);border-bottom:0;border-radius:var(--ac-radius-lg) var(--ac-radius-lg) 0 0;box-shadow:0 -16px 40px -16px rgba(0,0,0,.35);color:var(--ac-popover-foreground);display:flex;flex-direction:column;inset-inline:0;margin-top:6rem;max-height:95vh;padding:1rem 1rem 1.5rem;pointer-events:auto;position:relative;transition:opacity var(--ac-transition-normal),transform var(--ac-transition-normal);width:min(100%,48rem)}.drawerContent[data-ending-style],.drawerContent[data-starting-style]{opacity:0;transform:translateY(1rem)}.drawerInnerContent{display:flex;flex:1;flex-direction:column;min-height:0}.drawerHandle{background:var(--ac-border);border-radius:9999px;height:.25rem;margin:0 auto 1rem;width:4rem}.drawerHeader{display:grid;gap:.375rem;padding:0 0 1rem;text-align:center}.drawerTitle{font-size:var(--ac-text-lg);font-weight:600;letter-spacing:-.02em;line-height:1.2}.drawerFooter,.mobileFooter{display:flex;flex-direction:column;gap:.5rem;margin-top:auto;padding-top:1rem}.desktopFooter{padding:.5rem}.dropdownPositioner{z-index:50}.desktopContent,.dropdownContent,.dropdownSubContent{background:var(--ac-popover);border:1px solid var(--ac-border);border-radius:var(--ac-radius-md);box-shadow:0 16px 40px -16px rgba(0,0,0,.35);color:var(--ac-popover-foreground);min-width:13.75rem;overflow:hidden auto;transition:opacity var(--ac-transition-normal),transform var(--ac-transition-normal)}.desktopContent[data-ending-style],.desktopContent[data-starting-style],.dropdownContent[data-ending-style],.dropdownContent[data-starting-style],.dropdownSubContent[data-ending-style],.dropdownSubContent[data-starting-style]{opacity:0;transform:scale(.96)}.desktopContent,.dropdownContent{max-height:min(70vh,var(--available-height,70vh));padding:.25rem}.dropdownSubContent{max-height:min(60vh,var(--available-height,60vh));padding:.25rem}.desktopItem,.desktopSubTrigger{align-items:center;border-radius:var(--ac-radius-sm);color:inherit;cursor:default;display:flex;font-size:var(--ac-text-sm);gap:.5rem;min-height:2rem;outline:none;padding:.375rem .5rem;position:relative;user-select:none;width:100%}.desktopItem[data-highlighted],.desktopSubTrigger[data-highlighted],.desktopSubTrigger[data-popup-open]{background:var(--ac-accent);color:var(--ac-accent-foreground)}.desktopItem[data-disabled],.desktopSubTrigger[data-disabled]{opacity:.5;pointer-events:none}.desktopLabel{font-size:var(--ac-text-sm);font-weight:600;padding:.375rem .5rem}.desktopSeparator{background:var(--ac-border);height:1px;margin:.25rem -.25rem}.mobileContent{max-height:90vh}.mobileHeaderRow{align-items:center;display:flex;gap:.5rem}.backButton{align-items:center;background:transparent;border:0;border-radius:9999px;color:inherit;display:inline-flex;height:2rem;justify-content:center;padding:.25rem;width:2rem}.backButton:hover{background:color-mix(in oklch,var(--ac-muted),transparent 50%)}.backButton:focus-visible,.mobileItem:focus-visible{outline:2px solid var(--ac-ring);outline-offset:2px}.mobileMainViewport,.mobileViewport{overflow-y:auto}.mobileViewport{flex:1;max-height:70vh;position:relative}.mobileMainViewport{max-height:70vh}.mobileMotionPanel{min-height:100%;padding-bottom:1.5rem;width:100%}.screenReaderOnlyHeader{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border:0;white-space:nowrap}.mobileItem{align-items:center;background:transparent;border:0;color:inherit;cursor:pointer;display:flex;justify-content:space-between;padding:1rem;text-align:left;width:100%}.mobileStandaloneItem{background:var(--ac-muted);border-radius:var(--ac-radius-md);margin:.375rem .5rem}.mobileGroupedItem{background:transparent}.mobileLabelWrapper{padding:0}.mobileLabel{color:var(--ac-muted-foreground);font-size:var(--ac-text-sm);font-weight:500;padding:.5rem 1rem}.mobileGroup{background:var(--ac-muted);border-radius:var(--ac-radius-xl);margin:.75rem .5rem;overflow:hidden}.mobileGroupSeparator{background:var(--ac-border);height:1px}.itemChildren,.itemRow{align-items:center;display:flex;gap:.5rem}.itemRow{justify-content:space-between;width:100%}.chevron,.itemIcon{flex-shrink:0}.chevron{height:1rem;width:1rem}.inset{padding-left:2rem}.mobileItem[data-disabled=true]{opacity:.5;pointer-events:none}@media (min-width:640px){.drawerHeader{text-align:left}}",".drawerOverlay {\n transition: opacity var(--ac-transition-normal);\n z-index: 50;\n background: #0000008c;\n position: fixed;\n inset: 0;\n\n @supports (-webkit-touch-callout: none) {\n position: absolute;\n }\n}\n\n.drawerOverlay[data-ending-style], .drawerOverlay[data-starting-style] {\n opacity: 0;\n}\n\n.drawerViewport {\n pointer-events: none;\n z-index: 51;\n justify-content: center;\n align-items: flex-end;\n display: flex;\n position: fixed;\n inset: 0;\n}\n\n.drawerContent {\n background: var(--ac-popover);\n border: 1px solid var(--ac-border);\n border-radius: var(--ac-radius-lg) var(--ac-radius-lg) 0 0;\n color: var(--ac-popover-foreground);\n pointer-events: auto;\n max-height: 95vh;\n transition: opacity var(--ac-transition-normal),transform var(--ac-transition-normal);\n border-bottom: 0;\n flex-direction: column;\n width: min(100%, 48rem);\n margin-top: 6rem;\n padding: 1rem 1rem 1.5rem;\n display: flex;\n position: relative;\n inset-inline: 0;\n box-shadow: 0 -16px 40px -16px #00000059;\n}\n\n.drawerContent[data-ending-style], .drawerContent[data-starting-style] {\n opacity: 0;\n transform: translateY(1rem);\n}\n\n.drawerInnerContent {\n flex-direction: column;\n flex: 1;\n min-height: 0;\n display: flex;\n}\n\n.drawerHandle {\n background: var(--ac-border);\n border-radius: 9999px;\n width: 4rem;\n height: .25rem;\n margin: 0 auto 1rem;\n}\n\n.drawerHeader {\n text-align: center;\n gap: .375rem;\n padding: 0 0 1rem;\n display: grid;\n}\n\n.drawerTitle {\n font-size: var(--ac-text-lg);\n letter-spacing: -.02em;\n font-weight: 600;\n line-height: 1.2;\n}\n\n.drawerFooter, .mobileFooter {\n flex-direction: column;\n gap: .5rem;\n margin-top: auto;\n padding-top: 1rem;\n display: flex;\n}\n\n.desktopFooter {\n padding: .5rem;\n}\n\n.dropdownPositioner {\n z-index: 50;\n}\n\n.desktopContent, .dropdownContent, .dropdownSubContent {\n background: var(--ac-popover);\n border: 1px solid var(--ac-border);\n border-radius: var(--ac-radius-md);\n color: var(--ac-popover-foreground);\n min-width: 13.75rem;\n transition: opacity var(--ac-transition-normal),transform var(--ac-transition-normal);\n overflow: hidden auto;\n box-shadow: 0 16px 40px -16px #00000059;\n}\n\n.desktopContent[data-ending-style], .desktopContent[data-starting-style], .dropdownContent[data-ending-style], .dropdownContent[data-starting-style], .dropdownSubContent[data-ending-style], .dropdownSubContent[data-starting-style] {\n opacity: 0;\n transform: scale(.96);\n}\n\n.desktopContent, .dropdownContent {\n max-height: min(70vh,var(--available-height, 70vh));\n padding: .25rem;\n}\n\n.dropdownSubContent {\n max-height: min(60vh,var(--available-height, 60vh));\n padding: .25rem;\n}\n\n.desktopItem, .desktopSubTrigger {\n border-radius: var(--ac-radius-sm);\n color: inherit;\n cursor: default;\n font-size: var(--ac-text-sm);\n -webkit-user-select: none;\n user-select: none;\n outline: none;\n align-items: center;\n gap: .5rem;\n width: 100%;\n min-height: 2rem;\n padding: .375rem .5rem;\n display: flex;\n position: relative;\n}\n\n.desktopItem[data-highlighted], .desktopSubTrigger[data-highlighted], .desktopSubTrigger[data-popup-open] {\n background: var(--ac-accent);\n color: var(--ac-accent-foreground);\n}\n\n.desktopItem[data-disabled], .desktopSubTrigger[data-disabled] {\n opacity: .5;\n pointer-events: none;\n}\n\n.desktopLabel {\n font-size: var(--ac-text-sm);\n padding: .375rem .5rem;\n font-weight: 600;\n}\n\n.desktopSeparator {\n background: var(--ac-border);\n height: 1px;\n margin: .25rem -.25rem;\n}\n\n.mobileContent {\n max-height: 90vh;\n}\n\n.mobileHeaderRow {\n align-items: center;\n gap: .5rem;\n display: flex;\n}\n\n.backButton {\n color: inherit;\n background: none;\n border: 0;\n border-radius: 9999px;\n justify-content: center;\n align-items: center;\n width: 2rem;\n height: 2rem;\n padding: .25rem;\n display: inline-flex;\n}\n\n.backButton:hover {\n background: color-mix(in oklch,var(--ac-muted),transparent 50%);\n}\n\n.backButton:focus-visible, .mobileItem:focus-visible {\n outline: 2px solid var(--ac-ring);\n outline-offset: 2px;\n}\n\n.mobileMainViewport, .mobileViewport {\n overflow-y: auto;\n}\n\n.mobileViewport {\n flex: 1;\n max-height: 70vh;\n position: relative;\n}\n\n.mobileMainViewport {\n max-height: 70vh;\n}\n\n.mobileMotionPanel {\n width: 100%;\n min-height: 100%;\n padding-bottom: 1.5rem;\n}\n\n.screenReaderOnlyHeader {\n clip: rect(0,0,0,0);\n white-space: nowrap;\n border: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.mobileItem {\n color: inherit;\n cursor: pointer;\n text-align: left;\n background: none;\n border: 0;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n padding: 1rem;\n display: flex;\n}\n\n.mobileStandaloneItem {\n background: var(--ac-muted);\n border-radius: var(--ac-radius-md);\n margin: .375rem .5rem;\n}\n\n.mobileGroupedItem {\n background: none;\n}\n\n.mobileLabelWrapper {\n padding: 0;\n}\n\n.mobileLabel {\n color: var(--ac-muted-foreground);\n font-size: var(--ac-text-sm);\n padding: .5rem 1rem;\n font-weight: 500;\n}\n\n.mobileGroup {\n background: var(--ac-muted);\n border-radius: var(--ac-radius-xl);\n margin: .75rem .5rem;\n overflow: hidden;\n}\n\n.mobileGroupSeparator {\n background: var(--ac-border);\n height: 1px;\n}\n\n.itemChildren, .itemRow {\n align-items: center;\n gap: .5rem;\n display: flex;\n}\n\n.itemRow {\n justify-content: space-between;\n width: 100%;\n}\n\n.chevron, .itemIcon {\n flex-shrink: 0;\n}\n\n.chevron {\n width: 1rem;\n height: 1rem;\n}\n\n.inset {\n padding-left: 2rem;\n}\n\n.mobileItem[data-disabled=\"true\"] {\n opacity: .5;\n pointer-events: none;\n}\n\n@media (width >= 640px) {\n .drawerHeader {\n text-align: left;\n }\n}\n"],"sourceRoot":""}