@agroshine/ags-web-ui-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/README.md +75 -0
  2. package/dist/atoms/index.cjs +134 -0
  3. package/dist/atoms/index.cjs.map +1 -0
  4. package/dist/atoms/index.d.cts +583 -0
  5. package/dist/atoms/index.d.ts +583 -0
  6. package/dist/atoms/index.js +9 -0
  7. package/dist/atoms/index.js.map +1 -0
  8. package/dist/chunk-2KRMLIJQ.cjs +52 -0
  9. package/dist/chunk-2KRMLIJQ.cjs.map +1 -0
  10. package/dist/chunk-2TBYPKQ3.cjs +79 -0
  11. package/dist/chunk-2TBYPKQ3.cjs.map +1 -0
  12. package/dist/chunk-5FWELSEZ.js +1296 -0
  13. package/dist/chunk-5FWELSEZ.js.map +1 -0
  14. package/dist/chunk-5PEOJVY7.cjs +1502 -0
  15. package/dist/chunk-5PEOJVY7.cjs.map +1 -0
  16. package/dist/chunk-6LUGTNMH.js +259 -0
  17. package/dist/chunk-6LUGTNMH.js.map +1 -0
  18. package/dist/chunk-6O2IDBTX.js +112 -0
  19. package/dist/chunk-6O2IDBTX.js.map +1 -0
  20. package/dist/chunk-6YUNWKT3.js +26 -0
  21. package/dist/chunk-6YUNWKT3.js.map +1 -0
  22. package/dist/chunk-7R6OXNES.cjs +321 -0
  23. package/dist/chunk-7R6OXNES.cjs.map +1 -0
  24. package/dist/chunk-A3A7PJWG.cjs +13 -0
  25. package/dist/chunk-A3A7PJWG.cjs.map +1 -0
  26. package/dist/chunk-A7TDGQAB.js +557 -0
  27. package/dist/chunk-A7TDGQAB.js.map +1 -0
  28. package/dist/chunk-C4LX3XTN.cjs +1187 -0
  29. package/dist/chunk-C4LX3XTN.cjs.map +1 -0
  30. package/dist/chunk-DZW4GS2T.cjs +1340 -0
  31. package/dist/chunk-DZW4GS2T.cjs.map +1 -0
  32. package/dist/chunk-E3BTK736.cjs +174 -0
  33. package/dist/chunk-E3BTK736.cjs.map +1 -0
  34. package/dist/chunk-ERGKCXM2.cjs +267 -0
  35. package/dist/chunk-ERGKCXM2.cjs.map +1 -0
  36. package/dist/chunk-FOA46NSG.cjs +574 -0
  37. package/dist/chunk-FOA46NSG.cjs.map +1 -0
  38. package/dist/chunk-JTFCE6RA.js +1156 -0
  39. package/dist/chunk-JTFCE6RA.js.map +1 -0
  40. package/dist/chunk-KINOE57L.js +225 -0
  41. package/dist/chunk-KINOE57L.js.map +1 -0
  42. package/dist/chunk-MOED3QPY.js +11 -0
  43. package/dist/chunk-MOED3QPY.js.map +1 -0
  44. package/dist/chunk-NVR34DY2.cjs +4 -0
  45. package/dist/chunk-NVR34DY2.cjs.map +1 -0
  46. package/dist/chunk-PI3IJWBG.js +79 -0
  47. package/dist/chunk-PI3IJWBG.js.map +1 -0
  48. package/dist/chunk-PXAMTGYY.js +3 -0
  49. package/dist/chunk-PXAMTGYY.js.map +1 -0
  50. package/dist/chunk-QAZMI5VH.js +151 -0
  51. package/dist/chunk-QAZMI5VH.js.map +1 -0
  52. package/dist/chunk-QEG27NX6.js +30 -0
  53. package/dist/chunk-QEG27NX6.js.map +1 -0
  54. package/dist/chunk-THTOUSMG.cjs +52 -0
  55. package/dist/chunk-THTOUSMG.cjs.map +1 -0
  56. package/dist/chunk-UAXKB6IH.cjs +32 -0
  57. package/dist/chunk-UAXKB6IH.cjs.map +1 -0
  58. package/dist/chunk-W5IHWAMM.js +48 -0
  59. package/dist/chunk-W5IHWAMM.js.map +1 -0
  60. package/dist/chunk-X2UJQVZJ.cjs +139 -0
  61. package/dist/chunk-X2UJQVZJ.cjs.map +1 -0
  62. package/dist/chunk-X43C5OJD.js +1460 -0
  63. package/dist/chunk-X43C5OJD.js.map +1 -0
  64. package/dist/chunk-XCYSBWV4.js +56 -0
  65. package/dist/chunk-XCYSBWV4.js.map +1 -0
  66. package/dist/chunk-XX4CBCEB.cjs +102 -0
  67. package/dist/chunk-XX4CBCEB.cjs.map +1 -0
  68. package/dist/hooks/index.cjs +33 -0
  69. package/dist/hooks/index.cjs.map +1 -0
  70. package/dist/hooks/index.d.cts +59 -0
  71. package/dist/hooks/index.d.ts +59 -0
  72. package/dist/hooks/index.js +4 -0
  73. package/dist/hooks/index.js.map +1 -0
  74. package/dist/index.cjs +366 -0
  75. package/dist/index.cjs.map +1 -0
  76. package/dist/index.d.cts +13 -0
  77. package/dist/index.d.ts +13 -0
  78. package/dist/index.js +17 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/interface-DnK5S6ww.d.cts +51 -0
  81. package/dist/interface-DnK5S6ww.d.ts +51 -0
  82. package/dist/lib/index.cjs +13 -0
  83. package/dist/lib/index.cjs.map +1 -0
  84. package/dist/lib/index.d.cts +5 -0
  85. package/dist/lib/index.d.ts +5 -0
  86. package/dist/lib/index.js +4 -0
  87. package/dist/lib/index.js.map +1 -0
  88. package/dist/molecules/index.cjs +123 -0
  89. package/dist/molecules/index.cjs.map +1 -0
  90. package/dist/molecules/index.d.cts +449 -0
  91. package/dist/molecules/index.d.ts +449 -0
  92. package/dist/molecules/index.js +10 -0
  93. package/dist/molecules/index.js.map +1 -0
  94. package/dist/organisms/index.cjs +102 -0
  95. package/dist/organisms/index.cjs.map +1 -0
  96. package/dist/organisms/index.d.cts +396 -0
  97. package/dist/organisms/index.d.ts +396 -0
  98. package/dist/organisms/index.js +9 -0
  99. package/dist/organisms/index.js.map +1 -0
  100. package/dist/tooltip-Bl2ZTtfg.d.cts +16 -0
  101. package/dist/tooltip-Bl2ZTtfg.d.ts +16 -0
  102. package/dist/ui/index.cjs +955 -0
  103. package/dist/ui/index.cjs.map +1 -0
  104. package/dist/ui/index.d.cts +252 -0
  105. package/dist/ui/index.d.ts +252 -0
  106. package/dist/ui/index.js +642 -0
  107. package/dist/ui/index.js.map +1 -0
  108. package/package.json +200 -0
  109. package/tailwind.preset.cjs +134 -0
