@arolariu/components 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/changelog.md +11 -0
  2. package/dist/components/ui/accordion.d.ts +4 -4
  3. package/dist/components/ui/accordion.d.ts.map +1 -1
  4. package/dist/components/ui/accordion.js +19 -27
  5. package/dist/components/ui/accordion.js.map +1 -1
  6. package/dist/components/ui/alert-dialog.d.ts +17 -11
  7. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  8. package/dist/components/ui/alert-dialog.js +38 -61
  9. package/dist/components/ui/alert-dialog.js.map +1 -1
  10. package/dist/components/ui/alert.d.ts +4 -5
  11. package/dist/components/ui/alert.d.ts.map +1 -1
  12. package/dist/components/ui/alert.js +17 -20
  13. package/dist/components/ui/alert.js.map +1 -1
  14. package/dist/components/ui/aspect-ratio.d.ts +1 -2
  15. package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
  16. package/dist/components/ui/aspect-ratio.js +1 -8
  17. package/dist/components/ui/aspect-ratio.js.map +1 -1
  18. package/dist/components/ui/avatar.d.ts +3 -3
  19. package/dist/components/ui/avatar.d.ts.map +1 -1
  20. package/dist/components/ui/avatar.js +16 -19
  21. package/dist/components/ui/avatar.js.map +1 -1
  22. package/dist/components/ui/badge.d.ts +3 -3
  23. package/dist/components/ui/badge.d.ts.map +1 -1
  24. package/dist/components/ui/badge.js +7 -10
  25. package/dist/components/ui/badge.js.map +1 -1
  26. package/dist/components/ui/breadcrumb.d.ts +16 -8
  27. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  28. package/dist/components/ui/breadcrumb.js +28 -35
  29. package/dist/components/ui/breadcrumb.js.map +1 -1
  30. package/dist/components/ui/button-group.d.ts +13 -0
  31. package/dist/components/ui/button-group.d.ts.map +1 -0
  32. package/dist/components/ui/button-group.js +47 -0
  33. package/dist/components/ui/button-group.js.map +1 -0
  34. package/dist/components/ui/button.d.ts +3 -2
  35. package/dist/components/ui/button.d.ts.map +1 -1
  36. package/dist/components/ui/button.js +15 -14
  37. package/dist/components/ui/button.js.map +1 -1
  38. package/dist/components/ui/calendar.d.ts.map +1 -1
  39. package/dist/components/ui/calendar.js +20 -20
  40. package/dist/components/ui/calendar.js.map +1 -1
  41. package/dist/components/ui/card.d.ts +7 -8
  42. package/dist/components/ui/card.d.ts.map +1 -1
  43. package/dist/components/ui/card.js +31 -44
  44. package/dist/components/ui/card.js.map +1 -1
  45. package/dist/components/ui/carousel.d.ts +5 -6
  46. package/dist/components/ui/carousel.d.ts.map +1 -1
  47. package/dist/components/ui/carousel.js +30 -21
  48. package/dist/components/ui/carousel.js.map +1 -1
  49. package/dist/components/ui/chart.d.ts +35 -27
  50. package/dist/components/ui/chart.d.ts.map +1 -1
  51. package/dist/components/ui/chart.js +28 -26
  52. package/dist/components/ui/chart.js.map +1 -1
  53. package/dist/components/ui/checkbox.d.ts +1 -1
  54. package/dist/components/ui/checkbox.d.ts.map +1 -1
  55. package/dist/components/ui/checkbox.js +10 -12
  56. package/dist/components/ui/checkbox.js.map +1 -1
  57. package/dist/components/ui/collapsible.d.ts +3 -4
  58. package/dist/components/ui/collapsible.d.ts.map +1 -1
  59. package/dist/components/ui/collapsible.js +3 -20
  60. package/dist/components/ui/collapsible.js.map +1 -1
  61. package/dist/components/ui/command.d.ts +78 -16
  62. package/dist/components/ui/command.d.ts.map +1 -1
  63. package/dist/components/ui/command.js +47 -72
  64. package/dist/components/ui/command.js.map +1 -1
  65. package/dist/components/ui/context-menu.d.ts +21 -19
  66. package/dist/components/ui/context-menu.d.ts.map +1 -1
  67. package/dist/components/ui/context-menu.js +57 -101
  68. package/dist/components/ui/context-menu.js.map +1 -1
  69. package/dist/components/ui/dialog.d.ts +16 -12
  70. package/dist/components/ui/dialog.d.ts.map +1 -1
  71. package/dist/components/ui/dialog.js +36 -64
  72. package/dist/components/ui/dialog.js.map +1 -1
  73. package/dist/components/ui/drawer.d.ts +19 -10
  74. package/dist/components/ui/drawer.d.ts.map +1 -1
  75. package/dist/components/ui/drawer.js +32 -57
  76. package/dist/components/ui/drawer.js.map +1 -1
  77. package/dist/components/ui/dropdown-menu.d.ts +21 -19
  78. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  79. package/dist/components/ui/dropdown-menu.js +64 -108
  80. package/dist/components/ui/dropdown-menu.js.map +1 -1
  81. package/dist/components/ui/dropdrawer.d.ts +1 -1
  82. package/dist/components/ui/dropdrawer.d.ts.map +1 -1
  83. package/dist/components/ui/dropdrawer.js +2 -5
  84. package/dist/components/ui/dropdrawer.js.map +1 -1
  85. package/dist/components/ui/empty.d.ts +13 -0
  86. package/dist/components/ui/empty.d.ts.map +1 -0
  87. package/dist/components/ui/empty.js +65 -0
  88. package/dist/components/ui/empty.js.map +1 -0
  89. package/dist/components/ui/field.d.ts +25 -0
  90. package/dist/components/ui/field.d.ts.map +1 -0
  91. package/dist/components/ui/field.js +135 -0
  92. package/dist/components/ui/field.js.map +1 -0
  93. package/dist/components/ui/form.d.ts +5 -6
  94. package/dist/components/ui/form.d.ts.map +1 -1
  95. package/dist/components/ui/form.js +28 -27
  96. package/dist/components/ui/form.js.map +1 -1
  97. package/dist/components/ui/hover-card.d.ts +3 -3
  98. package/dist/components/ui/hover-card.d.ts.map +1 -1
  99. package/dist/components/ui/hover-card.js +11 -25
  100. package/dist/components/ui/hover-card.js.map +1 -1
  101. package/dist/components/ui/input-group.d.ts +17 -0
  102. package/dist/components/ui/input-group.d.ts.map +1 -0
  103. package/dist/components/ui/input-group.js +91 -0
  104. package/dist/components/ui/input-group.js.map +1 -0
  105. package/dist/components/ui/input-otp.d.ts +30 -7
  106. package/dist/components/ui/input-otp.d.ts.map +1 -1
  107. package/dist/components/ui/input-otp.js +23 -26
  108. package/dist/components/ui/input-otp.js.map +1 -1
  109. package/dist/components/ui/input.d.ts +1 -1
  110. package/dist/components/ui/input.d.ts.map +1 -1
  111. package/dist/components/ui/input.js +6 -7
  112. package/dist/components/ui/input.js.map +1 -1
  113. package/dist/components/ui/item.d.ts +24 -0
  114. package/dist/components/ui/item.d.ts.map +1 -0
  115. package/dist/components/ui/item.js +122 -0
  116. package/dist/components/ui/item.js.map +1 -0
  117. package/dist/components/ui/kbd.d.ts +5 -0
  118. package/dist/components/ui/kbd.d.ts.map +1 -0
  119. package/dist/components/ui/kbd.js +21 -0
  120. package/dist/components/ui/kbd.js.map +1 -0
  121. package/dist/components/ui/label.d.ts +2 -1
  122. package/dist/components/ui/label.d.ts.map +1 -1
  123. package/dist/components/ui/label.js +8 -7
  124. package/dist/components/ui/label.js.map +1 -1
  125. package/dist/components/ui/menubar.d.ts +18 -16
  126. package/dist/components/ui/menubar.d.ts.map +1 -1
  127. package/dist/components/ui/menubar.js +73 -93
  128. package/dist/components/ui/menubar.js.map +1 -1
  129. package/dist/components/ui/navigation-menu.d.ts +8 -10
  130. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  131. package/dist/components/ui/navigation-menu.js +37 -55
  132. package/dist/components/ui/navigation-menu.js.map +1 -1
  133. package/dist/components/ui/pagination.d.ts +24 -9
  134. package/dist/components/ui/pagination.d.ts.map +1 -1
  135. package/dist/components/ui/pagination.js +33 -45
  136. package/dist/components/ui/pagination.js.map +1 -1
  137. package/dist/components/ui/popover.d.ts +4 -4
  138. package/dist/components/ui/popover.d.ts.map +1 -1
  139. package/dist/components/ui/popover.js +9 -25
  140. package/dist/components/ui/popover.js.map +1 -1
  141. package/dist/components/ui/progress.d.ts +1 -1
  142. package/dist/components/ui/progress.d.ts.map +1 -1
  143. package/dist/components/ui/progress.js +5 -7
  144. package/dist/components/ui/progress.js.map +1 -1
  145. package/dist/components/ui/radio-group.d.ts +2 -2
  146. package/dist/components/ui/radio-group.d.ts.map +1 -1
  147. package/dist/components/ui/radio-group.js +16 -19
  148. package/dist/components/ui/radio-group.js.map +1 -1
  149. package/dist/components/ui/resizable.d.ts +20 -5
  150. package/dist/components/ui/resizable.d.ts.map +1 -1
  151. package/dist/components/ui/resizable.js +9 -21
  152. package/dist/components/ui/resizable.js.map +1 -1
  153. package/dist/components/ui/scroll-area.d.ts +2 -2
  154. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  155. package/dist/components/ui/scroll-area.js +12 -16
  156. package/dist/components/ui/scroll-area.js.map +1 -1
  157. package/dist/components/ui/select.d.ts +10 -12
  158. package/dist/components/ui/select.d.ts.map +1 -1
  159. package/dist/components/ui/select.js +54 -77
  160. package/dist/components/ui/select.js.map +1 -1
  161. package/dist/components/ui/separator.d.ts +1 -1
  162. package/dist/components/ui/separator.d.ts.map +1 -1
  163. package/dist/components/ui/separator.js +6 -7
  164. package/dist/components/ui/separator.js.map +1 -1
  165. package/dist/components/ui/sheet.d.ts +23 -11
  166. package/dist/components/ui/sheet.d.ts.map +1 -1
  167. package/dist/components/ui/sheet.js +54 -66
  168. package/dist/components/ui/sheet.js.map +1 -1
  169. package/dist/components/ui/sidebar.d.ts +34 -38
  170. package/dist/components/ui/sidebar.d.ts.map +1 -1
  171. package/dist/components/ui/sidebar.js +113 -122
  172. package/dist/components/ui/sidebar.js.map +1 -1
  173. package/dist/components/ui/skeleton.d.ts +1 -1
  174. package/dist/components/ui/skeleton.d.ts.map +1 -1
  175. package/dist/components/ui/skeleton.js +1 -2
  176. package/dist/components/ui/skeleton.js.map +1 -1
  177. package/dist/components/ui/slider.d.ts +1 -1
  178. package/dist/components/ui/slider.d.ts.map +1 -1
  179. package/dist/components/ui/slider.js +11 -30
  180. package/dist/components/ui/slider.js.map +1 -1
  181. package/dist/components/ui/sonner.d.ts +4 -2
  182. package/dist/components/ui/sonner.d.ts.map +1 -1
  183. package/dist/components/ui/sonner.js +7 -4
  184. package/dist/components/ui/sonner.js.map +1 -1
  185. package/dist/components/ui/spinner.d.ts +4 -0
  186. package/dist/components/ui/spinner.d.ts.map +1 -0
  187. package/dist/components/ui/spinner.js +16 -0
  188. package/dist/components/ui/spinner.js.map +1 -0
  189. package/dist/components/ui/switch.d.ts +2 -2
  190. package/dist/components/ui/switch.d.ts.map +1 -1
  191. package/dist/components/ui/switch.js +7 -9
  192. package/dist/components/ui/switch.js.map +1 -1
  193. package/dist/components/ui/table.d.ts +8 -8
  194. package/dist/components/ui/table.d.ts.map +1 -1
  195. package/dist/components/ui/table.js +36 -45
  196. package/dist/components/ui/table.js.map +1 -1
  197. package/dist/components/ui/tabs.d.ts +4 -4
  198. package/dist/components/ui/tabs.d.ts.map +1 -1
  199. package/dist/components/ui/tabs.js +17 -26
  200. package/dist/components/ui/tabs.js.map +1 -1
  201. package/dist/components/ui/textarea.d.ts +1 -1
  202. package/dist/components/ui/textarea.d.ts.map +1 -1
  203. package/dist/components/ui/textarea.js +6 -7
  204. package/dist/components/ui/textarea.js.map +1 -1
  205. package/dist/components/ui/toggle-group.d.ts +8 -3
  206. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  207. package/dist/components/ui/toggle-group.js +11 -15
  208. package/dist/components/ui/toggle-group.js.map +1 -1
  209. package/dist/components/ui/toggle.d.ts +4 -1
  210. package/dist/components/ui/toggle.d.ts.map +1 -1
  211. package/dist/components/ui/toggle.js +7 -8
  212. package/dist/components/ui/toggle.js.map +1 -1
  213. package/dist/components/ui/tooltip.d.ts +4 -4
  214. package/dist/components/ui/tooltip.d.ts.map +1 -1
  215. package/dist/components/ui/tooltip.js +13 -38
  216. package/dist/components/ui/tooltip.js.map +1 -1
  217. package/dist/components/ui/typewriter.d.ts.map +1 -1
  218. package/dist/components/ui/typewriter.js +2 -6
  219. package/dist/components/ui/typewriter.js.map +1 -1
  220. package/dist/index.css +839 -1126
  221. package/dist/index.css.map +1 -1
  222. package/dist/index.d.ts +9 -3
  223. package/dist/index.d.ts.map +1 -1
  224. package/dist/index.js +9 -3
  225. package/package.json +37 -2
  226. package/src/components/ui/accordion.tsx +43 -44
  227. package/src/components/ui/alert-dialog.tsx +88 -99
  228. package/src/components/ui/alert.tsx +23 -25
  229. package/src/components/ui/aspect-ratio.tsx +1 -9
  230. package/src/components/ui/avatar.tsx +29 -24
  231. package/src/components/ui/badge.tsx +8 -16
  232. package/src/components/ui/breadcrumb.tsx +70 -73
  233. package/src/components/ui/button-group.tsx +69 -0
  234. package/src/components/ui/button.tsx +18 -24
  235. package/src/components/ui/calendar.tsx +20 -22
  236. package/src/components/ui/card.tsx +52 -71
  237. package/src/components/ui/carousel.tsx +145 -133
  238. package/src/components/ui/chart.tsx +173 -183
  239. package/src/components/ui/checkbox.tsx +18 -18
  240. package/src/components/ui/collapsible.tsx +3 -25
  241. package/src/components/ui/command.tsx +100 -99
  242. package/src/components/ui/context-menu.tsx +150 -193
  243. package/src/components/ui/dialog.tsx +75 -110
  244. package/src/components/ui/drawer.tsx +74 -102
  245. package/src/components/ui/dropdown-menu.tsx +153 -200
  246. package/src/components/ui/dropdrawer.tsx +0 -5
  247. package/src/components/ui/empty.tsx +86 -0
  248. package/src/components/ui/field.tsx +198 -0
  249. package/src/components/ui/form.tsx +47 -48
  250. package/src/components/ui/hover-card.tsx +18 -37
  251. package/src/components/ui/input-group.tsx +145 -0
  252. package/src/components/ui/input-otp.tsx +49 -59
  253. package/src/components/ui/input.tsx +5 -6
  254. package/src/components/ui/item.tsx +163 -0
  255. package/src/components/ui/kbd.tsx +31 -0
  256. package/src/components/ui/label.tsx +14 -12
  257. package/src/components/ui/menubar.tsx +178 -201
  258. package/src/components/ui/navigation-menu.tsx +85 -100
  259. package/src/components/ui/pagination.tsx +74 -85
  260. package/src/components/ui/popover.tsx +19 -38
  261. package/src/components/ui/progress.tsx +15 -14
  262. package/src/components/ui/radio-group.tsx +19 -13
  263. package/src/components/ui/resizable.tsx +23 -37
  264. package/src/components/ui/scroll-area.tsx +32 -35
  265. package/src/components/ui/select.tsx +112 -127
  266. package/src/components/ui/separator.tsx +17 -19
  267. package/src/components/ui/sheet.tsx +87 -108
  268. package/src/components/ui/sidebar.tsx +262 -271
  269. package/src/components/ui/skeleton.tsx +2 -3
  270. package/src/components/ui/slider.tsx +10 -36
  271. package/src/components/ui/sonner.tsx +15 -9
  272. package/src/components/ui/spinner.tsx +18 -0
  273. package/src/components/ui/switch.tsx +18 -17
  274. package/src/components/ui/table.tsx +66 -71
  275. package/src/components/ui/tabs.tsx +36 -36
  276. package/src/components/ui/textarea.tsx +5 -4
  277. package/src/components/ui/toggle-group.tsx +21 -34
  278. package/src/components/ui/toggle.tsx +14 -16
  279. package/src/components/ui/tooltip.tsx +19 -43
  280. package/src/components/ui/typewriter.tsx +3 -4
  281. package/src/index.css +6 -6
  282. package/src/index.ts +43 -4
