@kuzenbo/core 0.0.3 → 0.0.5

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 (342) hide show
  1. package/dist/avatar-CXhwmJgG.js +65 -0
  2. package/dist/avatar-CXhwmJgG.js.map +1 -0
  3. package/dist/{avatar-image-Ce26D2fb.d.ts → avatar-DpiupAAM.d.ts} +35 -2
  4. package/dist/avatar-DpiupAAM.d.ts.map +1 -0
  5. package/dist/badge-BKRm6jL7.js +58 -0
  6. package/dist/badge-BKRm6jL7.js.map +1 -0
  7. package/dist/button-nAbTNrxA.d.ts +78 -0
  8. package/dist/button-nAbTNrxA.d.ts.map +1 -0
  9. package/dist/{dialog-trigger-BUF3elAP.js → dialog-CD5lfQA9.js} +33 -10
  10. package/dist/dialog-CD5lfQA9.js.map +1 -0
  11. package/dist/{dialog-viewport-Ce1huyAI.d.ts → dialog-DEkdr-9K.d.ts} +64 -2
  12. package/dist/dialog-DEkdr-9K.d.ts.map +1 -0
  13. package/dist/{dropdown-menu-trigger-COnFGfDa.js → dropdown-menu-BJi-V71O.js} +137 -101
  14. package/dist/dropdown-menu-BJi-V71O.js.map +1 -0
  15. package/dist/{dropdown-menu-trigger-BpgtLUvf.d.ts → dropdown-menu-Bpj576m0.d.ts} +259 -123
  16. package/dist/dropdown-menu-Bpj576m0.d.ts.map +1 -0
  17. package/dist/input-Ex9ZRqbo.js +38 -0
  18. package/dist/input-Ex9ZRqbo.js.map +1 -0
  19. package/dist/input-WWoBCgxe.d.ts +46 -0
  20. package/dist/input-WWoBCgxe.d.ts.map +1 -0
  21. package/dist/{input-group-textarea-B-rP98r5.js → input-group-CjcHP0L4.js} +50 -31
  22. package/dist/input-group-CjcHP0L4.js.map +1 -0
  23. package/dist/provider.js +4 -2
  24. package/dist/scroll-bar-C4qEUKlT.js.map +1 -1
  25. package/dist/separator-C8Qw2ADs.d.ts +13 -0
  26. package/dist/separator-C8Qw2ADs.d.ts.map +1 -0
  27. package/dist/{sheet-trigger-D7neoTF5.js → sheet-imSHXfFH.js} +29 -10
  28. package/dist/sheet-imSHXfFH.js.map +1 -0
  29. package/dist/{size-context-BjRwqlSg.js → size-context-CvLl3pMC.js} +3 -3
  30. package/dist/size-context-CvLl3pMC.js.map +1 -0
  31. package/dist/size-context-DXfCAlWF.d.ts.map +1 -1
  32. package/dist/size-provider-18EvJgDT.js.map +1 -1
  33. package/dist/size-provider-Bd2C6gKd.d.ts.map +1 -1
  34. package/dist/size-system-BTsMqZRQ.js +99 -0
  35. package/dist/size-system-BTsMqZRQ.js.map +1 -0
  36. package/dist/size-system-wzOLSuax.d.ts.map +1 -1
  37. package/dist/size.js +4 -2
  38. package/dist/{slider-root-presentation-ChJHPMIV.js → slider-root-presentation-B6OO_iCT.js} +19 -19
  39. package/dist/slider-root-presentation-B6OO_iCT.js.map +1 -0
  40. package/dist/{slider-value-Db8SCu0c.d.ts → slider-style-tokens-CZezJilZ.d.ts} +55 -55
  41. package/dist/slider-style-tokens-CZezJilZ.d.ts.map +1 -0
  42. package/dist/textarea-C8dsnn8D.d.ts +37 -0
  43. package/dist/textarea-C8dsnn8D.d.ts.map +1 -0
  44. package/dist/textarea-CkiM1N_I.js +39 -0
  45. package/dist/textarea-CkiM1N_I.js.map +1 -0
  46. package/dist/toggle-CxkIncmZ.d.ts +53 -0
  47. package/dist/toggle-CxkIncmZ.d.ts.map +1 -0
  48. package/dist/{tooltip-trigger-qXw-_nbh.js → tooltip-D0BEpCQx.js} +38 -13
  49. package/dist/tooltip-D0BEpCQx.js.map +1 -0
  50. package/dist/{tooltip-viewport-csA6luqI.d.ts → tooltip-DbJxt69l.d.ts} +61 -13
  51. package/dist/tooltip-DbJxt69l.d.ts.map +1 -0
  52. package/dist/ui/accordion.d.ts +4 -4
  53. package/dist/ui/accordion.d.ts.map +1 -1
  54. package/dist/ui/accordion.js +53 -52
  55. package/dist/ui/accordion.js.map +1 -1
  56. package/dist/ui/affix.d.ts +3 -2
  57. package/dist/ui/affix.d.ts.map +1 -1
  58. package/dist/ui/affix.js +8 -7
  59. package/dist/ui/affix.js.map +1 -1
  60. package/dist/ui/alert-dialog.d.ts +3 -1
  61. package/dist/ui/alert-dialog.d.ts.map +1 -1
  62. package/dist/ui/alert-dialog.js +12 -9
  63. package/dist/ui/alert-dialog.js.map +1 -1
  64. package/dist/ui/alert.d.ts +32 -32
  65. package/dist/ui/alert.d.ts.map +1 -1
  66. package/dist/ui/alert.js +88 -86
  67. package/dist/ui/alert.js.map +1 -1
  68. package/dist/ui/announcement.d.ts.map +1 -1
  69. package/dist/ui/announcement.js +5 -3
  70. package/dist/ui/announcement.js.map +1 -1
  71. package/dist/ui/aspect-ratio.d.ts.map +1 -1
  72. package/dist/ui/aspect-ratio.js.map +1 -1
  73. package/dist/ui/autocomplete.d.ts +74 -74
  74. package/dist/ui/autocomplete.d.ts.map +1 -1
  75. package/dist/ui/autocomplete.js +57 -53
  76. package/dist/ui/autocomplete.js.map +1 -1
  77. package/dist/ui/avatar.d.ts +2 -39
  78. package/dist/ui/avatar.js +2 -24
  79. package/dist/ui/badge.d.ts +28 -28
  80. package/dist/ui/badge.d.ts.map +1 -1
  81. package/dist/ui/badge.js +3 -53
  82. package/dist/ui/breadcrumb.d.ts +64 -64
  83. package/dist/ui/breadcrumb.d.ts.map +1 -1
  84. package/dist/ui/breadcrumb.js +49 -45
  85. package/dist/ui/breadcrumb.js.map +1 -1
  86. package/dist/ui/button-group.d.ts +34 -34
  87. package/dist/ui/button-group.d.ts.map +1 -1
  88. package/dist/ui/button-group.js +31 -28
  89. package/dist/ui/button-group.js.map +1 -1
  90. package/dist/ui/button.d.ts +2 -78
  91. package/dist/ui/button.js +42 -42
  92. package/dist/ui/button.js.map +1 -1
  93. package/dist/ui/card.d.ts.map +1 -1
  94. package/dist/ui/card.js +8 -6
  95. package/dist/ui/card.js.map +1 -1
  96. package/dist/ui/carousel.d.ts +1 -1
  97. package/dist/ui/carousel.d.ts.map +1 -1
  98. package/dist/ui/carousel.js +36 -17
  99. package/dist/ui/carousel.js.map +1 -1
  100. package/dist/ui/checkbox-group.d.ts.map +1 -1
  101. package/dist/ui/checkbox-group.js +2 -0
  102. package/dist/ui/checkbox-group.js.map +1 -1
  103. package/dist/ui/checkbox.d.ts +20 -20
  104. package/dist/ui/checkbox.d.ts.map +1 -1
  105. package/dist/ui/checkbox.js +15 -13
  106. package/dist/ui/checkbox.js.map +1 -1
  107. package/dist/ui/code.d.ts.map +1 -1
  108. package/dist/ui/code.js +5 -5
  109. package/dist/ui/code.js.map +1 -1
  110. package/dist/ui/collapsible.js +1 -1
  111. package/dist/ui/collapsible.js.map +1 -1
  112. package/dist/ui/combobox.d.ts +107 -107
  113. package/dist/ui/combobox.d.ts.map +1 -1
  114. package/dist/ui/combobox.js +88 -87
  115. package/dist/ui/combobox.js.map +1 -1
  116. package/dist/ui/command.d.ts +57 -58
  117. package/dist/ui/command.d.ts.map +1 -1
  118. package/dist/ui/command.js +54 -64
  119. package/dist/ui/command.js.map +1 -1
  120. package/dist/ui/container.d.ts.map +1 -1
  121. package/dist/ui/container.js.map +1 -1
  122. package/dist/ui/context-menu.d.ts +132 -132
  123. package/dist/ui/context-menu.d.ts.map +1 -1
  124. package/dist/ui/context-menu.js +102 -98
  125. package/dist/ui/context-menu.js.map +1 -1
  126. package/dist/ui/copy-button.d.ts +1 -3
  127. package/dist/ui/copy-button.d.ts.map +1 -1
  128. package/dist/ui/copy-button.js +12 -13
  129. package/dist/ui/copy-button.js.map +1 -1
  130. package/dist/ui/dialog.d.ts +2 -66
  131. package/dist/ui/dialog.js +2 -24
  132. package/dist/ui/drawer.d.ts +91 -91
  133. package/dist/ui/drawer.d.ts.map +1 -1
  134. package/dist/ui/drawer.js +68 -66
  135. package/dist/ui/drawer.js.map +1 -1
  136. package/dist/ui/dropdown-menu.d.ts +3 -144
  137. package/dist/ui/dropdown-menu.js +3 -38
  138. package/dist/ui/dropzone.d.ts +55 -55
  139. package/dist/ui/dropzone.d.ts.map +1 -1
  140. package/dist/ui/dropzone.js +77 -72
  141. package/dist/ui/dropzone.js.map +1 -1
  142. package/dist/ui/emoji-picker.d.ts +79 -79
  143. package/dist/ui/emoji-picker.d.ts.map +1 -1
  144. package/dist/ui/emoji-picker.js +92 -87
  145. package/dist/ui/emoji-picker.js.map +1 -1
  146. package/dist/ui/empty.d.ts +61 -59
  147. package/dist/ui/empty.d.ts.map +1 -1
  148. package/dist/ui/empty.js +49 -44
  149. package/dist/ui/empty.js.map +1 -1
  150. package/dist/ui/field.d.ts +11 -11
  151. package/dist/ui/field.d.ts.map +1 -1
  152. package/dist/ui/field.js +9 -7
  153. package/dist/ui/field.js.map +1 -1
  154. package/dist/ui/fieldset.d.ts.map +1 -1
  155. package/dist/ui/fieldset.js.map +1 -1
  156. package/dist/ui/form.d.ts +8 -8
  157. package/dist/ui/form.d.ts.map +1 -1
  158. package/dist/ui/form.js +2 -0
  159. package/dist/ui/form.js.map +1 -1
  160. package/dist/ui/input-group.d.ts +35 -35
  161. package/dist/ui/input-group.d.ts.map +1 -1
  162. package/dist/ui/input-group.js +2 -28
  163. package/dist/ui/input-otp.d.ts +36 -36
  164. package/dist/ui/input-otp.d.ts.map +1 -1
  165. package/dist/ui/input-otp.js +29 -28
  166. package/dist/ui/input-otp.js.map +1 -1
  167. package/dist/ui/input.d.ts +2 -46
  168. package/dist/ui/input.js +2 -34
  169. package/dist/ui/item.d.ts +20 -20
  170. package/dist/ui/item.d.ts.map +1 -1
  171. package/dist/ui/item.js +24 -22
  172. package/dist/ui/item.js.map +1 -1
  173. package/dist/ui/kbd.d.ts.map +1 -1
  174. package/dist/ui/kbd.js +10 -8
  175. package/dist/ui/kbd.js.map +1 -1
  176. package/dist/ui/label.d.ts.map +1 -1
  177. package/dist/ui/label.js.map +1 -1
  178. package/dist/ui/marquee.d.ts.map +1 -1
  179. package/dist/ui/marquee.js +1 -1
  180. package/dist/ui/marquee.js.map +1 -1
  181. package/dist/ui/menubar.d.ts +133 -134
  182. package/dist/ui/menubar.d.ts.map +1 -1
  183. package/dist/ui/menubar.js +84 -81
  184. package/dist/ui/menubar.js.map +1 -1
  185. package/dist/ui/meter.d.ts.map +1 -1
  186. package/dist/ui/meter.js +2 -0
  187. package/dist/ui/meter.js.map +1 -1
  188. package/dist/ui/navigation-list.d.ts +226 -226
  189. package/dist/ui/navigation-list.d.ts.map +1 -1
  190. package/dist/ui/navigation-list.js +242 -235
  191. package/dist/ui/navigation-list.js.map +1 -1
  192. package/dist/ui/navigation-menu.d.ts +82 -82
  193. package/dist/ui/navigation-menu.d.ts.map +1 -1
  194. package/dist/ui/navigation-menu.js +72 -67
  195. package/dist/ui/navigation-menu.js.map +1 -1
  196. package/dist/ui/number-field.d.ts +34 -34
  197. package/dist/ui/number-field.d.ts.map +1 -1
  198. package/dist/ui/number-field.js +26 -23
  199. package/dist/ui/number-field.js.map +1 -1
  200. package/dist/ui/pagination.d.ts +42 -42
  201. package/dist/ui/pagination.d.ts.map +1 -1
  202. package/dist/ui/pagination.js +45 -41
  203. package/dist/ui/pagination.js.map +1 -1
  204. package/dist/ui/pill.d.ts +2 -3
  205. package/dist/ui/pill.d.ts.map +1 -1
  206. package/dist/ui/pill.js +34 -23
  207. package/dist/ui/pill.js.map +1 -1
  208. package/dist/ui/popover.d.ts +13 -11
  209. package/dist/ui/popover.d.ts.map +1 -1
  210. package/dist/ui/popover.js +17 -14
  211. package/dist/ui/popover.js.map +1 -1
  212. package/dist/ui/portal.d.ts.map +1 -1
  213. package/dist/ui/portal.js +52 -11
  214. package/dist/ui/portal.js.map +1 -1
  215. package/dist/ui/preview-card.js +5 -5
  216. package/dist/ui/preview-card.js.map +1 -1
  217. package/dist/ui/progress.js.map +1 -1
  218. package/dist/ui/qr-code.d.ts.map +1 -1
  219. package/dist/ui/qr-code.js +7 -7
  220. package/dist/ui/qr-code.js.map +1 -1
  221. package/dist/ui/radio-group.d.ts +22 -22
  222. package/dist/ui/radio-group.d.ts.map +1 -1
  223. package/dist/ui/radio-group.js +17 -15
  224. package/dist/ui/radio-group.js.map +1 -1
  225. package/dist/ui/range-slider.d.ts +1 -1
  226. package/dist/ui/range-slider.d.ts.map +1 -1
  227. package/dist/ui/range-slider.js +4 -7
  228. package/dist/ui/range-slider.js.map +1 -1
  229. package/dist/ui/rating.d.ts +35 -35
  230. package/dist/ui/rating.d.ts.map +1 -1
  231. package/dist/ui/rating.js +55 -46
  232. package/dist/ui/rating.js.map +1 -1
  233. package/dist/ui/resizable.d.ts.map +1 -1
  234. package/dist/ui/resizable.js +2 -2
  235. package/dist/ui/resizable.js.map +1 -1
  236. package/dist/ui/scroll-area.d.ts.map +1 -1
  237. package/dist/ui/scroll-area.js +2 -0
  238. package/dist/ui/scroll-area.js.map +1 -1
  239. package/dist/ui/select.d.ts +87 -87
  240. package/dist/ui/select.d.ts.map +1 -1
  241. package/dist/ui/select.js +85 -84
  242. package/dist/ui/select.js.map +1 -1
  243. package/dist/ui/separator.d.ts +2 -13
  244. package/dist/ui/separator.js +2 -0
  245. package/dist/ui/separator.js.map +1 -1
  246. package/dist/ui/sheet.d.ts.map +1 -1
  247. package/dist/ui/sheet.js +2 -24
  248. package/dist/ui/sidebar.d.ts +73 -74
  249. package/dist/ui/sidebar.d.ts.map +1 -1
  250. package/dist/ui/sidebar.js +87 -84
  251. package/dist/ui/sidebar.js.map +1 -1
  252. package/dist/ui/skeleton.d.ts.map +1 -1
  253. package/dist/ui/skeleton.js +1 -1
  254. package/dist/ui/skeleton.js.map +1 -1
  255. package/dist/ui/slider.d.ts +1 -1
  256. package/dist/ui/slider.d.ts.map +1 -1
  257. package/dist/ui/slider.js +3 -1
  258. package/dist/ui/slider.js.map +1 -1
  259. package/dist/ui/spacer.d.ts.map +1 -1
  260. package/dist/ui/spacer.js +2 -2
  261. package/dist/ui/spacer.js.map +1 -1
  262. package/dist/ui/spinner.js +4 -2
  263. package/dist/ui/spinner.js.map +1 -1
  264. package/dist/ui/switch.d.ts +11 -11
  265. package/dist/ui/switch.js +7 -7
  266. package/dist/ui/switch.js.map +1 -1
  267. package/dist/ui/table.d.ts +60 -60
  268. package/dist/ui/table.d.ts.map +1 -1
  269. package/dist/ui/table.js +54 -46
  270. package/dist/ui/table.js.map +1 -1
  271. package/dist/ui/tabs.d.ts +25 -25
  272. package/dist/ui/tabs.d.ts.map +1 -1
  273. package/dist/ui/tabs.js +75 -68
  274. package/dist/ui/tabs.js.map +1 -1
  275. package/dist/ui/textarea.d.ts +2 -37
  276. package/dist/ui/textarea.js +3 -34
  277. package/dist/ui/theme-icon.d.ts +30 -30
  278. package/dist/ui/theme-icon.d.ts.map +1 -1
  279. package/dist/ui/theme-icon.js +22 -22
  280. package/dist/ui/theme-icon.js.map +1 -1
  281. package/dist/ui/timeline.d.ts +6 -6
  282. package/dist/ui/timeline.d.ts.map +1 -1
  283. package/dist/ui/timeline.js +165 -163
  284. package/dist/ui/timeline.js.map +1 -1
  285. package/dist/ui/toggle-group.d.ts +32 -32
  286. package/dist/ui/toggle-group.d.ts.map +1 -1
  287. package/dist/ui/toggle-group.js +22 -16
  288. package/dist/ui/toggle-group.js.map +1 -1
  289. package/dist/ui/toggle.d.ts +2 -53
  290. package/dist/ui/toggle.js +17 -15
  291. package/dist/ui/toggle.js.map +1 -1
  292. package/dist/ui/toolbar.d.ts +54 -54
  293. package/dist/ui/toolbar.d.ts.map +1 -1
  294. package/dist/ui/toolbar.js +45 -40
  295. package/dist/ui/toolbar.js.map +1 -1
  296. package/dist/ui/tooltip.d.ts +2 -54
  297. package/dist/ui/tooltip.js +2 -28
  298. package/dist/ui/typography.d.ts +50 -36
  299. package/dist/ui/typography.d.ts.map +1 -1
  300. package/dist/ui/typography.js +28 -17
  301. package/dist/ui/typography.js.map +1 -1
  302. package/package.json +15 -15
  303. package/dist/avatar-image-BQ_NEKH4.js +0 -47
  304. package/dist/avatar-image-BQ_NEKH4.js.map +0 -1
  305. package/dist/avatar-image-Ce26D2fb.d.ts.map +0 -1
  306. package/dist/dialog-trigger-BUF3elAP.js.map +0 -1
  307. package/dist/dialog-viewport-Ce1huyAI.d.ts.map +0 -1
  308. package/dist/dropdown-menu-trigger-BpgtLUvf.d.ts.map +0 -1
  309. package/dist/dropdown-menu-trigger-COnFGfDa.js.map +0 -1
  310. package/dist/input-group-textarea-B-rP98r5.js.map +0 -1
  311. package/dist/sheet-trigger-D7neoTF5.js.map +0 -1
  312. package/dist/size-context-BjRwqlSg.js.map +0 -1
  313. package/dist/size-system-DTXmtQXw.js +0 -47
  314. package/dist/size-system-DTXmtQXw.js.map +0 -1
  315. package/dist/slider-root-presentation-ChJHPMIV.js.map +0 -1
  316. package/dist/slider-value-Db8SCu0c.d.ts.map +0 -1
  317. package/dist/tooltip-trigger-qXw-_nbh.js.map +0 -1
  318. package/dist/tooltip-viewport-csA6luqI.d.ts.map +0 -1
  319. package/dist/ui/avatar.d.ts.map +0 -1
  320. package/dist/ui/avatar.js.map +0 -1
  321. package/dist/ui/badge.js.map +0 -1
  322. package/dist/ui/button.d.ts.map +0 -1
  323. package/dist/ui/dialog.d.ts.map +0 -1
  324. package/dist/ui/dialog.js.map +0 -1
  325. package/dist/ui/dropdown-menu.d.ts.map +0 -1
  326. package/dist/ui/dropdown-menu.js.map +0 -1
  327. package/dist/ui/input-group.js.map +0 -1
  328. package/dist/ui/input.d.ts.map +0 -1
  329. package/dist/ui/input.js.map +0 -1
  330. package/dist/ui/separator.d.ts.map +0 -1
  331. package/dist/ui/sheet.js.map +0 -1
  332. package/dist/ui/textarea.d.ts.map +0 -1
  333. package/dist/ui/textarea.js.map +0 -1
  334. package/dist/ui/toggle.d.ts.map +0 -1
  335. package/dist/ui/tooltip.d.ts.map +0 -1
  336. package/dist/ui/tooltip.js.map +0 -1
  337. package/dist/use-badge-default-props-8d9wPL0k.js +0 -8
  338. package/dist/use-badge-default-props-8d9wPL0k.js.map +0 -1
  339. package/dist/use-input-default-props-B6VgKXGM.js +0 -8
  340. package/dist/use-input-default-props-B6VgKXGM.js.map +0 -1
  341. package/dist/use-textarea-default-props-7MlOxkDO.js +0 -8
  342. package/dist/use-textarea-default-props-7MlOxkDO.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.js","names":[],"sources":["../../src/ui/sidebar/constants.ts","../../src/ui/sidebar/sidebar-content.tsx","../../src/ui/sidebar/sidebar-footer.tsx","../../src/ui/sidebar/sidebar-group.tsx","../../src/ui/sidebar/sidebar-group-action.tsx","../../src/ui/sidebar/sidebar-group-content.tsx","../../src/ui/sidebar/sidebar-group-label.tsx","../../src/ui/sidebar/sidebar-header.tsx","../../src/ui/sidebar/sidebar-input.tsx","../../src/ui/sidebar/sidebar-inset.tsx","../../src/ui/sidebar/sidebar-menu-context.tsx","../../src/ui/sidebar/sidebar-menu.tsx","../../src/ui/sidebar/sidebar-menu-action.tsx","../../src/ui/sidebar/sidebar-menu-badge.tsx","../../src/ui/sidebar/use-sidebar.tsx","../../src/ui/sidebar/sidebar-menu-button.tsx","../../src/ui/sidebar/sidebar-menu-item.tsx","../../src/ui/sidebar/sidebar-menu-skeleton.tsx","../../src/ui/sidebar/sidebar-menu-sub.tsx","../../src/ui/sidebar/sidebar-menu-sub-button.tsx","../../src/ui/sidebar/sidebar-menu-sub-item.tsx","../../src/ui/sidebar/sidebar-provider.tsx","../../src/ui/sidebar/sidebar-rail.tsx","../../src/ui/sidebar/sidebar-separator.tsx","../../src/ui/sidebar/sidebar-trigger.tsx","../../src/ui/sidebar/sidebar.tsx"],"sourcesContent":["export const SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nexport const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nexport const SIDEBAR_WIDTH = \"16rem\";\nexport const SIDEBAR_WIDTH_MOBILE = \"18rem\";\nexport const SIDEBAR_WIDTH_ICON = \"3rem\";\nexport const SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n","import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\nexport type SidebarContentProps = ComponentProps<\"div\">;\n\nconst SidebarContent = ({ className, ...props }: SidebarContentProps) => (\n <div\n className={cn(\n \"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n data-sidebar=\"content\"\n data-slot=\"sidebar-content\"\n {...props}\n />\n);\n\nexport { SidebarContent };\n","import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\nexport type SidebarFooterProps = ComponentProps<\"div\">;\n\nconst SidebarFooter = ({ className, ...props }: SidebarFooterProps) => (\n <div\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n data-sidebar=\"footer\"\n data-slot=\"sidebar-footer\"\n {...props}\n />\n);\n\nexport { SidebarFooter };\n","import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\nexport type SidebarGroupProps = ComponentProps<\"div\">;\n\nconst SidebarGroup = ({ className, ...props }: SidebarGroupProps) => (\n <div\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n data-sidebar=\"group\"\n data-slot=\"sidebar-group\"\n {...props}\n />\n);\n\nexport { SidebarGroup };\n","import type { ComponentProps } from \"react\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cn } from \"tailwind-variants\";\nexport type SidebarGroupActionProps = useRender.ComponentProps<\"button\"> &\n ComponentProps<\"button\">;\n\nconst SidebarGroupAction = ({\n className,\n render,\n ...props\n}: SidebarGroupActionProps) =>\n useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n \"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-group-action\",\n sidebar: \"group-action\",\n },\n });\n\nexport { SidebarGroupAction };\n","import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\nexport type SidebarGroupContentProps = ComponentProps<\"div\">;\n\nconst SidebarGroupContent = ({\n className,\n ...props\n}: SidebarGroupContentProps) => (\n <div\n className={cn(\"w-full text-sm\", className)}\n data-sidebar=\"group-content\"\n data-slot=\"sidebar-group-content\"\n {...props}\n />\n);\n\nexport { SidebarGroupContent };\n","import type { ComponentProps } from \"react\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cn } from \"tailwind-variants\";\nexport type SidebarGroupLabelProps = useRender.ComponentProps<\"div\"> &\n ComponentProps<\"div\">;\n\nconst SidebarGroupLabel = ({\n className,\n render,\n ...props\n}: SidebarGroupLabelProps) =>\n useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-group-label\",\n sidebar: \"group-label\",\n },\n });\n\nexport { SidebarGroupLabel };\n","import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\nexport type SidebarHeaderProps = ComponentProps<\"div\">;\n\nconst SidebarHeader = ({ className, ...props }: SidebarHeaderProps) => (\n <div\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n data-sidebar=\"header\"\n data-slot=\"sidebar-header\"\n {...props}\n />\n);\n\nexport { SidebarHeader };\n","import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\n\nimport { Input } from \"../input/input\";\nexport type SidebarInputProps = ComponentProps<typeof Input>;\n\nconst SidebarInput = ({\n className,\n size = \"sm\",\n ...props\n}: SidebarInputProps) => (\n <Input\n className={cn(\"w-full bg-background shadow-none\", className)}\n data-sidebar=\"input\"\n size={size}\n data-slot=\"sidebar-input\"\n {...props}\n />\n);\n\nexport { SidebarInput };\n","import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\nexport type SidebarInsetProps = ComponentProps<\"main\">;\n\nconst SidebarInset = ({ className, ...props }: SidebarInsetProps) => (\n <main\n className={cn(\n \"relative flex w-full min-w-0 flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className\n )}\n data-slot=\"sidebar-inset\"\n {...props}\n />\n);\n\nexport { SidebarInset };\n","\"use client\";\n\nimport { createContext } from \"react\";\n\nimport type { InputSize } from \"../input/input\";\n\nexport interface SidebarMenuContextValue {\n size?: InputSize;\n}\n\nconst SidebarMenuContext = createContext<SidebarMenuContextValue>({\n size: \"md\",\n});\n\nexport { SidebarMenuContext };\n","import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\n\nimport { useComponentSize } from \"../shared/size/size-provider\";\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\nexport type SidebarMenuProps = ComponentProps<\"ul\"> & {\n size?: InputSize;\n};\n\nconst SidebarMenu = ({\n className,\n size: providedSize,\n ...props\n}: SidebarMenuProps) => {\n const size = useComponentSize(providedSize);\n\n return (\n <SidebarMenuContext.Provider value={{ size }}>\n <ul\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n data-sidebar=\"menu\"\n data-size={size}\n data-slot=\"sidebar-menu\"\n {...props}\n />\n </SidebarMenuContext.Provider>\n );\n};\n\nexport { SidebarMenu };\n","import type { ComponentProps } from \"react\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { useContext } from \"react\";\nimport { cn, tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\n\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\n\nconst sidebarMenuActionVariants = tv({\n base: \"absolute right-1 flex aspect-square items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:shrink-0\",\n variants: {\n size: {\n xs: \"top-0.5 w-4 [&>svg:not([class*='size-'])]:size-3\",\n sm: \"top-1 w-5 [&>svg:not([class*='size-'])]:size-3.5\",\n md: \"top-1.5 w-5 [&>svg:not([class*='size-'])]:size-4\",\n lg: \"top-2 w-6 [&>svg:not([class*='size-'])]:size-4\",\n xl: \"top-2.5 w-7 [&>svg:not([class*='size-'])]:size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nexport type SidebarMenuActionProps = useRender.ComponentProps<\"button\"> &\n ComponentProps<\"button\"> & {\n showOnHover?: boolean;\n size?: InputSize;\n } & VariantProps<typeof sidebarMenuActionVariants>;\n\nconst SidebarMenuAction = ({\n className,\n render,\n size,\n showOnHover = false,\n ...props\n}: SidebarMenuActionProps) => {\n const { size: menuSize } = useContext(SidebarMenuContext);\n const resolvedSize: InputSize = size ?? menuSize ?? \"md\";\n\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n sidebarMenuActionVariants({ size: resolvedSize }),\n \"peer-data-[size=xs]/menu-button:top-0.5 peer-data-[size=sm]/menu-button:top-1 peer-data-[size=md]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2 peer-data-[size=xl]/menu-button:top-2.5\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground data-open:opacity-100 md:opacity-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-action\",\n sidebar: \"menu-action\",\n size: resolvedSize,\n },\n });\n};\n\nexport { SidebarMenuAction };\n","import type { ComponentProps } from \"react\";\n\nimport { useContext } from \"react\";\nimport { cn, tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\n\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\n\nconst sidebarMenuBadgeVariants = tv({\n base: \"pointer-events-none absolute right-1 flex items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground\",\n variants: {\n size: {\n xs: \"top-0.5 h-4 min-w-4 text-[10px]\",\n sm: \"top-1 h-5 min-w-5 text-[11px]\",\n md: \"top-1.5 h-5 min-w-5 text-xs\",\n lg: \"top-2 h-6 min-w-6 text-xs\",\n xl: \"top-2.5 h-7 min-w-7 text-sm\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nexport type SidebarMenuBadgeProps = ComponentProps<\"div\"> &\n VariantProps<typeof sidebarMenuBadgeVariants> & {\n size?: InputSize;\n };\n\nconst SidebarMenuBadge = ({\n className,\n size,\n ...props\n}: SidebarMenuBadgeProps) => {\n const { size: menuSize } = useContext(SidebarMenuContext);\n const resolvedSize: InputSize = size ?? menuSize ?? \"md\";\n\n return (\n <div\n className={cn(\n sidebarMenuBadgeVariants({ size: resolvedSize }),\n className\n )}\n data-sidebar=\"menu-badge\"\n data-size={resolvedSize}\n data-slot=\"sidebar-menu-badge\"\n {...props}\n />\n );\n};\n\nexport { SidebarMenuBadge };\n","\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\nexport interface SidebarContextProps {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n}\n\nexport const SidebarContext = createContext<SidebarContextProps | null>(null);\n\nexport const useSidebar = () => {\n const context = useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n};\n","import type { ComponentProps } from \"react\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { useContext } from \"react\";\nimport { cn, tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\n\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../tooltip/tooltip\";\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\nimport { useSidebar } from \"./use-sidebar\";\nexport type SidebarMenuButtonProps = useRender.ComponentProps<\"button\"> &\n ComponentProps<\"button\"> & {\n isActive?: boolean;\n tooltip?: string | ComponentProps<typeof TooltipContent>;\n size?: InputSize;\n } & VariantProps<typeof sidebarMenuButtonVariants>;\n\nconst sidebarMenuButtonVariants = tv({\n base: \"peer/menu-button group/menu-button flex w-full cursor-pointer items-center gap-2 overflow-hidden rounded-md text-left ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground [&_svg]:shrink-0 [&>span:last-child]:truncate\",\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--kb-sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--kb-sidebar-accent))]\",\n },\n size: {\n xs: \"h-6 px-1.5 py-1 text-xs [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 px-2 py-1 text-xs [&_svg:not([class*='size-'])]:size-3.5\",\n md: \"h-8 px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4\",\n lg: \"h-10 px-2.5 py-2 text-sm [&_svg:not([class*='size-'])]:size-4\",\n xl: \"h-11 px-3 py-2 text-base [&_svg:not([class*='size-'])]:size-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\nconst SidebarMenuButton = ({\n render,\n isActive = false,\n variant = \"default\",\n size,\n tooltip,\n className,\n ...props\n}: SidebarMenuButtonProps) => {\n const { size: menuSize } = useContext(SidebarMenuContext);\n const resolvedSize: InputSize = size ?? menuSize ?? \"md\";\n const { isMobile, state } = useSidebar();\n const comp = useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n sidebarMenuButtonVariants({ size: resolvedSize, variant }),\n className\n ),\n },\n props\n ),\n render: tooltip ? TooltipTrigger : render,\n state: {\n slot: \"sidebar-menu-button\",\n sidebar: \"menu-button\",\n size: resolvedSize,\n active: isActive,\n },\n });\n\n if (!tooltip) {\n return comp;\n }\n\n if (typeof tooltip === \"string\") {\n // oxlint-disable-next-line no-param-reassign\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n {comp}\n <TooltipContent\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n side=\"right\"\n {...tooltip}\n />\n </Tooltip>\n );\n};\n\nexport { SidebarMenuButton, sidebarMenuButtonVariants };\n","import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\nexport type SidebarMenuItemProps = ComponentProps<\"li\">;\n\nconst SidebarMenuItem = ({ className, ...props }: SidebarMenuItemProps) => (\n <li\n className={cn(\"group/menu-item relative\", className)}\n data-sidebar=\"menu-item\"\n data-slot=\"sidebar-menu-item\"\n {...props}\n />\n);\n\nexport { SidebarMenuItem };\n","\"use client\";\n\nimport type { ComponentProps, CSSProperties } from \"react\";\n\nimport { useContext } from \"react\";\nimport { cn, tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\n\nimport { Skeleton } from \"../skeleton/skeleton\";\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\n\nconst sidebarMenuSkeletonVariants = tv({\n base: \"flex items-center gap-2 rounded-md\",\n variants: {\n size: {\n xs: \"h-6 px-1.5\",\n sm: \"h-7 px-2\",\n md: \"h-8 px-2\",\n lg: \"h-10 px-2.5\",\n xl: \"h-11 px-3\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nexport type SidebarMenuSkeletonProps = ComponentProps<\"div\"> & {\n showIcon?: boolean;\n size?: InputSize;\n} & VariantProps<typeof sidebarMenuSkeletonVariants>;\n\nconst SidebarMenuSkeleton = ({\n className,\n size,\n showIcon = false,\n ...props\n}: SidebarMenuSkeletonProps) => {\n const { size: menuSize } = useContext(SidebarMenuContext);\n const resolvedSize: InputSize = size ?? menuSize ?? \"md\";\n\n return (\n <div\n className={cn(\n sidebarMenuSkeletonVariants({ size: resolvedSize }),\n className\n )}\n data-sidebar=\"menu-skeleton\"\n data-size={resolvedSize}\n data-slot=\"sidebar-menu-skeleton\"\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": \"100%\",\n } as CSSProperties\n }\n />\n </div>\n );\n};\n\nexport { SidebarMenuSkeleton };\n","import type { ComponentProps } from \"react\";\n\nimport { useContext } from \"react\";\nimport { cn, tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\n\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\n\nconst sidebarMenuSubVariants = tv({\n base: \"flex min-w-0 translate-x-px flex-col border-l border-sidebar-border group-data-[collapsible=icon]:hidden\",\n variants: {\n size: {\n xs: \"mx-2.5 gap-0.5 px-1.5 py-0.5\",\n sm: \"mx-3 gap-1 px-2 py-0.5\",\n md: \"mx-3.5 gap-1 px-2.5 py-0.5\",\n lg: \"mx-4 gap-1 px-3 py-1\",\n xl: \"mx-4.5 gap-1.5 px-3.5 py-1\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nexport type SidebarMenuSubProps = ComponentProps<\"ul\"> &\n VariantProps<typeof sidebarMenuSubVariants> & {\n size?: InputSize;\n };\n\nconst SidebarMenuSub = ({ className, size, ...props }: SidebarMenuSubProps) => {\n const { size: menuSize } = useContext(SidebarMenuContext);\n const resolvedSize: InputSize = size ?? menuSize ?? \"md\";\n\n return (\n <ul\n className={cn(sidebarMenuSubVariants({ size: resolvedSize }), className)}\n data-sidebar=\"menu-sub\"\n data-size={resolvedSize}\n data-slot=\"sidebar-menu-sub\"\n {...props}\n />\n );\n};\n\nexport { SidebarMenuSub };\n","import type { ComponentProps } from \"react\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { useContext } from \"react\";\nimport { cn, tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\n\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\nexport type SidebarMenuSubButtonProps = useRender.ComponentProps<\"a\"> &\n ComponentProps<\"a\"> & {\n size?: InputSize;\n isActive?: boolean;\n } & VariantProps<typeof sidebarMenuSubButtonVariants>;\n\nconst sidebarMenuSubButtonVariants = tv({\n base: \"flex min-w-0 -translate-x-px cursor-pointer items-center overflow-hidden rounded-md text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n variants: {\n size: {\n xs: \"h-6 gap-1.5 px-1.5 text-xs [&>svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-2 px-2 text-xs [&>svg:not([class*='size-'])]:size-3.5\",\n md: \"h-8 gap-2 px-2 text-sm [&>svg:not([class*='size-'])]:size-4\",\n lg: \"h-9 gap-2.5 px-2.5 text-sm [&>svg:not([class*='size-'])]:size-4\",\n xl: \"h-10 gap-2.5 px-3 text-base [&>svg:not([class*='size-'])]:size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nconst SidebarMenuSubButton = ({\n render,\n size,\n isActive = false,\n className,\n ...props\n}: SidebarMenuSubButtonProps) => {\n const { size: menuSize } = useContext(SidebarMenuContext);\n const resolvedSize: InputSize = size ?? menuSize ?? \"md\";\n\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\n sidebarMenuSubButtonVariants({ size: resolvedSize }),\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-sub-button\",\n sidebar: \"menu-sub-button\",\n size: resolvedSize,\n active: isActive,\n },\n });\n};\n\nexport { SidebarMenuSubButton };\n","import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\nexport type SidebarMenuSubItemProps = ComponentProps<\"li\">;\n\nconst SidebarMenuSubItem = ({\n className,\n ...props\n}: SidebarMenuSubItemProps) => (\n <li\n className={cn(\"group/menu-sub-item relative\", className)}\n data-sidebar=\"menu-sub-item\"\n data-slot=\"sidebar-menu-sub-item\"\n {...props}\n />\n);\n\nexport { SidebarMenuSubItem };\n","\"use client\";\n\nimport type { ComponentProps, CSSProperties } from \"react\";\n\nimport { useIsMobile } from \"@kuzenbo/hooks/use-mobile\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { cn } from \"tailwind-variants\";\n\nimport {\n SIDEBAR_COOKIE_MAX_AGE,\n SIDEBAR_COOKIE_NAME,\n SIDEBAR_KEYBOARD_SHORTCUT,\n SIDEBAR_WIDTH,\n SIDEBAR_WIDTH_ICON,\n} from \"./constants\";\nimport { SidebarContext, type SidebarContextProps } from \"./use-sidebar\";\nexport type SidebarProviderProps = ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nconst SidebarProvider = ({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: SidebarProviderProps) => {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n // oxlint-disable-next-line unicorn/no-document-cookie\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(\n () =>\n isMobile ? setOpenMobile((prev) => !prev) : setOpen((prev) => !prev),\n [isMobile, setOpen]\n );\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <div\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n className\n )}\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n );\n};\n\nexport { SidebarProvider };\n","import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\n\nimport { useSidebar } from \"./use-sidebar\";\nexport type SidebarRailProps = ComponentProps<\"button\">;\n\nconst SidebarRail = ({ className, ...props }: SidebarRailProps) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n type=\"button\"\n aria-label=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offExamples]:translate-x-0 group-data-[collapsible=offExamples]:after:left-full hover:group-data-[collapsible=offExamples]:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offExamples]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offExamples]_&]:-left-2\",\n className\n )}\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n onClick={toggleSidebar}\n tabIndex={-1}\n title=\"Toggle Sidebar\"\n {...props}\n />\n );\n};\n\nexport { SidebarRail };\n","import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\n\nimport { Separator } from \"../separator/separator\";\nexport type SidebarSeparatorProps = ComponentProps<typeof Separator>;\n\nconst SidebarSeparator = ({ className, ...props }: SidebarSeparatorProps) => (\n <Separator\n className={cn(\"w-auto bg-sidebar-border\", className)}\n data-sidebar=\"separator\"\n data-slot=\"sidebar-separator\"\n {...props}\n />\n);\n\nexport { SidebarSeparator };\n","\"use client\";\n\nimport { SidebarLeftIcon } from \"@hugeicons/core-free-icons\";\nimport { HugeiconsIcon } from \"@hugeicons/react\";\nimport { useCallback, type ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\n\nimport { Button } from \"../button/button\";\nimport { useSidebar } from \"./use-sidebar\";\nexport type SidebarTriggerProps = ComponentProps<typeof Button>;\n\nconst SidebarTrigger = ({\n className,\n onClick,\n ...props\n}: SidebarTriggerProps) => {\n const { toggleSidebar } = useSidebar();\n\n const handleClick = useCallback(\n (\n event: Parameters<\n NonNullable<ComponentProps<typeof Button>[\"onClick\"]>\n >[0]\n ) => {\n onClick?.(event);\n toggleSidebar();\n },\n [onClick, toggleSidebar]\n );\n\n return (\n <Button\n className={cn(className)}\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n onClick={handleClick}\n size=\"icon-sm\"\n variant=\"ghost\"\n {...props}\n >\n <HugeiconsIcon icon={SidebarLeftIcon} strokeWidth={2} />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n};\n\nexport { SidebarTrigger };\n","import type { ComponentProps, CSSProperties } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\n\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"../sheet/sheet\";\nimport { SIDEBAR_WIDTH_MOBILE } from \"./constants\";\nimport { SidebarContent } from \"./sidebar-content\";\nimport { SidebarFooter } from \"./sidebar-footer\";\nimport { SidebarGroup } from \"./sidebar-group\";\nimport { SidebarGroupAction } from \"./sidebar-group-action\";\nimport { SidebarGroupContent } from \"./sidebar-group-content\";\nimport { SidebarGroupLabel } from \"./sidebar-group-label\";\nimport { SidebarHeader } from \"./sidebar-header\";\nimport { SidebarInput } from \"./sidebar-input\";\nimport { SidebarInset } from \"./sidebar-inset\";\nimport { SidebarMenu } from \"./sidebar-menu\";\nimport { SidebarMenuAction } from \"./sidebar-menu-action\";\nimport { SidebarMenuBadge } from \"./sidebar-menu-badge\";\nimport { SidebarMenuButton } from \"./sidebar-menu-button\";\nimport { SidebarMenuItem } from \"./sidebar-menu-item\";\nimport { SidebarMenuSkeleton } from \"./sidebar-menu-skeleton\";\nimport { SidebarMenuSub } from \"./sidebar-menu-sub\";\nimport { SidebarMenuSubButton } from \"./sidebar-menu-sub-button\";\nimport { SidebarMenuSubItem } from \"./sidebar-menu-sub-item\";\nimport { SidebarProvider } from \"./sidebar-provider\";\nimport { SidebarRail } from \"./sidebar-rail\";\nimport { SidebarSeparator } from \"./sidebar-separator\";\nimport { SidebarTrigger } from \"./sidebar-trigger\";\nimport { useSidebar } from \"./use-sidebar\";\nexport type SidebarProps = ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offExamples\" | \"icon\" | \"none\";\n};\n\nconst Sidebar = ({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offExamples\",\n className,\n children,\n ...props\n}: SidebarProps) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n data-slot=\"sidebar\"\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet onOpenChange={setOpenMobile} open={openMobile} {...props}>\n <SheetContent\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n data-mobile=\"true\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n side={side}\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as CSSProperties\n }\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-side={side}\n data-slot=\"sidebar\"\n data-state={state}\n data-variant={variant}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offExamples]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n data-slot=\"sidebar-gap\"\n />\n <div\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offExamples]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offExamples]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n data-slot=\"sidebar-container\"\n {...props}\n >\n <div\n className=\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nSidebar.Content = SidebarContent;\nSidebar.Footer = SidebarFooter;\nSidebar.Group = SidebarGroup;\nSidebar.GroupAction = SidebarGroupAction;\nSidebar.GroupContent = SidebarGroupContent;\nSidebar.GroupLabel = SidebarGroupLabel;\nSidebar.Header = SidebarHeader;\nSidebar.Input = SidebarInput;\nSidebar.Inset = SidebarInset;\nSidebar.Menu = SidebarMenu;\nSidebar.MenuAction = SidebarMenuAction;\nSidebar.MenuBadge = SidebarMenuBadge;\nSidebar.MenuButton = SidebarMenuButton;\nSidebar.MenuItem = SidebarMenuItem;\nSidebar.MenuSkeleton = SidebarMenuSkeleton;\nSidebar.MenuSub = SidebarMenuSub;\nSidebar.MenuSubButton = SidebarMenuSubButton;\nSidebar.MenuSubItem = SidebarMenuSubItem;\nSidebar.Provider = SidebarProvider;\nSidebar.Rail = SidebarRail;\nSidebar.Separator = SidebarSeparator;\nSidebar.Trigger = SidebarTrigger;\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n\nexport type { SidebarContentProps } from \"./sidebar-content\";\nexport type { SidebarFooterProps } from \"./sidebar-footer\";\nexport type { SidebarGroupProps } from \"./sidebar-group\";\nexport type { SidebarGroupActionProps } from \"./sidebar-group-action\";\nexport type { SidebarGroupContentProps } from \"./sidebar-group-content\";\nexport type { SidebarGroupLabelProps } from \"./sidebar-group-label\";\nexport type { SidebarHeaderProps } from \"./sidebar-header\";\nexport type { SidebarInputProps } from \"./sidebar-input\";\nexport type { SidebarInsetProps } from \"./sidebar-inset\";\nexport type { SidebarMenuProps } from \"./sidebar-menu\";\nexport type { SidebarMenuActionProps } from \"./sidebar-menu-action\";\nexport type { SidebarMenuBadgeProps } from \"./sidebar-menu-badge\";\nexport type { SidebarMenuButtonProps } from \"./sidebar-menu-button\";\nexport type { SidebarMenuItemProps } from \"./sidebar-menu-item\";\nexport type { SidebarMenuSkeletonProps } from \"./sidebar-menu-skeleton\";\nexport type { SidebarMenuSubProps } from \"./sidebar-menu-sub\";\nexport type { SidebarMenuSubButtonProps } from \"./sidebar-menu-sub-button\";\nexport type { SidebarMenuSubItemProps } from \"./sidebar-menu-sub-item\";\nexport type { SidebarProviderProps } from \"./sidebar-provider\";\nexport type { SidebarRailProps } from \"./sidebar-rail\";\nexport type { SidebarSeparatorProps } from \"./sidebar-separator\";\nexport type { SidebarTriggerProps } from \"./sidebar-trigger\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.js","names":[],"sources":["../../src/ui/sidebar/constants.ts","../../src/ui/sidebar/sidebar-content.tsx","../../src/ui/sidebar/sidebar-footer.tsx","../../src/ui/sidebar/sidebar-group.tsx","../../src/ui/sidebar/sidebar-group-action.tsx","../../src/ui/sidebar/sidebar-group-content.tsx","../../src/ui/sidebar/sidebar-group-label.tsx","../../src/ui/sidebar/sidebar-header.tsx","../../src/ui/sidebar/sidebar-input.tsx","../../src/ui/sidebar/sidebar-inset.tsx","../../src/ui/sidebar/sidebar-menu-context.tsx","../../src/ui/sidebar/sidebar-menu.tsx","../../src/ui/sidebar/sidebar-menu-action.tsx","../../src/ui/sidebar/sidebar-menu-badge.tsx","../../src/ui/sidebar/use-sidebar.tsx","../../src/ui/sidebar/sidebar-menu-button.tsx","../../src/ui/sidebar/sidebar-menu-item.tsx","../../src/ui/sidebar/sidebar-menu-skeleton.tsx","../../src/ui/sidebar/sidebar-menu-sub.tsx","../../src/ui/sidebar/sidebar-menu-sub-button.tsx","../../src/ui/sidebar/sidebar-menu-sub-item.tsx","../../src/ui/sidebar/sidebar-provider.tsx","../../src/ui/sidebar/sidebar-rail.tsx","../../src/ui/sidebar/sidebar-separator.tsx","../../src/ui/sidebar/sidebar-trigger.tsx","../../src/ui/sidebar/sidebar.tsx"],"sourcesContent":["export const SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nexport const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nexport const SIDEBAR_WIDTH = \"16rem\";\nexport const SIDEBAR_WIDTH_MOBILE = \"18rem\";\nexport const SIDEBAR_WIDTH_ICON = \"3rem\";\nexport const SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\nexport type SidebarContentProps = ComponentProps<\"div\">;\n\nconst SidebarContent = ({ className, ...props }: SidebarContentProps) => (\n <div\n className={cn(\n \"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n data-sidebar=\"content\"\n data-slot=\"sidebar-content\"\n {...props}\n />\n);\n\nexport { SidebarContent };\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\nexport type SidebarFooterProps = ComponentProps<\"div\">;\n\nconst SidebarFooter = ({ className, ...props }: SidebarFooterProps) => (\n <div\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n data-sidebar=\"footer\"\n data-slot=\"sidebar-footer\"\n {...props}\n />\n);\n\nexport { SidebarFooter };\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\nexport type SidebarGroupProps = ComponentProps<\"div\">;\n\nconst SidebarGroup = ({ className, ...props }: SidebarGroupProps) => (\n <div\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n data-sidebar=\"group\"\n data-slot=\"sidebar-group\"\n {...props}\n />\n);\n\nexport { SidebarGroup };\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\nexport type SidebarGroupActionProps = useRender.ComponentProps<\"button\"> &\n ComponentProps<\"button\">;\n\nconst SidebarGroupAction = ({\n className,\n render,\n ...props\n}: SidebarGroupActionProps) =>\n useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n sidebar: \"group-action\",\n slot: \"sidebar-group-action\",\n },\n });\n\nexport { SidebarGroupAction };\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\nexport type SidebarGroupContentProps = ComponentProps<\"div\">;\n\nconst SidebarGroupContent = ({\n className,\n ...props\n}: SidebarGroupContentProps) => (\n <div\n className={cn(\"w-full text-sm\", className)}\n data-sidebar=\"group-content\"\n data-slot=\"sidebar-group-content\"\n {...props}\n />\n);\n\nexport { SidebarGroupContent };\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\nexport type SidebarGroupLabelProps = useRender.ComponentProps<\"div\"> &\n ComponentProps<\"div\">;\n\nconst SidebarGroupLabel = ({\n className,\n render,\n ...props\n}: SidebarGroupLabelProps) =>\n useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n sidebar: \"group-label\",\n slot: \"sidebar-group-label\",\n },\n });\n\nexport { SidebarGroupLabel };\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\nexport type SidebarHeaderProps = ComponentProps<\"div\">;\n\nconst SidebarHeader = ({ className, ...props }: SidebarHeaderProps) => (\n <div\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n data-sidebar=\"header\"\n data-slot=\"sidebar-header\"\n {...props}\n />\n);\n\nexport { SidebarHeader };\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\n\nimport { Input } from \"../input/input\";\nexport type SidebarInputProps = ComponentProps<typeof Input>;\n\nconst SidebarInput = ({\n className,\n size = \"sm\",\n ...props\n}: SidebarInputProps) => (\n <Input\n className={cn(\"bg-background w-full shadow-none\", className)}\n data-sidebar=\"input\"\n size={size}\n data-slot=\"sidebar-input\"\n {...props}\n />\n);\n\nexport { SidebarInput };\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\nexport type SidebarInsetProps = ComponentProps<\"main\">;\n\nconst SidebarInset = ({ className, ...props }: SidebarInsetProps) => (\n <main\n className={cn(\n \"bg-background relative flex w-full min-w-0 flex-1 flex-col md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className\n )}\n data-slot=\"sidebar-inset\"\n {...props}\n />\n);\n\nexport { SidebarInset };\n","\"use client\";\n\nimport { createContext } from \"react\";\n\nimport type { InputSize } from \"../input/input\";\n\nexport interface SidebarMenuContextValue {\n size?: InputSize;\n}\n\nconst SidebarMenuContext = createContext<SidebarMenuContextValue>({\n size: \"md\",\n});\n\nexport { SidebarMenuContext };\n","import type { ComponentProps } from \"react\";\nimport { useMemo } from \"react\";\nimport { cn } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\nimport { useComponentSize } from \"../shared/size/size-provider\";\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\nexport type SidebarMenuProps = ComponentProps<\"ul\"> & {\n size?: InputSize;\n};\n\nconst SidebarMenu = ({\n className,\n size: providedSize,\n ...props\n}: SidebarMenuProps) => {\n const size = useComponentSize(providedSize);\n const contextValue = useMemo(() => ({ size }), [size]);\n\n return (\n <SidebarMenuContext.Provider value={contextValue}>\n <ul\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n data-sidebar=\"menu\"\n data-size={size}\n data-slot=\"sidebar-menu\"\n {...props}\n />\n </SidebarMenuContext.Provider>\n );\n};\n\nexport { SidebarMenu };\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport type { ComponentProps } from \"react\";\nimport { useContext } from \"react\";\nimport { cn, tv } from \"tailwind-variants\";\nimport type { VariantProps } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\n\nconst sidebarMenuActionVariants = tv({\n base: \"text-sidebar-foreground ring-sidebar-ring peer-hover/menu-button:text-sidebar-accent-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute right-1 flex aspect-square items-center justify-center rounded-md p-0 outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 focus-visible:ring-2 md:after:hidden [&>svg]:shrink-0\",\n defaultVariants: {\n size: \"md\",\n },\n variants: {\n size: {\n lg: \"top-2 w-6 [&>svg:not([class*='size-'])]:size-4\",\n md: \"top-1.5 w-5 [&>svg:not([class*='size-'])]:size-4\",\n sm: \"top-1 w-5 [&>svg:not([class*='size-'])]:size-3.5\",\n xl: \"top-2.5 w-7 [&>svg:not([class*='size-'])]:size-5\",\n xs: \"top-0.5 w-4 [&>svg:not([class*='size-'])]:size-3\",\n },\n },\n});\n\nexport type SidebarMenuActionProps = useRender.ComponentProps<\"button\"> &\n ComponentProps<\"button\"> & {\n showOnHover?: boolean;\n size?: InputSize;\n } & VariantProps<typeof sidebarMenuActionVariants>;\n\nconst SidebarMenuAction = ({\n className,\n render,\n size,\n showOnHover = false,\n ...props\n}: SidebarMenuActionProps) => {\n const { size: menuSize } = useContext(SidebarMenuContext);\n const resolvedSize: InputSize = size ?? menuSize ?? \"md\";\n\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n sidebarMenuActionVariants({ size: resolvedSize }),\n \"peer-data-[size=lg]/menu-button:top-2 peer-data-[size=md]/menu-button:top-1.5 peer-data-[size=sm]/menu-button:top-1 peer-data-[size=xl]/menu-button:top-2.5 peer-data-[size=xs]/menu-button:top-0.5\",\n showOnHover &&\n \"peer-data-active/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-open:opacity-100 md:opacity-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n sidebar: \"menu-action\",\n size: resolvedSize,\n slot: \"sidebar-menu-action\",\n },\n });\n};\n\nexport { SidebarMenuAction };\n","import type { ComponentProps } from \"react\";\nimport { useContext } from \"react\";\nimport { cn, tv } from \"tailwind-variants\";\nimport type { VariantProps } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\n\nconst sidebarMenuBadgeVariants = tv({\n base: \"text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex items-center justify-center rounded-md px-1 font-medium tabular-nums select-none group-data-[collapsible=icon]:hidden\",\n defaultVariants: {\n size: \"md\",\n },\n variants: {\n size: {\n lg: \"top-2 h-6 min-w-6 text-xs\",\n md: \"top-1.5 h-5 min-w-5 text-xs\",\n sm: \"top-1 h-5 min-w-5 text-[11px]\",\n xl: \"top-2.5 h-7 min-w-7 text-sm\",\n xs: \"top-0.5 h-4 min-w-4 text-[10px]\",\n },\n },\n});\n\nexport type SidebarMenuBadgeProps = ComponentProps<\"div\"> &\n VariantProps<typeof sidebarMenuBadgeVariants> & {\n size?: InputSize;\n };\n\nconst SidebarMenuBadge = ({\n className,\n size,\n ...props\n}: SidebarMenuBadgeProps) => {\n const { size: menuSize } = useContext(SidebarMenuContext);\n const resolvedSize: InputSize = size ?? menuSize ?? \"md\";\n\n return (\n <div\n className={cn(\n sidebarMenuBadgeVariants({ size: resolvedSize }),\n className\n )}\n data-sidebar=\"menu-badge\"\n data-size={resolvedSize}\n data-slot=\"sidebar-menu-badge\"\n {...props}\n />\n );\n};\n\nexport { SidebarMenuBadge };\n","\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\nexport interface SidebarContextProps {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n}\n\nexport const SidebarContext = createContext<SidebarContextProps | null>(null);\n\nexport const useSidebar = () => {\n const context = useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n};\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport type { ComponentProps } from \"react\";\nimport { useContext } from \"react\";\nimport { cn, tv } from \"tailwind-variants\";\nimport type { VariantProps } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../tooltip/tooltip\";\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\nimport { useSidebar } from \"./use-sidebar\";\nexport type SidebarMenuButtonProps = useRender.ComponentProps<\"button\"> &\n ComponentProps<\"button\"> & {\n isActive?: boolean;\n tooltip?: string | ComponentProps<typeof TooltipContent>;\n size?: InputSize;\n } & VariantProps<typeof sidebarMenuButtonVariants>;\n\nconst sidebarMenuButtonVariants = tv({\n base: \"peer/menu-button group/menu-button cursor-clickable ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground flex w-full items-center gap-2 overflow-hidden rounded-md text-left outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:font-medium [&_svg]:shrink-0 [&>span:last-child]:truncate\",\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n variants: {\n size: {\n lg: \"h-10 px-2.5 py-2 text-sm [&_svg:not([class*='size-'])]:size-4\",\n md: \"h-8 px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4\",\n sm: \"h-7 px-2 py-1 text-xs [&_svg:not([class*='size-'])]:size-3.5\",\n xl: \"h-11 px-3 py-2 text-base [&_svg:not([class*='size-'])]:size-5\",\n xs: \"h-6 px-1.5 py-1 text-xs [&_svg:not([class*='size-'])]:size-3\",\n },\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--kb-sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--kb-sidebar-accent))]\",\n },\n },\n});\n\nconst SidebarMenuButton = ({\n render,\n isActive = false,\n variant = \"default\",\n size,\n tooltip,\n className,\n ...props\n}: SidebarMenuButtonProps) => {\n const { size: menuSize } = useContext(SidebarMenuContext);\n const resolvedSize: InputSize = size ?? menuSize ?? \"md\";\n const { isMobile, state } = useSidebar();\n const comp = useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n sidebarMenuButtonVariants({ size: resolvedSize, variant }),\n className\n ),\n },\n props\n ),\n render: tooltip ? TooltipTrigger : render,\n state: {\n active: isActive,\n sidebar: \"menu-button\",\n size: resolvedSize,\n slot: \"sidebar-menu-button\",\n },\n });\n\n if (!tooltip) {\n return comp;\n }\n\n if (typeof tooltip === \"string\") {\n // oxlint-disable-next-line no-param-reassign\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n {comp}\n <TooltipContent\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n side=\"right\"\n {...tooltip}\n />\n </Tooltip>\n );\n};\n\nexport { SidebarMenuButton, sidebarMenuButtonVariants };\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\nexport type SidebarMenuItemProps = ComponentProps<\"li\">;\n\nconst SidebarMenuItem = ({ className, ...props }: SidebarMenuItemProps) => (\n <li\n className={cn(\"group/menu-item relative\", className)}\n data-sidebar=\"menu-item\"\n data-slot=\"sidebar-menu-item\"\n {...props}\n />\n);\n\nexport { SidebarMenuItem };\n","\"use client\";\n\nimport type { ComponentProps, CSSProperties } from \"react\";\nimport { useContext } from \"react\";\nimport { cn, tv } from \"tailwind-variants\";\nimport type { VariantProps } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\nimport { Skeleton } from \"../skeleton/skeleton\";\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\n\nconst sidebarMenuSkeletonVariants = tv({\n base: \"flex items-center gap-2 rounded-md\",\n defaultVariants: {\n size: \"md\",\n },\n variants: {\n size: {\n lg: \"h-10 px-2.5\",\n md: \"h-8 px-2\",\n sm: \"h-7 px-2\",\n xl: \"h-11 px-3\",\n xs: \"h-6 px-1.5\",\n },\n },\n});\n\nexport type SidebarMenuSkeletonProps = ComponentProps<\"div\"> & {\n showIcon?: boolean;\n size?: InputSize;\n} & VariantProps<typeof sidebarMenuSkeletonVariants>;\n\nconst SidebarMenuSkeleton = ({\n className,\n size,\n showIcon = false,\n ...props\n}: SidebarMenuSkeletonProps) => {\n const { size: menuSize } = useContext(SidebarMenuContext);\n const resolvedSize: InputSize = size ?? menuSize ?? \"md\";\n\n return (\n <div\n className={cn(\n sidebarMenuSkeletonVariants({ size: resolvedSize }),\n className\n )}\n data-sidebar=\"menu-skeleton\"\n data-size={resolvedSize}\n data-slot=\"sidebar-menu-skeleton\"\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": \"100%\",\n } as CSSProperties\n }\n />\n </div>\n );\n};\n\nexport { SidebarMenuSkeleton };\n","import type { ComponentProps } from \"react\";\nimport { useContext } from \"react\";\nimport { cn, tv } from \"tailwind-variants\";\nimport type { VariantProps } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\n\nconst sidebarMenuSubVariants = tv({\n base: \"border-sidebar-border flex min-w-0 translate-x-px flex-col border-l group-data-[collapsible=icon]:hidden\",\n defaultVariants: {\n size: \"md\",\n },\n variants: {\n size: {\n lg: \"mx-4 gap-1 px-3 py-1\",\n md: \"mx-3.5 gap-1 px-2.5 py-0.5\",\n sm: \"mx-3 gap-1 px-2 py-0.5\",\n xl: \"mx-4.5 gap-1.5 px-3.5 py-1\",\n xs: \"mx-2.5 gap-0.5 px-1.5 py-0.5\",\n },\n },\n});\n\nexport type SidebarMenuSubProps = ComponentProps<\"ul\"> &\n VariantProps<typeof sidebarMenuSubVariants> & {\n size?: InputSize;\n };\n\nconst SidebarMenuSub = ({ className, size, ...props }: SidebarMenuSubProps) => {\n const { size: menuSize } = useContext(SidebarMenuContext);\n const resolvedSize: InputSize = size ?? menuSize ?? \"md\";\n\n return (\n <ul\n className={cn(sidebarMenuSubVariants({ size: resolvedSize }), className)}\n data-sidebar=\"menu-sub\"\n data-size={resolvedSize}\n data-slot=\"sidebar-menu-sub\"\n {...props}\n />\n );\n};\n\nexport { SidebarMenuSub };\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport type { ComponentProps } from \"react\";\nimport { useContext } from \"react\";\nimport { cn, tv } from \"tailwind-variants\";\nimport type { VariantProps } from \"tailwind-variants\";\n\nimport type { InputSize } from \"../input/input\";\nimport { SidebarMenuContext } from \"./sidebar-menu-context\";\nexport type SidebarMenuSubButtonProps = useRender.ComponentProps<\"a\"> &\n ComponentProps<\"a\"> & {\n size?: InputSize;\n isActive?: boolean;\n } & VariantProps<typeof sidebarMenuSubButtonVariants>;\n\nconst sidebarMenuSubButtonVariants = tv({\n base: \"cursor-clickable text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex min-w-0 -translate-x-px items-center overflow-hidden rounded-md outline-hidden group-data-[collapsible=icon]:hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0\",\n defaultVariants: {\n size: \"md\",\n },\n variants: {\n size: {\n lg: \"h-9 gap-2.5 px-2.5 text-sm [&>svg:not([class*='size-'])]:size-4\",\n md: \"h-8 gap-2 px-2 text-sm [&>svg:not([class*='size-'])]:size-4\",\n sm: \"h-7 gap-2 px-2 text-xs [&>svg:not([class*='size-'])]:size-3.5\",\n xl: \"h-10 gap-2.5 px-3 text-base [&>svg:not([class*='size-'])]:size-5\",\n xs: \"h-6 gap-1.5 px-1.5 text-xs [&>svg:not([class*='size-'])]:size-3\",\n },\n },\n});\n\nconst SidebarMenuSubButton = ({\n render,\n size,\n isActive = false,\n className,\n ...props\n}: SidebarMenuSubButtonProps) => {\n const { size: menuSize } = useContext(SidebarMenuContext);\n const resolvedSize: InputSize = size ?? menuSize ?? \"md\";\n\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\n sidebarMenuSubButtonVariants({ size: resolvedSize }),\n className\n ),\n },\n props\n ),\n render,\n state: {\n active: isActive,\n sidebar: \"menu-sub-button\",\n size: resolvedSize,\n slot: \"sidebar-menu-sub-button\",\n },\n });\n};\n\nexport { SidebarMenuSubButton };\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\nexport type SidebarMenuSubItemProps = ComponentProps<\"li\">;\n\nconst SidebarMenuSubItem = ({\n className,\n ...props\n}: SidebarMenuSubItemProps) => (\n <li\n className={cn(\"group/menu-sub-item relative\", className)}\n data-sidebar=\"menu-sub-item\"\n data-slot=\"sidebar-menu-sub-item\"\n {...props}\n />\n);\n\nexport { SidebarMenuSubItem };\n","\"use client\";\n\nimport { useIsMobile } from \"@kuzenbo/hooks/use-mobile\";\nimport type { ComponentProps, CSSProperties } from \"react\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { cn } from \"tailwind-variants\";\n\nimport {\n SIDEBAR_COOKIE_MAX_AGE,\n SIDEBAR_COOKIE_NAME,\n SIDEBAR_KEYBOARD_SHORTCUT,\n SIDEBAR_WIDTH,\n SIDEBAR_WIDTH_ICON,\n} from \"./constants\";\nimport { SidebarContext } from \"./use-sidebar\";\nimport type { SidebarContextProps } from \"./use-sidebar\";\nexport type SidebarProviderProps = ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nconst SidebarProvider = ({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: SidebarProviderProps) => {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n // oxlint-disable-next-line unicorn/no-document-cookie\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(\n () =>\n isMobile ? setOpenMobile((prev) => !prev) : setOpen((prev) => !prev),\n [isMobile, setOpen]\n );\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({\n isMobile,\n open,\n openMobile,\n setOpen,\n setOpenMobile,\n state,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <div\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className\n )}\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n );\n};\n\nexport { SidebarProvider };\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\n\nimport { useSidebar } from \"./use-sidebar\";\nexport type SidebarRailProps = ComponentProps<\"button\">;\n\nconst SidebarRail = ({ className, ...props }: SidebarRailProps) => {\n const { state, toggleSidebar } = useSidebar();\n const isExpanded = state === \"expanded\";\n const label = isExpanded ? \"Collapse Sidebar\" : \"Expand Sidebar\";\n\n return (\n <button\n type=\"button\"\n aria-expanded={isExpanded}\n aria-label={label}\n className={cn(\n \"z-elevated focus-visible:ring-sidebar-ring hover:after:bg-sidebar-border focus-visible:after:bg-sidebar-border absolute inset-y-0 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] focus-visible:ring-2 focus-visible:outline-none sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offExamples]:bg-sidebar group-data-[collapsible=offExamples]:translate-x-0 group-data-[collapsible=offExamples]:after:left-full\",\n \"[[data-side=left][data-collapsible=offExamples]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offExamples]_&]:-left-2\",\n className\n )}\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n onClick={toggleSidebar}\n title={label}\n {...props}\n />\n );\n};\n\nexport { SidebarRail };\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\n\nimport { Separator } from \"../separator/separator\";\nexport type SidebarSeparatorProps = ComponentProps<typeof Separator>;\n\nconst SidebarSeparator = ({ className, ...props }: SidebarSeparatorProps) => (\n <Separator\n className={cn(\"bg-sidebar-border w-auto\", className)}\n data-sidebar=\"separator\"\n data-slot=\"sidebar-separator\"\n {...props}\n />\n);\n\nexport { SidebarSeparator };\n","\"use client\";\n\nimport { SidebarLeftIcon } from \"@hugeicons/core-free-icons\";\nimport { HugeiconsIcon } from \"@hugeicons/react\";\nimport { useCallback } from \"react\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\n\nimport { Button } from \"../button/button\";\nimport { useSidebar } from \"./use-sidebar\";\nexport type SidebarTriggerProps = ComponentProps<typeof Button>;\n\nconst SidebarTrigger = ({\n className,\n onClick,\n ...props\n}: SidebarTriggerProps) => {\n const { toggleSidebar } = useSidebar();\n\n const handleClick = useCallback(\n (\n event: Parameters<\n NonNullable<ComponentProps<typeof Button>[\"onClick\"]>\n >[0]\n ) => {\n onClick?.(event);\n toggleSidebar();\n },\n [onClick, toggleSidebar]\n );\n\n return (\n <Button\n className={cn(\"cursor-clickable\", className)}\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n onClick={handleClick}\n size=\"icon-sm\"\n variant=\"ghost\"\n {...props}\n >\n <HugeiconsIcon icon={SidebarLeftIcon} strokeWidth={2} />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n};\n\nexport { SidebarTrigger };\n","\"use client\";\n\nimport type { ComponentProps, CSSProperties } from \"react\";\nimport { cn } from \"tailwind-variants\";\n\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"../sheet/sheet\";\nimport { SIDEBAR_WIDTH_MOBILE } from \"./constants\";\nimport { SidebarContent } from \"./sidebar-content\";\nimport { SidebarFooter } from \"./sidebar-footer\";\nimport { SidebarGroup } from \"./sidebar-group\";\nimport { SidebarGroupAction } from \"./sidebar-group-action\";\nimport { SidebarGroupContent } from \"./sidebar-group-content\";\nimport { SidebarGroupLabel } from \"./sidebar-group-label\";\nimport { SidebarHeader } from \"./sidebar-header\";\nimport { SidebarInput } from \"./sidebar-input\";\nimport { SidebarInset } from \"./sidebar-inset\";\nimport { SidebarMenu } from \"./sidebar-menu\";\nimport { SidebarMenuAction } from \"./sidebar-menu-action\";\nimport { SidebarMenuBadge } from \"./sidebar-menu-badge\";\nimport { SidebarMenuButton } from \"./sidebar-menu-button\";\nimport { SidebarMenuItem } from \"./sidebar-menu-item\";\nimport { SidebarMenuSkeleton } from \"./sidebar-menu-skeleton\";\nimport { SidebarMenuSub } from \"./sidebar-menu-sub\";\nimport { SidebarMenuSubButton } from \"./sidebar-menu-sub-button\";\nimport { SidebarMenuSubItem } from \"./sidebar-menu-sub-item\";\nimport { SidebarProvider } from \"./sidebar-provider\";\nimport { SidebarRail } from \"./sidebar-rail\";\nimport { SidebarSeparator } from \"./sidebar-separator\";\nimport { SidebarTrigger } from \"./sidebar-trigger\";\nimport { useSidebar } from \"./use-sidebar\";\nexport type SidebarProps = ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offExamples\" | \"icon\" | \"none\";\n};\n\nconst Sidebar = ({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offExamples\",\n className,\n children,\n ...props\n}: SidebarProps) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className\n )}\n data-slot=\"sidebar\"\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet onOpenChange={setOpenMobile} open={openMobile} {...props}>\n <SheetContent\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n data-mobile=\"true\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n side={side}\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as CSSProperties\n }\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-side={side}\n data-slot=\"sidebar\"\n data-state={state}\n data-variant={variant}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offExamples]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n data-slot=\"sidebar-gap\"\n />\n <div\n className={cn(\n \"z-raised fixed inset-y-0 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offExamples]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offExamples]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n data-slot=\"sidebar-container\"\n {...props}\n >\n <div\n className=\"bg-sidebar group-data-[variant=floating]:ring-sidebar-border flex size-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nSidebar.Content = SidebarContent;\nSidebar.Footer = SidebarFooter;\nSidebar.Group = SidebarGroup;\nSidebar.GroupAction = SidebarGroupAction;\nSidebar.GroupContent = SidebarGroupContent;\nSidebar.GroupLabel = SidebarGroupLabel;\nSidebar.Header = SidebarHeader;\nSidebar.Input = SidebarInput;\nSidebar.Inset = SidebarInset;\nSidebar.Menu = SidebarMenu;\nSidebar.MenuAction = SidebarMenuAction;\nSidebar.MenuBadge = SidebarMenuBadge;\nSidebar.MenuButton = SidebarMenuButton;\nSidebar.MenuItem = SidebarMenuItem;\nSidebar.MenuSkeleton = SidebarMenuSkeleton;\nSidebar.MenuSub = SidebarMenuSub;\nSidebar.MenuSubButton = SidebarMenuSubButton;\nSidebar.MenuSubItem = SidebarMenuSubItem;\nSidebar.Provider = SidebarProvider;\nSidebar.Rail = SidebarRail;\nSidebar.Separator = SidebarSeparator;\nSidebar.Trigger = SidebarTrigger;\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n\nexport type { SidebarContentProps } from \"./sidebar-content\";\nexport type { SidebarFooterProps } from \"./sidebar-footer\";\nexport type { SidebarGroupProps } from \"./sidebar-group\";\nexport type { SidebarGroupActionProps } from \"./sidebar-group-action\";\nexport type { SidebarGroupContentProps } from \"./sidebar-group-content\";\nexport type { SidebarGroupLabelProps } from \"./sidebar-group-label\";\nexport type { SidebarHeaderProps } from \"./sidebar-header\";\nexport type { SidebarInputProps } from \"./sidebar-input\";\nexport type { SidebarInsetProps } from \"./sidebar-inset\";\nexport type { SidebarMenuProps } from \"./sidebar-menu\";\nexport type { SidebarMenuActionProps } from \"./sidebar-menu-action\";\nexport type { SidebarMenuBadgeProps } from \"./sidebar-menu-badge\";\nexport type { SidebarMenuButtonProps } from \"./sidebar-menu-button\";\nexport type { SidebarMenuItemProps } from \"./sidebar-menu-item\";\nexport type { SidebarMenuSkeletonProps } from \"./sidebar-menu-skeleton\";\nexport type { SidebarMenuSubProps } from \"./sidebar-menu-sub\";\nexport type { SidebarMenuSubButtonProps } from \"./sidebar-menu-sub-button\";\nexport type { SidebarMenuSubItemProps } from \"./sidebar-menu-sub-item\";\nexport type { SidebarProviderProps } from \"./sidebar-provider\";\nexport type { SidebarRailProps } from \"./sidebar-rail\";\nexport type { SidebarSeparatorProps } from \"./sidebar-separator\";\nexport type { SidebarTriggerProps } from \"./sidebar-trigger\";\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.d.ts","names":[],"sources":["../../src/ui/skeleton/skeleton.tsx"],"mappings":";;;;KAIY,aAAA,GAAgB,cAAA;AAAA,cAEtB,QAAA;EAAY,SAAA;EAAA,GAAA;AAAA,GAAyB,aAAA,KAAa,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"skeleton.d.ts","names":[],"sources":["../../src/ui/skeleton/skeleton.tsx"],"mappings":";;;;KAGY,aAAA,GAAgB,cAAA;AAAA,cAEtB,QAAA;EAAY,SAAA;EAAA,GAAA;AAAA,GAAyB,aAAA,KAAa,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -3,7 +3,7 @@ import { cn } from "tailwind-variants";
3
3
 
4
4
  //#region src/ui/skeleton/skeleton.tsx
5
5
  const Skeleton = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
6
- className: cn("animate-pulse rounded-md bg-muted", className),
6
+ className: cn("bg-muted animate-pulse rounded-md", className),
7
7
  "data-slot": "skeleton",
8
8
  ...props
9
9
  });
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.js","names":[],"sources":["../../src/ui/skeleton/skeleton.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\n\nexport type SkeletonProps = ComponentProps<\"div\">;\n\nconst Skeleton = ({ className, ...props }: SkeletonProps) => (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n data-slot=\"skeleton\"\n {...props}\n />\n);\n\nexport { Skeleton };\n"],"mappings":";;;;AAMA,MAAM,YAAY,EAAE,WAAW,GAAG,YAChC,oBAAC;CACC,WAAW,GAAG,qCAAqC,UAAU;CAC7D,aAAU;CACV,GAAI;EACJ"}
1
+ {"version":3,"file":"skeleton.js","names":[],"sources":["../../src/ui/skeleton/skeleton.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\n\nexport type SkeletonProps = ComponentProps<\"div\">;\n\nconst Skeleton = ({ className, ...props }: SkeletonProps) => (\n <div\n className={cn(\"bg-muted animate-pulse rounded-md\", className)}\n data-slot=\"skeleton\"\n {...props}\n />\n);\n\nexport { Skeleton };\n"],"mappings":";;;;AAKA,MAAM,YAAY,EAAE,WAAW,GAAG,YAChC,oBAAC,OAAD;CACE,WAAW,GAAG,qCAAqC,UAAU;CAC7D,aAAU;CACV,GAAI;CACJ"}
@@ -1,4 +1,4 @@
1
- import { C as SliderSemanticSize, S as SliderSemanticRadius, _ as SliderLabel, a as SliderThumbLabel, b as SliderLabelTransitionProps, c as SliderThumbProps, d as SliderMark, f as SliderMarkProps, g as SliderControlProps, h as SliderControl, i as SliderTrackProps, l as SliderMarks, m as SliderIndicatorProps, n as SliderValueProps, o as SliderThumbLabelProps, p as SliderIndicator, r as SliderTrack, s as SliderThumb, t as SliderValue, u as SliderMarksProps, v as SliderMark$1, w as SliderSize, x as SliderRadius, y as SliderValue$1 } from "../slider-value-Db8SCu0c.js";
1
+ import { C as SliderControl, S as SliderIndicatorProps, _ as SliderMark$1, a as SliderValue, b as SliderMarkProps, c as SliderTrackProps, d as SliderLabelTransitionProps, f as SliderThumb, g as SliderLabel, h as SliderMarksProps, i as SliderSize, l as SliderThumbLabel, m as SliderMarks, n as SliderSemanticRadius, o as SliderValueProps, p as SliderThumbProps, r as SliderSemanticSize, s as SliderTrack, t as SliderRadius, u as SliderThumbLabelProps, v as SliderValue$1, w as SliderControlProps, x as SliderIndicator, y as SliderMark } from "../slider-style-tokens-CZezJilZ.js";
2
2
  import { ComponentPropsWithoutRef, ReactNode } from "react";
