@nuvia/components 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/README.md +96 -0
  2. package/dist/hooks/use-mobile.cjs +44 -0
  3. package/dist/hooks/use-mobile.cjs.map +1 -0
  4. package/dist/hooks/use-mobile.js +22 -0
  5. package/dist/hooks/use-mobile.js.map +1 -0
  6. package/dist/hooks/use-toast.cjs +146 -0
  7. package/dist/hooks/use-toast.cjs.map +1 -0
  8. package/dist/hooks/use-toast.js +122 -0
  9. package/dist/hooks/use-toast.js.map +1 -0
  10. package/dist/index.cjs +4117 -0
  11. package/dist/index.cjs.map +1 -0
  12. package/dist/index.js +3800 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/lib/fonts.cjs +15 -0
  15. package/dist/lib/fonts.cjs.map +1 -0
  16. package/dist/lib/fonts.js +13 -0
  17. package/dist/lib/fonts.js.map +1 -0
  18. package/dist/lib/utils.cjs +18 -0
  19. package/dist/lib/utils.cjs.map +1 -0
  20. package/dist/lib/utils.js +14 -0
  21. package/dist/lib/utils.js.map +1 -0
  22. package/dist/providers/theme.cjs +24 -0
  23. package/dist/providers/theme.cjs.map +1 -0
  24. package/dist/providers/theme.js +22 -0
  25. package/dist/providers/theme.js.map +1 -0
  26. package/dist/ui/accordion.cjs +75 -0
  27. package/dist/ui/accordion.cjs.map +1 -0
  28. package/dist/ui/accordion.js +49 -0
  29. package/dist/ui/accordion.js.map +1 -0
  30. package/dist/ui/alert-dialog.cjs +189 -0
  31. package/dist/ui/alert-dialog.cjs.map +1 -0
  32. package/dist/ui/alert-dialog.js +156 -0
  33. package/dist/ui/alert-dialog.js.map +1 -0
  34. package/dist/ui/alert.cjs +81 -0
  35. package/dist/ui/alert.cjs.map +1 -0
  36. package/dist/ui/alert.js +57 -0
  37. package/dist/ui/alert.js.map +1 -0
  38. package/dist/ui/aspect-ratio.cjs +29 -0
  39. package/dist/ui/aspect-ratio.cjs.map +1 -0
  40. package/dist/ui/aspect-ratio.js +7 -0
  41. package/dist/ui/aspect-ratio.js.map +1 -0
  42. package/dist/ui/auto-complete.cjs +284 -0
  43. package/dist/ui/auto-complete.cjs.map +1 -0
  44. package/dist/ui/auto-complete.js +262 -0
  45. package/dist/ui/auto-complete.js.map +1 -0
  46. package/dist/ui/avatar.cjs +70 -0
  47. package/dist/ui/avatar.cjs.map +1 -0
  48. package/dist/ui/avatar.js +45 -0
  49. package/dist/ui/avatar.js.map +1 -0
  50. package/dist/ui/badge.cjs +34 -0
  51. package/dist/ui/badge.cjs.map +1 -0
  52. package/dist/ui/badge.js +31 -0
  53. package/dist/ui/badge.js.map +1 -0
  54. package/dist/ui/breadcrumb.cjs +120 -0
  55. package/dist/ui/breadcrumb.cjs.map +1 -0
  56. package/dist/ui/breadcrumb.js +92 -0
  57. package/dist/ui/breadcrumb.js.map +1 -0
  58. package/dist/ui/button.cjs +80 -0
  59. package/dist/ui/button.cjs.map +1 -0
  60. package/dist/ui/button.js +57 -0
  61. package/dist/ui/button.js.map +1 -0
  62. package/dist/ui/calendar.cjs +135 -0
  63. package/dist/ui/calendar.cjs.map +1 -0
  64. package/dist/ui/calendar.js +113 -0
  65. package/dist/ui/calendar.js.map +1 -0
  66. package/dist/ui/card.cjs +89 -0
  67. package/dist/ui/card.cjs.map +1 -0
  68. package/dist/ui/card.js +62 -0
  69. package/dist/ui/card.js.map +1 -0
  70. package/dist/ui/carousel.cjs +269 -0
  71. package/dist/ui/carousel.cjs.map +1 -0
  72. package/dist/ui/carousel.js +240 -0
  73. package/dist/ui/carousel.js.map +1 -0
  74. package/dist/ui/chart.cjs +267 -0
  75. package/dist/ui/chart.cjs.map +1 -0
  76. package/dist/ui/chart.js +239 -0
  77. package/dist/ui/chart.js.map +1 -0
  78. package/dist/ui/checkbox.cjs +55 -0
  79. package/dist/ui/checkbox.cjs.map +1 -0
  80. package/dist/ui/checkbox.js +32 -0
  81. package/dist/ui/checkbox.js.map +1 -0
  82. package/dist/ui/chip.cjs +79 -0
  83. package/dist/ui/chip.cjs.map +1 -0
  84. package/dist/ui/chip.js +55 -0
  85. package/dist/ui/chip.js.map +1 -0
  86. package/dist/ui/collapsible.cjs +33 -0
  87. package/dist/ui/collapsible.cjs.map +1 -0
  88. package/dist/ui/collapsible.js +9 -0
  89. package/dist/ui/collapsible.js.map +1 -0
  90. package/dist/ui/combobox.cjs +254 -0
  91. package/dist/ui/combobox.cjs.map +1 -0
  92. package/dist/ui/combobox.js +232 -0
  93. package/dist/ui/combobox.js.map +1 -0
  94. package/dist/ui/command.cjs +199 -0
  95. package/dist/ui/command.cjs.map +1 -0
  96. package/dist/ui/command.js +168 -0
  97. package/dist/ui/command.js.map +1 -0
  98. package/dist/ui/context-menu.cjs +181 -0
  99. package/dist/ui/context-menu.cjs.map +1 -0
  100. package/dist/ui/context-menu.js +144 -0
  101. package/dist/ui/context-menu.js.map +1 -0
  102. package/dist/ui/dialog.cjs +132 -0
  103. package/dist/ui/dialog.cjs.map +1 -0
  104. package/dist/ui/dialog.js +100 -0
  105. package/dist/ui/dialog.js.map +1 -0
  106. package/dist/ui/drawer.cjs +128 -0
  107. package/dist/ui/drawer.cjs.map +1 -0
  108. package/dist/ui/drawer.js +97 -0
  109. package/dist/ui/drawer.js.map +1 -0
  110. package/dist/ui/dropdown-menu.cjs +194 -0
  111. package/dist/ui/dropdown-menu.cjs.map +1 -0
  112. package/dist/ui/dropdown-menu.js +157 -0
  113. package/dist/ui/dropdown-menu.js.map +1 -0
  114. package/dist/ui/form.cjs +179 -0
  115. package/dist/ui/form.cjs.map +1 -0
  116. package/dist/ui/form.js +149 -0
  117. package/dist/ui/form.js.map +1 -0
  118. package/dist/ui/hover-card.cjs +53 -0
  119. package/dist/ui/hover-card.cjs.map +1 -0
  120. package/dist/ui/hover-card.js +28 -0
  121. package/dist/ui/hover-card.js.map +1 -0
  122. package/dist/ui/input-otp.cjs +76 -0
  123. package/dist/ui/input-otp.cjs.map +1 -0
  124. package/dist/ui/input-otp.js +51 -0
  125. package/dist/ui/input-otp.js.map +1 -0
  126. package/dist/ui/input.cjs +51 -0
  127. package/dist/ui/input.cjs.map +1 -0
  128. package/dist/ui/input.js +29 -0
  129. package/dist/ui/input.js.map +1 -0
  130. package/dist/ui/label.cjs +55 -0
  131. package/dist/ui/label.cjs.map +1 -0
  132. package/dist/ui/label.js +32 -0
  133. package/dist/ui/label.js.map +1 -0
  134. package/dist/ui/lottie-animation.cjs +85 -0
  135. package/dist/ui/lottie-animation.cjs.map +1 -0
  136. package/dist/ui/lottie-animation.js +79 -0
  137. package/dist/ui/lottie-animation.js.map +1 -0
  138. package/dist/ui/menubar.cjs +210 -0
  139. package/dist/ui/menubar.cjs.map +1 -0
  140. package/dist/ui/menubar.js +172 -0
  141. package/dist/ui/menubar.js.map +1 -0
  142. package/dist/ui/multi-combobox.cjs +319 -0
  143. package/dist/ui/multi-combobox.cjs.map +1 -0
  144. package/dist/ui/multi-combobox.js +297 -0
  145. package/dist/ui/multi-combobox.js.map +1 -0
  146. package/dist/ui/navigation-menu.cjs +136 -0
  147. package/dist/ui/navigation-menu.cjs.map +1 -0
  148. package/dist/ui/navigation-menu.js +105 -0
  149. package/dist/ui/navigation-menu.js.map +1 -0
  150. package/dist/ui/pagination.cjs +172 -0
  151. package/dist/ui/pagination.cjs.map +1 -0
  152. package/dist/ui/pagination.js +144 -0
  153. package/dist/ui/pagination.js.map +1 -0
  154. package/dist/ui/popover.cjs +55 -0
  155. package/dist/ui/popover.cjs.map +1 -0
  156. package/dist/ui/popover.js +29 -0
  157. package/dist/ui/popover.js.map +1 -0
  158. package/dist/ui/progress.cjs +54 -0
  159. package/dist/ui/progress.cjs.map +1 -0
  160. package/dist/ui/progress.js +31 -0
  161. package/dist/ui/progress.js.map +1 -0
  162. package/dist/ui/radio-group.cjs +62 -0
  163. package/dist/ui/radio-group.cjs.map +1 -0
  164. package/dist/ui/radio-group.js +38 -0
  165. package/dist/ui/radio-group.js.map +1 -0
  166. package/dist/ui/resizable.cjs +65 -0
  167. package/dist/ui/resizable.cjs.map +1 -0
  168. package/dist/ui/resizable.js +41 -0
  169. package/dist/ui/resizable.js.map +1 -0
  170. package/dist/ui/scroll-area.cjs +66 -0
  171. package/dist/ui/scroll-area.cjs.map +1 -0
  172. package/dist/ui/scroll-area.js +42 -0
  173. package/dist/ui/scroll-area.js.map +1 -0
  174. package/dist/ui/select.cjs +152 -0
  175. package/dist/ui/select.cjs.map +1 -0
  176. package/dist/ui/select.js +120 -0
  177. package/dist/ui/select.js.map +1 -0
  178. package/dist/ui/separator.cjs +52 -0
  179. package/dist/ui/separator.cjs.map +1 -0
  180. package/dist/ui/separator.js +29 -0
  181. package/dist/ui/separator.js.map +1 -0
  182. package/dist/ui/sheet.cjs +143 -0
  183. package/dist/ui/sheet.cjs.map +1 -0
  184. package/dist/ui/sheet.js +111 -0
  185. package/dist/ui/sheet.js.map +1 -0
  186. package/dist/ui/sidebar.cjs +816 -0
  187. package/dist/ui/sidebar.cjs.map +1 -0
  188. package/dist/ui/sidebar.js +768 -0
  189. package/dist/ui/sidebar.js.map +1 -0
  190. package/dist/ui/skeleton.cjs +25 -0
  191. package/dist/ui/skeleton.cjs.map +1 -0
  192. package/dist/ui/skeleton.js +23 -0
  193. package/dist/ui/skeleton.js.map +1 -0
  194. package/dist/ui/slider.cjs +51 -0
  195. package/dist/ui/slider.cjs.map +1 -0
  196. package/dist/ui/slider.js +28 -0
  197. package/dist/ui/slider.js.map +1 -0
  198. package/dist/ui/sonner.cjs +46 -0
  199. package/dist/ui/sonner.cjs.map +1 -0
  200. package/dist/ui/sonner.js +41 -0
  201. package/dist/ui/sonner.js.map +1 -0
  202. package/dist/ui/spinner.cjs +83 -0
  203. package/dist/ui/spinner.cjs.map +1 -0
  204. package/dist/ui/spinner.js +81 -0
  205. package/dist/ui/spinner.js.map +1 -0
  206. package/dist/ui/switch.cjs +67 -0
  207. package/dist/ui/switch.cjs.map +1 -0
  208. package/dist/ui/switch.js +44 -0
  209. package/dist/ui/switch.js.map +1 -0
  210. package/dist/ui/table.cjs +118 -0
  211. package/dist/ui/table.cjs.map +1 -0
  212. package/dist/ui/table.js +89 -0
  213. package/dist/ui/table.js.map +1 -0
  214. package/dist/ui/tabs.cjs +79 -0
  215. package/dist/ui/tabs.cjs.map +1 -0
  216. package/dist/ui/tabs.js +53 -0
  217. package/dist/ui/tabs.js.map +1 -0
  218. package/dist/ui/textarea.cjs +48 -0
  219. package/dist/ui/textarea.cjs.map +1 -0
  220. package/dist/ui/textarea.js +26 -0
  221. package/dist/ui/textarea.js.map +1 -0
  222. package/dist/ui/toast.cjs +125 -0
  223. package/dist/ui/toast.cjs.map +1 -0
  224. package/dist/ui/toast.js +96 -0
  225. package/dist/ui/toast.js.map +1 -0
  226. package/dist/ui/toaster.cjs +251 -0
  227. package/dist/ui/toaster.cjs.map +1 -0
  228. package/dist/ui/toaster.js +228 -0
  229. package/dist/ui/toaster.js.map +1 -0
  230. package/dist/ui/toggle-group.cjs +101 -0
  231. package/dist/ui/toggle-group.cjs.map +1 -0
  232. package/dist/ui/toggle-group.js +76 -0
  233. package/dist/ui/toggle-group.js.map +1 -0
  234. package/dist/ui/toggle.cjs +66 -0
  235. package/dist/ui/toggle.cjs.map +1 -0
  236. package/dist/ui/toggle.js +42 -0
  237. package/dist/ui/toggle.js.map +1 -0
  238. package/dist/ui/tooltip.cjs +54 -0
  239. package/dist/ui/tooltip.cjs.map +1 -0
  240. package/dist/ui/tooltip.js +28 -0
  241. package/dist/ui/tooltip.js.map +1 -0
  242. package/package.json +116 -0
  243. package/src/styles/globals.css +529 -0