@@ -2,8 +2,8 @@
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Slot } from "@radix-ui/react-slot";
4
4
  import { cva } from "class-variance-authority";
5
- import { PanelLeftIcon } from "lucide-react";
6
- import { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
5
+ import { PanelLeft } from "lucide-react";
6
+ import { createContext, forwardRef, useCallback, useContext, useEffect, useMemo, useState } from "react";
7
7
  import { Button } from "./button.js";
8
8
  import { Input } from "./input.js";
9
9
  import { Separator } from "./separator.js";
@@ -24,7 +24,7 @@ function useSidebar() {
24
24
  if (!context) throw new Error("useSidebar must be used within a SidebarProvider.");
25
25
  return context;
26
26
  }
27
- function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }) {
27
+ const SidebarProvider = /*#__PURE__*/ forwardRef(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref)=>{
28
28
  const isMobile = useIsMobile();
29
29
  const [openMobile, setOpenMobile] = useState(false);
30
30
  const [_open, _setOpen] = useState(defaultOpen);
@@ -78,24 +78,25 @@ function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: set
78
78
  children: /*#__PURE__*/ jsx(TooltipProvider, {
79
79
  delayDuration: 0,
80
80
  children: /*#__PURE__*/ jsx("div", {
81
- "data-slot": "sidebar-wrapper",
82
81
  style: {
83
82
  "--sidebar-width": SIDEBAR_WIDTH,
84
83
  "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
85
84
  ...style
86
85
  },
87
- className: cn("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full", className),
86
+ className: cn("group/sidebar-wrapper has-[[data-variant=inset]]:bg-sidebar flex min-h-svh w-full", className),
87
+ ref: ref,
88
88
  ...props,
89
89
  children: children
90
90
  })
91
91
  })
92
92
  });