3
3
  import { Slider as Slider$1 } from "@base-ui/react/slider";
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"slider.d.ts","names":[],"sources":["../../src/ui/slider/single/slider.tsx"],"mappings":";;;;;KA2CK,eAAA,GAAkB,IAAA,CACrB,QAAA,CAAgB,IAAA,CAAK,KAAA;AAAA,UAcN,WAAA,SAAoB,eAAA;EACnC,KAAA;EACA,YAAA;EACA,MAAA;EACA,gBAAA,GAAmB,IAAA,CACjB,wBAAA;EAGF,QAAA;EACA,KAAA,GAAQ,WAAA;EACR,aAAA;EACA,oBAAA,GAAuB,0BAAA;EACvB,KAAA,YAAiB,YAAA;EACjB,GAAA;EACA,GAAA;EACA,IAAA;EACA,QAAA,KAAa,KAAA,EAAO,aAAA;EACpB,WAAA,KAAgB,KAAA,EAAO,aAAA;EACvB,SAAA;EACA,MAAA,GAAS,YAAA;EACT,eAAA;EACA,KAAA,KAAU,KAAA;EACV,IAAA,GAAO,UAAA;EACP,gBAAA;EACA,IAAA;EACA,aAAA,GAAgB,SAAA;EAChB,UAAA;EACA,gBAAA;EACA,wBAAA;EACA,UAAA,GAAa,IAAA,CAAK,gBAAA;EAClB,SAAA;EACA,SAAA;EACA,QAAA;EACA,KAAA;AAAA;AAAA,KAGG,eAAA,KAAoB,KAAA,EAAO,WAAA,KAAgB,SAAA;EAC9C,OAAA,SAAgB,aAAA;EAChB,SAAA,SAAkB,eAAA;EAClB,IAAA,SAAa,UAAA;EACb,KAAA,SAAc,WAAA;EACd,KAAA,SAAc,WAAA;EACd,UAAA,SAAmB,gBAAA;EACnB,KAAA,SAAc,WAAA;EACd,KAAA,SAAc,WAAA;AAAA;AAAA,cAGV,MAAA,EAqIA,eAAA"}
1
+ {"version":3,"file":"slider.d.ts","names":[],"sources":["../../src/ui/slider/single/slider.tsx"],"mappings":";;;;;KAqCK,eAAA,GAAkB,IAAA,CACrB,QAAA,CAAgB,IAAA,CAAK,KAAA;AAAA,UAcN,WAAA,SAAoB,eAAA;EACnC,KAAA;EACA,YAAA;EACA,MAAA;EACA,gBAAA,GAAmB,IAAA,CACjB,wBAAA;EAGF,QAAA;EACA,KAAA,GAAQ,WAAA;EACR,aAAA;EACA,oBAAA,GAAuB,0BAAA;EACvB,KAAA,YAAiB,YAAA;EACjB,GAAA;EACA,GAAA;EACA,IAAA;EACA,QAAA,KAAa,KAAA,EAAO,aAAA;EACpB,WAAA,KAAgB,KAAA,EAAO,aAAA;EACvB,SAAA;EACA,MAAA,GAAS,YAAA;EACT,eAAA;EACA,KAAA,KAAU,KAAA;EACV,IAAA,GAAO,UAAA;EACP,gBAAA;EACA,IAAA;EACA,aAAA,GAAgB,SAAA;EAChB,UAAA;EACA,gBAAA;EACA,wBAAA;EACA,UAAA,GAAa,IAAA,CAAK,gBAAA;EAClB,SAAA;EACA,SAAA;EACA,QAAA;EACA,KAAA;AAAA;AAAA,KAGG,eAAA,KAAoB,KAAA,EAAO,WAAA,KAAgB,SAAA;EAC9C,OAAA,SAAgB,aAAA;EAChB,SAAA,SAAkB,eAAA;EAClB,IAAA,SAAa,UAAA;EACb,KAAA,SAAc,WAAA;EACd,KAAA,SAAc,WAAA;EACd,UAAA,SAAmB,gBAAA;EACnB,KAAA,SAAc,WAAA;EACd,KAAA,SAAc,WAAA;AAAA;AAAA,cAGV,MAAA,EAqIA,eAAA"}
package/dist/ui/slider.js CHANGED
@@ -1,4 +1,6 @@
1
- import { _ as getNextMarkValue, a as SliderValue, b as isKeyboardLikeReason, c as SliderThumb, d as SliderIndicator, f as SliderControl, g as getNearestMarkValue, h as getLastMarkValue, i as resolveSliderBounds, l as SliderMarks, m as getFirstMarkValue, n as resolveSliderRootClassName, o as SliderTrack, p as clampNumber, r as resolveSliderLabel, s as SliderThumbLabel, t as mergeSliderRootStyle, u as SliderMark, v as getPreviousMarkValue, x as toFloatingValue, y as getSortedSelectableMarks } from "../slider-root-presentation-ChJHPMIV.js";
1
+ "use client";
2
+
3
+ import { _ as getNextMarkValue, a as SliderValue, b as isKeyboardLikeReason, c as SliderThumb, d as SliderIndicator, f as SliderControl, g as getNearestMarkValue, h as getLastMarkValue, i as resolveSliderBounds, l as SliderMarks, m as getFirstMarkValue, n as resolveSliderRootClassName, o as SliderTrack, p as clampNumber, r as resolveSliderLabel, s as SliderThumbLabel, t as mergeSliderRootStyle, u as SliderMark, v as getPreviousMarkValue, x as toFloatingValue, y as getSortedSelectableMarks } from "../slider-root-presentation-B6OO_iCT.js";
2
4
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
5
  import { jsx, jsxs } from "react/jsx-runtime";