@@ -0,0 +1,642 @@
1
+ export { Avatar, AvatarFallback, AvatarImage, Badge, Checkbox, Input, RadioGroup, RadioGroupItem, Separator, Skeleton, Textarea, Toggle, ToggleGroup, ToggleGroupItem, toggleVariants } from '../chunk-KINOE57L.js';
2
+ import { TooltipProvider, Sheet, SheetContent, Tooltip, TooltipTrigger, TooltipContent } from '../chunk-6LUGTNMH.js';
3
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, HoverCard, HoverCardContent, HoverCardTrigger, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Tabs, TabsContent, TabsList, TabsTrigger, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../chunk-6LUGTNMH.js';
4
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Calendar } from '../chunk-6O2IDBTX.js';
5
+ export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from '../chunk-6YUNWKT3.js';
6
+ export { Button, buttonVariants } from '../chunk-XCYSBWV4.js';
7
+ import { cn } from '../chunk-MOED3QPY.js';
8
+ import * as React5 from 'react';
9
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
10
+ import { ChevronRight, Check, Circle, PanelLeft } from 'lucide-react';
11
+ import { jsxs, jsx } from 'react/jsx-runtime';
12
+ import * as LabelPrimitive from '@radix-ui/react-label';
13
+ import { cva } from 'class-variance-authority';
14
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
15
+ import { Slot } from '@radix-ui/react-slot';
16
+ import * as SliderPrimitive from '@radix-ui/react-slider';
17
+ import * as SwitchPrimitives from '@radix-ui/react-switch';
18
+
19
+ var DropdownMenu = DropdownMenuPrimitive.Root;
20
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
21
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
22
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
23
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
24
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
25
+ var DropdownMenuSubTrigger = React5.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
26
+ DropdownMenuPrimitive.SubTrigger,
27
+ {
28
+ ref,
29
+ className: cn(
30
+ "flex cursor-default select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-[13.5px] text-foreground outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent",
31
+ inset && "pl-8",
32
+ className
33
+ ),
34
+ ...props,
35
+ children: [
36
+ children,
37
+ /* @__PURE__ */ jsx(ChevronRight, { className: "ml-auto h-3 w-3 text-muted-foreground" })
38
+ ]
39
+ }
40
+ ));
41
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
42
+ var DropdownMenuSubContent = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
43
+ DropdownMenuPrimitive.SubContent,
44
+ {
45
+ ref,
46
+ className: cn(
47
+ // Canon Components.html `.dmenu` → border-radius 6px (rounded-md), min-w 220, p-1, shadow-md
48
+ "z-50 min-w-[220px] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
49
+ className
50
+ ),
51
+ ...props
52
+ }
53
+ ));
54
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
55
+ var DropdownMenuContent = React5.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
56
+ DropdownMenuPrimitive.Content,
57
+ {
58
+ ref,
59
+ sideOffset,
60
+ className: cn(
61
+ // Canon Components.html `.dmenu` → border-radius 6px (rounded-md), min-w 220, p-1, shadow-md
62
+ "z-50 min-w-[220px] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
63
+ className
64
+ ),
65
+ ...props
66
+ }
67
+ ) }));
68
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
69
+ var DropdownMenuItem = React5.forwardRef(({ className, inset, variant = "default", ...props }, ref) => /* @__PURE__ */ jsx(
70
+ DropdownMenuPrimitive.Item,
71
+ {
72
+ ref,
73
+ className: cn(
74
+ // Canon `.dmenu-item` → padding 6px 10px, radius 4px (rounded-sm), font 13.5px
75
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-[13.5px] text-foreground outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
76
+ variant === "danger" && "text-destructive focus:bg-destructive/[0.08] focus:text-destructive",
77
+ inset && "pl-8",
78
+ className
79
+ ),
80
+ ...props
81
+ }
82
+ ));
83
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
84
+ var DropdownMenuCheckboxItem = React5.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
85
+ DropdownMenuPrimitive.CheckboxItem,
86
+ {
87
+ ref,
88
+ className: cn(
89
+ // Canon `.dmenu-item:has(.check-mark)` → pl-8 (32px), resto igual a item
90
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2.5 text-[13.5px] text-foreground outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
91
+ className
92
+ ),
93
+ checked,
94
+ ...props,
95
+ children: [
96
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2.5 flex h-3.5 w-3.5 items-center justify-center text-primary", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "h-3.5 w-3.5" }) }) }),
97
+ children
98
+ ]
99
+ }
100
+ ));
101
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
102
+ var DropdownMenuRadioItem = React5.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
103
+ DropdownMenuPrimitive.RadioItem,
104
+ {
105
+ ref,
106
+ className: cn(
107
+ // Canon `.dmenu-item.radio-item` → pl-8, dot 6px primary
108
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2.5 text-[13.5px] text-foreground outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
109
+ className
110
+ ),
111
+ ...props,
112
+ children: [
113
+ /* @__PURE__ */ jsx("span", { className: "absolute left-3.5 flex h-1.5 w-1.5 items-center justify-center text-primary", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { className: "h-1.5 w-1.5 fill-current" }) }) }),
114
+ children
115
+ ]
116
+ }
117
+ ));
118
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
119
+ var DropdownMenuLabel = React5.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
120
+ DropdownMenuPrimitive.Label,
121
+ {
122
+ ref,
123
+ className: cn(
124
+ // Canon `.dmenu-label` → px-2 py-1.5 text-[13px] font-semibold text-foreground
125
+ "px-2 py-1.5 text-[13px] font-semibold text-foreground",
126
+ inset && "pl-8",
127
+ className
128
+ ),
129
+ ...props
130
+ }
131
+ ));
132
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
133
+ var DropdownMenuSeparator = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
134
+ DropdownMenuPrimitive.Separator,
135
+ {
136
+ ref,
137
+ className: cn("-mx-1 my-1 h-px bg-border", className),
138
+ ...props
139
+ }
140
+ ));
141
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
142
+ var DropdownMenuShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx(
143
+ "span",
144
+ {
145
+ className: cn(
146
+ "ml-auto inline-flex items-center gap-1",
147
+ // Estilo kbd: chip border-border bg-muted rounded-sm 3px, mono, 10.5px
148
+ "[&_kbd]:inline-block [&_kbd]:rounded-sm [&_kbd]:border [&_kbd]:border-border [&_kbd]:bg-muted",
149
+ "[&_kbd]:px-1.5 [&_kbd]:py-px [&_kbd]:min-w-[18px] [&_kbd]:text-center",
150
+ "[&_kbd]:font-mono [&_kbd]:text-[10.5px] [&_kbd]:font-medium [&_kbd]:leading-tight [&_kbd]:text-muted-foreground",
151
+ // Fallback (string plano) — mantiene look shadcn legacy
152
+ "[&:not(:has(kbd))]:text-xs [&:not(:has(kbd))]:tracking-widest [&:not(:has(kbd))]:opacity-60",
153
+ className
154
+ ),
155
+ ...props
156
+ }
157
+ );
158
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
159
+ var labelVariants = cva(
160
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
161
+ );
162
+ var Label2 = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props }));
163
+ Label2.displayName = LabelPrimitive.Root.displayName;
164
+ var Progress = React5.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx(
165
+ ProgressPrimitive.Root,
166
+ {
167
+ ref,
168
+ className: cn("relative h-2 w-full overflow-hidden rounded-full bg-default-200", className),
169
+ ...props,
170
+ children: /* @__PURE__ */ jsx(
171
+ ProgressPrimitive.Indicator,
172
+ {
173
+ className: "h-full w-full flex-1 bg-primary transition-all",
174
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
175
+ }
176
+ )
177
+ }
178
+ ));
179
+ Progress.displayName = ProgressPrimitive.Root.displayName;
180
+ var SIDEBAR_COOKIE_NAME = "sidebar:state";
181
+ var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
182
+ var SIDEBAR_WIDTH = "15rem";
183
+ var SIDEBAR_WIDTH_MOBILE = "18rem";
184
+ var SIDEBAR_WIDTH_ICON = "3.5rem";
185
+ var SIDEBAR_KEYBOARD_SHORTCUT = "b";
186
+ var SIDEBAR_MOBILE_BREAKPOINT = 768;
187
+ function useIsMobile(breakpoint = SIDEBAR_MOBILE_BREAKPOINT) {
188
+ const [isMobile, setIsMobile] = React5.useState(false);
189
+ React5.useEffect(() => {
190
+ if (typeof window === "undefined") return;
191
+ const mql = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
192
+ const onChange = () => setIsMobile(window.innerWidth < breakpoint);
193
+ onChange();
194
+ mql.addEventListener("change", onChange);
195
+ return () => mql.removeEventListener("change", onChange);
196
+ }, [breakpoint]);
197
+ return isMobile;
198
+ }
199
+ var SidebarContext = React5.createContext(null);
200
+ function useSidebar() {
201
+ const ctx = React5.useContext(SidebarContext);
202
+ if (!ctx) throw new Error("useSidebar must be used within a SidebarProvider.");
203
+ return ctx;
204
+ }
205
+ var SidebarProvider = React5.forwardRef(
206
+ ({
207
+ defaultOpen = true,
208
+ open: openProp,
209
+ onOpenChange: setOpenProp,
210
+ className,
211
+ style,
212
+ children,
213
+ ...props
214
+ }, ref) => {
215
+ const isMobile = useIsMobile();
216
+ const [openMobile, setOpenMobile] = React5.useState(false);
217
+ const [_open, _setOpen] = React5.useState(defaultOpen);
218
+ const open = openProp ?? _open;
219
+ const setOpen = React5.useCallback(
220
+ (value) => {
221
+ if (setOpenProp) setOpenProp(value);
222
+ else _setOpen(value);
223
+ if (typeof document !== "undefined") {
224
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${value}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
225
+ }
226
+ },
227
+ [setOpenProp]
228
+ );
229
+ const toggleSidebar = React5.useCallback(() => {
230
+ if (isMobile) setOpenMobile((v) => !v);
231
+ else setOpen(!open);
232
+ }, [isMobile, open, setOpen]);
233
+ React5.useEffect(() => {
234
+ const handleKeyDown = (event) => {
235
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
236
+ event.preventDefault();
237
+ toggleSidebar();
238
+ }
239
+ };
240
+ window.addEventListener("keydown", handleKeyDown);
241
+ return () => window.removeEventListener("keydown", handleKeyDown);
242
+ }, [toggleSidebar]);
243
+ const state = open ? "expanded" : "collapsed";
244
+ const ctx = React5.useMemo(
245
+ () => ({ state, open, setOpen, openMobile, setOpenMobile, isMobile, toggleSidebar }),
246
+ [state, open, setOpen, openMobile, isMobile, toggleSidebar]
247
+ );
248
+ return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx(
249
+ "div",
250
+ {
251
+ ref,
252
+ style: {
253
+ "--sidebar-width": SIDEBAR_WIDTH,
254
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
255
+ ...style
256
+ },
257
+ className: cn(
258
+ "group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-default-100",
259
+ className
260
+ ),
261
+ ...props,
262
+ children
263
+ }
264
+ ) }) });
265
+ }
266
+ );
267
+ SidebarProvider.displayName = "SidebarProvider";
268
+ var Sidebar = React5.forwardRef(
269
+ ({
270
+ side = "left",
271
+ variant = "sidebar",
272
+ collapsible = "offcanvas",
273
+ className,
274
+ children,
275
+ ...props
276
+ }, ref) => {
277
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
278
+ if (collapsible === "none") {
279
+ return /* @__PURE__ */ jsx(
280
+ "div",
281
+ {
282
+ ref,
283
+ className: cn(
284
+ "flex h-full w-[--sidebar-width] flex-col border-r border-default-200 bg-default-50 text-default-900",
285
+ className
286
+ ),
287
+ ...props,
288
+ children
289
+ }
290
+ );
291
+ }
292
+ if (isMobile) {
293
+ return /* @__PURE__ */ jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsx(
294
+ SheetContent,
295
+ {
296
+ "data-sidebar": "sidebar",
297
+ "data-mobile": "true",
298
+ side,
299
+ hideCloseButton: true,
300
+ className: "w-[--sidebar-width] bg-default-50 p-0 text-default-900 [&>button]:hidden",
301
+ style: { "--sidebar-width": SIDEBAR_WIDTH_MOBILE },
302
+ children: /* @__PURE__ */ jsx("div", { className: "flex h-full w-full flex-col", children })
303
+ }
304
+ ) });
305
+ }
306
+ return /* @__PURE__ */ jsxs(
307
+ "div",
308
+ {
309
+ ref,
310
+ className: "group peer hidden text-default-900 md:block",
311
+ "data-state": state,
312
+ "data-collapsible": state === "collapsed" ? collapsible : "",
313
+ "data-variant": variant,
314
+ "data-side": side,
315
+ children: [
316
+ /* @__PURE__ */ jsx(
317
+ "div",
318
+ {
319
+ className: cn(
320
+ "duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear",
321
+ "group-data-[collapsible=offcanvas]:w-0",
322
+ "group-data-[side=right]:rotate-180",
323
+ 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]"
324
+ )
325
+ }
326
+ ),
327
+ /* @__PURE__ */ jsx(
328
+ "div",
329
+ {
330
+ className: cn(
331
+ "duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex",
332
+ 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)]",
333
+ variant === "floating" || variant === "inset" ? "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 border-default-200",
334
+ className
335
+ ),
336
+ ...props,
337
+ children: /* @__PURE__ */ jsx(
338
+ "div",
339
+ {
340
+ "data-sidebar": "sidebar",
341
+ className: "flex h-full w-full flex-col bg-default-50 group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-default-200",
342
+ children
343
+ }
344
+ )
345
+ }
346
+ )
347
+ ]
348
+ }
349
+ );
350
+ }
351
+ );
352
+ Sidebar.displayName = "Sidebar";
353
+ var SidebarTrigger = React5.forwardRef(
354
+ ({ className, onClick, ...props }, ref) => {
355
+ const { toggleSidebar } = useSidebar();
356
+ return /* @__PURE__ */ jsx(
357
+ "button",
358
+ {
359
+ ref,
360
+ type: "button",
361
+ "data-sidebar": "trigger",
362
+ "aria-label": "Toggle sidebar",
363
+ className: cn(
364
+ "inline-flex h-8 w-8 items-center justify-center rounded-md text-default-700 hover:bg-default-100 hover:text-default-900 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500",
365
+ className
366
+ ),
367
+ onClick: (e) => {
368
+ onClick?.(e);
369
+ toggleSidebar();
370
+ },
371
+ ...props,
372
+ children: /* @__PURE__ */ jsx(PanelLeft, { className: "h-4 w-4" })
373
+ }
374
+ );
375
+ }
376
+ );
377
+ SidebarTrigger.displayName = "SidebarTrigger";
378
+ var SidebarInset = React5.forwardRef(
379
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
380
+ "main",
381
+ {
382
+ ref,
383
+ className: cn(
384
+ "relative flex min-h-svh flex-1 flex-col bg-default-50",
385
+ "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",
386
+ className
387
+ ),
388
+ ...props
389
+ }
390
+ )
391
+ );
392
+ SidebarInset.displayName = "SidebarInset";
393
+ var SidebarHeader = React5.forwardRef(
394
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
395
+ "div",
396
+ {
397
+ ref,
398
+ "data-sidebar": "header",
399
+ className: cn(
400
+ "flex items-center gap-3 border-b border-default-200 px-4 py-4 group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:px-2",
401
+ className
402
+ ),
403
+ ...props
404
+ }
405
+ )
406
+ );
407
+ SidebarHeader.displayName = "SidebarHeader";
408
+ var SidebarContent = React5.forwardRef(
409
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
410
+ "div",
411
+ {
412
+ ref,
413
+ "data-sidebar": "content",
414
+ className: cn(
415
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto py-2 group-data-[collapsible=icon]:overflow-hidden",
416
+ className
417
+ ),
418
+ ...props
419
+ }
420
+ )
421
+ );
422
+ SidebarContent.displayName = "SidebarContent";
423
+ var SidebarFooter = React5.forwardRef(
424
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
425
+ "div",
426
+ {
427
+ ref,
428
+ "data-sidebar": "footer",
429
+ className: cn(
430
+ "border-t border-default-200 px-4 py-3 text-sm text-default-700 group-data-[collapsible=icon]:px-2 group-data-[collapsible=icon]:text-center",
431
+ className
432
+ ),
433
+ ...props
434
+ }
435
+ )
436
+ );
437
+ SidebarFooter.displayName = "SidebarFooter";
438
+ var SidebarSeparator = React5.forwardRef(
439
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
440
+ "div",
441
+ {
442
+ ref,
443
+ "data-sidebar": "separator",
444
+ className: cn("mx-2 my-1 h-px bg-default-200", className),
445
+ ...props
446
+ }
447
+ )
448
+ );
449
+ SidebarSeparator.displayName = "SidebarSeparator";
450
+ var SidebarGroup = React5.forwardRef(
451
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
452
+ "div",
453
+ {
454
+ ref,
455
+ "data-sidebar": "group",
456
+ className: cn("relative flex w-full min-w-0 flex-col", className),
457
+ ...props
458
+ }
459
+ )
460
+ );
461
+ SidebarGroup.displayName = "SidebarGroup";
462
+ var SidebarGroupLabel = React5.forwardRef(
463
+ ({ className, asChild = false, ...props }, ref) => {
464
+ const Comp = asChild ? Slot : "div";
465
+ return /* @__PURE__ */ jsx(
466
+ Comp,
467
+ {
468
+ ref,
469
+ "data-sidebar": "group-label",
470
+ className: cn(
471
+ "px-4 pt-4 pb-1 text-[11px] font-semibold uppercase tracking-wider text-default-600",
472
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
473
+ className
474
+ ),
475
+ ...props
476
+ }
477
+ );
478
+ }
479
+ );
480
+ SidebarGroupLabel.displayName = "SidebarGroupLabel";
481
+ var SidebarGroupContent = React5.forwardRef(
482
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
483
+ "div",
484
+ {
485
+ ref,
486
+ "data-sidebar": "group-content",
487
+ className: cn("flex w-full min-w-0 flex-col", className),
488
+ ...props
489
+ }
490
+ )
491
+ );
492
+ SidebarGroupContent.displayName = "SidebarGroupContent";
493
+ var SidebarMenu = React5.forwardRef(
494
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
495
+ "ul",
496
+ {
497
+ ref,
498
+ "data-sidebar": "menu",
499
+ className: cn("flex w-full min-w-0 flex-col", className),
500
+ ...props
501
+ }
502
+ )
503
+ );
504
+ SidebarMenu.displayName = "SidebarMenu";
505
+ var SidebarMenuItem = React5.forwardRef(
506
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
507
+ "li",
508
+ {
509
+ ref,
510
+ "data-sidebar": "menu-item",
511
+ className: cn("group/menu-item relative", className),
512
+ ...props
513
+ }
514
+ )
515
+ );
516
+ SidebarMenuItem.displayName = "SidebarMenuItem";
517
+ var sidebarMenuButtonVariants = cva(
518
+ [
519
+ "group/menu-button peer/menu-button relative flex w-full items-center gap-3 overflow-hidden border-l-2 border-transparent px-4 py-2 text-left text-sm font-medium outline-none transition-colors",
520
+ "focus-visible:ring-2 focus-visible:ring-primary-500",
521
+ "data-[active=true]:bg-primary-50 data-[active=true]:text-primary-700 data-[active=true]:border-l-primary-500",
522
+ "data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-40",
523
+ "group-data-[collapsible=icon]:!size-10 group-data-[collapsible=icon]:!justify-center group-data-[collapsible=icon]:!p-0 group-data-[collapsible=icon]:border-l-0",
524
+ "[&>svg]:size-4 [&>svg]:shrink-0"
525
+ ].join(" "),
526
+ {
527
+ variants: {
528
+ variant: {
529
+ default: "text-default-800 hover:bg-default-100 hover:text-default-900",
530
+ ghost: "text-default-700 hover:bg-default-100"
531
+ },
532
+ size: {
533
+ default: "h-9 text-sm",
534
+ sm: "h-8 text-xs",
535
+ lg: "h-11 text-sm"
536
+ }
537
+ },
538
+ defaultVariants: { variant: "default", size: "default" }
539
+ }
540
+ );
541
+ var SidebarMenuButton = React5.forwardRef(
542
+ ({
543
+ asChild = false,
544
+ isActive = false,
545
+ variant = "default",
546
+ size = "default",
547
+ tooltip,
548
+ className,
549
+ ...props
550
+ }, ref) => {
551
+ const Comp = asChild ? Slot : "button";
552
+ const { state, isMobile } = useSidebar();
553
+ const button = /* @__PURE__ */ jsx(
554
+ Comp,
555
+ {
556
+ ref,
557
+ "data-sidebar": "menu-button",
558
+ "data-size": size,
559
+ "data-active": isActive,
560
+ className: cn(sidebarMenuButtonVariants({ variant, size }), className),
561
+ ...props
562
+ }
563
+ );
564
+ if (!tooltip) return button;
565
+ const tooltipProps = typeof tooltip === "string" ? { children: tooltip } : tooltip;
566
+ return /* @__PURE__ */ jsxs(Tooltip, { children: [
567
+ /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: button }),
568
+ /* @__PURE__ */ jsx(
569
+ TooltipContent,
570
+ {
571
+ side: "right",
572
+ align: "center",
573
+ hidden: state !== "collapsed" || isMobile,
574
+ ...tooltipProps
575
+ }
576
+ )
577
+ ] });
578
+ }
579
+ );
580
+ SidebarMenuButton.displayName = "SidebarMenuButton";
581
+ var SidebarMenuBadge = React5.forwardRef(
582
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
583
+ "div",
584
+ {
585
+ ref,
586
+ "data-sidebar": "menu-badge",
587
+ className: cn(
588
+ "pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 inline-flex min-w-5 select-none items-center justify-center rounded-full bg-secondary-100 px-1.5 py-0.5 text-[10px] font-semibold text-secondary-700",
589
+ "peer-data-[active=true]/menu-button:bg-white peer-data-[active=true]/menu-button:text-primary-700",
590
+ "group-data-[collapsible=icon]:hidden",
591
+ className
592
+ ),
593
+ ...props
594
+ }
595
+ )
596
+ );
597
+ SidebarMenuBadge.displayName = "SidebarMenuBadge";
598
+ var Slider = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(
599
+ SliderPrimitive.Root,
600
+ {
601
+ ref,
602
+ className: cn("relative flex w-full touch-none select-none items-center", className),
603
+ ...props,
604
+ children: [
605
+ /* @__PURE__ */ jsx(SliderPrimitive.Track, { className: "relative h-2 w-full grow overflow-hidden rounded-full bg-default-200", children: /* @__PURE__ */ jsx(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
606
+ Array.from({
607
+ length: Array.isArray(props.value) && props.value.length || Array.isArray(props.defaultValue) && props.defaultValue.length || 1
608
+ }).map((_, i) => /* @__PURE__ */ jsx(
609
+ SliderPrimitive.Thumb,
610
+ {
611
+ className: "block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"
612
+ },
613
+ i
614
+ ))
615
+ ]
616
+ }
617
+ ));
618
+ Slider.displayName = SliderPrimitive.Root.displayName;
619
+ var Switch = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
620
+ SwitchPrimitives.Root,
621
+ {
622
+ className: cn(
623
+ "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border border-border transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=unchecked]:bg-default-200",
624
+ className
625
+ ),
626
+ ...props,
627
+ ref,
628
+ children: /* @__PURE__ */ jsx(
629
+ SwitchPrimitives.Thumb,
630
+ {
631
+ className: cn(
632
+ "pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
633
+ )
634
+ }
635
+ )
636
+ }
637
+ ));
638
+ Switch.displayName = SwitchPrimitives.Root.displayName;
639
+
640
+ export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Label2 as Label, Progress, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarProvider, SidebarSeparator, SidebarTrigger, Slider, Switch, sidebarMenuButtonVariants, useSidebar };
641
+ //# sourceMappingURL=index.js.map
642
+ //# sourceMappingURL=index.js.map