93
- }
94
- function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, ...props }) {
93
+ });
94
+ SidebarProvider.displayName = "SidebarProvider";
95
+ const Sidebar = /*#__PURE__*/ forwardRef(({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, ...props }, ref)=>{
95
96
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
96
97
  if ("none" === collapsible) return /*#__PURE__*/ jsx("div", {
97
- "data-slot": "sidebar",
98
- className: cn("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col", className),
98
+ className: cn("bg-sidebar text-sidebar-foreground flex h-full w-[--sidebar-width] flex-col", className),
99
+ ref: ref,
99
100
  ...props,
100
101
  children: children
101
102
  });
@@ -105,9 +106,8 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
105
106
  ...props,
106
107
  children: /*#__PURE__*/ jsxs(SheetContent, {
107
108
  "data-sidebar": "sidebar",
108
- "data-slot": "sidebar",
109
109
  "data-mobile": "true",
110
- className: "bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",
110
+ className: "bg-sidebar text-sidebar-foreground w-[--sidebar-width] p-0 [&>button]:hidden",
111
111
  style: {
112
112
  "--sidebar-width": SIDEBAR_WIDTH_MOBILE
113
113
  },
@@ -132,164 +132,156 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
132
132
  })
133
133
  });
134
134
  return /*#__PURE__*/ jsxs("div", {
135
+ ref: ref,
135
136
  className: "group peer text-sidebar-foreground hidden md:block",
136
137
  "data-state": state,
137
138
  "data-collapsible": "collapsed" === state ? collapsible : "",
138
139
  "data-variant": variant,
139
140
  "data-side": side,
140
- "data-slot": "sidebar",
141
141
  children: [
142
142
  /*#__PURE__*/ jsx("div", {
143
- "data-slot": "sidebar-gap",
144
- className: cn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear", "group-data-[collapsible=offcanvas]:w-0", "group-data-[side=right]:rotate-180", "floating" === variant || "inset" === variant ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)")
143
+ className: cn("relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear", "group-data-[collapsible=offcanvas]:w-0", "group-data-[side=right]:rotate-180", "floating" === variant || "inset" === variant ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]" : "group-data-[collapsible=icon]:w-[--sidebar-width-icon]")
145
144
  }),
146
145
  /*#__PURE__*/ jsx("div", {
147
- "data-slot": "sidebar-container",
148
- className: cn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex", "left" === side ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]", "floating" === variant || "inset" === variant ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", className),
146
+ className: cn("fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex", "left" === side ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]", "floating" === variant || "inset" === variant ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]" : "group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l", className),
149
147
  ...props,
150
148
  children: /*#__PURE__*/ jsx("div", {
151
149
  "data-sidebar": "sidebar",
152
- "data-slot": "sidebar-inner",
153
- className: "bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm",
150
+ className: "bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow",
154
151
  children: children
155
152
  })
156
153
  })
157
154
  ]
158
155
  });
159
- }
160
- function SidebarTrigger({ className, onClick, ...props }) {
156
+ });
157
+ Sidebar.displayName = "Sidebar";
158
+ const SidebarTrigger = /*#__PURE__*/ forwardRef(({ className, onClick, ...props }, ref)=>{
161
159
  const { toggleSidebar } = useSidebar();
162
160
  return /*#__PURE__*/ jsxs(Button, {
161
+ ref: ref,
163
162
  "data-sidebar": "trigger",
164
- "data-slot": "sidebar-trigger",
165
163
  variant: "ghost",
166
164
  size: "icon",
167
- className: cn("size-7", className),
165
+ className: cn("h-7 w-7", className),
168
166
  onClick: (event)=>{
169
167
  onClick?.(event);
170
168
  toggleSidebar();
171
169
  },
172
170
  ...props,
173
171
  children: [
174
- /*#__PURE__*/ jsx(PanelLeftIcon, {}),
172
+ /*#__PURE__*/ jsx(PanelLeft, {}),
175
173
  /*#__PURE__*/ jsx("span", {
176
174
  className: "sr-only",
177
175
  children: "Toggle Sidebar"
178
176
  })
179
177
  ]
180
178
  });
181
- }
182
- function SidebarRail({ className, ...props }) {
179
+ });
180
+ SidebarTrigger.displayName = "SidebarTrigger";
181
+ const SidebarRail = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>{
183
182
  const { toggleSidebar } = useSidebar();
184
183
  return /*#__PURE__*/ jsx("button", {
184
+ ref: ref,
185
185
  "data-sidebar": "rail",
186
- "data-slot": "sidebar-rail",
187
186
  "aria-label": "Toggle Sidebar",
188
187
  tabIndex: -1,
189
188
  onClick: toggleSidebar,
190
189
  title: "Toggle Sidebar",
191
- className: cn("hover:after:bg-sidebar-border 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] sm:flex", "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className),
190
+ className: cn("hover:after:bg-sidebar-border 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] sm:flex", "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "group-data-[collapsible=offcanvas]:hover:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className),
192
191
  ...props
193
192
  });
194
- }
195
- function SidebarInset({ className, ...props }) {
196
- return /*#__PURE__*/ jsx("main", {
197
- "data-slot": "sidebar-inset",
198
- className: cn("relative flex w-full flex-1 flex-col bg-white dark:bg-neutral-950", "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", className),
193
+ });
194
+ SidebarRail.displayName = "SidebarRail";
195
+ const SidebarInset = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("main", {
196
+ ref: ref,
197
+ className: cn("relative flex w-full flex-1 flex-col bg-white dark:bg-neutral-950", "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 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2", className),
199
198
  ...props
200
- });
201
- }
202
- function SidebarInput({ className, ...props }) {
203
- return /*#__PURE__*/ jsx(Input, {
204
- "data-slot": "sidebar-input",
199
+ }));
200
+ SidebarInset.displayName = "SidebarInset";
201
+ const SidebarInput = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(Input, {
202
+ ref: ref,
205
203
  "data-sidebar": "input",
206
- className: cn("h-8 w-full bg-white shadow-none dark:bg-neutral-950", className),
204
+ className: cn("focus-visible:ring-sidebar-ring h-8 w-full bg-white shadow-none focus-visible:ring-2 dark:bg-neutral-950", className),
207
205
  ...props
208
- });
209
- }
210
- function SidebarHeader({ className, ...props }) {
211
- return /*#__PURE__*/ jsx("div", {
212
- "data-slot": "sidebar-header",
206
+ }));
207
+ SidebarInput.displayName = "SidebarInput";
208
+ const SidebarHeader = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
209
+ ref: ref,
213
210
  "data-sidebar": "header",