@@ -0,0 +1,816 @@
1
+ 'use strict';
2
+
3
+ var React7 = require('react');
4
+ var reactSlot = require('@radix-ui/react-slot');
5
+ var classVarianceAuthority = require('class-variance-authority');
6
+ var clsx = require('clsx');
7
+ require('sonner');
8
+ var tailwindMerge = require('tailwind-merge');
9
+ var jsxRuntime = require('react/jsx-runtime');
10
+ var SeparatorPrimitive = require('@radix-ui/react-separator');
11
+ var SheetPrimitive = require('@radix-ui/react-dialog');
12
+ var reactIcons = require('@radix-ui/react-icons');
13
+ var TooltipPrimitive = require('@radix-ui/react-tooltip');
14
+
15
+ function _interopNamespace(e) {
16
+ if (e && e.__esModule) return e;
17
+ var n = Object.create(null);
18
+ if (e) {
19
+ Object.keys(e).forEach(function (k) {
20
+ if (k !== 'default') {
21
+ var d = Object.getOwnPropertyDescriptor(e, k);
22
+ Object.defineProperty(n, k, d.get ? d : {
23
+ enumerable: true,
24
+ get: function () { return e[k]; }
25
+ });
26
+ }
27
+ });
28
+ }
29
+ n.default = e;
30
+ return Object.freeze(n);
31
+ }
32
+
33
+ var React7__namespace = /*#__PURE__*/_interopNamespace(React7);
34
+ var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
35
+ var SheetPrimitive__namespace = /*#__PURE__*/_interopNamespace(SheetPrimitive);
36
+ var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
37
+
38
+ var MOBILE_BREAKPOINT = 768;
39
+ function useIsMobile() {
40
+ const [isMobile, setIsMobile] = React7__namespace.useState(
41
+ void 0
42
+ );
43
+ React7__namespace.useEffect(() => {
44
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
45
+ const onChange = () => {
46
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
47
+ };
48
+ mql.addEventListener("change", onChange);
49
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
50
+ return () => mql.removeEventListener("change", onChange);
51
+ }, []);
52
+ return !!isMobile;
53
+ }
54
+ var cn = (...inputs) => tailwindMerge.twMerge(clsx.clsx(inputs));
55
+ var buttonVariants = classVarianceAuthority.cva(
56
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
57
+ {
58
+ variants: {
59
+ variant: {
60
+ default: "bg-foreground-primary-medium text-white shadow hover:bg-primary/90",
61
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
62
+ outline: "border border-input bg-background hover:bg-secondary hover:text-accent-foreground text-foreground-secondary-heavy",
63
+ secondary: "bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy",
64
+ ghost: "text-foreground-secondary-heavy hover:bg-background-secondary-light",
65
+ link: "text-text-links hover:bg-background-secondary-light",
66
+ accent: "bg-accent nuvia-gradient-1 text-white"
67
+ },
68
+ size: {
69
+ default: "h-10 px-4 py-2",
70
+ xs: "h-[30px] px-3 rounded-xl text-xs",
71
+ sm: "h-9 rounded-xl px-3 text-xs",
72
+ lg: "h-12 rounded-xl px-8",
73
+ icon: "h-10 w-10 min-w-10",
74
+ "icon-xs": "h-[30px] w-[30px] min-w-[30px]",
75
+ "icon-sm": "h-9 w-9 min-w-9",
76
+ bullet: "h-8 w-8 min-w-8"
77
+ }
78
+ },
79
+ defaultVariants: {
80
+ variant: "default",
81
+ size: "default"
82
+ }
83
+ }
84
+ );
85
+ var Button = React7__namespace.forwardRef(
86
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
87
+ const Comp = asChild ? reactSlot.Slot : "button";
88
+ return /* @__PURE__ */ jsxRuntime.jsx(
89
+ Comp,
90
+ {
91
+ className: cn(buttonVariants({ variant, size, className })),
92
+ ref,
93
+ ...props
94
+ }
95
+ );
96
+ }
97
+ );
98
+ Button.displayName = "Button";
99
+ var Input = React7__namespace.forwardRef(
100
+ ({ className, type, ...props }, ref) => {
101
+ return /* @__PURE__ */ jsxRuntime.jsx(
102
+ "input",
103
+ {
104
+ type,
105
+ className: cn(
106
+ "flex h-10 w-full rounded-xl border border-border bg-transparent px-3 py-1 text-base transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm group-aria-[invalid=true]:border-danger-foreground aria-[invalid=true]:border-danger-foreground",
107
+ className
108
+ ),
109
+ ref,
110
+ ...props
111
+ }
112
+ );
113
+ }
114
+ );
115
+ Input.displayName = "Input";
116
+ var Separator = React7__namespace.forwardRef(
117
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
118
+ SeparatorPrimitive__namespace.Root,
119
+ {
120
+ ref,
121
+ decorative,
122
+ orientation,
123
+ className: cn(
124
+ "shrink-0 bg-border",
125
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
126
+ className
127
+ ),
128
+ ...props
129
+ }
130
+ )
131
+ );
132
+ Separator.displayName = SeparatorPrimitive__namespace.Root.displayName;
133
+ var Sheet = SheetPrimitive__namespace.Root;
134
+ var SheetPortal = SheetPrimitive__namespace.Portal;
135
+ var SheetOverlay = React7__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
136
+ SheetPrimitive__namespace.Overlay,
137
+ {
138
+ className: cn(
139
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
140
+ className
141
+ ),
142
+ ...props,
143
+ ref
144
+ }
145
+ ));
146
+ SheetOverlay.displayName = SheetPrimitive__namespace.Overlay.displayName;
147
+ var sheetVariants = classVarianceAuthority.cva(
148
+ "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
149
+ {
150
+ variants: {
151
+ side: {
152
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
153
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
154
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
155
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
156
+ }
157
+ },
158
+ defaultVariants: {
159
+ side: "right"
160
+ }
161
+ }
162
+ );
163
+ var SheetContent = React7__namespace.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(SheetPortal, { children: [
164
+ /* @__PURE__ */ jsxRuntime.jsx(SheetOverlay, {}),
165
+ /* @__PURE__ */ jsxRuntime.jsxs(
166
+ SheetPrimitive__namespace.Content,
167
+ {
168
+ ref,
169
+ className: cn(sheetVariants({ side }), className),
170
+ ...props,
171
+ children: [
172
+ /* @__PURE__ */ jsxRuntime.jsxs(SheetPrimitive__namespace.Close, { className: "group-[.no-close]:hidden absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
173
+ /* @__PURE__ */ jsxRuntime.jsx(reactIcons.Cross2Icon, { className: "h-4 w-4" }),
174
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
175
+ ] }),
176
+ children
177
+ ]
178
+ }
179
+ )
180
+ ] }));
181
+ SheetContent.displayName = SheetPrimitive__namespace.Content.displayName;
182
+ var SheetTitle = React7__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
183
+ SheetPrimitive__namespace.Title,
184
+ {
185
+ ref,
186
+ className: cn("text-lg font-semibold text-text-brand-primary", className),
187
+ ...props
188
+ }
189
+ ));
190
+ SheetTitle.displayName = SheetPrimitive__namespace.Title.displayName;
191
+ var SheetDescription = React7__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
192
+ SheetPrimitive__namespace.Description,
193
+ {
194
+ ref,
195
+ className: cn("text-sm text-muted-foreground", className),
196
+ ...props
197
+ }
198
+ ));
199
+ SheetDescription.displayName = SheetPrimitive__namespace.Description.displayName;
200
+ function Skeleton({
201
+ className,
202
+ ...props
203
+ }) {
204
+ return /* @__PURE__ */ jsxRuntime.jsx(
205
+ "div",
206
+ {
207
+ className: cn("animate-pulse rounded-md bg-secondary dark:bg-secondary/25", className),
208
+ ...props
209
+ }
210
+ );
211
+ }
212
+ var TooltipProvider = TooltipPrimitive__namespace.Provider;
213
+ var Tooltip = TooltipPrimitive__namespace.Root;
214
+ var TooltipTrigger = TooltipPrimitive__namespace.Trigger;
215
+ var TooltipContent = React7__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
216
+ TooltipPrimitive__namespace.Content,
217
+ {
218
+ ref,
219
+ sideOffset,
220
+ className: cn(
221
+ "z-50 overflow-hidden rounded-xl shadow-md bg-background border border-border px-3 py-1.5 text-xs text-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
222
+ className
223
+ ),
224
+ ...props
225
+ }
226
+ ) }));
227
+ TooltipContent.displayName = TooltipPrimitive__namespace.Content.displayName;
228
+ var SIDEBAR_COOKIE_NAME = "sidebar:state";
229
+ var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
230
+ var SIDEBAR_WIDTH = "240px";
231
+ var SIDEBAR_WIDTH_MOBILE = "18rem";
232
+ var SIDEBAR_WIDTH_ICON = "90px";
233
+ var SIDEBAR_KEYBOARD_SHORTCUT = "b";
234
+ var SidebarContext = React7__namespace.createContext(null);
235
+ function useSidebar() {
236
+ const context = React7__namespace.useContext(SidebarContext);
237
+ if (!context) {
238
+ throw new Error("useSidebar must be used within a SidebarProvider.");
239
+ }
240
+ return context;
241
+ }
242
+ var SidebarProvider = React7__namespace.forwardRef(
243
+ ({
244
+ defaultOpen = false,
245
+ open: openProp,
246
+ onOpenChange: setOpenProp,
247
+ className,
248
+ style,
249
+ children,
250
+ ...props
251
+ }, ref) => {
252
+ const isMobile = useIsMobile();
253
+ const [openMobile, setOpenMobile] = React7__namespace.useState(false);
254
+ const [_open, _setOpen] = React7__namespace.useState(defaultOpen);
255
+ const open = openProp ?? _open;
256
+ const setOpen = React7__namespace.useCallback(
257
+ (value) => {
258
+ const openState = typeof value === "function" ? value(open) : value;
259
+ if (setOpenProp) {
260
+ setOpenProp(openState);
261
+ } else {
262
+ _setOpen(openState);
263
+ }
264
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
265
+ },
266
+ [setOpenProp, open]
267
+ );
268
+ const toggleSidebar = React7__namespace.useCallback(() => {
269
+ return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
270
+ }, [isMobile, setOpen, setOpenMobile]);
271
+ React7__namespace.useEffect(() => {
272
+ const handleKeyDown = (event) => {
273
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
274
+ event.preventDefault();
275
+ toggleSidebar();
276
+ }
277
+ };
278
+ window.addEventListener("keydown", handleKeyDown);
279
+ return () => window.removeEventListener("keydown", handleKeyDown);
280
+ }, [toggleSidebar]);
281
+ const state = open ? "expanded" : "collapsed";
282
+ const contextValue = React7__namespace.useMemo(
283
+ () => ({
284
+ state,
285
+ open,
286
+ setOpen,
287
+ isMobile,
288
+ openMobile,
289
+ setOpenMobile,
290
+ toggleSidebar
291
+ }),
292
+ [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
293
+ );
294
+ return /* @__PURE__ */ jsxRuntime.jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxRuntime.jsx(
295
+ "div",
296
+ {
297
+ style: {
298
+ "--sidebar-width": SIDEBAR_WIDTH,
299
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
300
+ ...style
301
+ },
302
+ className: cn(
303
+ "group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",
304
+ className
305
+ ),
306
+ ref,
307
+ ...props,
308
+ children
309
+ }
310
+ ) }) });
311
+ }
312
+ );
313
+ SidebarProvider.displayName = "SidebarProvider";
314
+ var Sidebar = React7__namespace.forwardRef(
315
+ ({
316
+ side = "left",
317
+ variant = "sidebar",
318
+ collapsible = "offcanvas",
319
+ className,
320
+ children,
321
+ ...props
322
+ }, ref) => {
323
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
324
+ if (collapsible === "none") {
325
+ return /* @__PURE__ */ jsxRuntime.jsx(
326
+ "div",
327
+ {
328
+ className: cn(
329
+ "flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",
330
+ className
331
+ ),
332
+ ref,
333
+ ...props,
334
+ children
335
+ }
336
+ );
337
+ }
338
+ if (isMobile) {
339
+ return /* @__PURE__ */ jsxRuntime.jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(
340
+ SheetContent,
341
+ {
342
+ "data-sidebar": "sidebar",
343
+ "data-mobile": "true",
344
+ className: "w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
345
+ style: {
346
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE
347
+ },
348
+ side,
349
+ children: [
350
+ /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { className: "sr-only" }),
351
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full w-full flex-col", children })
352
+ ]
353
+ }
354
+ ) });
355
+ }
356
+ return /* @__PURE__ */ jsxRuntime.jsxs(
357
+ "div",
358
+ {
359
+ ref,
360
+ className: "group peer hidden md:block text-sidebar-foreground",
361
+ "data-state": state,
362
+ "data-collapsible": state === "collapsed" ? collapsible : "",
363
+ "data-variant": variant,
364
+ "data-side": side,
365
+ children: [
366
+ /* @__PURE__ */ jsxRuntime.jsx(
367
+ "div",
368
+ {
369
+ className: cn(
370
+ "duration-100 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear",
371
+ "group-data-[collapsible=offcanvas]:w-0",
372
+ "group-data-[side=right]:rotate-180",
373
+ variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]" : "group-data-[collapsible=icon]:w-[--sidebar-width-icon]"
374
+ )
375
+ }
376
+ ),
377
+ /* @__PURE__ */ jsxRuntime.jsx(
378
+ "div",
379
+ {
380
+ className: cn(
381
+ "duration-100 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex",
382
+ side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
383
+ // Adjust the padding for floating and inset variants.
384
+ variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]" : "px-4 py-7 group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l",
385
+ className
386
+ ),
387
+ ...props,
388
+ children: /* @__PURE__ */ jsxRuntime.jsx(
389
+ "div",
390
+ {
391
+ "data-sidebar": "sidebar",
392
+ className: "flex h-full w-full flex-col bg-background group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",
393
+ children
394
+ }
395
+ )
396
+ }
397
+ )
398
+ ]
399
+ }
400
+ );
401
+ }
402
+ );
403
+ Sidebar.displayName = "Sidebar";
404
+ var SidebarTrigger = React7__namespace.forwardRef(({ className, onClick, ...props }, ref) => {
405
+ const { toggleSidebar } = useSidebar();
406
+ return /* @__PURE__ */ jsxRuntime.jsxs(
407
+ Button,
408
+ {
409
+ ref,
410
+ "data-sidebar": "trigger",
411
+ variant: "ghost",
412
+ size: "icon",
413
+ className: cn("h-7 w-7", className),
414
+ onClick: (event) => {
415
+ onClick?.(event);
416
+ toggleSidebar();
417
+ },
418
+ ...props,
419
+ children: [
420
+ /* @__PURE__ */ jsxRuntime.jsx(reactIcons.ViewVerticalIcon, {}),
421
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Toggle Sidebar" })
422
+ ]
423
+ }
424
+ );
425
+ });
426
+ SidebarTrigger.displayName = "SidebarTrigger";
427
+ var SidebarRail = React7__namespace.forwardRef(({ className, ...props }, ref) => {
428
+ const { toggleSidebar } = useSidebar();
429
+ return /* @__PURE__ */ jsxRuntime.jsx(
430
+ "button",
431
+ {
432
+ ref,
433
+ "data-sidebar": "rail",
434
+ "aria-label": "Toggle Sidebar",
435
+ tabIndex: -1,
436
+ onClick: toggleSidebar,
437
+ title: "Toggle Sidebar",
438
+ className: cn(
439
+ "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
440
+ "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize",
441
+ "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
442
+ "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-primary-foreground/25",
443
+ "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
444
+ "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
445
+ className
446
+ ),
447
+ ...props
448
+ }
449
+ );
450
+ });
451
+ SidebarRail.displayName = "SidebarRail";
452
+ var SidebarInset = React7__namespace.forwardRef(({ className, ...props }, ref) => {
453
+ return /* @__PURE__ */ jsxRuntime.jsx(
454
+ "main",
455
+ {
456
+ ref,
457
+ className: cn(
458
+ "relative flex min-h-svh flex-1 flex-col bg-primary-foreground/75 ",
459
+ " peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",
460
+ className
461
+ ),
462
+ ...props
463
+ }
464
+ );
465
+ });
466
+ SidebarInset.displayName = "SidebarInset";
467
+ var SidebarInput = React7__namespace.forwardRef(({ className, ...props }, ref) => {
468
+ return /* @__PURE__ */ jsxRuntime.jsx(
469
+ Input,
470
+ {
471
+ ref,
472
+ "data-sidebar": "input",
473
+ className: cn(
474
+ "h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
475
+ className
476
+ ),
477
+ ...props
478
+ }
479
+ );
480
+ });
481
+ SidebarInput.displayName = "SidebarInput";
482
+ var SidebarHeader = React7__namespace.forwardRef(({ className, ...props }, ref) => {
483
+ return /* @__PURE__ */ jsxRuntime.jsx(
484
+ "div",
485
+ {
486
+ ref,
487
+ "data-sidebar": "header",
488
+ className: cn("flex flex-col gap-2", className),
489
+ ...props
490
+ }
491
+ );
492
+ });
493
+ SidebarHeader.displayName = "SidebarHeader";
494
+ var SidebarFooter = React7__namespace.forwardRef(({ className, ...props }, ref) => {
495
+ return /* @__PURE__ */ jsxRuntime.jsx(
496
+ "div",
497
+ {
498
+ ref,
499
+ "data-sidebar": "footer",
500
+ className: cn("flex flex-col gap-2 p-2", className),
501
+ ...props
502
+ }
503
+ );
504
+ });
505
+ SidebarFooter.displayName = "SidebarFooter";
506
+ var SidebarSeparator = React7__namespace.forwardRef(({ className, ...props }, ref) => {
507
+ return /* @__PURE__ */ jsxRuntime.jsx(
508
+ Separator,
509
+ {
510
+ ref,
511
+ "data-sidebar": "separator",
512
+ className: cn("mx-2 w-auto bg-sidebar-border", className),
513
+ ...props
514
+ }
515
+ );
516
+ });
517
+ SidebarSeparator.displayName = "SidebarSeparator";
518
+ var SidebarContent = React7__namespace.forwardRef(({ className, ...props }, ref) => {
519
+ return /* @__PURE__ */ jsxRuntime.jsx(
520
+ "div",
521
+ {
522
+ ref,
523
+ "data-sidebar": "content",
524
+ className: cn(
525
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
526
+ className
527
+ ),
528
+ ...props
529
+ }
530
+ );
531
+ });
532
+ SidebarContent.displayName = "SidebarContent";
533
+ var SidebarGroup = React7__namespace.forwardRef(({ className, ...props }, ref) => {
534
+ return /* @__PURE__ */ jsxRuntime.jsx(
535
+ "div",
536
+ {
537
+ ref,
538
+ "data-sidebar": "group",
539
+ className: cn("relative flex w-full min-w-0 flex-col p-2", className),
540
+ ...props
541
+ }
542
+ );
543
+ });
544
+ SidebarGroup.displayName = "SidebarGroup";
545
+ var SidebarGroupLabel = React7__namespace.forwardRef(({ className, asChild = false, ...props }, ref) => {
546
+ const Comp = asChild ? reactSlot.Slot : "div";
547
+ return /* @__PURE__ */ jsxRuntime.jsx(
548
+ Comp,
549
+ {
550
+ ref,
551
+ "data-sidebar": "group-label",
552
+ className: cn(
553
+ "duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
554
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
555
+ className
556
+ ),
557
+ ...props
558
+ }
559
+ );
560
+ });
561
+ SidebarGroupLabel.displayName = "SidebarGroupLabel";
562
+ var SidebarGroupAction = React7__namespace.forwardRef(({ className, asChild = false, ...props }, ref) => {
563
+ const Comp = asChild ? reactSlot.Slot : "button";
564
+ return /* @__PURE__ */ jsxRuntime.jsx(
565
+ Comp,
566
+ {
567
+ ref,
568
+ "data-sidebar": "group-action",
569
+ className: cn(
570
+ "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-secondary/50 dark:hover:bg-secondary/25 hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
571
+ // Increases the hit area of the button on mobile.
572
+ "after:absolute after:-inset-2 after:md:hidden",
573
+ "group-data-[collapsible=icon]:hidden",
574
+ className
575
+ ),
576
+ ...props
577
+ }
578
+ );
579
+ });
580
+ SidebarGroupAction.displayName = "SidebarGroupAction";
581
+ var SidebarGroupContent = React7__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
582
+ "div",
583
+ {
584
+ ref,
585
+ "data-sidebar": "group-content",
586
+ className: cn("w-full text-sm", className),
587
+ ...props
588
+ }
589
+ ));
590
+ SidebarGroupContent.displayName = "SidebarGroupContent";
591
+ var SidebarMenu = React7__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
592
+ "ul",
593
+ {
594
+ ref,
595
+ "data-sidebar": "menu",
596
+ className: cn("flex w-full min-w-0 flex-col gap-1", className),
597
+ ...props
598
+ }
599
+ ));
600
+ SidebarMenu.displayName = "SidebarMenu";
601
+ var SidebarMenuItem = React7__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
602
+ "li",
603
+ {
604
+ ref,
605
+ "data-sidebar": "menu-item",
606
+ className: cn("group/menu-item relative", className),
607
+ ...props
608
+ }
609
+ ));
610
+ SidebarMenuItem.displayName = "SidebarMenuItem";
611
+ var sidebarMenuButtonVariants = classVarianceAuthority.cva(
612
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-xl p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-secondary/50 dark:hover:bg-secondary/25 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-background-secondary-light dark:data-[active=true]:bg-background-secondary-light data-[active=true]:font-medium data-[active=true]:text-text-brand-primary data-[state=open]:hover:bg-primary-foreground data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-10 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
613
+ {
614
+ variants: {
615
+ variant: {
616
+ default: "hover:bg-secondary/50 dark:hover:bg-secondary/25 hover:text-sidebar-accent-foreground",
617
+ outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-secondary/50 dark:hover:bg-secondary/25 hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
618
+ },
619
+ size: {
620
+ default: "h-8 text-sm",
621
+ sm: "h-7 text-xs",
622
+ lg: "h-12 text-sm group-data-[collapsible=icon]:!p-0"
623
+ }
624
+ },
625
+ defaultVariants: {
626
+ variant: "default",
627
+ size: "default"
628
+ }
629
+ }
630
+ );
631
+ var SidebarMenuButton = React7__namespace.forwardRef(
632
+ ({
633
+ asChild = false,
634
+ isActive = false,
635
+ variant = "default",
636
+ size = "default",
637
+ tooltip,
638
+ className,
639
+ ...props
640
+ }, ref) => {
641
+ const Comp = asChild ? reactSlot.Slot : "button";
642
+ const { isMobile, state } = useSidebar();
643
+ const button = /* @__PURE__ */ jsxRuntime.jsx(
644
+ Comp,
645
+ {
646
+ ref,
647
+ "data-sidebar": "menu-button",
648
+ "data-size": size,
649
+ "data-active": isActive,
650
+ className: cn(sidebarMenuButtonVariants({ variant, size }), className),
651
+ ...props
652
+ }
653
+ );
654
+ if (!tooltip) {
655
+ return button;
656
+ }
657
+ if (typeof tooltip === "string") {
658
+ tooltip = {
659
+ children: tooltip
660
+ };
661
+ }
662
+ return /* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
663
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: button }),
664
+ /* @__PURE__ */ jsxRuntime.jsx(
665
+ TooltipContent,
666
+ {
667
+ side: "right",
668
+ align: "center",
669
+ hidden: state !== "collapsed" || isMobile,
670
+ ...tooltip
671
+ }
672
+ )
673
+ ] });
674
+ }
675
+ );
676
+ SidebarMenuButton.displayName = "SidebarMenuButton";
677
+ var SidebarMenuAction = React7__namespace.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
678
+ const Comp = asChild ? reactSlot.Slot : "button";
679
+ return /* @__PURE__ */ jsxRuntime.jsx(
680
+ Comp,
681
+ {
682
+ ref,
683
+ "data-sidebar": "menu-action",
684
+ className: cn(
685
+ "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-secondary/50 dark:hover:bg-secondary/25 hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0",
686
+ // Increases the hit area of the button on mobile.
687
+ "after:absolute after:-inset-2 after:md:hidden",
688
+ "peer-data-[size=sm]/menu-button:top-1",
689
+ "peer-data-[size=default]/menu-button:top-1.5",
690
+ "peer-data-[size=lg]/menu-button:top-2.5",
691
+ "group-data-[collapsible=icon]:hidden",
692
+ showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",
693
+ className
694
+ ),
695
+ ...props
696
+ }
697
+ );
698
+ });
699
+ SidebarMenuAction.displayName = "SidebarMenuAction";
700
+ var SidebarMenuBadge = React7__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
701
+ "div",
702
+ {
703
+ ref,
704
+ "data-sidebar": "menu-badge",
705
+ className: cn(
706
+ "absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none",
707
+ "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
708
+ "peer-data-[size=sm]/menu-button:top-1",
709
+ "peer-data-[size=default]/menu-button:top-1.5",
710
+ "peer-data-[size=lg]/menu-button:top-2.5",
711
+ "group-data-[collapsible=icon]:hidden",
712
+ className
713
+ ),
714
+ ...props
715
+ }
716
+ ));
717
+ SidebarMenuBadge.displayName = "SidebarMenuBadge";
718
+ var SidebarMenuSkeleton = React7__namespace.forwardRef(({ className, showIcon = false, ...props }, ref) => {
719
+ const width = React7__namespace.useMemo(() => {
720
+ return `${Math.floor(Math.random() * 40) + 50}%`;
721
+ }, []);
722
+ return /* @__PURE__ */ jsxRuntime.jsxs(
723
+ "div",
724
+ {
725
+ ref,
726
+ "data-sidebar": "menu-skeleton",
727
+ className: cn("rounded-md h-8 flex gap-2 px-2 items-center", className),
728
+ ...props,
729
+ children: [
730
+ showIcon && /* @__PURE__ */ jsxRuntime.jsx(
731
+ Skeleton,
732
+ {
733
+ className: "size-4 rounded-md",
734
+ "data-sidebar": "menu-skeleton-icon"
735
+ }
736
+ ),
737
+ /* @__PURE__ */ jsxRuntime.jsx(
738
+ Skeleton,
739
+ {
740
+ className: "h-4 flex-1 max-w-[--skeleton-width]",
741
+ "data-sidebar": "menu-skeleton-text",
742
+ style: {
743
+ "--skeleton-width": width
744
+ }
745
+ }
746
+ )
747
+ ]
748
+ }
749
+ );
750
+ });
751
+ SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
752
+ var SidebarMenuSub = React7__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
753
+ "ul",
754
+ {
755
+ ref,
756
+ "data-sidebar": "menu-sub",
757
+ className: cn(
758
+ "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5",
759
+ "group-data-[collapsible=icon]:hidden",
760
+ className
761
+ ),
762
+ ...props
763
+ }
764
+ ));
765
+ SidebarMenuSub.displayName = "SidebarMenuSub";
766
+ var SidebarMenuSubItem = React7__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("li", { ref, ...props }));
767
+ SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
768
+ var SidebarMenuSubButton = React7__namespace.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
769
+ const Comp = asChild ? reactSlot.Slot : "a";
770
+ return /* @__PURE__ */ jsxRuntime.jsx(
771
+ Comp,
772
+ {
773
+ ref,
774
+ "data-sidebar": "menu-sub-button",
775
+ "data-size": size,
776
+ "data-active": isActive,
777
+ className: cn(
778
+ "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-secondary/50 dark:hover:bg-secondary/25 hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
779
+ "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
780
+ size === "sm" && "text-xs",
781
+ size === "md" && "text-sm",
782
+ "group-data-[collapsible=icon]:hidden",
783
+ className
784
+ ),
785
+ ...props
786
+ }
787
+ );
788
+ });
789
+ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
790
+
791
+ exports.Sidebar = Sidebar;
792
+ exports.SidebarContent = SidebarContent;
793
+ exports.SidebarFooter = SidebarFooter;
794
+ exports.SidebarGroup = SidebarGroup;
795
+ exports.SidebarGroupAction = SidebarGroupAction;
796
+ exports.SidebarGroupContent = SidebarGroupContent;
797
+ exports.SidebarGroupLabel = SidebarGroupLabel;
798
+ exports.SidebarHeader = SidebarHeader;
799
+ exports.SidebarInput = SidebarInput;
800
+ exports.SidebarInset = SidebarInset;
801
+ exports.SidebarMenu = SidebarMenu;
802
+ exports.SidebarMenuAction = SidebarMenuAction;
803
+ exports.SidebarMenuBadge = SidebarMenuBadge;
804
+ exports.SidebarMenuButton = SidebarMenuButton;
805
+ exports.SidebarMenuItem = SidebarMenuItem;
806
+ exports.SidebarMenuSkeleton = SidebarMenuSkeleton;
807
+ exports.SidebarMenuSub = SidebarMenuSub;
808
+ exports.SidebarMenuSubButton = SidebarMenuSubButton;
809
+ exports.SidebarMenuSubItem = SidebarMenuSubItem;
810
+ exports.SidebarProvider = SidebarProvider;
811
+ exports.SidebarRail = SidebarRail;
812
+ exports.SidebarSeparator = SidebarSeparator;
813
+ exports.SidebarTrigger = SidebarTrigger;
814
+ exports.useSidebar = useSidebar;
815
+ //# sourceMappingURL=sidebar.cjs.map
816
+ //# sourceMappingURL=sidebar.cjs.map