4
6
  import { Slider as Slider$1 } from "@base-ui/react/slider";
@@ -1 +1 @@
1
- {"version":3,"file":"slider.js","names":["SliderPrimitive","SliderValuePrimitive"],"sources":["../../src/ui/slider/math/normalize-single-slider-value.ts","../../src/ui/slider/single/use-single-slider-state.ts","../../src/ui/slider/single/slider.tsx"],"sourcesContent":["import type { SliderMark } from \"../shared/slider-types\";\n\nimport {\n clampNumber,\n getFirstMarkValue,\n getLastMarkValue,\n getNearestMarkValue,\n getNextMarkValue,\n getPreviousMarkValue,\n getSortedSelectableMarks,\n isKeyboardLikeReason,\n toFloatingValue,\n} from \"./slider-math-utils\";\n\ninterface NormalizeSliderValueOptions {\n current: number;\n domainMax: number;\n domainMin: number;\n marks?: readonly SliderMark[];\n max: number;\n min: number;\n precision: number;\n raw: number;\n reason?: string;\n restrictToMarks?: boolean;\n}\n\nexport const normalizeSingleSliderValue = ({\n current,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw,\n reason,\n restrictToMarks,\n}: NormalizeSliderValueOptions) => {\n const clampedRaw = clampNumber(raw, domainMin, domainMax);\n const clampedCurrent = clampNumber(current, min, max);\n\n if (!restrictToMarks) {\n return toFloatingValue(clampNumber(clampedRaw, min, max), precision);\n }\n\n const selectableMarks = getSortedSelectableMarks(marks, min, max);\n if (!selectableMarks.length) {\n return toFloatingValue(clampNumber(clampedRaw, min, max), precision);\n }\n\n if (!isKeyboardLikeReason(reason)) {\n return toFloatingValue(\n getNearestMarkValue(clampedRaw, selectableMarks),\n precision\n );\n }\n\n if (clampedRaw <= min) {\n return toFloatingValue(getFirstMarkValue(selectableMarks, min), precision);\n }\n\n if (clampedRaw >= max) {\n return toFloatingValue(getLastMarkValue(selectableMarks, max), precision);\n }\n\n if (clampedRaw > clampedCurrent) {\n return toFloatingValue(\n getNextMarkValue(clampedCurrent, selectableMarks),\n precision\n );\n }\n\n if (clampedRaw < clampedCurrent) {\n return toFloatingValue(\n getPreviousMarkValue(clampedCurrent, selectableMarks),\n precision\n );\n }\n\n return toFloatingValue(\n getNearestMarkValue(clampedRaw, selectableMarks),\n precision\n );\n};\n","\"use client\";\n\nimport type { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport type { SliderMark, SliderValue } from \"../shared/slider-types\";\n\nimport { normalizeSingleSliderValue } from \"../math/normalize-single-slider-value\";\n\ninterface UseSingleSliderStateOptions {\n defaultValue?: number;\n domainMax: number;\n domainMin: number;\n marks?: readonly SliderMark[];\n max: number;\n min: number;\n onChange?: ((value: SliderValue) => void) | undefined;\n onChangeEnd?: ((value: SliderValue) => void) | undefined;\n precision: number;\n restrictToMarks: boolean;\n value?: number;\n}\n\nexport const useSingleSliderState = ({\n defaultValue,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n onChange,\n onChangeEnd,\n precision,\n restrictToMarks,\n value,\n}: UseSingleSliderStateOptions) => {\n const initialValue = useMemo(\n () =>\n normalizeSingleSliderValue({\n current: min,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw: defaultValue ?? min,\n restrictToMarks,\n }),\n [\n defaultValue,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n restrictToMarks,\n ]\n );\n\n const [uncontrolledValue, setUncontrolledValue] = useState(initialValue);\n\n const controlledValue = useMemo(() => {\n if (value === undefined) {\n return;\n }\n\n return normalizeSingleSliderValue({\n current: uncontrolledValue,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw: value,\n restrictToMarks,\n });\n }, [\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n restrictToMarks,\n uncontrolledValue,\n value,\n ]);\n\n const sliderValue = controlledValue ?? uncontrolledValue;\n const valueRef = useRef(sliderValue);\n\n useEffect(() => {\n valueRef.current = sliderValue;\n }, [sliderValue]);\n\n useEffect(() => {\n if (value !== undefined) {\n return;\n }\n\n setUncontrolledValue((previous: number) =>\n normalizeSingleSliderValue({\n current: previous,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw: previous,\n restrictToMarks,\n })\n );\n }, [\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n restrictToMarks,\n value,\n ]);\n\n const handleValueChange = useCallback(\n (\n nextValue: number | number[],\n eventDetails: SliderPrimitive.Root.ChangeEventDetails\n ) => {\n const rawValue = Array.isArray(nextValue)\n ? (nextValue[0] ?? valueRef.current)\n : nextValue;\n\n const normalizedValue = normalizeSingleSliderValue({\n current: valueRef.current,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw: rawValue,\n reason: eventDetails.reason,\n restrictToMarks,\n });\n\n valueRef.current = normalizedValue;\n\n if (value === undefined) {\n setUncontrolledValue(normalizedValue);\n }\n\n onChange?.(normalizedValue);\n },\n [\n domainMax,\n domainMin,\n marks,\n max,\n min,\n onChange,\n precision,\n restrictToMarks,\n value,\n ]\n );\n\n const handleValueCommitted = useCallback(() => {\n onChangeEnd?.(valueRef.current);\n }, [onChangeEnd]);\n\n return {\n handleValueChange,\n handleValueCommitted,\n sliderValue,\n };\n};\n","\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\n\nimport type { SliderRadius, SliderSize } from \"../shared/slider-style-tokens\";\nimport type { SliderLabelTransitionProps } from \"../shared/slider-transition\";\nimport type {\n SliderLabel,\n SliderMark as SliderMarkType,\n SliderValue,\n} from \"../shared/slider-types\";\n\nimport { toFloatingValue } from \"../math/slider-math-utils\";\nimport {\n SliderControl,\n type SliderControlProps,\n} from \"../primitives/slider-control\";\nimport {\n SliderIndicator,\n type SliderIndicatorProps,\n} from \"../primitives/slider-indicator\";\nimport { SliderMark, type SliderMarkProps } from \"../primitives/slider-mark\";\nimport { SliderMarks, type SliderMarksProps } from \"../primitives/slider-marks\";\nimport { SliderThumb, type SliderThumbProps } from \"../primitives/slider-thumb\";\nimport {\n SliderThumbLabel,\n type SliderThumbLabelProps,\n} from \"../primitives/slider-thumb-label\";\nimport { SliderTrack, type SliderTrackProps } from \"../primitives/slider-track\";\nimport {\n SliderValue as SliderValuePrimitive,\n type SliderValueProps,\n} from \"../primitives/slider-value\";\nimport { resolveSliderBounds } from \"../shared/slider-bounds\";\nimport { resolveSliderLabel } from \"../shared/slider-label\";\nimport {\n mergeSliderRootStyle,\n resolveSliderRootClassName,\n} from \"../shared/slider-root-presentation\";\nimport { useSingleSliderState } from \"./use-single-slider-state\";\n\ntype SliderRootProps = Omit<\n SliderPrimitive.Root.Props<number>,\n | \"defaultValue\"\n | \"max\"\n | \"min\"\n | \"name\"\n | \"onChange\"\n | \"onValueChange\"\n | \"onValueCommitted\"\n | \"minStepsBetweenValues\"\n | \"thumbCollisionBehavior\"\n | \"thumbAlignment\"\n | \"value\"\n>;\n\nexport interface SliderProps extends SliderRootProps {\n color?: string;\n defaultValue?: number;\n domain?: [number, number];\n hiddenInputProps?: Omit<\n ComponentPropsWithoutRef<\"input\">,\n \"name\" | \"type\" | \"value\"\n >;\n inverted?: boolean;\n label?: SliderLabel;\n labelAlwaysOn?: boolean;\n labelTransitionProps?: SliderLabelTransitionProps;\n marks?: readonly SliderMarkType[];\n max?: number;\n min?: number;\n name?: string;\n onChange?: ((value: SliderValue) => void) | undefined;\n onChangeEnd?: ((value: SliderValue) => void) | undefined;\n precision?: number;\n radius?: SliderRadius;\n restrictToMarks?: boolean;\n scale?: ((value: number) => number) | undefined;\n size?: SliderSize;\n showLabelOnHover?: boolean;\n step?: number;\n thumbChildren?: ReactNode;\n thumbLabel?: string;\n thumbLabelOffset?: number | string;\n thumbLabelOffsetVertical?: number | string;\n thumbProps?: Omit<SliderThumbProps, \"aria-label\" | \"children\" | \"index\">;\n thumbSize?: number | string;\n trackSize?: number | string;\n markSize?: number | string;\n value?: number;\n}\n\ntype SliderComponent = ((props: SliderProps) => ReactNode) & {\n Control: typeof SliderControl;\n Indicator: typeof SliderIndicator;\n Mark: typeof SliderMark;\n Marks: typeof SliderMarks;\n Thumb: typeof SliderThumb;\n ThumbLabel: typeof SliderThumbLabel;\n Track: typeof SliderTrack;\n Value: typeof SliderValuePrimitive;\n};\n\nconst Slider = (({\n className,\n children,\n color,\n defaultValue,\n domain,\n hiddenInputProps,\n inverted = false,\n label = (value) => value,\n labelAlwaysOn = false,\n labelTransitionProps,\n marks,\n max = 100,\n min = 0,\n name,\n onChange,\n onChangeEnd,\n precision: precisionProp,\n radius,\n restrictToMarks = false,\n scale = (value) => value,\n size,\n showLabelOnHover = true,\n step = 1,\n style,\n thumbChildren,\n thumbLabel,\n thumbLabelOffset,\n thumbLabelOffsetVertical,\n thumbProps,\n thumbSize,\n trackSize,\n markSize,\n value,\n ...props\n}: SliderProps) => {\n const resolvedBounds = resolveSliderBounds({\n domain,\n max,\n min,\n precision: precisionProp,\n step,\n });\n\n const {\n domainMax,\n domainMin,\n max: normalizedMax,\n min: normalizedMin,\n precision,\n } = resolvedBounds;\n\n const { handleValueChange, handleValueCommitted, sliderValue } =\n useSingleSliderState({\n defaultValue,\n domainMax,\n domainMin,\n marks,\n max: normalizedMax,\n min: normalizedMin,\n onChange,\n onChangeEnd,\n precision,\n restrictToMarks,\n value,\n });\n\n const displayedValue = toFloatingValue(scale(sliderValue), precision);\n const resolvedLabel = resolveSliderLabel(label, displayedValue);\n const defaultThumbProps = thumbProps ?? {};\n\n return (\n <SliderPrimitive.Root\n {...props}\n className={resolveSliderRootClassName(className, inverted)}\n data-slot=\"slider\"\n max={domainMax}\n min={domainMin}\n onValueChange={handleValueChange}\n onValueCommitted={handleValueCommitted}\n step={step}\n style={mergeSliderRootStyle(\n {\n color,\n markSize,\n radius,\n size,\n thumbLabelOffset,\n thumbLabelOffsetVertical,\n thumbSize,\n trackSize,\n },\n style\n )}\n thumbAlignment=\"center\"\n value={sliderValue}\n >\n {children ?? (\n <SliderControl>\n <SliderTrack>\n <SliderIndicator />\n <SliderMarks\n disabled={props.disabled}\n inverted={inverted}\n marks={marks}\n max={domainMax}\n min={domainMin}\n orientation={props.orientation}\n values={[sliderValue]}\n />\n </SliderTrack>\n <SliderThumb {...defaultThumbProps} aria-label={thumbLabel}>\n {thumbChildren}\n <SliderThumbLabel\n label={resolvedLabel}\n labelAlwaysOn={labelAlwaysOn}\n orientation={props.orientation}\n showLabelOnHover={showLabelOnHover}\n transitionProps={labelTransitionProps}\n />\n </SliderThumb>\n </SliderControl>\n )}\n {name ? (\n <input\n {...hiddenInputProps}\n name={name}\n type=\"hidden\"\n value={String(displayedValue)}\n />\n ) : null}\n </SliderPrimitive.Root>\n );\n}) as SliderComponent;\n\nSlider.Control = SliderControl;\nSlider.Indicator = SliderIndicator;\nSlider.Mark = SliderMark;\nSlider.Marks = SliderMarks;\nSlider.Thumb = SliderThumb;\nSlider.ThumbLabel = SliderThumbLabel;\nSlider.Track = SliderTrack;\nSlider.Value = SliderValuePrimitive;\n\nexport type { SliderControlProps };\nexport type { SliderIndicatorProps };\nexport type { SliderMarkProps };\nexport type { SliderMarksProps };\nexport type { SliderThumbProps };\nexport type { SliderThumbLabelProps };\nexport type { SliderTrackProps };\nexport type { SliderValueProps };\nexport type { SliderMarkType as SliderMarkDefinition };\n\nexport {\n Slider,\n SliderControl,\n SliderIndicator,\n SliderMark,\n SliderMarks,\n SliderThumb,\n SliderThumbLabel,\n SliderTrack,\n SliderValuePrimitive as SliderValue,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"slider.js","names":["SliderPrimitive","SliderValuePrimitive"],"sources":["../../src/ui/slider/math/normalize-single-slider-value.ts","../../src/ui/slider/single/use-single-slider-state.ts","../../src/ui/slider/single/slider.tsx"],"sourcesContent":["import type { SliderMark } from \"../shared/slider-types\";\nimport {\n clampNumber,\n getFirstMarkValue,\n getLastMarkValue,\n getNearestMarkValue,\n getNextMarkValue,\n getPreviousMarkValue,\n getSortedSelectableMarks,\n isKeyboardLikeReason,\n toFloatingValue,\n} from \"./slider-math-utils\";\n\ninterface NormalizeSliderValueOptions {\n current: number;\n domainMax: number;\n domainMin: number;\n marks?: readonly SliderMark[];\n max: number;\n min: number;\n precision: number;\n raw: number;\n reason?: string;\n restrictToMarks?: boolean;\n}\n\nexport const normalizeSingleSliderValue = ({\n current,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw,\n reason,\n restrictToMarks,\n}: NormalizeSliderValueOptions) => {\n const clampedRaw = clampNumber(raw, domainMin, domainMax);\n const clampedCurrent = clampNumber(current, min, max);\n\n if (!restrictToMarks) {\n return toFloatingValue(clampNumber(clampedRaw, min, max), precision);\n }\n\n const selectableMarks = getSortedSelectableMarks(marks, min, max);\n if (!selectableMarks.length) {\n return toFloatingValue(clampNumber(clampedRaw, min, max), precision);\n }\n\n if (!isKeyboardLikeReason(reason)) {\n return toFloatingValue(\n getNearestMarkValue(clampedRaw, selectableMarks),\n precision\n );\n }\n\n if (clampedRaw <= min) {\n return toFloatingValue(getFirstMarkValue(selectableMarks, min), precision);\n }\n\n if (clampedRaw >= max) {\n return toFloatingValue(getLastMarkValue(selectableMarks, max), precision);\n }\n\n if (clampedRaw > clampedCurrent) {\n return toFloatingValue(\n getNextMarkValue(clampedCurrent, selectableMarks),\n precision\n );\n }\n\n if (clampedRaw < clampedCurrent) {\n return toFloatingValue(\n getPreviousMarkValue(clampedCurrent, selectableMarks),\n precision\n );\n }\n\n return toFloatingValue(\n getNearestMarkValue(clampedRaw, selectableMarks),\n precision\n );\n};\n","\"use client\";\n\nimport type { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { normalizeSingleSliderValue } from \"../math/normalize-single-slider-value\";\nimport type { SliderMark, SliderValue } from \"../shared/slider-types\";\n\ninterface UseSingleSliderStateOptions {\n defaultValue?: number;\n domainMax: number;\n domainMin: number;\n marks?: readonly SliderMark[];\n max: number;\n min: number;\n onChange?: ((value: SliderValue) => void) | undefined;\n onChangeEnd?: ((value: SliderValue) => void) | undefined;\n precision: number;\n restrictToMarks: boolean;\n value?: number;\n}\n\nexport const useSingleSliderState = ({\n defaultValue,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n onChange,\n onChangeEnd,\n precision,\n restrictToMarks,\n value,\n}: UseSingleSliderStateOptions) => {\n const initialValue = useMemo(\n () =>\n normalizeSingleSliderValue({\n current: min,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw: defaultValue ?? min,\n restrictToMarks,\n }),\n [\n defaultValue,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n restrictToMarks,\n ]\n );\n\n const [uncontrolledValue, setUncontrolledValue] = useState(initialValue);\n\n const controlledValue = useMemo(() => {\n if (value === undefined) {\n return;\n }\n\n return normalizeSingleSliderValue({\n current: uncontrolledValue,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw: value,\n restrictToMarks,\n });\n }, [\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n restrictToMarks,\n uncontrolledValue,\n value,\n ]);\n\n const sliderValue = controlledValue ?? uncontrolledValue;\n const valueRef = useRef(sliderValue);\n\n useEffect(() => {\n valueRef.current = sliderValue;\n }, [sliderValue]);\n\n useEffect(() => {\n if (value !== undefined) {\n return;\n }\n\n setUncontrolledValue((previous: number) =>\n normalizeSingleSliderValue({\n current: previous,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw: previous,\n restrictToMarks,\n })\n );\n }, [\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n restrictToMarks,\n value,\n ]);\n\n const handleValueChange = useCallback(\n (\n nextValue: number | number[],\n eventDetails: SliderPrimitive.Root.ChangeEventDetails\n ) => {\n const rawValue = Array.isArray(nextValue)\n ? (nextValue[0] ?? valueRef.current)\n : nextValue;\n\n const normalizedValue = normalizeSingleSliderValue({\n current: valueRef.current,\n domainMax,\n domainMin,\n marks,\n max,\n min,\n precision,\n raw: rawValue,\n reason: eventDetails.reason,\n restrictToMarks,\n });\n\n valueRef.current = normalizedValue;\n\n if (value === undefined) {\n setUncontrolledValue(normalizedValue);\n }\n\n onChange?.(normalizedValue);\n },\n [\n domainMax,\n domainMin,\n marks,\n max,\n min,\n onChange,\n precision,\n restrictToMarks,\n value,\n ]\n );\n\n const handleValueCommitted = useCallback(() => {\n onChangeEnd?.(valueRef.current);\n }, [onChangeEnd]);\n\n return {\n handleValueChange,\n handleValueCommitted,\n sliderValue,\n };\n};\n","\"use client\";\n\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { toFloatingValue } from \"../math/slider-math-utils\";\nimport { SliderControl } from \"../primitives/slider-control\";\nimport type { SliderControlProps } from \"../primitives/slider-control\";\nimport { SliderIndicator } from \"../primitives/slider-indicator\";\nimport type { SliderIndicatorProps } from \"../primitives/slider-indicator\";\nimport { SliderMark } from \"../primitives/slider-mark\";\nimport type { SliderMarkProps } from \"../primitives/slider-mark\";\nimport { SliderMarks } from \"../primitives/slider-marks\";\nimport type { SliderMarksProps } from \"../primitives/slider-marks\";\nimport { SliderThumb } from \"../primitives/slider-thumb\";\nimport type { SliderThumbProps } from \"../primitives/slider-thumb\";\nimport { SliderThumbLabel } from \"../primitives/slider-thumb-label\";\nimport type { SliderThumbLabelProps } from \"../primitives/slider-thumb-label\";\nimport { SliderTrack } from \"../primitives/slider-track\";\nimport type { SliderTrackProps } from \"../primitives/slider-track\";\nimport { SliderValue as SliderValuePrimitive } from \"../primitives/slider-value\";\nimport type { SliderValueProps } from \"../primitives/slider-value\";\nimport { resolveSliderBounds } from \"../shared/slider-bounds\";\nimport { resolveSliderLabel } from \"../shared/slider-label\";\nimport {\n mergeSliderRootStyle,\n resolveSliderRootClassName,\n} from \"../shared/slider-root-presentation\";\nimport type { SliderRadius, SliderSize } from \"../shared/slider-style-tokens\";\nimport type { SliderLabelTransitionProps } from \"../shared/slider-transition\";\nimport type {\n SliderLabel,\n SliderMark as SliderMarkType,\n SliderValue,\n} from \"../shared/slider-types\";\nimport { useSingleSliderState } from \"./use-single-slider-state\";\n\ntype SliderRootProps = Omit<\n SliderPrimitive.Root.Props<number>,\n | \"defaultValue\"\n | \"max\"\n | \"min\"\n | \"name\"\n | \"onChange\"\n | \"onValueChange\"\n | \"onValueCommitted\"\n | \"minStepsBetweenValues\"\n | \"thumbCollisionBehavior\"\n | \"thumbAlignment\"\n | \"value\"\n>;\n\nexport interface SliderProps extends SliderRootProps {\n color?: string;\n defaultValue?: number;\n domain?: [number, number];\n hiddenInputProps?: Omit<\n ComponentPropsWithoutRef<\"input\">,\n \"name\" | \"type\" | \"value\"\n >;\n inverted?: boolean;\n label?: SliderLabel;\n labelAlwaysOn?: boolean;\n labelTransitionProps?: SliderLabelTransitionProps;\n marks?: readonly SliderMarkType[];\n max?: number;\n min?: number;\n name?: string;\n onChange?: ((value: SliderValue) => void) | undefined;\n onChangeEnd?: ((value: SliderValue) => void) | undefined;\n precision?: number;\n radius?: SliderRadius;\n restrictToMarks?: boolean;\n scale?: ((value: number) => number) | undefined;\n size?: SliderSize;\n showLabelOnHover?: boolean;\n step?: number;\n thumbChildren?: ReactNode;\n thumbLabel?: string;\n thumbLabelOffset?: number | string;\n thumbLabelOffsetVertical?: number | string;\n thumbProps?: Omit<SliderThumbProps, \"aria-label\" | \"children\" | \"index\">;\n thumbSize?: number | string;\n trackSize?: number | string;\n markSize?: number | string;\n value?: number;\n}\n\ntype SliderComponent = ((props: SliderProps) => ReactNode) & {\n Control: typeof SliderControl;\n Indicator: typeof SliderIndicator;\n Mark: typeof SliderMark;\n Marks: typeof SliderMarks;\n Thumb: typeof SliderThumb;\n ThumbLabel: typeof SliderThumbLabel;\n Track: typeof SliderTrack;\n Value: typeof SliderValuePrimitive;\n};\n\nconst Slider = (({\n className,\n children,\n color,\n defaultValue,\n domain,\n hiddenInputProps,\n inverted = false,\n label = (value) => value,\n labelAlwaysOn = false,\n labelTransitionProps,\n marks,\n max = 100,\n min = 0,\n name,\n onChange,\n onChangeEnd,\n precision: precisionProp,\n radius,\n restrictToMarks = false,\n scale = (value) => value,\n size,\n showLabelOnHover = true,\n step = 1,\n style,\n thumbChildren,\n thumbLabel,\n thumbLabelOffset,\n thumbLabelOffsetVertical,\n thumbProps,\n thumbSize,\n trackSize,\n markSize,\n value,\n ...props\n}: SliderProps) => {\n const resolvedBounds = resolveSliderBounds({\n domain,\n max,\n min,\n precision: precisionProp,\n step,\n });\n\n const {\n domainMax,\n domainMin,\n max: normalizedMax,\n min: normalizedMin,\n precision,\n } = resolvedBounds;\n\n const { handleValueChange, handleValueCommitted, sliderValue } =\n useSingleSliderState({\n defaultValue,\n domainMax,\n domainMin,\n marks,\n max: normalizedMax,\n min: normalizedMin,\n onChange,\n onChangeEnd,\n precision,\n restrictToMarks,\n value,\n });\n\n const displayedValue = toFloatingValue(scale(sliderValue), precision);\n const resolvedLabel = resolveSliderLabel(label, displayedValue);\n const defaultThumbProps = thumbProps ?? {};\n\n return (\n <SliderPrimitive.Root\n {...props}\n className={resolveSliderRootClassName(className, inverted)}\n data-slot=\"slider\"\n max={domainMax}\n min={domainMin}\n onValueChange={handleValueChange}\n onValueCommitted={handleValueCommitted}\n step={step}\n style={mergeSliderRootStyle(\n {\n color,\n markSize,\n radius,\n size,\n thumbLabelOffset,\n thumbLabelOffsetVertical,\n thumbSize,\n trackSize,\n },\n style\n )}\n thumbAlignment=\"center\"\n value={sliderValue}\n >\n {children ?? (\n <SliderControl>\n <SliderTrack>\n <SliderIndicator />\n <SliderMarks\n disabled={props.disabled}\n inverted={inverted}\n marks={marks}\n max={domainMax}\n min={domainMin}\n orientation={props.orientation}\n values={[sliderValue]}\n />\n </SliderTrack>\n <SliderThumb {...defaultThumbProps} aria-label={thumbLabel}>\n {thumbChildren}\n <SliderThumbLabel\n label={resolvedLabel}\n labelAlwaysOn={labelAlwaysOn}\n orientation={props.orientation}\n showLabelOnHover={showLabelOnHover}\n transitionProps={labelTransitionProps}\n />\n </SliderThumb>\n </SliderControl>\n )}\n {name ? (\n <input\n {...hiddenInputProps}\n name={name}\n type=\"hidden\"\n value={String(displayedValue)}\n />\n ) : null}\n </SliderPrimitive.Root>\n );\n}) as SliderComponent;\n\nSlider.Control = SliderControl;\nSlider.Indicator = SliderIndicator;\nSlider.Mark = SliderMark;\nSlider.Marks = SliderMarks;\nSlider.Thumb = SliderThumb;\nSlider.ThumbLabel = SliderThumbLabel;\nSlider.Track = SliderTrack;\nSlider.Value = SliderValuePrimitive;\n\nexport type { SliderControlProps };\nexport type { SliderIndicatorProps };\nexport type { SliderMarkProps };\nexport type { SliderMarksProps };\nexport type { SliderThumbProps };\nexport type { SliderThumbLabelProps };\nexport type { SliderTrackProps };\nexport type { SliderValueProps };\nexport type { SliderMarkType as SliderMarkDefinition };\n\nexport {\n Slider,\n SliderControl,\n SliderIndicator,\n SliderMark,\n SliderMarks,\n SliderThumb,\n SliderThumbLabel,\n SliderTrack,\n SliderValuePrimitive as SliderValue,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spacer.d.ts","names":[],"sources":["../../src/ui/spacer/spacer.tsx"],"mappings":";;;;KAMY,iBAAA;AAAA,KAEA,WAAA,GAAc,cAAA;EACxB,WAAA,GAAc,iBAAA;EACd,IAAA;AAAA;AAAA,cAGW,MAAA;EAAU,WAAA;EAAA,IAAA;EAAA,KAAA;EAAA,SAAA;EAAA,GAAA;AAAA,GAMpB,WAAA,KAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"spacer.d.ts","names":[],"sources":["../../src/ui/spacer/spacer.tsx"],"mappings":";;;;KAKY,iBAAA;AAAA,KAEA,WAAA,GAAc,cAAA;EACxB,WAAA,GAAc,iBAAA;EACd,IAAA;AAAA;AAAA,cAGW,MAAA;EAAU,WAAA;EAAA,IAAA;EAAA,KAAA;EAAA,SAAA;EAAA,GAAA;AAAA,GAMpB,WAAA,KAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
package/dist/ui/spacer.js CHANGED
@@ -9,8 +9,8 @@ const Spacer = ({ orientation = "horizontal", size, style = {}, className, ...pr
9
9
  ...style,
10
10
  ...orientation === "horizontal" && !size && { flex: 1 },
11
11
  ...size && {
12
- width: orientation === "vertical" ? "1px" : size,
13
- height: orientation === "horizontal" ? "1px" : size
12
+ height: orientation === "horizontal" ? "1px" : size,
13
+ width: orientation === "vertical" ? "1px" : size
14
14
  }
15
15
  };
16
16
  return /* @__PURE__ */ jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"spacer.js","names":[],"sources":["../../src/ui/spacer/spacer.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentProps } from \"react\";\n\nimport { cn } from \"tailwind-variants\";\n\nexport type SpacerOrientation = \"horizontal\" | \"vertical\";\n\nexport type SpacerProps = ComponentProps<\"div\"> & {\n orientation?: SpacerOrientation;\n size?: string | number;\n};\n\nexport const Spacer = ({\n orientation = \"horizontal\",\n size,\n style = {},\n className,\n ...props\n}: SpacerProps) => {\n const computedStyle = {\n ...style,\n ...(orientation === \"horizontal\" && !size && { flex: 1 }),\n ...(size && {\n width: orientation === \"vertical\" ? \"1px\" : size,\n height: orientation === \"horizontal\" ? \"1px\" : size,\n }),\n };\n\n return (\n <div\n className={cn(className)}\n data-slot=\"spacer\"\n style={computedStyle}\n {...props}\n />\n );\n};\n"],"mappings":";;;;;;AAaA,MAAa,UAAU,EACrB,cAAc,cACd,MACA,QAAQ,EAAE,EACV,WACA,GAAG,YACc;CACjB,MAAM,gBAAgB;EACpB,GAAG;EACH,GAAI,gBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;EACxD,GAAI,QAAQ;GACV,OAAO,gBAAgB,aAAa,QAAQ;GAC5C,QAAQ,gBAAgB,eAAe,QAAQ;GAChD;EACF;AAED,QACE,oBAAC;EACC,WAAW,GAAG,UAAU;EACxB,aAAU;EACV,OAAO;EACP,GAAI;GACJ"}
1
+ {"version":3,"file":"spacer.js","names":[],"sources":["../../src/ui/spacer/spacer.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\n\nexport type SpacerOrientation = \"horizontal\" | \"vertical\";\n\nexport type SpacerProps = ComponentProps<\"div\"> & {\n orientation?: SpacerOrientation;\n size?: string | number;\n};\n\nexport const Spacer = ({\n orientation = \"horizontal\",\n size,\n style = {},\n className,\n ...props\n}: SpacerProps) => {\n const computedStyle = {\n ...style,\n ...(orientation === \"horizontal\" && !size && { flex: 1 }),\n ...(size && {\n height: orientation === \"horizontal\" ? \"1px\" : size,\n width: orientation === \"vertical\" ? \"1px\" : size,\n }),\n };\n\n return (\n <div\n className={cn(className)}\n data-slot=\"spacer\"\n style={computedStyle}\n {...props}\n />\n );\n};\n"],"mappings":";;;;;;AAYA,MAAa,UAAU,EACrB,cAAc,cACd,MACA,QAAQ,EAAE,EACV,WACA,GAAG,YACc;CACjB,MAAM,gBAAgB;EACpB,GAAG;EACH,GAAI,gBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;EACxD,GAAI,QAAQ;GACV,QAAQ,gBAAgB,eAAe,QAAQ;GAC/C,OAAO,gBAAgB,aAAa,QAAQ;GAC7C;EACF;AAED,QACE,oBAAC,OAAD;EACE,WAAW,GAAG,UAAU;EACxB,aAAU;EACV,OAAO;EACP,GAAI;EACJ"}
@@ -1,5 +1,7 @@
1
+ "use client";
2
+
1
3
  import { a as useComponentSize } from "../size-provider-18EvJgDT.js";
2
- import { t as COMPACT_VISUAL_CLASS_BY_SIZE } from "../size-system-DTXmtQXw.js";
4
+ import { n as resolveCompactVisualClassBySize } from "../size-system-BTsMqZRQ.js";
3
5
  import { jsx } from "react/jsx-runtime";
4
6
  import { cn } from "tailwind-variants";
5
7
  import { Loading03Icon } from "@hugeicons/core-free-icons";
@@ -10,7 +12,7 @@ const Spinner = ({ className, size: providedSize, strokeWidth = 2, ...props }) =
10
12
  const size = useComponentSize(providedSize);
11
13
  return /* @__PURE__ */ jsx(HugeiconsIcon, {
12
14
  "aria-label": "Loading",
13
- className: cn(COMPACT_VISUAL_CLASS_BY_SIZE[size], "animate-spin", className),
15
+ className: cn(resolveCompactVisualClassBySize(size), "animate-spin", className),
14
16
  icon: Loading03Icon,
15
17
  role: "status",
16
18
  strokeWidth: typeof strokeWidth === "string" ? Number(strokeWidth) : strokeWidth,
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.js","names":[],"sources":["../../src/ui/spinner/spinner.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\n\nimport { Loading03Icon } from \"@hugeicons/core-free-icons\";\nimport { HugeiconsIcon } from \"@hugeicons/react\";\nimport { cn } from \"tailwind-variants\";\n\nimport type { UISize } from \"../shared/size/size-system\";\n\nimport { useComponentSize } from \"../shared/size/size-provider\";\nimport { COMPACT_VISUAL_CLASS_BY_SIZE } from \"../shared/size/size-system\";\n\nexport type SpinnerProps = Omit<ComponentProps<\"svg\">, \"size\"> & {\n size?: UISize;\n};\n\nconst Spinner = ({\n className,\n size: providedSize,\n strokeWidth = 2,\n ...props\n}: SpinnerProps) => {\n const size = useComponentSize(providedSize);\n\n return (\n <HugeiconsIcon\n aria-label=\"Loading\"\n className={cn(\n COMPACT_VISUAL_CLASS_BY_SIZE[size],\n \"animate-spin\",\n className\n )}\n icon={Loading03Icon}\n role=\"status\"\n strokeWidth={\n typeof strokeWidth === \"string\" ? Number(strokeWidth) : strokeWidth\n }\n {...props}\n />\n );\n};\n\nexport { Spinner };\n"],"mappings":";;;;;;;;AAeA,MAAM,WAAW,EACf,WACA,MAAM,cACN,cAAc,GACd,GAAG,YACe;CAClB,MAAM,OAAO,iBAAiB,aAAa;AAE3C,QACE,oBAAC;EACC,cAAW;EACX,WAAW,GACT,6BAA6B,OAC7B,gBACA,UACD;EACD,MAAM;EACN,MAAK;EACL,aACE,OAAO,gBAAgB,WAAW,OAAO,YAAY,GAAG;EAE1D,GAAI;GACJ"}
1
+ {"version":3,"file":"spinner.js","names":[],"sources":["../../src/ui/spinner/spinner.tsx"],"sourcesContent":["\"use client\";\n\nimport { Loading03Icon } from \"@hugeicons/core-free-icons\";\nimport { HugeiconsIcon } from \"@hugeicons/react\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"tailwind-variants\";\n\nimport { useComponentSize } from \"../shared/size/size-provider\";\nimport type { UISize } from \"../shared/size/size-system\";\nimport { resolveCompactVisualClassBySize } from \"../shared/size/size-system\";\n\nexport type SpinnerProps = Omit<ComponentProps<\"svg\">, \"size\"> & {\n size?: UISize;\n};\n\nconst Spinner = ({\n className,\n size: providedSize,\n strokeWidth = 2,\n ...props\n}: SpinnerProps) => {\n const size = useComponentSize(providedSize);\n\n return (\n <HugeiconsIcon\n aria-label=\"Loading\"\n className={cn(\n resolveCompactVisualClassBySize(size),\n \"animate-spin\",\n className\n )}\n icon={Loading03Icon}\n role=\"status\"\n strokeWidth={\n typeof strokeWidth === \"string\" ? Number(strokeWidth) : strokeWidth\n }\n {...props}\n />\n );\n};\n\nexport { Spinner };\n"],"mappings":";;;;;;;;;;AAeA,MAAM,WAAW,EACf,WACA,MAAM,cACN,cAAc,GACd,GAAG,YACe;CAClB,MAAM,OAAO,iBAAiB,aAAa;AAE3C,QACE,oBAAC,eAAD;EACE,cAAW;EACX,WAAW,GACT,gCAAgC,KAAK,EACrC,gBACA,UACD;EACD,MAAM;EACN,MAAK;EACL,aACE,OAAO,gBAAgB,WAAW,OAAO,YAAY,GAAG;EAE1D,GAAI;EACJ"}
@@ -14,29 +14,29 @@ declare const SwitchThumb: ({
14
14
  //#region src/ui/switch/switch.d.ts
15
15
  declare const switchVariants: tailwind_variants0.TVReturnType<{
16
16
  size: {
17
- xs: string;
18
- sm: string;
19
- md: string;
20
17
  lg: string;
18
+ md: string;
19
+ sm: string;
21
20
  xl: string;
21
+ xs: string;
22
22
  };
23
- }, undefined, "peer group/switch relative inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-danger aria-invalid:ring-[3px] aria-invalid:ring-danger/20 data-checked:bg-primary data-disabled:cursor-not-allowed data-disabled:opacity-50 data-unchecked:bg-input dark:aria-invalid:border-danger/50 dark:aria-invalid:ring-danger/40 dark:data-unchecked:bg-input/80", {
23
+ }, undefined, "peer group/switch cursor-clickable focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-danger aria-invalid:ring-danger/20 data-checked:bg-primary data-unchecked:bg-input dark:aria-invalid:border-danger/50 dark:aria-invalid:ring-danger/40 dark:data-unchecked:bg-input/80 relative inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] aria-invalid:ring-[3px] data-disabled:cursor-not-allowed data-disabled:opacity-50", {
24
24
  size: {
25
- xs: string;
26
- sm: string;
27
- md: string;
28
25
  lg: string;
26
+ md: string;
27
+ sm: string;
29
28
  xl: string;
29
+ xs: string;
30
30
  };
31
31
  }, undefined, tailwind_variants0.TVReturnType<{
32
32
  size: {
33
- xs: string;
34
- sm: string;
35
- md: string;
36
33
  lg: string;
34
+ md: string;
35
+ sm: string;
37
36
  xl: string;
37
+ xs: string;
38
38
  };
39
- }, undefined, "peer group/switch relative inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-danger aria-invalid:ring-[3px] aria-invalid:ring-danger/20 data-checked:bg-primary data-disabled:cursor-not-allowed data-disabled:opacity-50 data-unchecked:bg-input dark:aria-invalid:border-danger/50 dark:aria-invalid:ring-danger/40 dark:data-unchecked:bg-input/80", unknown, unknown, undefined>>;
39
+ }, undefined, "peer group/switch cursor-clickable focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-danger aria-invalid:ring-danger/20 data-checked:bg-primary data-unchecked:bg-input dark:aria-invalid:border-danger/50 dark:aria-invalid:ring-danger/40 dark:data-unchecked:bg-input/80 relative inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] aria-invalid:ring-[3px] data-disabled:cursor-not-allowed data-disabled:opacity-50", unknown, unknown, undefined>>;
40
40
  type SwitchVariantProps = Omit<VariantProps<typeof switchVariants>, "size"> & {
41
41
  size?: UISize;
42
42
  };
package/dist/ui/switch.js CHANGED
@@ -16,15 +16,15 @@ const SwitchThumb = ({ className, ...props }) => /* @__PURE__ */ jsx(Switch$1.Th
16
16
  //#endregion
17
17
  //#region src/ui/switch/switch.tsx
18
18
  const switchVariants = tv({
19
- base: "peer group/switch relative inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-danger aria-invalid:ring-[3px] aria-invalid:ring-danger/20 data-checked:bg-primary data-disabled:cursor-not-allowed data-disabled:opacity-50 data-unchecked:bg-input dark:aria-invalid:border-danger/50 dark:aria-invalid:ring-danger/40 dark:data-unchecked:bg-input/80",
19
+ base: "peer group/switch cursor-clickable focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-danger aria-invalid:ring-danger/20 data-checked:bg-primary data-unchecked:bg-input dark:aria-invalid:border-danger/50 dark:aria-invalid:ring-danger/40 dark:data-unchecked:bg-input/80 relative inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] aria-invalid:ring-[3px] data-disabled:cursor-not-allowed data-disabled:opacity-50",
20
+ defaultVariants: { size: "md" },
20
21
  variants: { size: {
21
- xs: "h-3 w-5 after:absolute after:-inset-1.5",
22
- sm: "h-3.5 w-6 after:absolute after:-inset-2",
23
- md: "h-4 w-7 after:absolute after:-inset-2.5",
24
22
  lg: "h-[18px] w-8 after:absolute after:-inset-3",
25
- xl: "h-5 w-9 after:absolute after:-inset-3.5"
26
- } },
27
- defaultVariants: { size: "md" }
23
+ md: "h-4 w-7 after:absolute after:-inset-2.5",
24
+ sm: "h-3.5 w-6 after:absolute after:-inset-2",
25
+ xl: "h-5 w-9 after:absolute after:-inset-3.5",
26
+ xs: "h-3 w-5 after:absolute after:-inset-1.5"
27
+ } }
28
28
  });
29
29
  const Switch = ({ className, size: providedSize, children, ...props }) => {
30
30
  const size = useComponentSize(providedSize);
@@ -1 +1 @@
1
- {"version":3,"file":"switch.js","names":["SwitchPrimitive","SwitchPrimitive"],"sources":["../../src/ui/switch/switch-thumb.tsx","../../src/ui/switch/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\";\n\nimport { mergeBaseUIClassName } from \"../../utils/merge-base-ui-class-name\";\n\nexport type SwitchThumbProps = SwitchPrimitive.Thumb.Props;\n\nconst SwitchThumb = ({ className, ...props }: SwitchThumbProps) => (\n <SwitchPrimitive.Thumb\n className={mergeBaseUIClassName<SwitchPrimitive.Thumb.State>(\n \"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=xs]/switch:size-2.5 group-data-[size=sm]/switch:size-3 group-data-[size=md]/switch:size-3.5 group-data-[size=lg]/switch:size-4 group-data-[size=xl]/switch:size-[18px] data-checked:translate-x-[calc(100%-2px)] data-unchecked:translate-x-0 dark:data-checked:bg-primary-foreground dark:data-unchecked:bg-foreground\",\n className\n )}\n data-slot=\"switch-thumb\"\n {...props}\n />\n);\n\nexport { SwitchThumb };\n","\"use client\";\n\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { UISize } from \"../shared/size/size-system\";\n\nimport { mergeBaseUIClassName } from \"../../utils/merge-base-ui-class-name\";\nimport { useComponentSize } from \"../shared/size/size-provider\";\nimport { SwitchThumb } from \"./switch-thumb\";\n\nconst switchVariants = tv({\n base: \"peer group/switch relative inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-danger aria-invalid:ring-[3px] aria-invalid:ring-danger/20 data-checked:bg-primary data-disabled:cursor-not-allowed data-disabled:opacity-50 data-unchecked:bg-input dark:aria-invalid:border-danger/50 dark:aria-invalid:ring-danger/40 dark:data-unchecked:bg-input/80\",\n variants: {\n size: {\n xs: \"h-3 w-5 after:absolute after:-inset-1.5\",\n sm: \"h-3.5 w-6 after:absolute after:-inset-2\",\n md: \"h-4 w-7 after:absolute after:-inset-2.5\",\n lg: \"h-[18px] w-8 after:absolute after:-inset-3\",\n xl: \"h-5 w-9 after:absolute after:-inset-3.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\ntype SwitchVariantProps = Omit<VariantProps<typeof switchVariants>, \"size\"> & {\n size?: UISize;\n};\n\nexport type SwitchProps = SwitchPrimitive.Root.Props & SwitchVariantProps;\n\nconst Switch = ({\n className,\n size: providedSize,\n children,\n ...props\n}: SwitchProps) => {\n const size = useComponentSize(providedSize);\n\n return (\n <SwitchPrimitive.Root\n className={mergeBaseUIClassName<SwitchPrimitive.Root.State>(\n switchVariants({ size }),\n className\n )}\n data-size={size}\n data-slot=\"switch\"\n {...props}\n >\n {children ?? <SwitchThumb />}\n </SwitchPrimitive.Root>\n );\n};\n\nSwitch.Thumb = SwitchThumb;\n\nexport type { SwitchThumbProps } from \"./switch-thumb\";\nexport { Switch, SwitchThumb };\n"],"mappings":";;;;;;;;;AAQA,MAAM,eAAe,EAAE,WAAW,GAAG,YACnC,oBAACA,SAAgB;CACf,WAAW,qBACT,6ZACA,UACD;CACD,aAAU;CACV,GAAI;EACJ;;;;ACLJ,MAAM,iBAAiB,GAAG;CACxB,MAAM;CACN,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CAAC;AAQF,MAAM,UAAU,EACd,WACA,MAAM,cACN,UACA,GAAG,YACc;CACjB,MAAM,OAAO,iBAAiB,aAAa;AAE3C,QACE,oBAACC,SAAgB;EACf,WAAW,qBACT,eAAe,EAAE,MAAM,CAAC,EACxB,UACD;EACD,aAAW;EACX,aAAU;EACV,GAAI;YAEH,YAAY,oBAAC,gBAAc;GACP;;AAI3B,OAAO,QAAQ"}
1
+ {"version":3,"file":"switch.js","names":["SwitchPrimitive","SwitchPrimitive"],"sources":["../../src/ui/switch/switch-thumb.tsx","../../src/ui/switch/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\";\n\nimport { mergeBaseUIClassName } from \"../../utils/merge-base-ui-class-name\";\n\nexport type SwitchThumbProps = SwitchPrimitive.Thumb.Props;\n\nconst SwitchThumb = ({ className, ...props }: SwitchThumbProps) => (\n <SwitchPrimitive.Thumb\n className={mergeBaseUIClassName<SwitchPrimitive.Thumb.State>(\n \"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=xs]/switch:size-2.5 group-data-[size=sm]/switch:size-3 group-data-[size=md]/switch:size-3.5 group-data-[size=lg]/switch:size-4 group-data-[size=xl]/switch:size-[18px] data-checked:translate-x-[calc(100%-2px)] data-unchecked:translate-x-0 dark:data-checked:bg-primary-foreground dark:data-unchecked:bg-foreground\",\n className\n )}\n data-slot=\"switch-thumb\"\n {...props}\n />\n);\n\nexport { SwitchThumb };\n","\"use client\";\n\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\";\nimport { tv } from \"tailwind-variants\";\nimport type { VariantProps } from \"tailwind-variants\";\n\nimport { mergeBaseUIClassName } from \"../../utils/merge-base-ui-class-name\";\nimport { useComponentSize } from \"../shared/size/size-provider\";\nimport type { UISize } from \"../shared/size/size-system\";\nimport { SwitchThumb } from \"./switch-thumb\";\n\nconst switchVariants = tv({\n base: \"peer group/switch cursor-clickable focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-danger aria-invalid:ring-danger/20 data-checked:bg-primary data-unchecked:bg-input dark:aria-invalid:border-danger/50 dark:aria-invalid:ring-danger/40 dark:data-unchecked:bg-input/80 relative inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] aria-invalid:ring-[3px] data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n defaultVariants: {\n size: \"md\",\n },\n variants: {\n size: {\n lg: \"h-[18px] w-8 after:absolute after:-inset-3\",\n md: \"h-4 w-7 after:absolute after:-inset-2.5\",\n sm: \"h-3.5 w-6 after:absolute after:-inset-2\",\n xl: \"h-5 w-9 after:absolute after:-inset-3.5\",\n xs: \"h-3 w-5 after:absolute after:-inset-1.5\",\n },\n },\n});\n\ntype SwitchVariantProps = Omit<VariantProps<typeof switchVariants>, \"size\"> & {\n size?: UISize;\n};\n\nexport type SwitchProps = SwitchPrimitive.Root.Props & SwitchVariantProps;\n\nconst Switch = ({\n className,\n size: providedSize,\n children,\n ...props\n}: SwitchProps) => {\n const size = useComponentSize(providedSize);\n\n return (\n <SwitchPrimitive.Root\n className={mergeBaseUIClassName<SwitchPrimitive.Root.State>(\n switchVariants({ size }),\n className\n )}\n data-size={size}\n data-slot=\"switch\"\n {...props}\n >\n {children ?? <SwitchThumb />}\n </SwitchPrimitive.Root>\n );\n};\n\nSwitch.Thumb = SwitchThumb;\n\nexport type { SwitchThumbProps } from \"./switch-thumb\";\nexport { Switch, SwitchThumb };\n"],"mappings":";;;;;;;;;AAQA,MAAM,eAAe,EAAE,WAAW,GAAG,YACnC,oBAACA,SAAgB,OAAjB;CACE,WAAW,qBACT,6ZACA,UACD;CACD,aAAU;CACV,GAAI;CACJ;;;;ACLJ,MAAM,iBAAiB,GAAG;CACxB,MAAM;CACN,iBAAiB,EACf,MAAM,MACP;CACD,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACF,CAAC;AAQF,MAAM,UAAU,EACd,WACA,MAAM,cACN,UACA,GAAG,YACc;CACjB,MAAM,OAAO,iBAAiB,aAAa;AAE3C,QACE,oBAACC,SAAgB,MAAjB;EACE,WAAW,qBACT,eAAe,EAAE,MAAM,CAAC,EACxB,UACD;EACD,aAAW;EACX,aAAU;EACV,GAAI;YAEH,YAAY,oBAAC,aAAD,EAAe;EACP;;AAI3B,OAAO,QAAQ"}