214
211
  className: cn("flex flex-col gap-2 p-2", className),
215
212
  ...props
216
- });
217
- }
218
- function SidebarFooter({ className, ...props }) {
219
- return /*#__PURE__*/ jsx("div", {
220
- "data-slot": "sidebar-footer",
213
+ }));
214
+ SidebarHeader.displayName = "SidebarHeader";
215
+ const SidebarFooter = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
216
+ ref: ref,
221
217
  "data-sidebar": "footer",
222
218
  className: cn("flex flex-col gap-2 p-2", className),
223
219
  ...props
224
- });
225
- }
226
- function SidebarSeparator({ className, ...props }) {
227
- return /*#__PURE__*/ jsx(Separator, {
228
- "data-slot": "sidebar-separator",
220
+ }));
221
+ SidebarFooter.displayName = "SidebarFooter";
222
+ const SidebarSeparator = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(Separator, {
223
+ ref: ref,
229
224
  "data-sidebar": "separator",
230
225
  className: cn("bg-sidebar-border mx-2 w-auto", className),
231
226
  ...props
232
- });
233
- }
234
- function SidebarContent({ className, ...props }) {
235
- return /*#__PURE__*/ jsx("div", {
236
- "data-slot": "sidebar-content",
227
+ }));
228
+ SidebarSeparator.displayName = "SidebarSeparator";
229
+ const SidebarContent = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
230
+ ref: ref,
237
231
  "data-sidebar": "content",
238
232
  className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
239
233
  ...props
240
- });
241
- }
242
- function SidebarGroup({ className, ...props }) {
243
- return /*#__PURE__*/ jsx("div", {
244
- "data-slot": "sidebar-group",
234
+ }));
235
+ SidebarContent.displayName = "SidebarContent";
236
+ const SidebarGroup = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
237
+ ref: ref,
245
238
  "data-sidebar": "group",
246
239
  className: cn("relative flex w-full min-w-0 flex-col p-2", className),
247
240
  ...props
248
- });
249
- }
250
- function SidebarGroupLabel({ className, asChild = false, ...props }) {
241
+ }));
242
+ SidebarGroup.displayName = "SidebarGroup";
243
+ const SidebarGroupLabel = /*#__PURE__*/ forwardRef(({ className, asChild = false, ...props }, ref)=>{
251
244
  const Comp = asChild ? Slot : "div";
252
245
  return /*#__PURE__*/ jsx(Comp, {
253
- "data-slot": "sidebar-group-label",
246
+ ref: ref,
254
247
  "data-sidebar": "group-label",
255
- className: cn("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 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
248
+ className: cn("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
256
249
  ...props
257
250
  });
258
- }
259
- function SidebarGroupAction({ className, asChild = false, ...props }) {
251
+ });
252
+ SidebarGroupLabel.displayName = "SidebarGroupLabel";
253
+ const SidebarGroupAction = /*#__PURE__*/ forwardRef(({ className, asChild = false, ...props }, ref)=>{
260
254
  const Comp = asChild ? Slot : "button";
261
255
  return /*#__PURE__*/ jsx(Comp, {
262
- "data-slot": "sidebar-group-action",
256
+ ref: ref,
263
257
  "data-sidebar": "group-action",
264
- className: cn("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 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "group-data-[collapsible=icon]:hidden", className),
258
+ className: cn("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 transition-transform outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 after:md:hidden", "group-data-[collapsible=icon]:hidden", className),
265
259
  ...props
266
260
  });
267
- }
268
- function SidebarGroupContent({ className, ...props }) {
269
- return /*#__PURE__*/ jsx("div", {
270
- "data-slot": "sidebar-group-content",
261
+ });
262
+ SidebarGroupAction.displayName = "SidebarGroupAction";
263
+ const SidebarGroupContent = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
264
+ ref: ref,
271
265
  "data-sidebar": "group-content",
272
266
  className: cn("w-full text-sm", className),
273
267
  ...props
274
- });
275
- }
276
- function SidebarMenu({ className, ...props }) {
277
- return /*#__PURE__*/ jsx("ul", {
278
- "data-slot": "sidebar-menu",
268
+ }));
269
+ SidebarGroupContent.displayName = "SidebarGroupContent";
270
+ const SidebarMenu = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("ul", {
271
+ ref: ref,
279
272
  "data-sidebar": "menu",
280
273
  className: cn("flex w-full min-w-0 flex-col gap-1", className),
281
274
  ...props
282
- });
283
- }
284
- function SidebarMenuItem({ className, ...props }) {
285
- return /*#__PURE__*/ jsx("li", {
286
- "data-slot": "sidebar-menu-item",
275
+ }));
276
+ SidebarMenu.displayName = "SidebarMenu";
277
+ const SidebarMenuItem = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("li", {
278
+ ref: ref,
287
279
  "data-sidebar": "menu-item",
288
280
  className: cn("group/menu-item relative", className),
289
281
  ...props
290
- });
291
- }
292
- const sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] 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 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", {
282
+ }));
283
+ SidebarMenuItem.displayName = "SidebarMenuItem";
284
+ const sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] 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 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", {
293
285
  variants: {
294
286
  variant: {
295
287
  default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
@@ -298,7 +290,7 @@ const sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center
298
290
  size: {
299
291
  default: "h-8 text-sm",
300
292
  sm: "h-7 text-xs",
301
- lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!"
293
+ lg: "h-12 text-sm group-data-[collapsible=icon]:!p-0"
302
294
  }
303
295
  },
304
296
  defaultVariants: {
@@ -306,11 +298,11 @@ const sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center
306
298
  size: "default"
307
299
  }
308
300
  });
309
- function SidebarMenuButton({ asChild = false, isActive = false, variant = "default", size = "default", tooltip, className, ...props }) {
301
+ const SidebarMenuButton = /*#__PURE__*/ forwardRef(({ asChild = false, isActive = false, variant = "default", size = "default", tooltip, className, ...props }, ref)=>{
310
302
  const Comp = asChild ? Slot : "button";
311
303
  const { isMobile, state } = useSidebar();
312
304
  const button = /*#__PURE__*/ jsx(Comp, {
313
- "data-slot": "sidebar-menu-button",
305
+ ref: ref,
314
306
  "data-sidebar": "menu-button",
315
307
  "data-size": size,
316
308
  "data-active": isActive,
@@ -338,28 +330,29 @@ function SidebarMenuButton({ asChild = false, isActive = false, variant = "defau
338
330
  })
339
331
  ]
340
332
  });
341
- }
342
- function SidebarMenuAction({ className, asChild = false, showOnHover = false, ...props }) {
333
+ });
334
+ SidebarMenuButton.displayName = "SidebarMenuButton";
335
+ const SidebarMenuAction = /*#__PURE__*/ forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref)=>{
343
336
  const Comp = asChild ? Slot : "button";
344
337
  return /*#__PURE__*/ jsx(Comp, {
345
- "data-slot": "sidebar-menu-action",
338
+ ref: ref,
346
339
  "data-sidebar": "menu-action",
347
- className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0", className),
340
+ className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 after:md:hidden", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0", className),
348
341
  ...props
349
342
  });
350
- }
351
- function SidebarMenuBadge({ className, ...props }) {
352
- return /*#__PURE__*/ jsx("div", {
353
- "data-slot": "sidebar-menu-badge",
343
+ });
344
+ SidebarMenuAction.displayName = "SidebarMenuAction";
345
+ const SidebarMenuBadge = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
346
+ ref: ref,
354
347
  "data-sidebar": "menu-badge",
355
348
  className: cn("text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none", "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", className),
356
349
  ...props
357
- });
358
- }
359
- function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
350
+ }));
351
+ SidebarMenuBadge.displayName = "SidebarMenuBadge";
352
+ const SidebarMenuSkeleton = /*#__PURE__*/ forwardRef(({ className, showIcon = false, ...props }, ref)=>{
360
353
  const width = useMemo(()=>`${Math.floor(40 * Math.random()) + 50}%`, []);
361
354
  return /*#__PURE__*/ jsxs("div", {
362
- "data-slot": "sidebar-menu-skeleton",
355
+ ref: ref,
363
356
  "data-sidebar": "menu-skeleton",
364
357
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
365
358
  ...props,
@@ -369,7 +362,7 @@ function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
369
362
  "data-sidebar": "menu-skeleton-icon"
370
363
  }),
371
364
  /*#__PURE__*/ jsx(Skeleton, {
372
- className: "h-4 max-w-(--skeleton-width) flex-1",
365
+ className: "h-4 max-w-[--skeleton-width] flex-1",
373
366
  "data-sidebar": "menu-skeleton-text",
374
367
  style: {
375
368
  "--skeleton-width": width
@@ -377,34 +370,32 @@ function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
377
370
  })
378
371
  ]
379
372
  });
380
- }
381
- function SidebarMenuSub({ className, ...props }) {
382
- return /*#__PURE__*/ jsx("ul", {
383
- "data-slot": "sidebar-menu-sub",
373
+ });
374
+ SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
375
+ const SidebarMenuSub = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("ul", {
376
+ ref: ref,
384
377
  "data-sidebar": "menu-sub",
385
378
  className: cn("border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5", "group-data-[collapsible=icon]:hidden", className),
386
379
  ...props
387
- });
388
- }
389
- function SidebarMenuSubItem({ className, ...props }) {
390
- return /*#__PURE__*/ jsx("li", {
391
- "data-slot": "sidebar-menu-sub-item",
392
- "data-sidebar": "menu-sub-item",
393
- className: cn("group/menu-sub-item relative", className),
380
+ }));
381
+ SidebarMenuSub.displayName = "SidebarMenuSub";
382
+ const SidebarMenuSubItem = /*#__PURE__*/ forwardRef(({ ...props }, ref)=>/*#__PURE__*/ jsx("li", {
383
+ ref: ref,
394
384
  ...props
395
- });
396
- }
397
- function SidebarMenuSubButton({ asChild = false, size = "md", isActive = false, className, ...props }) {
385
+ }));
386
+ SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
387
+ const SidebarMenuSubButton = /*#__PURE__*/ forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref)=>{
398
388
  const Comp = asChild ? Slot : "a";
399
389
  return /*#__PURE__*/ jsx(Comp, {
400
- "data-slot": "sidebar-menu-sub-button",
390
+ ref: ref,
401
391
  "data-sidebar": "menu-sub-button",
402
392
  "data-size": size,
403
393
  "data-active": isActive,
404
- className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-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]:size-4 [&>svg]:shrink-0", "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground", "sm" === size && "text-xs", "md" === size && "text-sm", "group-data-[collapsible=icon]:hidden", className),
394
+ className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-none 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]:size-4 [&>svg]:shrink-0", "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground", "sm" === size && "text-xs", "md" === size && "text-sm", "group-data-[collapsible=icon]:hidden", className),
405
395
  ...props
406
396
  });
407
- }
397
+ });
398
+ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
408
399
  export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar };
409
400
 
410
401
  //# sourceMappingURL=sidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components\\ui\\sidebar.js","sources":["webpack://@arolariu/components/./src/components/ui/sidebar.tsx"],"sourcesContent":["\r\n\r\n/* eslint-disable */\r\n\r\nimport {Slot} from \"@radix-ui/react-slot\";\r\nimport {cva, VariantProps} from \"class-variance-authority\";\r\nimport {PanelLeftIcon} from \"lucide-react\";\r\nimport * as React from \"react\";\r\n\r\nimport {Button} from \"@/components/ui/button\";\r\nimport {Input} from \"@/components/ui/input\";\r\nimport {Separator} from \"@/components/ui/separator\";\r\nimport {Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle} from \"@/components/ui/sheet\";\r\nimport {Skeleton} from \"@/components/ui/skeleton\";\r\nimport {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from \"@/components/ui/tooltip\";\r\nimport {useIsMobile} from \"@/hooks/useIsMobile\";\r\nimport {cn} from \"@/lib/utilities\";\r\n\r\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\r\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\r\nconst SIDEBAR_WIDTH = \"16rem\";\r\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\r\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\r\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\r\n\r\ntype SidebarContextProps = {\r\n state: \"expanded\" | \"collapsed\";\r\n open: boolean;\r\n setOpen: (open: boolean) => void;\r\n openMobile: boolean;\r\n setOpenMobile: (open: boolean) => void;\r\n isMobile: boolean;\r\n toggleSidebar: () => void;\r\n};\r\n\r\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\r\n\r\nfunction useSidebar() {\r\n const context = React.useContext(SidebarContext);\r\n if (!context) {\r\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nfunction SidebarProvider({\r\n defaultOpen = true,\r\n open: openProp,\r\n onOpenChange: setOpenProp,\r\n className,\r\n style,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n}) {\r\n const isMobile = useIsMobile();\r\n const [openMobile, setOpenMobile] = React.useState(false);\r\n\r\n // This is the internal state of the sidebar.\r\n // We use openProp and setOpenProp for control from outside the component.\r\n const [_open, _setOpen] = React.useState(defaultOpen);\r\n const open = openProp ?? _open;\r\n const setOpen = React.useCallback(\r\n (value: boolean | ((value: boolean) => boolean)) => {\r\n const openState = typeof value === \"function\" ? value(open) : value;\r\n if (setOpenProp) {\r\n setOpenProp(openState);\r\n } else {\r\n _setOpen(openState);\r\n }\r\n\r\n // This sets the cookie to keep the sidebar state.\r\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\r\n },\r\n [setOpenProp, open],\r\n );\r\n\r\n // Helper to toggle the sidebar.\r\n const toggleSidebar = React.useCallback(() => {\r\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\r\n }, [isMobile, setOpen, setOpenMobile]);\r\n\r\n // Adds a keyboard shortcut to toggle the sidebar.\r\n React.useEffect(() => {\r\n const handleKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\r\n event.preventDefault();\r\n toggleSidebar();\r\n }\r\n };\r\n\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [toggleSidebar]);\r\n\r\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\r\n // This makes it easier to style the sidebar with Tailwind classes.\r\n const state = open ? \"expanded\" : \"collapsed\";\r\n\r\n const contextValue = React.useMemo<SidebarContextProps>(\r\n () => ({\r\n state,\r\n open,\r\n setOpen,\r\n isMobile,\r\n openMobile,\r\n setOpenMobile,\r\n toggleSidebar,\r\n }),\r\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\r\n );\r\n\r\n return (\r\n <SidebarContext.Provider value={contextValue}>\r\n <TooltipProvider delayDuration={0}>\r\n <div\r\n data-slot='sidebar-wrapper'\r\n style={\r\n {\r\n \"--sidebar-width\": SIDEBAR_WIDTH,\r\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n className={cn(\"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\", className)}\r\n {...props}>\r\n {children}\r\n </div>\r\n </TooltipProvider>\r\n </SidebarContext.Provider>\r\n );\r\n}\r\n\r\nfunction Sidebar({\r\n side = \"left\",\r\n variant = \"sidebar\",\r\n collapsible = \"offcanvas\",\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n side?: \"left\" | \"right\";\r\n variant?: \"sidebar\" | \"floating\" | \"inset\";\r\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\r\n}) {\r\n const {isMobile, state, openMobile, setOpenMobile} = useSidebar();\r\n\r\n if (collapsible === \"none\") {\r\n return (\r\n <div\r\n data-slot='sidebar'\r\n className={cn(\"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\", className)}\r\n {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n\r\n if (isMobile) {\r\n return (\r\n <Sheet\r\n open={openMobile}\r\n onOpenChange={setOpenMobile}\r\n {...props}>\r\n <SheetContent\r\n data-sidebar='sidebar'\r\n data-slot='sidebar'\r\n data-mobile='true'\r\n className='bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden'\r\n style={\r\n {\r\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\r\n } as React.CSSProperties\r\n }\r\n side={side}>\r\n <SheetHeader className='sr-only'>\r\n <SheetTitle>Sidebar</SheetTitle>\r\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\r\n </SheetHeader>\r\n <div className='flex h-full w-full flex-col'>{children}</div>\r\n </SheetContent>\r\n </Sheet>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n className='group peer text-sidebar-foreground hidden md:block'\r\n data-state={state}\r\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\r\n data-variant={variant}\r\n data-side={side}\r\n data-slot='sidebar'>\r\n {/* This is what handles the sidebar gap on desktop */}\r\n <div\r\n data-slot='sidebar-gap'\r\n className={cn(\r\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\r\n \"group-data-[collapsible=offcanvas]:w-0\",\r\n \"group-data-[side=right]:rotate-180\",\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\r\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\r\n )}\r\n />\r\n <div\r\n data-slot='sidebar-container'\r\n className={cn(\r\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\r\n side === \"left\"\r\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\r\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\r\n // Adjust the padding for floating and inset variants.\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\r\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\r\n className,\r\n )}\r\n {...props}>\r\n <div\r\n data-sidebar='sidebar'\r\n data-slot='sidebar-inner'\r\n className='bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm'>\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction SidebarTrigger({className, onClick, ...props}: React.ComponentProps<typeof Button>) {\r\n const {toggleSidebar} = useSidebar();\r\n\r\n return (\r\n <Button\r\n data-sidebar='trigger'\r\n data-slot='sidebar-trigger'\r\n variant='ghost'\r\n size='icon'\r\n className={cn(\"size-7\", className)}\r\n onClick={(event) => {\r\n onClick?.(event);\r\n toggleSidebar();\r\n }}\r\n {...props}>\r\n <PanelLeftIcon />\r\n <span className='sr-only'>Toggle Sidebar</span>\r\n </Button>\r\n );\r\n}\r\n\r\nfunction SidebarRail({className, ...props}: React.ComponentProps<\"button\">) {\r\n const {toggleSidebar} = useSidebar();\r\n\r\n return (\r\n <button\r\n data-sidebar='rail'\r\n data-slot='sidebar-rail'\r\n aria-label='Toggle Sidebar'\r\n tabIndex={-1}\r\n onClick={toggleSidebar}\r\n title='Toggle Sidebar'\r\n className={cn(\r\n \"hover:after:bg-sidebar-border 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] sm:flex\",\r\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\r\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\r\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\r\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\r\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarInset({className, ...props}: React.ComponentProps<\"main\">) {\r\n return (\r\n <main\r\n data-slot='sidebar-inset'\r\n className={cn(\r\n \"relative flex w-full flex-1 flex-col bg-white dark:bg-neutral-950\",\r\n \"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\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarInput({className, ...props}: React.ComponentProps<typeof Input>) {\r\n return (\r\n <Input\r\n data-slot='sidebar-input'\r\n data-sidebar='input'\r\n className={cn(\"h-8 w-full bg-white shadow-none dark:bg-neutral-950\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarHeader({className, ...props}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot='sidebar-header'\r\n data-sidebar='header'\r\n className={cn(\"flex flex-col gap-2 p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarFooter({className, ...props}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot='sidebar-footer'\r\n data-sidebar='footer'\r\n className={cn(\"flex flex-col gap-2 p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarSeparator({className, ...props}: React.ComponentProps<typeof Separator>) {\r\n return (\r\n <Separator\r\n data-slot='sidebar-separator'\r\n data-sidebar='separator'\r\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarContent({className, ...props}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot='sidebar-content'\r\n data-sidebar='content'\r\n className={cn(\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarGroup({className, ...props}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot='sidebar-group'\r\n data-sidebar='group'\r\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarGroupLabel({className, asChild = false, ...props}: React.ComponentProps<\"div\"> & {asChild?: boolean}) {\r\n const Comp = asChild ? Slot : \"div\";\r\n\r\n return (\r\n <Comp\r\n data-slot='sidebar-group-label'\r\n data-sidebar='group-label'\r\n className={cn(\r\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 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarGroupAction({className, asChild = false, ...props}: React.ComponentProps<\"button\"> & {asChild?: boolean}) {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n data-slot='sidebar-group-action'\r\n data-sidebar='group-action'\r\n className={cn(\r\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 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 md:after:hidden\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarGroupContent({className, ...props}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot='sidebar-group-content'\r\n data-sidebar='group-content'\r\n className={cn(\"w-full text-sm\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarMenu({className, ...props}: React.ComponentProps<\"ul\">) {\r\n return (\r\n <ul\r\n data-slot='sidebar-menu'\r\n data-sidebar='menu'\r\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarMenuItem({className, ...props}: React.ComponentProps<\"li\">) {\r\n return (\r\n <li\r\n data-slot='sidebar-menu-item'\r\n data-sidebar='menu-item'\r\n className={cn(\"group/menu-item relative\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nconst sidebarMenuButtonVariants = cva(\r\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] 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 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\r\n outline:\r\n \"bg-white shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))] dark:bg-neutral-950\",\r\n },\r\n size: {\r\n default: \"h-8 text-sm\",\r\n sm: \"h-7 text-xs\",\r\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n },\r\n);\r\n\r\nfunction SidebarMenuButton({\r\n asChild = false,\r\n isActive = false,\r\n variant = \"default\",\r\n size = \"default\",\r\n tooltip,\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n isActive?: boolean;\r\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\r\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\r\n const Comp = asChild ? Slot : \"button\";\r\n const {isMobile, state} = useSidebar();\r\n\r\n const button = (\r\n <Comp\r\n data-slot='sidebar-menu-button'\r\n data-sidebar='menu-button'\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(sidebarMenuButtonVariants({variant, size}), className)}\r\n {...props}\r\n />\r\n );\r\n\r\n if (!tooltip) {\r\n return button;\r\n }\r\n\r\n if (typeof tooltip === \"string\") {\r\n tooltip = {\r\n children: tooltip,\r\n };\r\n }\r\n\r\n return (\r\n <Tooltip>\r\n <TooltipTrigger asChild>{button}</TooltipTrigger>\r\n <TooltipContent\r\n side='right'\r\n align='center'\r\n hidden={state !== \"collapsed\" || isMobile}\r\n {...tooltip}\r\n />\r\n </Tooltip>\r\n );\r\n}\r\n\r\nfunction SidebarMenuAction({\r\n className,\r\n asChild = false,\r\n showOnHover = false,\r\n ...props\r\n}: React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n showOnHover?: boolean;\r\n}) {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n data-slot='sidebar-menu-action'\r\n data-sidebar='menu-action'\r\n className={cn(\r\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 md:after:hidden\",\r\n \"peer-data-[size=sm]/menu-button:top-1\",\r\n \"peer-data-[size=default]/menu-button:top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n showOnHover\r\n && \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarMenuBadge({className, ...props}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot='sidebar-menu-badge'\r\n data-sidebar='menu-badge'\r\n className={cn(\r\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\r\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\r\n \"peer-data-[size=sm]/menu-button:top-1\",\r\n \"peer-data-[size=default]/menu-button:top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarMenuSkeleton({\r\n className,\r\n showIcon = false,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n showIcon?: boolean;\r\n}) {\r\n // Random width between 50 to 90%.\r\n const width = React.useMemo(() => {\r\n return `${Math.floor(Math.random() * 40) + 50}%`;\r\n }, []);\r\n\r\n return (\r\n <div\r\n data-slot='sidebar-menu-skeleton'\r\n data-sidebar='menu-skeleton'\r\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\r\n {...props}>\r\n {showIcon && (\r\n <Skeleton\r\n className='size-4 rounded-md'\r\n data-sidebar='menu-skeleton-icon'\r\n />\r\n )}\r\n <Skeleton\r\n className='h-4 max-w-(--skeleton-width) flex-1'\r\n data-sidebar='menu-skeleton-text'\r\n style={\r\n {\r\n \"--skeleton-width\": width,\r\n } as React.CSSProperties\r\n }\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nfunction SidebarMenuSub({className, ...props}: React.ComponentProps<\"ul\">) {\r\n return (\r\n <ul\r\n data-slot='sidebar-menu-sub'\r\n data-sidebar='menu-sub'\r\n className={cn(\r\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarMenuSubItem({className, ...props}: React.ComponentProps<\"li\">) {\r\n return (\r\n <li\r\n data-slot='sidebar-menu-sub-item'\r\n data-sidebar='menu-sub-item'\r\n className={cn(\"group/menu-sub-item relative\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarMenuSubButton({\r\n asChild = false,\r\n size = \"md\",\r\n isActive = false,\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"a\"> & {\r\n asChild?: boolean;\r\n size?: \"sm\" | \"md\";\r\n isActive?: boolean;\r\n}) {\r\n const Comp = asChild ? Slot : \"a\";\r\n\r\n return (\r\n <Comp\r\n data-slot='sidebar-menu-sub-button'\r\n data-sidebar='menu-sub-button'\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(\r\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-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]:size-4 [&>svg]:shrink-0\",\r\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\r\n size === \"sm\" && \"text-xs\",\r\n size === \"md\" && \"text-sm\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport {\r\n Sidebar,\r\n SidebarContent,\r\n SidebarFooter,\r\n SidebarGroup,\r\n SidebarGroupAction,\r\n SidebarGroupContent,\r\n SidebarGroupLabel,\r\n SidebarHeader,\r\n SidebarInput,\r\n SidebarInset,\r\n SidebarMenu,\r\n SidebarMenuAction,\r\n SidebarMenuBadge,\r\n SidebarMenuButton,\r\n SidebarMenuItem,\r\n SidebarMenuSkeleton,\r\n SidebarMenuSub,\r\n SidebarMenuSubButton,\r\n SidebarMenuSubItem,\r\n SidebarProvider,\r\n SidebarRail,\r\n SidebarSeparator,\r\n SidebarTrigger,\r\n useSidebar,\r\n};\r\n"],"names":["SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React","useSidebar","context","Error","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","document","toggleSidebar","handleKeyDown","event","window","state","contextValue","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeftIcon","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Comp","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","cva","SidebarMenuButton","isActive","size","tooltip","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Math","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"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"}
1
+ {"version":3,"file":"components\\ui\\sidebar.js","sources":["webpack://@arolariu/components/./src/components/ui/sidebar.tsx"],"sourcesContent":["\r\n\r\nimport {Slot} from \"@radix-ui/react-slot\";\r\nimport {VariantProps, cva} from \"class-variance-authority\";\r\nimport {PanelLeft} from \"lucide-react\";\r\nimport * as React from \"react\";\r\n\r\nimport {Button} from \"@/components/ui/button\";\r\nimport {Input} from \"@/components/ui/input\";\r\nimport {Separator} from \"@/components/ui/separator\";\r\nimport {Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle} from \"@/components/ui/sheet\";\r\nimport {Skeleton} from \"@/components/ui/skeleton\";\r\nimport {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from \"@/components/ui/tooltip\";\r\nimport {useIsMobile} from \"@/hooks/useIsMobile\";\r\nimport {cn} from \"@/lib/utilities\";\r\n\r\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\r\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\r\nconst SIDEBAR_WIDTH = \"16rem\";\r\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\r\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\r\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\r\n\r\ntype SidebarContextProps = {\r\n state: \"expanded\" | \"collapsed\";\r\n open: boolean;\r\n setOpen: (open: boolean) => void;\r\n openMobile: boolean;\r\n setOpenMobile: (open: boolean) => void;\r\n isMobile: boolean;\r\n toggleSidebar: () => void;\r\n};\r\n\r\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\r\n\r\nfunction useSidebar() {\r\n const context = React.useContext(SidebarContext);\r\n if (!context) {\r\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nconst SidebarProvider = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n }\r\n>(({defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props}, ref) => {\r\n const isMobile = useIsMobile();\r\n const [openMobile, setOpenMobile] = React.useState(false);\r\n\r\n // This is the internal state of the sidebar.\r\n // We use openProp and setOpenProp for control from outside the component.\r\n const [_open, _setOpen] = React.useState(defaultOpen);\r\n const open = openProp ?? _open;\r\n const setOpen = React.useCallback(\r\n (value: boolean | ((value: boolean) => boolean)) => {\r\n const openState = typeof value === \"function\" ? value(open) : value;\r\n if (setOpenProp) {\r\n setOpenProp(openState);\r\n } else {\r\n _setOpen(openState);\r\n }\r\n\r\n // This sets the cookie to keep the sidebar state.\r\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\r\n },\r\n [setOpenProp, open],\r\n );\r\n\r\n // Helper to toggle the sidebar.\r\n const toggleSidebar = React.useCallback(() => {\r\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\r\n }, [isMobile, setOpen, setOpenMobile]);\r\n\r\n // Adds a keyboard shortcut to toggle the sidebar.\r\n React.useEffect(() => {\r\n const handleKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\r\n event.preventDefault();\r\n toggleSidebar();\r\n }\r\n };\r\n\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [toggleSidebar]);\r\n\r\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\r\n // This makes it easier to style the sidebar with Tailwind classes.\r\n const state = open ? \"expanded\" : \"collapsed\";\r\n\r\n const contextValue = React.useMemo<SidebarContextProps>(\r\n () => ({\r\n state,\r\n open,\r\n setOpen,\r\n isMobile,\r\n openMobile,\r\n setOpenMobile,\r\n toggleSidebar,\r\n }),\r\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\r\n );\r\n\r\n return (\r\n <SidebarContext.Provider value={contextValue}>\r\n <TooltipProvider delayDuration={0}>\r\n <div\r\n style={\r\n {\r\n \"--sidebar-width\": SIDEBAR_WIDTH,\r\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n className={cn(\"group/sidebar-wrapper has-[[data-variant=inset]]:bg-sidebar flex min-h-svh w-full\", className)}\r\n ref={ref}\r\n {...props}>\r\n {children}\r\n </div>\r\n </TooltipProvider>\r\n </SidebarContext.Provider>\r\n );\r\n});\r\nSidebarProvider.displayName = \"SidebarProvider\";\r\n\r\nconst Sidebar = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n side?: \"left\" | \"right\";\r\n variant?: \"sidebar\" | \"floating\" | \"inset\";\r\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\r\n }\r\n>(({side = \"left\", variant = \"sidebar\", collapsible = \"offcanvas\", className, children, ...props}, ref) => {\r\n const {isMobile, state, openMobile, setOpenMobile} = useSidebar();\r\n\r\n if (collapsible === \"none\") {\r\n return (\r\n <div\r\n className={cn(\"bg-sidebar text-sidebar-foreground flex h-full w-[--sidebar-width] flex-col\", className)}\r\n ref={ref}\r\n {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n\r\n if (isMobile) {\r\n return (\r\n <Sheet\r\n open={openMobile}\r\n onOpenChange={setOpenMobile}\r\n {...props}>\r\n <SheetContent\r\n data-sidebar='sidebar'\r\n data-mobile='true'\r\n className='bg-sidebar text-sidebar-foreground w-[--sidebar-width] p-0 [&>button]:hidden'\r\n style={\r\n {\r\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\r\n } as React.CSSProperties\r\n }\r\n side={side}>\r\n <SheetHeader className='sr-only'>\r\n <SheetTitle>Sidebar</SheetTitle>\r\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\r\n </SheetHeader>\r\n <div className='flex h-full w-full flex-col'>{children}</div>\r\n </SheetContent>\r\n </Sheet>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className='group peer text-sidebar-foreground hidden md:block'\r\n data-state={state}\r\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\r\n data-variant={variant}\r\n data-side={side}>\r\n {/* This is what handles the sidebar gap on desktop */}\r\n <div\r\n className={cn(\r\n \"relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear\",\r\n \"group-data-[collapsible=offcanvas]:w-0\",\r\n \"group-data-[side=right]:rotate-180\",\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\r\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\",\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex\",\r\n side === \"left\"\r\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\r\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\r\n // Adjust the padding for floating and inset variants.\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\r\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\r\n className,\r\n )}\r\n {...props}>\r\n <div\r\n data-sidebar='sidebar'\r\n className='bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow'>\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n});\r\nSidebar.displayName = \"Sidebar\";\r\n\r\nconst SidebarTrigger = React.forwardRef<React.ElementRef<typeof Button>, React.ComponentProps<typeof Button>>(\r\n ({className, onClick, ...props}, ref) => {\r\n const {toggleSidebar} = useSidebar();\r\n\r\n return (\r\n <Button\r\n ref={ref}\r\n data-sidebar='trigger'\r\n variant='ghost'\r\n size='icon'\r\n className={cn(\"h-7 w-7\", className)}\r\n onClick={(event) => {\r\n onClick?.(event);\r\n toggleSidebar();\r\n }}\r\n {...props}>\r\n <PanelLeft />\r\n <span className='sr-only'>Toggle Sidebar</span>\r\n </Button>\r\n );\r\n },\r\n);\r\nSidebarTrigger.displayName = \"SidebarTrigger\";\r\n\r\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(({className, ...props}, ref) => {\r\n const {toggleSidebar} = useSidebar();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n data-sidebar='rail'\r\n aria-label='Toggle Sidebar'\r\n tabIndex={-1}\r\n onClick={toggleSidebar}\r\n title='Toggle Sidebar'\r\n className={cn(\r\n \"hover:after:bg-sidebar-border 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] sm:flex\",\r\n \"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\r\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\r\n \"group-data-[collapsible=offcanvas]:hover:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\r\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\r\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarRail.displayName = \"SidebarRail\";\r\n\r\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({className, ...props}, ref) => {\r\n return (\r\n <main\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full flex-1 flex-col bg-white dark:bg-neutral-950\",\r\n \"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 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarInset.displayName = \"SidebarInset\";\r\n\r\nconst SidebarInput = React.forwardRef<React.ElementRef<typeof Input>, React.ComponentProps<typeof Input>>(({className, ...props}, ref) => {\r\n return (\r\n <Input\r\n ref={ref}\r\n data-sidebar='input'\r\n className={cn(\"focus-visible:ring-sidebar-ring h-8 w-full bg-white shadow-none focus-visible:ring-2 dark:bg-neutral-950\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarInput.displayName = \"SidebarInput\";\r\n\r\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({className, ...props}, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar='header'\r\n className={cn(\"flex flex-col gap-2 p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarHeader.displayName = \"SidebarHeader\";\r\n\r\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({className, ...props}, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar='footer'\r\n className={cn(\"flex flex-col gap-2 p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarFooter.displayName = \"SidebarFooter\";\r\n\r\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\r\n ({className, ...props}, ref) => {\r\n return (\r\n <Separator\r\n ref={ref}\r\n data-sidebar='separator'\r\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarSeparator.displayName = \"SidebarSeparator\";\r\n\r\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({className, ...props}, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar='content'\r\n className={cn(\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarContent.displayName = \"SidebarContent\";\r\n\r\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({className, ...props}, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar='group'\r\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarGroup.displayName = \"SidebarGroup\";\r\n\r\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & {asChild?: boolean}>(\r\n ({className, asChild = false, ...props}, ref) => {\r\n const Comp = asChild ? Slot : \"div\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar='group-label'\r\n className={cn(\r\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\r\n\r\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & {asChild?: boolean}>(\r\n ({className, asChild = false, ...props}, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar='group-action'\r\n className={cn(\r\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 transition-transform outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 after:md:hidden\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\r\n\r\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n data-sidebar='group-content'\r\n className={cn(\"w-full text-sm\", className)}\r\n {...props}\r\n />\r\n));\r\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\r\n\r\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({className, ...props}, ref) => (\r\n <ul\r\n ref={ref}\r\n data-sidebar='menu'\r\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\r\n {...props}\r\n />\r\n));\r\nSidebarMenu.displayName = \"SidebarMenu\";\r\n\r\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({className, ...props}, ref) => (\r\n <li\r\n ref={ref}\r\n data-sidebar='menu-item'\r\n className={cn(\"group/menu-item relative\", className)}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\r\n\r\nconst sidebarMenuButtonVariants = cva(\r\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] 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 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\r\n outline:\r\n \"bg-white shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))] dark:bg-neutral-950\",\r\n },\r\n size: {\r\n default: \"h-8 text-sm\",\r\n sm: \"h-7 text-xs\",\r\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n },\r\n);\r\n\r\nconst SidebarMenuButton = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n isActive?: boolean;\r\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\r\n } & VariantProps<typeof sidebarMenuButtonVariants>\r\n>(({asChild = false, isActive = false, variant = \"default\", size = \"default\", tooltip, className, ...props}, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n const {isMobile, state} = useSidebar();\r\n\r\n const button = (\r\n <Comp\r\n ref={ref}\r\n data-sidebar='menu-button'\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(sidebarMenuButtonVariants({variant, size}), className)}\r\n {...props}\r\n />\r\n );\r\n\r\n if (!tooltip) {\r\n return button;\r\n }\r\n\r\n if (typeof tooltip === \"string\") {\r\n tooltip = {\r\n children: tooltip,\r\n };\r\n }\r\n\r\n return (\r\n <Tooltip>\r\n <TooltipTrigger asChild>{button}</TooltipTrigger>\r\n <TooltipContent\r\n side='right'\r\n align='center'\r\n hidden={state !== \"collapsed\" || isMobile}\r\n {...tooltip}\r\n />\r\n </Tooltip>\r\n );\r\n});\r\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\r\n\r\nconst SidebarMenuAction = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n showOnHover?: boolean;\r\n }\r\n>(({className, asChild = false, showOnHover = false, ...props}, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar='menu-action'\r\n className={cn(\r\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 after:md:hidden\",\r\n \"peer-data-[size=sm]/menu-button:top-1\",\r\n \"peer-data-[size=default]/menu-button:top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n showOnHover\r\n && \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\r\n\r\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n data-sidebar='menu-badge'\r\n className={cn(\r\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\r\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\r\n \"peer-data-[size=sm]/menu-button:top-1\",\r\n \"peer-data-[size=default]/menu-button:top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\r\n\r\nconst SidebarMenuSkeleton = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n showIcon?: boolean;\r\n }\r\n>(({className, showIcon = false, ...props}, ref) => {\r\n // Random width between 50 to 90%.\r\n const width = React.useMemo(() => {\r\n return `${Math.floor(Math.random() * 40) + 50}%`;\r\n }, []);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar='menu-skeleton'\r\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\r\n {...props}>\r\n {showIcon && (\r\n <Skeleton\r\n className='size-4 rounded-md'\r\n data-sidebar='menu-skeleton-icon'\r\n />\r\n )}\r\n <Skeleton\r\n className='h-4 max-w-[--skeleton-width] flex-1'\r\n data-sidebar='menu-skeleton-text'\r\n style={\r\n {\r\n \"--skeleton-width\": width,\r\n } as React.CSSProperties\r\n }\r\n />\r\n </div>\r\n );\r\n});\r\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\r\n\r\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({className, ...props}, ref) => (\r\n <ul\r\n ref={ref}\r\n data-sidebar='menu-sub'\r\n className={cn(\r\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\r\n\r\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({...props}, ref) => (\r\n <li\r\n ref={ref}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\r\n\r\nconst SidebarMenuSubButton = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentProps<\"a\"> & {\r\n asChild?: boolean;\r\n size?: \"sm\" | \"md\";\r\n isActive?: boolean;\r\n }\r\n>(({asChild = false, size = \"md\", isActive, className, ...props}, ref) => {\r\n const Comp = asChild ? Slot : \"a\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar='menu-sub-button'\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(\r\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-none 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]:size-4 [&>svg]:shrink-0\",\r\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\r\n size === \"sm\" && \"text-xs\",\r\n size === \"md\" && \"text-sm\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\r\n\r\nexport {\r\n Sidebar,\r\n SidebarContent,\r\n SidebarFooter,\r\n SidebarGroup,\r\n SidebarGroupAction,\r\n SidebarGroupContent,\r\n SidebarGroupLabel,\r\n SidebarHeader,\r\n SidebarInput,\r\n SidebarInset,\r\n SidebarMenu,\r\n SidebarMenuAction,\r\n SidebarMenuBadge,\r\n SidebarMenuButton,\r\n SidebarMenuItem,\r\n SidebarMenuSkeleton,\r\n SidebarMenuSub,\r\n SidebarMenuSubButton,\r\n SidebarMenuSubItem,\r\n SidebarProvider,\r\n SidebarRail,\r\n SidebarSeparator,\r\n SidebarTrigger,\r\n useSidebar,\r\n};\r\n"],"names":["SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React","useSidebar","context","Error","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","document","toggleSidebar","handleKeyDown","event","window","state","contextValue","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeft","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Comp","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","cva","SidebarMenuButton","isActive","size","tooltip","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Math","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import * as React from "react";
2
- declare function Skeleton({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
2
+ declare function Skeleton({ className, ...props }: Readonly<React.HTMLAttributes<HTMLDivElement>>): import("react/jsx-runtime").JSX.Element;
3
3
  export { Skeleton };
4
4
  //# sourceMappingURL=skeleton.d.ts.map