@otfdashkit/ui 0.1.1 → 0.1.3

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 (120) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +28 -41
  3. package/dist/index.js +972 -655
  4. package/dist/index.mjs +826 -525
  5. package/package.json +5 -4
  6. package/src/advanced/BulkActions/BulkActions.tsx +2 -2
  7. package/src/advanced/CommandBar/CommandBar.tsx +2 -2
  8. package/src/advanced/Filters/Filters.tsx +6 -6
  9. package/src/advanced/Kanban/Kanban.tsx +1 -1
  10. package/src/advanced/ToggleButton/ToggleButton.tsx +1 -1
  11. package/src/advanced/bulk-actions.tsx +1 -46
  12. package/src/advanced/command-bar.tsx +1 -115
  13. package/src/advanced/filters.tsx +1 -103
  14. package/src/advanced/kanban.tsx +1 -95
  15. package/src/advanced/toggle-button.tsx +1 -78
  16. package/src/blocks/ChatDetail/ChatDetail.tsx +4 -4
  17. package/src/blocks/FeedbackModal/FeedbackModal.tsx +3 -3
  18. package/src/blocks/FileCards/FileCards.tsx +2 -2
  19. package/src/blocks/FilesList/FilesList.tsx +3 -3
  20. package/src/blocks/IntegrationCard/IntegrationCard.tsx +3 -3
  21. package/src/blocks/InviteModal/InviteModal.tsx +7 -7
  22. package/src/blocks/ManageTagsModal/ManageTagsModal.tsx +4 -4
  23. package/src/blocks/MessagesCard/MessagesCard.tsx +3 -3
  24. package/src/blocks/MetricCard/MetricCard.tsx +3 -3
  25. package/src/blocks/NotificationSettings/NotificationSettings.tsx +4 -4
  26. package/src/blocks/OrganizationMenu/OrganizationMenu.tsx +30 -11
  27. package/src/blocks/RolesMenu/RolesMenu.tsx +4 -4
  28. package/src/blocks/SelectUsersModal/SelectUsersModal.tsx +5 -5
  29. package/src/blocks/SidebarLayoutDashboard/SidebarLayoutDashboard.tsx +5 -5
  30. package/src/blocks/SidebarLayoutGroups/SidebarLayoutGroups.tsx +2 -2
  31. package/src/blocks/SidebarLayoutMinimal/SidebarLayoutMinimal.tsx +3 -3
  32. package/src/blocks/SidebarLayoutSearch/SidebarLayoutSearch.tsx +3 -3
  33. package/src/blocks/SidebarLayoutUser/SidebarLayoutUser.tsx +4 -4
  34. package/src/blocks/SortableTaskList/SortableTaskList.tsx +3 -3
  35. package/src/blocks/StackedLayoutBranded/StackedLayoutBranded.tsx +4 -4
  36. package/src/blocks/StackedLayoutTabs/StackedLayoutTabs.tsx +4 -4
  37. package/src/blocks/TaskCard/TaskCard.tsx +4 -4
  38. package/src/blocks/UserMenu/UserMenu.tsx +3 -3
  39. package/src/blocks/WorkspaceMembers/WorkspaceMembers.tsx +5 -5
  40. package/src/blocks/chat-detail.tsx +1 -73
  41. package/src/blocks/feedback-modal.tsx +1 -68
  42. package/src/blocks/file-cards.tsx +1 -56
  43. package/src/blocks/files-list.tsx +1 -72
  44. package/src/blocks/integration-card.tsx +1 -50
  45. package/src/blocks/invite-modal.tsx +1 -69
  46. package/src/blocks/manage-tags-modal.tsx +1 -63
  47. package/src/blocks/messages-card.tsx +1 -59
  48. package/src/blocks/metric-card.tsx +1 -79
  49. package/src/blocks/notification-settings.tsx +1 -61
  50. package/src/blocks/organization-menu.tsx +1 -85
  51. package/src/blocks/roles-menu.tsx +1 -61
  52. package/src/blocks/select-users-modal.tsx +1 -64
  53. package/src/blocks/sidebar-layout-dashboard.tsx +1 -97
  54. package/src/blocks/sidebar-layout-groups.tsx +1 -79
  55. package/src/blocks/sidebar-layout-minimal.tsx +1 -73
  56. package/src/blocks/sidebar-layout-search.tsx +1 -79
  57. package/src/blocks/sidebar-layout-user.tsx +1 -82
  58. package/src/blocks/sortable-task-list.tsx +1 -70
  59. package/src/blocks/stacked-layout-branded.tsx +1 -64
  60. package/src/blocks/stacked-layout-tabs.tsx +1 -80
  61. package/src/blocks/task-card.tsx +1 -88
  62. package/src/blocks/user-menu.tsx +1 -62
  63. package/src/blocks/workspace-members.tsx +1 -61
  64. package/src/charts/sparkline.tsx +1 -1
  65. package/src/components/DataGrid/DataGrid.tsx +1 -1
  66. package/src/components/DataTable/DataTable.tsx +4 -4
  67. package/src/components/EmptyState/EmptyState.tsx +6 -22
  68. package/src/components/Persona/Persona.tsx +1 -1
  69. package/src/components/Stat/Stat.tsx +1 -1
  70. package/src/components/Stepper/Stepper.tsx +13 -2
  71. package/src/components/banner.tsx +1 -203
  72. package/src/components/breadcrumb.tsx +1 -58
  73. package/src/components/command-item.tsx +1 -36
  74. package/src/components/data-grid.tsx +1 -125
  75. package/src/components/data-table.tsx +1 -139
  76. package/src/components/empty-state.tsx +1 -31
  77. package/src/components/hotkeys.tsx +1 -31
  78. package/src/components/icon-badge.tsx +1 -35
  79. package/src/components/loading-overlay.tsx +1 -38
  80. package/src/components/persona.tsx +1 -38
  81. package/src/components/property-list.tsx +1 -29
  82. package/src/components/stat.tsx +1 -51
  83. package/src/components/stepper.tsx +1 -69
  84. package/src/components/structured-list.tsx +1 -51
  85. package/src/components/timeline.tsx +1 -69
  86. package/src/components/toaster.tsx +1 -42
  87. package/src/data/DataList.tsx +1 -1
  88. package/src/engagement/Tour/Tour.tsx +1 -1
  89. package/src/engagement/beacon.tsx +1 -50
  90. package/src/engagement/tour.tsx +1 -106
  91. package/src/forms/ArrayField/ArrayField.tsx +2 -2
  92. package/src/forms/AutoForm/AutoForm.tsx +9 -8
  93. package/src/forms/DatePicker/DatePicker.tsx +3 -3
  94. package/src/forms/FloatingLabelInput/FloatingLabelInput.tsx +104 -0
  95. package/src/forms/FloatingLabelInput/index.ts +1 -0
  96. package/src/forms/PasswordInput/PasswordInput.tsx +2 -2
  97. package/src/forms/SearchInput/SearchInput.tsx +2 -2
  98. package/src/forms/StepForm/StepForm.tsx +2 -2
  99. package/src/forms/array-field.tsx +1 -61
  100. package/src/forms/auto-form.tsx +1 -133
  101. package/src/forms/date-picker.tsx +1 -109
  102. package/src/forms/field.tsx +1 -62
  103. package/src/forms/file-upload.tsx +1 -101
  104. package/src/forms/floating-label-input.tsx +1 -0
  105. package/src/forms/form.tsx +1 -57
  106. package/src/forms/object-field.tsx +1 -53
  107. package/src/forms/password-input.tsx +1 -54
  108. package/src/forms/search-input.tsx +1 -64
  109. package/src/forms/step-form.tsx +1 -113
  110. package/src/index.ts +11 -3
  111. package/src/primitives/Button/Button.tsx +18 -0
  112. package/src/primitives/cart-line-item.tsx +81 -0
  113. package/src/primitives/code-block.tsx +1 -1
  114. package/src/primitives/comparison.tsx +1 -1
  115. package/src/primitives/empty-cart.tsx +52 -0
  116. package/src/primitives/price-tag.tsx +62 -0
  117. package/src/primitives/qr-code.tsx +5 -1
  118. package/src/primitives/quantity-stepper.tsx +92 -0
  119. package/src/primitives/variant-picker.tsx +74 -0
  120. package/src/themes/base.css +18 -0
package/dist/index.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  import { clsx } from 'clsx';
2
2
  import { twMerge } from 'tailwind-merge';
3
- import * as React131 from 'react';
4
- import React131__default, { createContext, useState, useCallback, useMemo, useId, useRef, useEffect, useContext } from 'react';
3
+ import * as React136 from 'react';
4
+ import React136__default, { createContext, useState, useCallback, useMemo, useId, useRef, useEffect, useContext } from 'react';
5
5
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
6
- import { ChevronDown, ArrowLeft, ArrowRight, Check, Copy, X, Search, GripVertical, Circle, ChevronRight, Minus, Star, ChevronUp, Pipette, EyeOff, Eye, Menu, ChevronLeft, Play, Pause, VolumeX, Volume1, Volume2, Layers, Minimize, Maximize, Heading1, Heading2, Heading3, Bold, Italic, Underline, Code, List, ListOrdered, Quote, Code2, Undo2, Redo2, Link, Table as Table$2, Plus, ArrowUpToLine, ArrowDownToLine, ArrowLeftToLine, ArrowRightToLine, Trash2, ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon, MoreHorizontal, Loader2Icon, ArrowUp, ArrowDown, ArrowUpDown, Loader2, TrendingUp, TrendingDown, Send, Pencil, Sun, Moon, Monitor, Palette, LayoutDashboard, FolderOpen, Users, Settings, Bell, BarChart2, CreditCard, HelpCircle, Calendar as Calendar$1, User, LogOut, Upload, ChevronsUpDown, Info, XCircle, AlertTriangle, CheckCircle2, FileText, Archive, Film, FileCode, Image, File, Download, CheckCircle } from 'lucide-react';
6
+ import { ChevronDown, ArrowLeft, ArrowRight, Minus, Plus, X, Check, Copy, Search, GripVertical, Circle, ChevronRight, ShoppingCart, Star, ChevronUp, Pipette, EyeOff, Eye, Menu, ChevronLeft, Play, Pause, VolumeX, Volume1, Volume2, Layers, Minimize, Maximize, Heading1, Heading2, Heading3, Bold, Italic, Underline, Code, List, ListOrdered, Quote, Code2, Undo2, Redo2, Link, Table as Table$2, ArrowUpToLine, ArrowDownToLine, ArrowLeftToLine, ArrowRightToLine, Trash2, ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon, MoreHorizontal, Loader2Icon, ArrowUp, ArrowDown, ArrowUpDown, Loader2, TrendingUp, TrendingDown, Send, Pencil, Sun, Moon, Monitor, Palette, LayoutDashboard, FolderOpen, Users, Settings, Bell, BarChart2, CreditCard, HelpCircle, Calendar as Calendar$1, User, LogOut, Upload, ChevronsUpDown, Info, XCircle, AlertTriangle, CheckCircle2, FileText, Archive, Film, FileCode, Image, File, Download, CheckCircle } from 'lucide-react';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
8
  import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
9
9
  import { Slot } from '@radix-ui/react-slot';
@@ -21,10 +21,9 @@ import * as DialogPrimitive from '@radix-ui/react-dialog';
21
21
  import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
22
22
  import { Drawer as Drawer$1 } from 'vaul';
23
23
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
24
- import { useFormContext, useForm } from 'react-hook-form';
25
- import * as LabelPrimitive from '@radix-ui/react-label';
26
24
  import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
27
25
  import { OTPInput, OTPInputContext } from 'input-otp';
26
+ import * as LabelPrimitive from '@radix-ui/react-label';
28
27
  import * as MenubarPrimitive from '@radix-ui/react-menubar';
29
28
  import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
30
29
  import * as PopoverPrimitive from '@radix-ui/react-popover';
@@ -56,6 +55,8 @@ import { Table as Table$1 } from '@tiptap/extension-table';
56
55
  import { TableRow as TableRow$1 } from '@tiptap/extension-table-row';
57
56
  import { TableCell as TableCell$1 } from '@tiptap/extension-table-cell';
58
57
  import { TableHeader as TableHeader$1 } from '@tiptap/extension-table-header';
58
+ import { useForm, Controller, useFormContext } from 'react-hook-form';
59
+ export { FormProvider as Form } from 'react-hook-form';
59
60
  import { zodResolver } from '@hookform/resolvers/zod';
60
61
  import * as z from 'zod';
61
62
  import { HexAlphaColorPicker, HexColorPicker, RgbStringColorPicker, HslStringColorPicker } from 'react-colorful';
@@ -70,7 +71,7 @@ function cn(...inputs) {
70
71
  return twMerge(clsx(inputs));
71
72
  }
72
73
  var Accordion = AccordionPrimitive.Root;
73
- var AccordionItem = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
74
+ var AccordionItem = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
74
75
  AccordionPrimitive.Item,
75
76
  {
76
77
  ref,
@@ -79,7 +80,7 @@ var AccordionItem = React131.forwardRef(({ className, ...props }, ref) => /* @__
79
80
  }
80
81
  ));
81
82
  AccordionItem.displayName = "AccordionItem";
82
- var AccordionTrigger = React131.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
83
+ var AccordionTrigger = React136.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
83
84
  AccordionPrimitive.Trigger,
84
85
  {
85
86
  ref,
@@ -95,7 +96,7 @@ var AccordionTrigger = React131.forwardRef(({ className, children, ...props }, r
95
96
  }
96
97
  ) }));
97
98
  AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
98
- var AccordionContent = React131.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
99
+ var AccordionContent = React136.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
99
100
  AccordionPrimitive.Content,
100
101
  {
101
102
  ref,
@@ -127,7 +128,7 @@ var buttonVariants = cva(
127
128
  defaultVariants: { variant: "default", size: "default" }
128
129
  }
129
130
  );
130
- var Button = React131__default.forwardRef(
131
+ var Button = React136__default.forwardRef(
131
132
  ({ className, variant, size, asChild = false, ...props }, ref) => {
132
133
  const Comp = asChild ? Slot : "button";
133
134
  return /* @__PURE__ */ jsx(Comp, { className: cn(buttonVariants({ variant, size }), className), ref, ...props });
@@ -137,7 +138,7 @@ Button.displayName = "Button";
137
138
  var AlertDialog = AlertDialogPrimitive.Root;
138
139
  var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
139
140
  var AlertDialogPortal = AlertDialogPrimitive.Portal;
140
- var AlertDialogOverlay = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
141
+ var AlertDialogOverlay = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
141
142
  AlertDialogPrimitive.Overlay,
142
143
  {
143
144
  className: cn(
@@ -149,7 +150,7 @@ var AlertDialogOverlay = React131.forwardRef(({ className, ...props }, ref) => /
149
150
  }
150
151
  ));
151
152
  AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
152
- var AlertDialogContent = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
153
+ var AlertDialogContent = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
153
154
  /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
154
155
  /* @__PURE__ */ jsx(
155
156
  AlertDialogPrimitive.Content,
@@ -192,7 +193,7 @@ var AlertDialogFooter = ({
192
193
  }
193
194
  );
194
195
  AlertDialogFooter.displayName = "AlertDialogFooter";
195
- var AlertDialogTitle = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
196
+ var AlertDialogTitle = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
196
197
  AlertDialogPrimitive.Title,
197
198
  {
198
199
  ref,
@@ -201,7 +202,7 @@ var AlertDialogTitle = React131.forwardRef(({ className, ...props }, ref) => /*
201
202
  }
202
203
  ));
203
204
  AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
204
- var AlertDialogDescription = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
205
+ var AlertDialogDescription = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
205
206
  AlertDialogPrimitive.Description,
206
207
  {
207
208
  ref,
@@ -210,7 +211,7 @@ var AlertDialogDescription = React131.forwardRef(({ className, ...props }, ref)
210
211
  }
211
212
  ));
212
213
  AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
213
- var AlertDialogAction = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
214
+ var AlertDialogAction = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
214
215
  AlertDialogPrimitive.Action,
215
216
  {
216
217
  ref,
@@ -219,7 +220,7 @@ var AlertDialogAction = React131.forwardRef(({ className, ...props }, ref) => /*
219
220
  }
220
221
  ));
221
222
  AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
222
- var AlertDialogCancel = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
223
+ var AlertDialogCancel = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
223
224
  AlertDialogPrimitive.Cancel,
224
225
  {
225
226
  ref,
@@ -246,7 +247,7 @@ var alertVariants = cva(
246
247
  }
247
248
  }
248
249
  );
249
- var Alert = React131.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx(
250
+ var Alert = React136.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx(
250
251
  "div",
251
252
  {
252
253
  ref,
@@ -256,7 +257,7 @@ var Alert = React131.forwardRef(({ className, variant, ...props }, ref) => /* @_
256
257
  }
257
258
  ));
258
259
  Alert.displayName = "Alert";
259
- var AlertTitle = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
260
+ var AlertTitle = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
260
261
  "h5",
261
262
  {
262
263
  ref,
@@ -265,7 +266,7 @@ var AlertTitle = React131.forwardRef(({ className, ...props }, ref) => /* @__PUR
265
266
  }
266
267
  ));
267
268
  AlertTitle.displayName = "AlertTitle";
268
- var AlertDescription = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
269
+ var AlertDescription = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
269
270
  "div",
270
271
  {
271
272
  ref,
@@ -275,7 +276,7 @@ var AlertDescription = React131.forwardRef(({ className, ...props }, ref) => /*
275
276
  ));
276
277
  AlertDescription.displayName = "AlertDescription";
277
278
  var AspectRatio = AspectRatioPrimitive.Root;
278
- var Avatar = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
279
+ var Avatar = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
279
280
  AvatarPrimitive.Root,
280
281
  {
281
282
  ref,
@@ -284,9 +285,9 @@ var Avatar = React131__default.forwardRef(({ className, ...props }, ref) => /* @
284
285
  }
285
286
  ));
286
287
  Avatar.displayName = AvatarPrimitive.Root.displayName;
287
- var AvatarImage = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Image, { ref, className: cn("aspect-square h-full w-full object-cover", className), ...props }));
288
+ var AvatarImage = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Image, { ref, className: cn("aspect-square h-full w-full object-cover", className), ...props }));
288
289
  AvatarImage.displayName = AvatarPrimitive.Image.displayName;
289
- var AvatarFallback = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
290
+ var AvatarFallback = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
290
291
  AvatarPrimitive.Fallback,
291
292
  {
292
293
  ref,
@@ -295,15 +296,15 @@ var AvatarFallback = React131__default.forwardRef(({ className, ...props }, ref)
295
296
  }
296
297
  ));
297
298
  AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
298
- var AvatarGroup = React131__default.forwardRef(
299
+ var AvatarGroup = React136__default.forwardRef(
299
300
  ({ className, max = 4, size = 32, spacing, renderOverflow, children, ...props }, ref) => {
300
- const items = React131__default.Children.toArray(children).filter(React131__default.isValidElement);
301
+ const items = React136__default.Children.toArray(children).filter(React136__default.isValidElement);
301
302
  const overlap = spacing ?? Math.round(size / 3);
302
303
  const visible = items.slice(0, max);
303
304
  const remaining = Math.max(0, items.length - max);
304
305
  return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex items-center", className), "data-slot": "avatar-group", ...props, children: [
305
306
  visible.map(
306
- (child, i) => React131__default.cloneElement(child, {
307
+ (child, i) => React136__default.cloneElement(child, {
307
308
  key: child.key ?? i,
308
309
  style: {
309
310
  width: size,
@@ -509,8 +510,8 @@ function CalendarDayButton({
509
510
  ...props
510
511
  }) {
511
512
  const defaultClassNames = getDefaultClassNames();
512
- const ref = React131.useRef(null);
513
- React131.useEffect(() => {
513
+ const ref = React136.useRef(null);
514
+ React136.useEffect(() => {
514
515
  if (modifiers.focused) ref.current?.focus();
515
516
  }, [modifiers.focused]);
516
517
  return /* @__PURE__ */ jsx(
@@ -533,7 +534,7 @@ function CalendarDayButton({
533
534
  }
534
535
  );
535
536
  }
536
- var Card = React131__default.forwardRef(
537
+ var Card = React136__default.forwardRef(
537
538
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
538
539
  "div",
539
540
  {
@@ -544,35 +545,35 @@ var Card = React131__default.forwardRef(
544
545
  )
545
546
  );
546
547
  Card.displayName = "Card";
547
- var CardHeader = React131__default.forwardRef(
548
+ var CardHeader = React136__default.forwardRef(
548
549
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })
549
550
  );
550
551
  CardHeader.displayName = "CardHeader";
551
- var CardTitle = React131__default.forwardRef(
552
+ var CardTitle = React136__default.forwardRef(
552
553
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("font-semibold leading-none tracking-tight", className), ...props })
553
554
  );
554
555
  CardTitle.displayName = "CardTitle";
555
- var CardDescription = React131__default.forwardRef(
556
+ var CardDescription = React136__default.forwardRef(
556
557
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("text-sm text-muted-foreground", className), ...props })
557
558
  );
558
559
  CardDescription.displayName = "CardDescription";
559
- var CardContent = React131__default.forwardRef(
560
+ var CardContent = React136__default.forwardRef(
560
561
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props })
561
562
  );
562
563
  CardContent.displayName = "CardContent";
563
- var CardFooter = React131__default.forwardRef(
564
+ var CardFooter = React136__default.forwardRef(
564
565
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center p-6 pt-0", className), ...props })
565
566
  );
566
567
  CardFooter.displayName = "CardFooter";
567
- var CarouselContext = React131.createContext(null);
568
+ var CarouselContext = React136.createContext(null);
568
569
  function useCarousel() {
569
- const context = React131.useContext(CarouselContext);
570
+ const context = React136.useContext(CarouselContext);
570
571
  if (!context) {
571
572
  throw new Error("useCarousel must be used within a <Carousel />");
572
573
  }
573
574
  return context;
574
575
  }
575
- var Carousel = React131.forwardRef(
576
+ var Carousel = React136.forwardRef(
576
577
  ({
577
578
  orientation = "horizontal",
578
579
  opts,
@@ -589,22 +590,22 @@ var Carousel = React131.forwardRef(
589
590
  },
590
591
  plugins
591
592
  );
592
- const [canScrollPrev, setCanScrollPrev] = React131.useState(false);
593
- const [canScrollNext, setCanScrollNext] = React131.useState(false);
594
- const onSelect = React131.useCallback((api2) => {
593
+ const [canScrollPrev, setCanScrollPrev] = React136.useState(false);
594
+ const [canScrollNext, setCanScrollNext] = React136.useState(false);
595
+ const onSelect = React136.useCallback((api2) => {
595
596
  if (!api2) {
596
597
  return;
597
598
  }
598
599
  setCanScrollPrev(api2.canScrollPrev());
599
600
  setCanScrollNext(api2.canScrollNext());
600
601
  }, []);
601
- const scrollPrev = React131.useCallback(() => {
602
+ const scrollPrev = React136.useCallback(() => {
602
603
  api?.scrollPrev();
603
604
  }, [api]);
604
- const scrollNext = React131.useCallback(() => {
605
+ const scrollNext = React136.useCallback(() => {
605
606
  api?.scrollNext();
606
607
  }, [api]);
607
- const handleKeyDown = React131.useCallback(
608
+ const handleKeyDown = React136.useCallback(
608
609
  (event) => {
609
610
  if (event.key === "ArrowLeft") {
610
611
  event.preventDefault();
@@ -616,13 +617,13 @@ var Carousel = React131.forwardRef(
616
617
  },
617
618
  [scrollPrev, scrollNext]
618
619
  );
619
- React131.useEffect(() => {
620
+ React136.useEffect(() => {
620
621
  if (!api || !setApi) {
621
622
  return;
622
623
  }
623
624
  setApi(api);
624
625
  }, [api, setApi]);
625
- React131.useEffect(() => {
626
+ React136.useEffect(() => {
626
627
  if (!api) {
627
628
  return;
628
629
  }
@@ -663,7 +664,7 @@ var Carousel = React131.forwardRef(
663
664
  }
664
665
  );
665
666
  Carousel.displayName = "Carousel";
666
- var CarouselContent = React131.forwardRef(({ className, ...props }, ref) => {
667
+ var CarouselContent = React136.forwardRef(({ className, ...props }, ref) => {
667
668
  const { carouselRef, orientation } = useCarousel();
668
669
  return /* @__PURE__ */ jsx("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsx(
669
670
  "div",
@@ -679,7 +680,7 @@ var CarouselContent = React131.forwardRef(({ className, ...props }, ref) => {
679
680
  ) });
680
681
  });
681
682
  CarouselContent.displayName = "CarouselContent";
682
- var CarouselItem = React131.forwardRef(({ className, ...props }, ref) => {
683
+ var CarouselItem = React136.forwardRef(({ className, ...props }, ref) => {
683
684
  const { orientation } = useCarousel();
684
685
  return /* @__PURE__ */ jsx(
685
686
  "div",
@@ -697,7 +698,7 @@ var CarouselItem = React131.forwardRef(({ className, ...props }, ref) => {
697
698
  );
698
699
  });
699
700
  CarouselItem.displayName = "CarouselItem";
700
- var CarouselPrevious = React131.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
701
+ var CarouselPrevious = React136.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
701
702
  const { orientation, scrollPrev, canScrollPrev } = useCarousel();
702
703
  return /* @__PURE__ */ jsxs(
703
704
  Button,
@@ -721,7 +722,7 @@ var CarouselPrevious = React131.forwardRef(({ className, variant = "outline", si
721
722
  );
722
723
  });
723
724
  CarouselPrevious.displayName = "CarouselPrevious";
724
- var CarouselNext = React131.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
725
+ var CarouselNext = React136.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
725
726
  const { orientation, scrollNext, canScrollNext } = useCarousel();
726
727
  return /* @__PURE__ */ jsxs(
727
728
  Button,
@@ -745,17 +746,173 @@ var CarouselNext = React131.forwardRef(({ className, variant = "outline", size =
745
746
  );
746
747
  });
747
748
  CarouselNext.displayName = "CarouselNext";
749
+ var SIZE = {
750
+ sm: { price: "text-sm", compare: "text-xs" },
751
+ md: { price: "text-lg", compare: "text-sm" },
752
+ lg: { price: "text-2xl", compare: "text-base" }
753
+ };
754
+ function formatMoney(minor, currency, locale) {
755
+ return new Intl.NumberFormat(locale, { style: "currency", currency }).format(minor / 100);
756
+ }
757
+ var PriceTag = React136__default.forwardRef(
758
+ ({ amount, compareAt, currency = "USD", locale = "en-US", size = "md", showDiscount = true, className, ...props }, ref) => {
759
+ const onSale = compareAt !== void 0 && compareAt > amount;
760
+ const pct = onSale ? Math.round((1 - amount / compareAt) * 100) : 0;
761
+ const s = SIZE[size];
762
+ return /* @__PURE__ */ jsxs("span", { ref, className: cn("inline-flex items-baseline gap-2 font-sans tabular-nums", className), ...props, children: [
763
+ /* @__PURE__ */ jsx("span", { className: cn("font-semibold tracking-tight text-foreground", s.price), children: formatMoney(amount, currency, locale) }),
764
+ onSale && /* @__PURE__ */ jsxs(Fragment, { children: [
765
+ /* @__PURE__ */ jsx("span", { className: cn("text-muted-foreground line-through", s.compare), children: formatMoney(compareAt, currency, locale) }),
766
+ showDiscount && /* @__PURE__ */ jsxs("span", { className: "rounded-full bg-destructive/10 px-2 py-0.5 text-xs font-semibold text-destructive", children: [
767
+ "\u2212",
768
+ pct,
769
+ "%"
770
+ ] })
771
+ ] })
772
+ ] });
773
+ }
774
+ );
775
+ PriceTag.displayName = "PriceTag";
776
+ var QuantityStepper = React136__default.forwardRef(
777
+ ({
778
+ value: valueProp,
779
+ defaultValue = 1,
780
+ onValueChange,
781
+ min = 1,
782
+ max = 99,
783
+ step = 1,
784
+ size = "md",
785
+ disabled = false,
786
+ className,
787
+ "aria-label": ariaLabel = "Quantity",
788
+ ...props
789
+ }, ref) => {
790
+ const isControlled = valueProp !== void 0;
791
+ const [internal, setInternal] = React136__default.useState(defaultValue);
792
+ const value = isControlled ? valueProp : internal;
793
+ const commit = (next) => {
794
+ const clamped = Math.max(min, Math.min(max, next));
795
+ if (!isControlled) setInternal(clamped);
796
+ onValueChange?.(clamped);
797
+ };
798
+ const dim = size === "sm" ? "h-7 w-7" : "h-9 w-9";
799
+ return /* @__PURE__ */ jsxs(
800
+ "div",
801
+ {
802
+ ref,
803
+ role: "group",
804
+ "aria-label": ariaLabel,
805
+ className: cn("inline-flex items-center rounded-md border border-input", className),
806
+ ...props,
807
+ children: [
808
+ /* @__PURE__ */ jsx(
809
+ Button,
810
+ {
811
+ type: "button",
812
+ variant: "ghost",
813
+ size: "icon",
814
+ className: cn("rounded-r-none", dim),
815
+ disabled: disabled || value <= min,
816
+ onClick: () => commit(value - step),
817
+ "aria-label": "Decrease quantity",
818
+ children: /* @__PURE__ */ jsx(Minus, { className: "h-4 w-4" })
819
+ }
820
+ ),
821
+ /* @__PURE__ */ jsx(
822
+ "span",
823
+ {
824
+ "aria-live": "polite",
825
+ className: cn("select-none text-center text-sm font-medium tabular-nums", size === "sm" ? "min-w-7" : "min-w-8"),
826
+ children: value
827
+ }
828
+ ),
829
+ /* @__PURE__ */ jsx(
830
+ Button,
831
+ {
832
+ type: "button",
833
+ variant: "ghost",
834
+ size: "icon",
835
+ className: cn("rounded-l-none", dim),
836
+ disabled: disabled || value >= max,
837
+ onClick: () => commit(value + step),
838
+ "aria-label": "Increase quantity",
839
+ children: /* @__PURE__ */ jsx(Plus, { className: "h-4 w-4" })
840
+ }
841
+ )
842
+ ]
843
+ }
844
+ );
845
+ }
846
+ );
847
+ QuantityStepper.displayName = "QuantityStepper";
848
+ var CartLineItem = React136__default.forwardRef(
849
+ ({
850
+ image,
851
+ title,
852
+ variant,
853
+ price,
854
+ compareAt,
855
+ currency = "USD",
856
+ quantity,
857
+ onQuantityChange,
858
+ onRemove,
859
+ minQuantity = 1,
860
+ maxQuantity = 99,
861
+ className,
862
+ ...props
863
+ }, ref) => {
864
+ return /* @__PURE__ */ jsxs(
865
+ "div",
866
+ {
867
+ ref,
868
+ className: cn("flex items-center gap-4 rounded-lg border border-border bg-card p-3", className),
869
+ ...props,
870
+ children: [
871
+ image && /* @__PURE__ */ jsx("img", { src: image, alt: "", className: "h-16 w-16 flex-none rounded-md object-cover" }),
872
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
873
+ /* @__PURE__ */ jsx("span", { className: "truncate font-medium text-card-foreground", children: title }),
874
+ variant && /* @__PURE__ */ jsx("span", { className: "truncate text-sm text-muted-foreground", children: variant }),
875
+ /* @__PURE__ */ jsx(PriceTag, { amount: price, compareAt, currency, size: "sm" })
876
+ ] }),
877
+ /* @__PURE__ */ jsx(
878
+ QuantityStepper,
879
+ {
880
+ value: quantity,
881
+ min: minQuantity,
882
+ max: maxQuantity,
883
+ onValueChange: onQuantityChange,
884
+ size: "sm"
885
+ }
886
+ ),
887
+ onRemove && /* @__PURE__ */ jsx(
888
+ Button,
889
+ {
890
+ type: "button",
891
+ variant: "ghost",
892
+ size: "icon",
893
+ className: "h-8 w-8 text-muted-foreground hover:text-destructive",
894
+ onClick: onRemove,
895
+ "aria-label": `Remove ${title}`,
896
+ children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
897
+ }
898
+ )
899
+ ]
900
+ }
901
+ );
902
+ }
903
+ );
904
+ CartLineItem.displayName = "CartLineItem";
748
905
  var THEMES = { light: "", dark: ".dark" };
749
- var ChartContext = React131.createContext(null);
906
+ var ChartContext = React136.createContext(null);
750
907
  function useChart() {
751
- const context = React131.useContext(ChartContext);
908
+ const context = React136.useContext(ChartContext);
752
909
  if (!context) {
753
910
  throw new Error("useChart must be used within a <ChartContainer />");
754
911
  }
755
912
  return context;
756
913
  }
757
- var ChartContainer = React131.forwardRef(({ id, className, children, config, ...props }, ref) => {
758
- const uniqueId = React131.useId();
914
+ var ChartContainer = React136.forwardRef(({ id, className, children, config, ...props }, ref) => {
915
+ const uniqueId = React136.useId();
759
916
  const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
760
917
  return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
761
918
  "div",
@@ -801,7 +958,7 @@ ${colorConfig.map(([key, itemConfig]) => {
801
958
  );
802
959
  };
803
960
  var ChartTooltip = RechartsPrimitive.Tooltip;
804
- var ChartTooltipContent = React131.forwardRef(
961
+ var ChartTooltipContent = React136.forwardRef(
805
962
  ({
806
963
  active,
807
964
  payload,
@@ -818,7 +975,7 @@ var ChartTooltipContent = React131.forwardRef(
818
975
  labelKey
819
976
  }, ref) => {
820
977
  const { config } = useChart();
821
- const tooltipLabel = React131.useMemo(() => {
978
+ const tooltipLabel = React136.useMemo(() => {
822
979
  if (hideLabel || !payload?.length) {
823
980
  return null;
824
981
  }
@@ -914,7 +1071,7 @@ var ChartTooltipContent = React131.forwardRef(
914
1071
  );
915
1072
  ChartTooltipContent.displayName = "ChartTooltip";
916
1073
  var ChartLegend = RechartsPrimitive.Legend;
917
- var ChartLegendContent = React131.forwardRef(
1074
+ var ChartLegendContent = React136.forwardRef(
918
1075
  ({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
919
1076
  const { config } = useChart();
920
1077
  if (!payload?.length) {
@@ -972,7 +1129,7 @@ function getPayloadConfigFromPayload(config, payload, key) {
972
1129
  }
973
1130
  return configLabelKey in config ? config[configLabelKey] : config[key];
974
1131
  }
975
- var Checkbox = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1132
+ var Checkbox = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
976
1133
  CheckboxPrimitive.Root,
977
1134
  {
978
1135
  ref,
@@ -1012,7 +1169,7 @@ function detectTheme(node) {
1012
1169
  }
1013
1170
  return document.documentElement.classList.contains("dark") ? "dark" : "light";
1014
1171
  }
1015
- var CodeBlock = React131__default.forwardRef(
1172
+ var CodeBlock = React136__default.forwardRef(
1016
1173
  ({
1017
1174
  code,
1018
1175
  language = "tsx",
@@ -1023,10 +1180,10 @@ var CodeBlock = React131__default.forwardRef(
1023
1180
  className,
1024
1181
  ...props
1025
1182
  }, ref) => {
1026
- const containerRef = React131__default.useRef(null);
1027
- const [html, setHtml] = React131__default.useState(null);
1028
- const [copied, setCopied] = React131__default.useState(false);
1029
- React131__default.useEffect(() => {
1183
+ const containerRef = React136__default.useRef(null);
1184
+ const [html, setHtml] = React136__default.useState(null);
1185
+ const [copied, setCopied] = React136__default.useState(false);
1186
+ React136__default.useEffect(() => {
1030
1187
  let cancelled = false;
1031
1188
  getHighlighter().then((hl) => {
1032
1189
  if (cancelled) return;
@@ -1041,7 +1198,7 @@ var CodeBlock = React131__default.forwardRef(
1041
1198
  cancelled = true;
1042
1199
  };
1043
1200
  }, [code, language, theme]);
1044
- const onCopy = React131__default.useCallback(async () => {
1201
+ const onCopy = React136__default.useCallback(async () => {
1045
1202
  try {
1046
1203
  await navigator.clipboard.writeText(code);
1047
1204
  setCopied(true);
@@ -1049,7 +1206,7 @@ var CodeBlock = React131__default.forwardRef(
1049
1206
  } catch {
1050
1207
  }
1051
1208
  }, [code]);
1052
- const lines = React131__default.useMemo(() => code.split("\n"), [code]);
1209
+ const lines = React136__default.useMemo(() => code.split("\n"), [code]);
1053
1210
  return /* @__PURE__ */ jsxs(
1054
1211
  "div",
1055
1212
  {
@@ -1117,7 +1274,7 @@ var Dialog = DialogPrimitive.Root;
1117
1274
  var DialogTrigger = DialogPrimitive.Trigger;
1118
1275
  var DialogPortal = DialogPrimitive.Portal;
1119
1276
  var DialogClose = DialogPrimitive.Close;
1120
- var DialogOverlay = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1277
+ var DialogOverlay = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1121
1278
  DialogPrimitive.Overlay,
1122
1279
  {
1123
1280
  ref,
@@ -1131,7 +1288,7 @@ var DialogOverlay = React131__default.forwardRef(({ className, ...props }, ref)
1131
1288
  }
1132
1289
  ));
1133
1290
  DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
1134
- var DialogContent = React131__default.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
1291
+ var DialogContent = React136__default.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
1135
1292
  /* @__PURE__ */ jsx(DialogOverlay, {}),
1136
1293
  /* @__PURE__ */ jsxs(
1137
1294
  DialogPrimitive.Content,
@@ -1161,7 +1318,7 @@ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { cla
1161
1318
  DialogHeader.displayName = "DialogHeader";
1162
1319
  var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
1163
1320
  DialogFooter.displayName = "DialogFooter";
1164
- var DialogTitle = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1321
+ var DialogTitle = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1165
1322
  DialogPrimitive.Title,
1166
1323
  {
1167
1324
  ref,
@@ -1170,7 +1327,7 @@ var DialogTitle = React131__default.forwardRef(({ className, ...props }, ref) =>
1170
1327
  }
1171
1328
  ));
1172
1329
  DialogTitle.displayName = DialogPrimitive.Title.displayName;
1173
- var DialogDescription = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1330
+ var DialogDescription = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1174
1331
  DialogPrimitive.Description,
1175
1332
  {
1176
1333
  ref,
@@ -1179,7 +1336,7 @@ var DialogDescription = React131__default.forwardRef(({ className, ...props }, r
1179
1336
  }
1180
1337
  ));
1181
1338
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
1182
- var Command = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1339
+ var Command = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1183
1340
  Command$1,
1184
1341
  {
1185
1342
  ref,
@@ -1194,7 +1351,7 @@ Command.displayName = Command$1.displayName;
1194
1351
  var CommandDialog = ({ children, ...props }) => {
1195
1352
  return /* @__PURE__ */ jsx(Dialog, { ...props, children: /* @__PURE__ */ jsx(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsx(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) });
1196
1353
  };
1197
- var CommandInput = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
1354
+ var CommandInput = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
1198
1355
  /* @__PURE__ */ jsx(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
1199
1356
  /* @__PURE__ */ jsx(
1200
1357
  Command$1.Input,
@@ -1209,7 +1366,7 @@ var CommandInput = React131.forwardRef(({ className, ...props }, ref) => /* @__P
1209
1366
  )
1210
1367
  ] }));
1211
1368
  CommandInput.displayName = Command$1.Input.displayName;
1212
- var CommandList = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1369
+ var CommandList = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1213
1370
  Command$1.List,
1214
1371
  {
1215
1372
  ref,
@@ -1218,7 +1375,7 @@ var CommandList = React131.forwardRef(({ className, ...props }, ref) => /* @__PU
1218
1375
  }
1219
1376
  ));
1220
1377
  CommandList.displayName = Command$1.List.displayName;
1221
- var CommandEmpty = React131.forwardRef((props, ref) => /* @__PURE__ */ jsx(
1378
+ var CommandEmpty = React136.forwardRef((props, ref) => /* @__PURE__ */ jsx(
1222
1379
  Command$1.Empty,
1223
1380
  {
1224
1381
  ref,
@@ -1227,7 +1384,7 @@ var CommandEmpty = React131.forwardRef((props, ref) => /* @__PURE__ */ jsx(
1227
1384
  }
1228
1385
  ));
1229
1386
  CommandEmpty.displayName = Command$1.Empty.displayName;
1230
- var CommandGroup = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1387
+ var CommandGroup = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1231
1388
  Command$1.Group,
1232
1389
  {
1233
1390
  ref,
@@ -1239,7 +1396,7 @@ var CommandGroup = React131.forwardRef(({ className, ...props }, ref) => /* @__P
1239
1396
  }
1240
1397
  ));
1241
1398
  CommandGroup.displayName = Command$1.Group.displayName;
1242
- var CommandSeparator = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1399
+ var CommandSeparator = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1243
1400
  Command$1.Separator,
1244
1401
  {
1245
1402
  ref,
@@ -1248,7 +1405,7 @@ var CommandSeparator = React131.forwardRef(({ className, ...props }, ref) => /*
1248
1405
  }
1249
1406
  ));
1250
1407
  CommandSeparator.displayName = Command$1.Separator.displayName;
1251
- var CommandItem = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1408
+ var CommandItem = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1252
1409
  Command$1.Item,
1253
1410
  {
1254
1411
  ref,
@@ -1276,7 +1433,7 @@ var CommandShortcut = ({
1276
1433
  );
1277
1434
  };
1278
1435
  CommandShortcut.displayName = "CommandShortcut";
1279
- var Comparison = React131__default.forwardRef(
1436
+ var Comparison = React136__default.forwardRef(
1280
1437
  ({
1281
1438
  before,
1282
1439
  after,
@@ -1292,10 +1449,10 @@ var Comparison = React131__default.forwardRef(
1292
1449
  ...props
1293
1450
  }, ref) => {
1294
1451
  const isControlled = valueProp !== void 0;
1295
- const [internal, setInternal] = React131__default.useState(defaultValue);
1452
+ const [internal, setInternal] = React136__default.useState(defaultValue);
1296
1453
  const value = Math.max(0, Math.min(100, isControlled ? valueProp : internal));
1297
- const containerRef = React131__default.useRef(null);
1298
- const commit = React131__default.useCallback(
1454
+ const containerRef = React136__default.useRef(null);
1455
+ const commit = React136__default.useCallback(
1299
1456
  (next) => {
1300
1457
  const clamped = Math.max(0, Math.min(100, next));
1301
1458
  if (!isControlled) setInternal(clamped);
@@ -1303,7 +1460,7 @@ var Comparison = React131__default.forwardRef(
1303
1460
  },
1304
1461
  [isControlled, onValueChange]
1305
1462
  );
1306
- const updateFromPointer = React131__default.useCallback(
1463
+ const updateFromPointer = React136__default.useCallback(
1307
1464
  (clientX, clientY) => {
1308
1465
  const el = containerRef.current;
1309
1466
  if (!el) return;
@@ -1426,30 +1583,30 @@ var ContextMenuSub = ContextMenuPrimitive.Sub;
1426
1583
  var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
1427
1584
  var contentStyle = "z-50 min-w-[8rem] overflow-hidden rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-80";
1428
1585
  var itemStyle = "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-[hsl(var(--accent))] focus:text-[hsl(var(--accent-foreground))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
1429
- var ContextMenuContent = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(ContextMenuPrimitive.Content, { ref, className: cn(contentStyle, className), ...props }) }));
1586
+ var ContextMenuContent = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(ContextMenuPrimitive.Content, { ref, className: cn(contentStyle, className), ...props }) }));
1430
1587
  ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
1431
- var ContextMenuItem = React131__default.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Item, { ref, className: cn(itemStyle, inset && "pl-8", className), ...props }));
1588
+ var ContextMenuItem = React136__default.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Item, { ref, className: cn(itemStyle, inset && "pl-8", className), ...props }));
1432
1589
  ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
1433
- var ContextMenuCheckboxItem = React131__default.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.CheckboxItem, { ref, className: cn(itemStyle, "pl-8", className), checked, ...props, children: [
1590
+ var ContextMenuCheckboxItem = React136__default.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.CheckboxItem, { ref, className: cn(itemStyle, "pl-8", className), checked, ...props, children: [
1434
1591
  /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) }) }),
1435
1592
  children
1436
1593
  ] }));
1437
1594
  ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
1438
- var ContextMenuRadioItem = React131__default.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.RadioItem, { ref, className: cn(itemStyle, "pl-8", className), ...props, children: [
1595
+ var ContextMenuRadioItem = React136__default.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.RadioItem, { ref, className: cn(itemStyle, "pl-8", className), ...props, children: [
1439
1596
  /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { className: "h-2 w-2 fill-current" }) }) }),
1440
1597
  children
1441
1598
  ] }));
1442
1599
  ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
1443
- var ContextMenuLabel = React131__default.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Label, { ref, className: cn("px-2 py-1.5 text-xs font-semibold text-[hsl(var(--muted-foreground))]", inset && "pl-8", className), ...props }));
1600
+ var ContextMenuLabel = React136__default.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Label, { ref, className: cn("px-2 py-1.5 text-xs font-semibold text-[hsl(var(--muted-foreground))]", inset && "pl-8", className), ...props }));
1444
1601
  ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
1445
- var ContextMenuSeparator = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-[hsl(var(--muted))]", className), ...props }));
1602
+ var ContextMenuSeparator = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-[hsl(var(--muted))]", className), ...props }));
1446
1603
  ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
1447
- var ContextMenuSubTrigger = React131__default.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.SubTrigger, { ref, className: cn(itemStyle, inset && "pl-8", className), ...props, children: [
1604
+ var ContextMenuSubTrigger = React136__default.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.SubTrigger, { ref, className: cn(itemStyle, inset && "pl-8", className), ...props, children: [
1448
1605
  children,
1449
1606
  /* @__PURE__ */ jsx(ChevronRight, { className: "ml-auto h-4 w-4" })
1450
1607
  ] }));
1451
1608
  ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
1452
- var ContextMenuSubContent = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.SubContent, { ref, className: cn(contentStyle, className), ...props }));
1609
+ var ContextMenuSubContent = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.SubContent, { ref, className: cn(contentStyle, className), ...props }));
1453
1610
  ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
1454
1611
  var ContextMenuShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx("span", { className: cn("ml-auto text-xs tracking-widest opacity-60", className), ...props });
1455
1612
  var Drawer = ({
@@ -1466,7 +1623,7 @@ Drawer.displayName = "Drawer";
1466
1623
  var DrawerTrigger = Drawer$1.Trigger;
1467
1624
  var DrawerPortal = Drawer$1.Portal;
1468
1625
  var DrawerClose = Drawer$1.Close;
1469
- var DrawerOverlay = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1626
+ var DrawerOverlay = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1470
1627
  Drawer$1.Overlay,
1471
1628
  {
1472
1629
  ref,
@@ -1475,7 +1632,7 @@ var DrawerOverlay = React131.forwardRef(({ className, ...props }, ref) => /* @__
1475
1632
  }
1476
1633
  ));
1477
1634
  DrawerOverlay.displayName = Drawer$1.Overlay.displayName;
1478
- var DrawerContent = React131.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DrawerPortal, { children: [
1635
+ var DrawerContent = React136.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DrawerPortal, { children: [
1479
1636
  /* @__PURE__ */ jsx(DrawerOverlay, {}),
1480
1637
  /* @__PURE__ */ jsxs(
1481
1638
  Drawer$1.Content,
@@ -1516,7 +1673,7 @@ var DrawerFooter = ({
1516
1673
  }
1517
1674
  );
1518
1675
  DrawerFooter.displayName = "DrawerFooter";
1519
- var DrawerTitle = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1676
+ var DrawerTitle = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1520
1677
  Drawer$1.Title,
1521
1678
  {
1522
1679
  ref,
@@ -1528,7 +1685,7 @@ var DrawerTitle = React131.forwardRef(({ className, ...props }, ref) => /* @__PU
1528
1685
  }
1529
1686
  ));
1530
1687
  DrawerTitle.displayName = Drawer$1.Title.displayName;
1531
- var DrawerDescription = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1688
+ var DrawerDescription = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1532
1689
  Drawer$1.Description,
1533
1690
  {
1534
1691
  ref,
@@ -1553,134 +1710,65 @@ var itemStyle2 = cn(
1553
1710
  "focus:bg-[hsl(var(--accent))] focus:text-[hsl(var(--accent-foreground))]",
1554
1711
  "data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
1555
1712
  );
1556
- var DropdownMenuContent = React131__default.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Content, { ref, sideOffset, className: cn(contentStyle2, className), ...props }) }));
1713
+ var DropdownMenuContent = React136__default.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Content, { ref, sideOffset, className: cn(contentStyle2, className), ...props }) }));
1557
1714
  DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
1558
- var DropdownMenuItem = React131__default.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Item, { ref, className: cn(itemStyle2, inset && "pl-8", className), ...props }));
1715
+ var DropdownMenuItem = React136__default.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Item, { ref, className: cn(itemStyle2, inset && "pl-8", className), ...props }));
1559
1716
  DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
1560
- var DropdownMenuCheckboxItem = React131__default.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.CheckboxItem, { ref, className: cn(itemStyle2, "pl-8", className), checked, ...props, children: [
1717
+ var DropdownMenuCheckboxItem = React136__default.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.CheckboxItem, { ref, className: cn(itemStyle2, "pl-8", className), checked, ...props, children: [
1561
1718
  /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) }) }),
1562
1719
  children
1563
1720
  ] }));
1564
1721
  DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1565
- var DropdownMenuRadioItem = React131__default.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.RadioItem, { ref, className: cn(itemStyle2, "pl-8", className), ...props, children: [
1722
+ var DropdownMenuRadioItem = React136__default.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.RadioItem, { ref, className: cn(itemStyle2, "pl-8", className), ...props, children: [
1566
1723
  /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { className: "h-2 w-2 fill-current" }) }) }),
1567
1724
  children
1568
1725
  ] }));
1569
1726
  DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
1570
- var DropdownMenuLabel = React131__default.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Label, { ref, className: cn("px-2 py-1.5 text-xs font-semibold text-[hsl(var(--muted-foreground))]", inset && "pl-8", className), ...props }));
1727
+ var DropdownMenuLabel = React136__default.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Label, { ref, className: cn("px-2 py-1.5 text-xs font-semibold text-[hsl(var(--muted-foreground))]", inset && "pl-8", className), ...props }));
1571
1728
  DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
1572
- var DropdownMenuSeparator = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-[hsl(var(--muted))]", className), ...props }));
1729
+ var DropdownMenuSeparator = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-[hsl(var(--muted))]", className), ...props }));
1573
1730
  DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
1574
- var DropdownMenuSubTrigger = React131__default.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.SubTrigger, { ref, className: cn(itemStyle2, inset && "pl-8", "data-[state=open]:bg-[hsl(var(--accent))]", className), ...props, children: [
1731
+ var DropdownMenuSubTrigger = React136__default.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.SubTrigger, { ref, className: cn(itemStyle2, inset && "pl-8", "data-[state=open]:bg-[hsl(var(--accent))]", className), ...props, children: [
1575
1732
  children,
1576
1733
  /* @__PURE__ */ jsx(ChevronRight, { className: "ml-auto h-4 w-4" })
1577
1734
  ] }));
1578
1735
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1579
- var DropdownMenuSubContent = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.SubContent, { ref, className: cn(contentStyle2, className), ...props }));
1736
+ var DropdownMenuSubContent = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.SubContent, { ref, className: cn(contentStyle2, className), ...props }));
1580
1737
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
1581
1738
  var DropdownMenuShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx("span", { className: cn("ml-auto text-xs tracking-widest opacity-60", className), ...props });
1582
1739
  DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1583
- var labelVariants = cva(
1584
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1585
- );
1586
- var Label3 = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1587
- LabelPrimitive.Root,
1588
- {
1589
- ref,
1590
- className: cn(labelVariants(), className),
1740
+ var EmptyCart = React136__default.forwardRef(
1741
+ ({
1742
+ title = "Your cart is empty",
1743
+ description = "Browse the catalog and add something you love.",
1744
+ actionLabel = "Continue shopping",
1745
+ onAction,
1746
+ icon,
1747
+ className,
1591
1748
  ...props
1749
+ }, ref) => {
1750
+ return /* @__PURE__ */ jsxs(
1751
+ "div",
1752
+ {
1753
+ ref,
1754
+ className: cn("flex flex-col items-center justify-center gap-4 px-6 py-12 text-center", className),
1755
+ ...props,
1756
+ children: [
1757
+ /* @__PURE__ */ jsx("div", { className: "flex h-14 w-14 items-center justify-center rounded-full bg-[hsl(var(--muted))] text-[hsl(var(--muted-foreground))]", children: icon ?? /* @__PURE__ */ jsx(ShoppingCart, { className: "h-6 w-6", strokeWidth: 1.5 }) }),
1758
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
1759
+ /* @__PURE__ */ jsx("span", { className: "text-base font-semibold text-foreground", children: title }),
1760
+ description && /* @__PURE__ */ jsx("span", { className: "max-w-xs text-sm text-muted-foreground", children: description })
1761
+ ] }),
1762
+ actionLabel && onAction && /* @__PURE__ */ jsx(Button, { onClick: onAction, className: "mt-1", children: actionLabel })
1763
+ ]
1764
+ }
1765
+ );
1592
1766
  }
1593
- ));
1594
- Label3.displayName = LabelPrimitive.Root.displayName;
1595
- var FormFieldContext = React131.createContext(null);
1596
- var useFormField = () => {
1597
- const fieldContext = React131.useContext(FormFieldContext);
1598
- const itemContext = React131.useContext(FormItemContext);
1599
- const { getFieldState, formState } = useFormContext();
1600
- if (!fieldContext) {
1601
- throw new Error("useFormField should be used within <FormField>");
1602
- }
1603
- if (!itemContext) {
1604
- throw new Error("useFormField should be used within <FormItem>");
1605
- }
1606
- const fieldState = getFieldState(fieldContext.name, formState);
1607
- const { id } = itemContext;
1608
- return {
1609
- id,
1610
- name: fieldContext.name,
1611
- formItemId: `${id}-form-item`,
1612
- formDescriptionId: `${id}-form-item-description`,
1613
- formMessageId: `${id}-form-item-message`,
1614
- ...fieldState
1615
- };
1616
- };
1617
- var FormItemContext = React131.createContext(null);
1618
- var FormItem = React131.forwardRef(({ className, ...props }, ref) => {
1619
- const id = React131.useId();
1620
- return /* @__PURE__ */ jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-2", className), ...props }) });
1621
- });
1622
- FormItem.displayName = "FormItem";
1623
- var FormLabel = React131.forwardRef(({ className, ...props }, ref) => {
1624
- const { error, formItemId } = useFormField();
1625
- return /* @__PURE__ */ jsx(
1626
- Label3,
1627
- {
1628
- ref,
1629
- className: cn(error && "text-destructive", className),
1630
- htmlFor: formItemId,
1631
- ...props
1632
- }
1633
- );
1634
- });
1635
- FormLabel.displayName = "FormLabel";
1636
- var FormControl = React131.forwardRef(({ ...props }, ref) => {
1637
- const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
1638
- return /* @__PURE__ */ jsx(
1639
- Slot,
1640
- {
1641
- ref,
1642
- id: formItemId,
1643
- "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
1644
- "aria-invalid": !!error,
1645
- ...props
1646
- }
1647
- );
1648
- });
1649
- FormControl.displayName = "FormControl";
1650
- var FormDescription = React131.forwardRef(({ className, ...props }, ref) => {
1651
- const { formDescriptionId } = useFormField();
1652
- return /* @__PURE__ */ jsx(
1653
- "p",
1654
- {
1655
- ref,
1656
- id: formDescriptionId,
1657
- className: cn("text-[0.8rem] text-muted-foreground", className),
1658
- ...props
1659
- }
1660
- );
1661
- });
1662
- FormDescription.displayName = "FormDescription";
1663
- var FormMessage = React131.forwardRef(({ className, children, ...props }, ref) => {
1664
- const { error, formMessageId } = useFormField();
1665
- const body = error ? String(error?.message ?? "") : children;
1666
- if (!body) {
1667
- return null;
1668
- }
1669
- return /* @__PURE__ */ jsx(
1670
- "p",
1671
- {
1672
- ref,
1673
- id: formMessageId,
1674
- className: cn("text-[0.8rem] font-medium text-destructive", className),
1675
- ...props,
1676
- children: body
1677
- }
1678
- );
1679
- });
1680
- FormMessage.displayName = "FormMessage";
1767
+ );
1768
+ EmptyCart.displayName = "EmptyCart";
1681
1769
  var HoverCard = HoverCardPrimitive.Root;
1682
1770
  var HoverCardTrigger = HoverCardPrimitive.Trigger;
1683
- var HoverCardContent = React131.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
1771
+ var HoverCardContent = React136.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
1684
1772
  HoverCardPrimitive.Content,
1685
1773
  {
1686
1774
  ref,
@@ -1694,7 +1782,7 @@ var HoverCardContent = React131.forwardRef(({ className, align = "center", sideO
1694
1782
  }
1695
1783
  ));
1696
1784
  HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
1697
- var InputOTP = React131.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx(
1785
+ var InputOTP = React136.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx(
1698
1786
  OTPInput,
1699
1787
  {
1700
1788
  ref,
@@ -1707,10 +1795,10 @@ var InputOTP = React131.forwardRef(({ className, containerClassName, ...props },
1707
1795
  }
1708
1796
  ));
1709
1797
  InputOTP.displayName = "InputOTP";
1710
- var InputOTPGroup = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center", className), ...props }));
1798
+ var InputOTPGroup = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center", className), ...props }));
1711
1799
  InputOTPGroup.displayName = "InputOTPGroup";
1712
- var InputOTPSlot = React131.forwardRef(({ index, className, ...props }, ref) => {
1713
- const inputOTPContext = React131.useContext(OTPInputContext);
1800
+ var InputOTPSlot = React136.forwardRef(({ index, className, ...props }, ref) => {
1801
+ const inputOTPContext = React136.useContext(OTPInputContext);
1714
1802
  const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
1715
1803
  return /* @__PURE__ */ jsxs(
1716
1804
  "div",
@@ -1730,9 +1818,9 @@ var InputOTPSlot = React131.forwardRef(({ index, className, ...props }, ref) =>
1730
1818
  );
1731
1819
  });
1732
1820
  InputOTPSlot.displayName = "InputOTPSlot";
1733
- var InputOTPSeparator = React131.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx(Minus, {}) }));
1821
+ var InputOTPSeparator = React136.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx(Minus, {}) }));
1734
1822
  InputOTPSeparator.displayName = "InputOTPSeparator";
1735
- var Input = React131__default.forwardRef(
1823
+ var Input = React136__default.forwardRef(
1736
1824
  ({ className, type, ...props }, ref) => /* @__PURE__ */ jsx(
1737
1825
  "input",
1738
1826
  {
@@ -1751,7 +1839,19 @@ var Input = React131__default.forwardRef(
1751
1839
  )
1752
1840
  );
1753
1841
  Input.displayName = "Input";
1754
- var LogoCarousel = React131__default.forwardRef(
1842
+ var labelVariants = cva(
1843
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1844
+ );
1845
+ var Label3 = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1846
+ LabelPrimitive.Root,
1847
+ {
1848
+ ref,
1849
+ className: cn(labelVariants(), className),
1850
+ ...props
1851
+ }
1852
+ ));
1853
+ Label3.displayName = LabelPrimitive.Root.displayName;
1854
+ var LogoCarousel = React136__default.forwardRef(
1755
1855
  ({
1756
1856
  className,
1757
1857
  logos,
@@ -1845,7 +1945,7 @@ var SPEED_DURATION = {
1845
1945
  normal: "40s",
1846
1946
  fast: "20s"
1847
1947
  };
1848
- var Marquee = React131__default.forwardRef(
1948
+ var Marquee = React136__default.forwardRef(
1849
1949
  ({
1850
1950
  children,
1851
1951
  speed = "normal",
@@ -1909,7 +2009,7 @@ function MenubarSub({
1909
2009
  }) {
1910
2010
  return /* @__PURE__ */ jsx(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
1911
2011
  }
1912
- var Menubar = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2012
+ var Menubar = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1913
2013
  MenubarPrimitive.Root,
1914
2014
  {
1915
2015
  ref,
@@ -1921,7 +2021,7 @@ var Menubar = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__
1921
2021
  }
1922
2022
  ));
1923
2023
  Menubar.displayName = MenubarPrimitive.Root.displayName;
1924
- var MenubarTrigger = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2024
+ var MenubarTrigger = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1925
2025
  MenubarPrimitive.Trigger,
1926
2026
  {
1927
2027
  ref,
@@ -1933,7 +2033,7 @@ var MenubarTrigger = React131.forwardRef(({ className, ...props }, ref) => /* @_
1933
2033
  }
1934
2034
  ));
1935
2035
  MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
1936
- var MenubarSubTrigger = React131.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2036
+ var MenubarSubTrigger = React136.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1937
2037
  MenubarPrimitive.SubTrigger,
1938
2038
  {
1939
2039
  ref,
@@ -1950,7 +2050,7 @@ var MenubarSubTrigger = React131.forwardRef(({ className, inset, children, ...pr
1950
2050
  }
1951
2051
  ));
1952
2052
  MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
1953
- var MenubarSubContent = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2053
+ var MenubarSubContent = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1954
2054
  MenubarPrimitive.SubContent,
1955
2055
  {
1956
2056
  ref,
@@ -1962,7 +2062,7 @@ var MenubarSubContent = React131.forwardRef(({ className, ...props }, ref) => /*
1962
2062
  }
1963
2063
  ));
1964
2064
  MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
1965
- var MenubarContent = React131.forwardRef(
2065
+ var MenubarContent = React136.forwardRef(
1966
2066
  ({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1967
2067
  MenubarPrimitive.Content,
1968
2068
  {
@@ -1979,7 +2079,7 @@ var MenubarContent = React131.forwardRef(
1979
2079
  ) })
1980
2080
  );
1981
2081
  MenubarContent.displayName = MenubarPrimitive.Content.displayName;
1982
- var MenubarItem = React131.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
2082
+ var MenubarItem = React136.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
1983
2083
  MenubarPrimitive.Item,
1984
2084
  {
1985
2085
  ref,
@@ -1992,7 +2092,7 @@ var MenubarItem = React131.forwardRef(({ className, inset, ...props }, ref) => /
1992
2092
  }
1993
2093
  ));
1994
2094
  MenubarItem.displayName = MenubarPrimitive.Item.displayName;
1995
- var MenubarCheckboxItem = React131.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
2095
+ var MenubarCheckboxItem = React136.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
1996
2096
  MenubarPrimitive.CheckboxItem,
1997
2097
  {
1998
2098
  ref,
@@ -2009,7 +2109,7 @@ var MenubarCheckboxItem = React131.forwardRef(({ className, children, checked, .
2009
2109
  }
2010
2110
  ));
2011
2111
  MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
2012
- var MenubarRadioItem = React131.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2112
+ var MenubarRadioItem = React136.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2013
2113
  MenubarPrimitive.RadioItem,
2014
2114
  {
2015
2115
  ref,
@@ -2025,7 +2125,7 @@ var MenubarRadioItem = React131.forwardRef(({ className, children, ...props }, r
2025
2125
  }
2026
2126
  ));
2027
2127
  MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
2028
- var MenubarLabel = React131.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
2128
+ var MenubarLabel = React136.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
2029
2129
  MenubarPrimitive.Label,
2030
2130
  {
2031
2131
  ref,
@@ -2038,7 +2138,7 @@ var MenubarLabel = React131.forwardRef(({ className, inset, ...props }, ref) =>
2038
2138
  }
2039
2139
  ));
2040
2140
  MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
2041
- var MenubarSeparator = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2141
+ var MenubarSeparator = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2042
2142
  MenubarPrimitive.Separator,
2043
2143
  {
2044
2144
  ref,
@@ -2063,7 +2163,7 @@ var MenubarShortcut = ({
2063
2163
  );
2064
2164
  };
2065
2165
  MenubarShortcut.displayname = "MenubarShortcut";
2066
- var NavigationMenu = React131.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2166
+ var NavigationMenu = React136.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2067
2167
  NavigationMenuPrimitive.Root,
2068
2168
  {
2069
2169
  ref,
@@ -2079,7 +2179,7 @@ var NavigationMenu = React131.forwardRef(({ className, children, ...props }, ref
2079
2179
  }
2080
2180
  ));
2081
2181
  NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
2082
- var NavigationMenuList = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2182
+ var NavigationMenuList = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2083
2183
  NavigationMenuPrimitive.List,
2084
2184
  {
2085
2185
  ref,
@@ -2095,7 +2195,7 @@ var NavigationMenuItem = NavigationMenuPrimitive.Item;
2095
2195
  var navigationMenuTriggerStyle = cva(
2096
2196
  "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent"
2097
2197
  );
2098
- var NavigationMenuTrigger = React131.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2198
+ var NavigationMenuTrigger = React136.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2099
2199
  NavigationMenuPrimitive.Trigger,
2100
2200
  {
2101
2201
  ref,
@@ -2115,7 +2215,7 @@ var NavigationMenuTrigger = React131.forwardRef(({ className, children, ...props
2115
2215
  }
2116
2216
  ));
2117
2217
  NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
2118
- var NavigationMenuContent = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2218
+ var NavigationMenuContent = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2119
2219
  NavigationMenuPrimitive.Content,
2120
2220
  {
2121
2221
  ref,
@@ -2128,7 +2228,7 @@ var NavigationMenuContent = React131.forwardRef(({ className, ...props }, ref) =
2128
2228
  ));
2129
2229
  NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
2130
2230
  var NavigationMenuLink = NavigationMenuPrimitive.Link;
2131
- var NavigationMenuViewport = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx(
2231
+ var NavigationMenuViewport = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx(
2132
2232
  NavigationMenuPrimitive.Viewport,
2133
2233
  {
2134
2234
  className: cn(
@@ -2140,7 +2240,7 @@ var NavigationMenuViewport = React131.forwardRef(({ className, ...props }, ref)
2140
2240
  }
2141
2241
  ) }));
2142
2242
  NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
2143
- var NavigationMenuIndicator = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2243
+ var NavigationMenuIndicator = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2144
2244
  NavigationMenuPrimitive.Indicator,
2145
2245
  {
2146
2246
  ref,
@@ -2163,7 +2263,7 @@ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx(
2163
2263
  }
2164
2264
  );
2165
2265
  Pagination.displayName = "Pagination";
2166
- var PaginationContent = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2266
+ var PaginationContent = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2167
2267
  "ul",
2168
2268
  {
2169
2269
  ref,
@@ -2172,7 +2272,7 @@ var PaginationContent = React131.forwardRef(({ className, ...props }, ref) => /*
2172
2272
  }
2173
2273
  ));
2174
2274
  PaginationContent.displayName = "PaginationContent";
2175
- var PaginationItem = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("li", { ref, className: cn("", className), ...props }));
2275
+ var PaginationItem = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("li", { ref, className: cn("", className), ...props }));
2176
2276
  PaginationItem.displayName = "PaginationItem";
2177
2277
  var PaginationLink = ({
2178
2278
  className,
@@ -2247,7 +2347,7 @@ PaginationEllipsis.displayName = "PaginationEllipsis";
2247
2347
  var Popover = PopoverPrimitive.Root;
2248
2348
  var PopoverTrigger = PopoverPrimitive.Trigger;
2249
2349
  var PopoverAnchor = PopoverPrimitive.Anchor;
2250
- var PopoverContent = React131__default.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2350
+ var PopoverContent = React136__default.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2251
2351
  PopoverPrimitive.Content,
2252
2352
  {
2253
2353
  ref,
@@ -2264,7 +2364,7 @@ var PopoverContent = React131__default.forwardRef(({ className, align = "center"
2264
2364
  }
2265
2365
  ) }));
2266
2366
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
2267
- var Progress = React131__default.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx(
2367
+ var Progress = React136__default.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx(
2268
2368
  ProgressPrimitive.Root,
2269
2369
  {
2270
2370
  ref,
@@ -2280,7 +2380,7 @@ var Progress = React131__default.forwardRef(({ className, value, ...props }, ref
2280
2380
  }
2281
2381
  ));
2282
2382
  Progress.displayName = ProgressPrimitive.Root.displayName;
2283
- var QrCode = React131__default.forwardRef(
2383
+ var QrCode = React136__default.forwardRef(
2284
2384
  ({
2285
2385
  value,
2286
2386
  size = 192,
@@ -2337,9 +2437,9 @@ var QrCode = React131__default.forwardRef(
2337
2437
  }
2338
2438
  );
2339
2439
  QrCode.displayName = "QrCode";
2340
- var RadioGroup4 = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, { className: cn("grid gap-2", className), ref, ...props }));
2440
+ var RadioGroup4 = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, { className: cn("grid gap-2", className), ref, ...props }));
2341
2441
  RadioGroup4.displayName = RadioGroupPrimitive.Root.displayName;
2342
- var RadioGroupItem = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2442
+ var RadioGroupItem = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2343
2443
  RadioGroupPrimitive.Item,
2344
2444
  {
2345
2445
  ref,
@@ -2354,12 +2454,12 @@ var RadioGroupItem = React131__default.forwardRef(({ className, ...props }, ref)
2354
2454
  }
2355
2455
  ));
2356
2456
  RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
2357
- var SIZE = {
2457
+ var SIZE2 = {
2358
2458
  sm: "h-4 w-4",
2359
2459
  md: "h-5 w-5",
2360
2460
  lg: "h-6 w-6"
2361
2461
  };
2362
- var Rating = React131__default.forwardRef(
2462
+ var Rating = React136__default.forwardRef(
2363
2463
  ({
2364
2464
  value: valueProp,
2365
2465
  defaultValue = 0,
@@ -2375,10 +2475,10 @@ var Rating = React131__default.forwardRef(
2375
2475
  ...props
2376
2476
  }, ref) => {
2377
2477
  const isControlled = valueProp !== void 0;
2378
- const [internal, setInternal] = React131__default.useState(defaultValue);
2478
+ const [internal, setInternal] = React136__default.useState(defaultValue);
2379
2479
  const value = isControlled ? valueProp : internal;
2380
2480
  const step = allowHalf ? 0.5 : 1;
2381
- const commit = React131__default.useCallback(
2481
+ const commit = React136__default.useCallback(
2382
2482
  (next) => {
2383
2483
  const clamped = Math.max(0, Math.min(max, next));
2384
2484
  if (!isControlled) setInternal(clamped);
@@ -2425,13 +2525,13 @@ var Rating = React131__default.forwardRef(
2425
2525
  children: Array.from({ length: max }).map((_, i) => {
2426
2526
  const fillPercent = Math.max(0, Math.min(1, value - i)) * 100;
2427
2527
  const Icon2 = /* @__PURE__ */ jsxs("span", { className: "relative inline-block leading-none", children: [
2428
- /* @__PURE__ */ jsx("span", { className: cn("block text-muted-foreground/40", SIZE[size]), children: emptyIcon ?? /* @__PURE__ */ jsx(Star, { className: "h-full w-full", strokeWidth: 1.5 }) }),
2528
+ /* @__PURE__ */ jsx("span", { className: cn("block text-muted-foreground/40", SIZE2[size]), children: emptyIcon ?? /* @__PURE__ */ jsx(Star, { className: "h-full w-full", strokeWidth: 1.5 }) }),
2429
2529
  /* @__PURE__ */ jsx(
2430
2530
  "span",
2431
2531
  {
2432
2532
  className: cn(
2433
2533
  "absolute inset-0 overflow-hidden text-[hsl(var(--primary))]",
2434
- SIZE[size]
2534
+ SIZE2[size]
2435
2535
  ),
2436
2536
  style: { width: `${fillPercent}%` },
2437
2537
  "aria-hidden": "true",
@@ -2492,7 +2592,7 @@ var ResizableHandle = ({
2492
2592
  children: withHandle && /* @__PURE__ */ jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsx(GripVertical, { className: "h-2.5 w-2.5" }) })
2493
2593
  }
2494
2594
  );
2495
- var ScrollArea = React131.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2595
+ var ScrollArea = React136.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2496
2596
  ScrollAreaPrimitive.Root,
2497
2597
  {
2498
2598
  ref,
@@ -2506,7 +2606,7 @@ var ScrollArea = React131.forwardRef(({ className, children, ...props }, ref) =>
2506
2606
  }
2507
2607
  ));
2508
2608
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
2509
- var ScrollBar = React131.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx(
2609
+ var ScrollBar = React136.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx(
2510
2610
  ScrollAreaPrimitive.ScrollAreaScrollbar,
2511
2611
  {
2512
2612
  ref,
@@ -2525,7 +2625,7 @@ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
2525
2625
  var Select = SelectPrimitive.Root;
2526
2626
  var SelectGroup = SelectPrimitive.Group;
2527
2627
  var SelectValue = SelectPrimitive.Value;
2528
- var SelectTrigger = React131__default.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2628
+ var SelectTrigger = React136__default.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2529
2629
  SelectPrimitive.Trigger,
2530
2630
  {
2531
2631
  ref,
@@ -2545,7 +2645,7 @@ var SelectTrigger = React131__default.forwardRef(({ className, children, ...prop
2545
2645
  }
2546
2646
  ));
2547
2647
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
2548
- var SelectScrollUpButton = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2648
+ var SelectScrollUpButton = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2549
2649
  SelectPrimitive.ScrollUpButton,
2550
2650
  {
2551
2651
  ref,
@@ -2555,7 +2655,7 @@ var SelectScrollUpButton = React131__default.forwardRef(({ className, ...props }
2555
2655
  }
2556
2656
  ));
2557
2657
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
2558
- var SelectScrollDownButton = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2658
+ var SelectScrollDownButton = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2559
2659
  SelectPrimitive.ScrollDownButton,
2560
2660
  {
2561
2661
  ref,
@@ -2565,7 +2665,7 @@ var SelectScrollDownButton = React131__default.forwardRef(({ className, ...props
2565
2665
  }
2566
2666
  ));
2567
2667
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
2568
- var SelectContent = React131__default.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
2668
+ var SelectContent = React136__default.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
2569
2669
  SelectPrimitive.Content,
2570
2670
  {
2571
2671
  ref,
@@ -2592,7 +2692,7 @@ var SelectContent = React131__default.forwardRef(({ className, children, positio
2592
2692
  }
2593
2693
  ) }));
2594
2694
  SelectContent.displayName = SelectPrimitive.Content.displayName;
2595
- var SelectLabel = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2695
+ var SelectLabel = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2596
2696
  SelectPrimitive.Label,
2597
2697
  {
2598
2698
  ref,
@@ -2601,7 +2701,7 @@ var SelectLabel = React131__default.forwardRef(({ className, ...props }, ref) =>
2601
2701
  }
2602
2702
  ));
2603
2703
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
2604
- var SelectItem = React131__default.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2704
+ var SelectItem = React136__default.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
2605
2705
  SelectPrimitive.Item,
2606
2706
  {
2607
2707
  ref,
@@ -2619,7 +2719,7 @@ var SelectItem = React131__default.forwardRef(({ className, children, ...props }
2619
2719
  }
2620
2720
  ));
2621
2721
  SelectItem.displayName = SelectPrimitive.Item.displayName;
2622
- var SelectSeparator = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2722
+ var SelectSeparator = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2623
2723
  SelectPrimitive.Separator,
2624
2724
  {
2625
2725
  ref,
@@ -2628,7 +2728,7 @@ var SelectSeparator = React131__default.forwardRef(({ className, ...props }, ref
2628
2728
  }
2629
2729
  ));
2630
2730
  SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
2631
- var Separator6 = React131__default.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
2731
+ var Separator6 = React136__default.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
2632
2732
  SeparatorPrimitive.Root,
2633
2733
  {
2634
2734
  ref,
@@ -2647,7 +2747,7 @@ var Sheet = DialogPrimitive.Root;
2647
2747
  var SheetTrigger = DialogPrimitive.Trigger;
2648
2748
  var SheetClose = DialogPrimitive.Close;
2649
2749
  var SheetPortal = DialogPrimitive.Portal;
2650
- var SheetOverlay = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2750
+ var SheetOverlay = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2651
2751
  DialogPrimitive.Overlay,
2652
2752
  {
2653
2753
  ref,
@@ -2675,7 +2775,7 @@ var sheetVariants = cva(
2675
2775
  defaultVariants: { side: "right" }
2676
2776
  }
2677
2777
  );
2678
- var SheetContent = React131__default.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
2778
+ var SheetContent = React136__default.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
2679
2779
  /* @__PURE__ */ jsx(SheetOverlay, {}),
2680
2780
  /* @__PURE__ */ jsxs(DialogPrimitive.Content, { ref, className: cn(sheetVariants({ side }), className), ...props, children: [
2681
2781
  /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[hsl(var(--ring))]", children: [
@@ -2688,9 +2788,9 @@ var SheetContent = React131__default.forwardRef(({ side = "right", className, ch
2688
2788
  SheetContent.displayName = DialogPrimitive.Content.displayName;
2689
2789
  var SheetHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col space-y-2 text-center sm:text-left", className), ...props });
2690
2790
  var SheetFooter = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
2691
- var SheetTitle = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Title, { ref, className: cn("text-lg font-semibold", className), ...props }));
2791
+ var SheetTitle = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Title, { ref, className: cn("text-lg font-semibold", className), ...props }));
2692
2792
  SheetTitle.displayName = DialogPrimitive.Title.displayName;
2693
- var SheetDescription = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Description, { ref, className: cn("text-sm text-[hsl(var(--muted-foreground))]", className), ...props }));
2793
+ var SheetDescription = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Description, { ref, className: cn("text-sm text-[hsl(var(--muted-foreground))]", className), ...props }));
2694
2794
  SheetDescription.displayName = DialogPrimitive.Description.displayName;
2695
2795
  function Skeleton({ className, ...props }) {
2696
2796
  return /* @__PURE__ */ jsx(
@@ -2701,7 +2801,7 @@ function Skeleton({ className, ...props }) {
2701
2801
  }
2702
2802
  );
2703
2803
  }
2704
- var Slider = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(
2804
+ var Slider = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(
2705
2805
  SliderPrimitive.Root,
2706
2806
  {
2707
2807
  ref,
@@ -2725,7 +2825,7 @@ function Spinner({ className, ...props }) {
2725
2825
  }
2726
2826
  );
2727
2827
  }
2728
- var Switch = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2828
+ var Switch = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2729
2829
  SwitchPrimitive.Root,
2730
2830
  {
2731
2831
  ref,
@@ -2751,7 +2851,7 @@ var Switch = React131__default.forwardRef(({ className, ...props }, ref) => /* @
2751
2851
  }
2752
2852
  ));
2753
2853
  Switch.displayName = SwitchPrimitive.Root.displayName;
2754
- var Table = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx(
2854
+ var Table = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx(
2755
2855
  "table",
2756
2856
  {
2757
2857
  ref,
@@ -2760,9 +2860,9 @@ var Table = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
2760
2860
  }
2761
2861
  ) }));
2762
2862
  Table.displayName = "Table";
2763
- var TableHeader = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
2863
+ var TableHeader = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
2764
2864
  TableHeader.displayName = "TableHeader";
2765
- var TableBody = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2865
+ var TableBody = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2766
2866
  "tbody",
2767
2867
  {
2768
2868
  ref,
@@ -2771,7 +2871,7 @@ var TableBody = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE
2771
2871
  }
2772
2872
  ));
2773
2873
  TableBody.displayName = "TableBody";
2774
- var TableFooter = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2874
+ var TableFooter = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2775
2875
  "tfoot",
2776
2876
  {
2777
2877
  ref,
@@ -2783,7 +2883,7 @@ var TableFooter = React131.forwardRef(({ className, ...props }, ref) => /* @__PU
2783
2883
  }
2784
2884
  ));
2785
2885
  TableFooter.displayName = "TableFooter";
2786
- var TableRow = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2886
+ var TableRow = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2787
2887
  "tr",
2788
2888
  {
2789
2889
  ref,
@@ -2795,7 +2895,7 @@ var TableRow = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE_
2795
2895
  }
2796
2896
  ));
2797
2897
  TableRow.displayName = "TableRow";
2798
- var TableHead = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2898
+ var TableHead = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2799
2899
  "th",
2800
2900
  {
2801
2901
  ref,
@@ -2807,7 +2907,7 @@ var TableHead = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE
2807
2907
  }
2808
2908
  ));
2809
2909
  TableHead.displayName = "TableHead";
2810
- var TableCell = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2910
+ var TableCell = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2811
2911
  "td",
2812
2912
  {
2813
2913
  ref,
@@ -2819,7 +2919,7 @@ var TableCell = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE
2819
2919
  }
2820
2920
  ));
2821
2921
  TableCell.displayName = "TableCell";
2822
- var TableCaption = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2922
+ var TableCaption = React136.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2823
2923
  "caption",
2824
2924
  {
2825
2925
  ref,
@@ -2829,7 +2929,7 @@ var TableCaption = React131.forwardRef(({ className, ...props }, ref) => /* @__P
2829
2929
  ));
2830
2930
  TableCaption.displayName = "TableCaption";
2831
2931
  var Tabs = TabsPrimitive.Root;
2832
- var TabsList = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2932
+ var TabsList = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2833
2933
  TabsPrimitive.List,
2834
2934
  {
2835
2935
  ref,
@@ -2841,7 +2941,7 @@ var TabsList = React131__default.forwardRef(({ className, ...props }, ref) => /*
2841
2941
  }
2842
2942
  ));
2843
2943
  TabsList.displayName = TabsPrimitive.List.displayName;
2844
- var TabsTrigger = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2944
+ var TabsTrigger = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2845
2945
  TabsPrimitive.Trigger,
2846
2946
  {
2847
2947
  ref,
@@ -2856,7 +2956,7 @@ var TabsTrigger = React131__default.forwardRef(({ className, ...props }, ref) =>
2856
2956
  }
2857
2957
  ));
2858
2958
  TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
2859
- var TabsContent = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2959
+ var TabsContent = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2860
2960
  TabsPrimitive.Content,
2861
2961
  {
2862
2962
  ref,
@@ -2868,7 +2968,7 @@ var TabsContent = React131__default.forwardRef(({ className, ...props }, ref) =>
2868
2968
  }
2869
2969
  ));
2870
2970
  TabsContent.displayName = TabsPrimitive.Content.displayName;
2871
- var Textarea = React131__default.forwardRef(
2971
+ var Textarea = React136__default.forwardRef(
2872
2972
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2873
2973
  "textarea",
2874
2974
  {
@@ -2886,7 +2986,7 @@ var Textarea = React131__default.forwardRef(
2886
2986
  )
2887
2987
  );
2888
2988
  Textarea.displayName = "Textarea";
2889
- var TextureCard = React131.forwardRef(
2989
+ var TextureCard = React136.forwardRef(
2890
2990
  ({ children, className, padding = true, ...props }, ref) => /* @__PURE__ */ jsx(
2891
2991
  "div",
2892
2992
  {
@@ -2903,15 +3003,15 @@ var TextureCard = React131.forwardRef(
2903
3003
  )
2904
3004
  );
2905
3005
  TextureCard.displayName = "TextureCard";
2906
- var TextureCardHeader = React131.forwardRef(
3006
+ var TextureCardHeader = React136.forwardRef(
2907
3007
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col gap-1.5 mb-4", className), ...props })
2908
3008
  );
2909
3009
  TextureCardHeader.displayName = "TextureCardHeader";
2910
- var TextureCardTitle = React131.forwardRef(
3010
+ var TextureCardTitle = React136.forwardRef(
2911
3011
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("h3", { ref, className: cn("font-semibold text-base leading-tight tracking-tight text-foreground", className), ...props })
2912
3012
  );
2913
3013
  TextureCardTitle.displayName = "TextureCardTitle";
2914
- var TextureCardDescription = React131.forwardRef(
3014
+ var TextureCardDescription = React136.forwardRef(
2915
3015
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("p", { ref, className: cn("text-sm text-muted-foreground", className), ...props })
2916
3016
  );
2917
3017
  TextureCardDescription.displayName = "TextureCardDescription";
@@ -2935,7 +3035,7 @@ var toggleVariants = cva(
2935
3035
  }
2936
3036
  }
2937
3037
  );
2938
- var Toggle = React131.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx(
3038
+ var Toggle = React136.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx(
2939
3039
  TogglePrimitive.Root,
2940
3040
  {
2941
3041
  ref,
@@ -2944,11 +3044,11 @@ var Toggle = React131.forwardRef(({ className, variant, size, ...props }, ref) =
2944
3044
  }
2945
3045
  ));
2946
3046
  Toggle.displayName = TogglePrimitive.Root.displayName;
2947
- var ToggleGroupContext = React131.createContext({
3047
+ var ToggleGroupContext = React136.createContext({
2948
3048
  size: "default",
2949
3049
  variant: "default"
2950
3050
  });
2951
- var ToggleGroup = React131.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx(
3051
+ var ToggleGroup = React136.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx(
2952
3052
  ToggleGroupPrimitive.Root,
2953
3053
  {
2954
3054
  ref,
@@ -2958,8 +3058,8 @@ var ToggleGroup = React131.forwardRef(({ className, variant, size, children, ...
2958
3058
  }
2959
3059
  ));
2960
3060
  ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
2961
- var ToggleGroupItem = React131.forwardRef(({ className, children, variant, size, ...props }, ref) => {
2962
- const context = React131.useContext(ToggleGroupContext);
3061
+ var ToggleGroupItem = React136.forwardRef(({ className, children, variant, size, ...props }, ref) => {
3062
+ const context = React136.useContext(ToggleGroupContext);
2963
3063
  return /* @__PURE__ */ jsx(
2964
3064
  ToggleGroupPrimitive.Item,
2965
3065
  {
@@ -2980,7 +3080,7 @@ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
2980
3080
  var TooltipProvider = TooltipPrimitive.Provider;
2981
3081
  var Tooltip2 = TooltipPrimitive.Root;
2982
3082
  var TooltipTrigger = TooltipPrimitive.Trigger;
2983
- var TooltipContent = React131__default.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
3083
+ var TooltipContent = React136__default.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2984
3084
  TooltipPrimitive.Content,
2985
3085
  {
2986
3086
  ref,
@@ -2996,6 +3096,52 @@ var TooltipContent = React131__default.forwardRef(({ className, sideOffset = 4,
2996
3096
  }
2997
3097
  ) }));
2998
3098
  TooltipContent.displayName = TooltipPrimitive.Content.displayName;
3099
+ var VariantPicker = React136__default.forwardRef(
3100
+ ({ label, options, value: valueProp, defaultValue, onValueChange, className, ...props }, ref) => {
3101
+ const isControlled = valueProp !== void 0;
3102
+ const [internal, setInternal] = React136__default.useState(defaultValue);
3103
+ const value = isControlled ? valueProp : internal;
3104
+ const select = (v) => {
3105
+ if (!isControlled) setInternal(v);
3106
+ onValueChange?.(v);
3107
+ };
3108
+ return /* @__PURE__ */ jsxs("div", { ref, role: "radiogroup", "aria-label": label, className: cn("flex flex-col gap-2", className), ...props, children: [
3109
+ label && /* @__PURE__ */ jsx("span", { className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: label }),
3110
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: options.map((opt) => {
3111
+ const selected = value === opt.value;
3112
+ return /* @__PURE__ */ jsxs(
3113
+ "button",
3114
+ {
3115
+ type: "button",
3116
+ role: "radio",
3117
+ "aria-checked": selected,
3118
+ disabled: opt.disabled,
3119
+ onClick: () => select(opt.value),
3120
+ className: cn(
3121
+ "inline-flex items-center gap-2 rounded-md border px-3 py-1.5 text-sm font-medium transition-colors",
3122
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
3123
+ selected ? "border-primary bg-primary/10 text-[hsl(var(--primary))]" : "border-border hover:bg-accent hover:text-accent-foreground",
3124
+ opt.disabled && "cursor-not-allowed text-muted-foreground line-through opacity-50"
3125
+ ),
3126
+ children: [
3127
+ opt.swatch && /* @__PURE__ */ jsx(
3128
+ "span",
3129
+ {
3130
+ "aria-hidden": "true",
3131
+ className: "h-4 w-4 rounded-full border border-border",
3132
+ style: { backgroundColor: opt.swatch }
3133
+ }
3134
+ ),
3135
+ opt.label
3136
+ ]
3137
+ },
3138
+ opt.value
3139
+ );
3140
+ }) })
3141
+ ] });
3142
+ }
3143
+ );
3144
+ VariantPicker.displayName = "VariantPicker";
2999
3145
  var bannerVariants = cva(
3000
3146
  "relative flex items-start gap-3 rounded-lg border px-4 py-3.5 text-sm transition-all",
3001
3147
  {
@@ -3092,8 +3238,8 @@ function Banner({
3092
3238
  className,
3093
3239
  children
3094
3240
  }) {
3095
- const [dismissed, setDismissed] = React131__default.useState(false);
3096
- const [exiting, setExiting] = React131__default.useState(false);
3241
+ const [dismissed, setDismissed] = React136__default.useState(false);
3242
+ const [exiting, setExiting] = React136__default.useState(false);
3097
3243
  const handleDismiss = () => {
3098
3244
  setExiting(true);
3099
3245
  setTimeout(() => {
@@ -3154,7 +3300,7 @@ function BreadcrumbSeparator({ className }) {
3154
3300
  return /* @__PURE__ */ jsx("li", { role: "presentation", "aria-hidden": "true", className: cn("flex items-center text-[hsl(var(--muted-foreground))]", className), children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-3.5 w-3.5" }) });
3155
3301
  }
3156
3302
  function Breadcrumb({ children, className }) {
3157
- const items = React131__default.Children.toArray(children);
3303
+ const items = React136__default.Children.toArray(children);
3158
3304
  const withSeparators = [];
3159
3305
  items.forEach((item, i) => {
3160
3306
  withSeparators.push(item);
@@ -3162,9 +3308,30 @@ function Breadcrumb({ children, className }) {
3162
3308
  });
3163
3309
  return /* @__PURE__ */ jsx("nav", { "aria-label": "breadcrumb", children: /* @__PURE__ */ jsx("ol", { className: cn("flex flex-wrap items-center gap-1", className), children: withSeparators }) });
3164
3310
  }
3311
+ function CommandItem2({ icon, label, description, shortcut, active, onClick, className }) {
3312
+ return /* @__PURE__ */ jsxs(
3313
+ "div",
3314
+ {
3315
+ onClick,
3316
+ className: cn(
3317
+ "flex items-center gap-3 rounded-md px-3 py-2 cursor-pointer transition-colors",
3318
+ active ? "bg-[hsl(var(--accent))] text-[hsl(var(--accent-foreground))]" : "hover:bg-[hsl(var(--accent)/0.6)]",
3319
+ className
3320
+ ),
3321
+ children: [
3322
+ icon && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-[hsl(var(--muted-foreground))] h-4 w-4 flex items-center justify-center", children: icon }),
3323
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
3324
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium truncate", children: label }),
3325
+ description && /* @__PURE__ */ jsx("p", { className: "text-xs text-[hsl(var(--muted-foreground))] truncate", children: description })
3326
+ ] }),
3327
+ shortcut && /* @__PURE__ */ jsx("kbd", { className: "shrink-0 pointer-events-none inline-flex h-5 items-center gap-1 rounded border border-[hsl(var(--border))] bg-[hsl(var(--muted))] px-1.5 text-[10px] font-medium text-[hsl(var(--muted-foreground))]", children: shortcut })
3328
+ ]
3329
+ }
3330
+ );
3331
+ }
3165
3332
  function EditableCell({ value: initial, onSave }) {
3166
- const [editing, setEditing] = React131__default.useState(false);
3167
- const [val, setVal] = React131__default.useState(String(initial ?? ""));
3333
+ const [editing, setEditing] = React136__default.useState(false);
3334
+ const [val, setVal] = React136__default.useState(String(initial ?? ""));
3168
3335
  const commit = () => {
3169
3336
  onSave(val);
3170
3337
  setEditing(false);
@@ -3195,10 +3362,10 @@ var selectionCol = () => ({
3195
3362
  enableResizing: false
3196
3363
  });
3197
3364
  function DataGrid({ columns, data: initialData, onDataChange, editable, className }) {
3198
- const [data, setData] = React131__default.useState(initialData);
3199
- const [rowSelection, setRowSelection] = React131__default.useState({});
3365
+ const [data, setData] = React136__default.useState(initialData);
3366
+ const [rowSelection, setRowSelection] = React136__default.useState({});
3200
3367
  const columnResizeMode = "onChange";
3201
- const editableColumns = React131__default.useMemo(() => {
3368
+ const editableColumns = React136__default.useMemo(() => {
3202
3369
  if (!editable) return columns;
3203
3370
  return columns.map((col) => ({
3204
3371
  ...col,
@@ -3217,7 +3384,7 @@ function DataGrid({ columns, data: initialData, onDataChange, editable, classNam
3217
3384
  )
3218
3385
  }));
3219
3386
  }, [columns, data, editable, onDataChange]);
3220
- const allColumns = React131__default.useMemo(() => [selectionCol(), ...editableColumns], [editableColumns]);
3387
+ const allColumns = React136__default.useMemo(() => [selectionCol(), ...editableColumns], [editableColumns]);
3221
3388
  const table = useReactTable({
3222
3389
  data,
3223
3390
  columns: allColumns,
@@ -3288,7 +3455,7 @@ function DataTableToolbar({ table, searchColumn }) {
3288
3455
  ) });
3289
3456
  }
3290
3457
  function DataTable({ columns, data, pageSize = 10, searchable, searchColumn, loading }) {
3291
- const [sorting, setSorting] = React131__default.useState([]);
3458
+ const [sorting, setSorting] = React136__default.useState([]);
3292
3459
  const table = useReactTable({
3293
3460
  data,
3294
3461
  columns,
@@ -3313,18 +3480,57 @@ function DataTable({ columns, data, pageSize = 10, searchable, searchColumn, loa
3313
3480
  /* @__PURE__ */ jsx(DataTablePagination, { table })
3314
3481
  ] });
3315
3482
  }
3316
- var EmptyStateIcon = React131__default.forwardRef(
3483
+ var EmptyStateIcon = React136__default.forwardRef(
3317
3484
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex h-12 w-12 items-center justify-center rounded-full bg-[hsl(var(--muted))] text-[hsl(var(--muted-foreground))]", className), ...props })
3318
3485
  );
3319
3486
  EmptyStateIcon.displayName = "EmptyStateIcon";
3320
- function EmptyState({ icon, title, description, action, className }) {
3321
- return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center justify-center gap-3 py-12 text-center", className), children: [
3322
- icon && /* @__PURE__ */ jsx(EmptyStateIcon, { children: icon }),
3323
- /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
3324
- /* @__PURE__ */ jsx("h3", { className: "font-semibold text-[hsl(var(--foreground))]", children: title }),
3325
- description && /* @__PURE__ */ jsx("p", { className: "text-sm text-[hsl(var(--muted-foreground))]", children: description })
3487
+ var sizeMap = {
3488
+ sm: "py-8 gap-2",
3489
+ default: "py-12 gap-3",
3490
+ lg: "py-20 gap-4"
3491
+ };
3492
+ var titleSizeMap = {
3493
+ sm: "text-sm font-semibold",
3494
+ default: "text-base font-semibold",
3495
+ lg: "text-lg font-semibold"
3496
+ };
3497
+ var descSizeMap = {
3498
+ sm: "text-xs",
3499
+ default: "text-sm",
3500
+ lg: "text-base"
3501
+ };
3502
+ var iconSizeMap = {
3503
+ sm: "h-10 w-10",
3504
+ default: "h-12 w-12",
3505
+ lg: "h-16 w-16"
3506
+ };
3507
+ function EmptyState({
3508
+ icon,
3509
+ title,
3510
+ description,
3511
+ action,
3512
+ secondaryAction,
3513
+ size = "default",
3514
+ className
3515
+ }) {
3516
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center justify-center text-center", sizeMap[size], className), children: [
3517
+ icon && /* @__PURE__ */ jsx(EmptyStateIcon, { className: iconSizeMap[size], children: icon }),
3518
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1 max-w-sm", children: [
3519
+ /* @__PURE__ */ jsx("h3", { className: cn(titleSizeMap[size], "text-[hsl(var(--foreground))]"), children: title }),
3520
+ description && /* @__PURE__ */ jsx("p", { className: cn(descSizeMap[size], "text-[hsl(var(--muted-foreground))]"), children: description })
3326
3521
  ] }),
3327
- action && /* @__PURE__ */ jsx(Button, { onClick: action.onClick, className: "mt-1", children: action.label })
3522
+ (action || secondaryAction) && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mt-1", children: [
3523
+ action && /* @__PURE__ */ jsx(Button, { size: size === "sm" ? "sm" : "default", onClick: action.onClick, children: action.label }),
3524
+ secondaryAction && /* @__PURE__ */ jsx(
3525
+ Button,
3526
+ {
3527
+ variant: "outline",
3528
+ size: size === "sm" ? "sm" : "default",
3529
+ onClick: secondaryAction.onClick,
3530
+ children: secondaryAction.label
3531
+ }
3532
+ )
3533
+ ] })
3328
3534
  ] });
3329
3535
  }
3330
3536
  function HotkeyBadge({ children, className }) {
@@ -3344,13 +3550,13 @@ var colorMap = {
3344
3550
  error: "bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400",
3345
3551
  purple: "bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400"
3346
3552
  };
3347
- var sizeMap = {
3553
+ var sizeMap2 = {
3348
3554
  sm: "h-7 w-7 [&>*]:h-3.5 [&>*]:w-3.5",
3349
3555
  md: "h-10 w-10 [&>*]:h-5 [&>*]:w-5",
3350
3556
  lg: "h-14 w-14 [&>*]:h-7 [&>*]:w-7"
3351
3557
  };
3352
3558
  function IconBadge({ icon, color = "default", size = "md", className }) {
3353
- return /* @__PURE__ */ jsx("div", { className: cn("inline-flex items-center justify-center rounded-full shrink-0", colorMap[color], sizeMap[size], className), children: icon });
3559
+ return /* @__PURE__ */ jsx("div", { className: cn("inline-flex items-center justify-center rounded-full shrink-0", colorMap[color], sizeMap2[size], className), children: icon });
3354
3560
  }
3355
3561
  function LoadingOverlay({ loading, text, fullPage, children, className }) {
3356
3562
  if (fullPage) {
@@ -3367,13 +3573,13 @@ function LoadingOverlay({ loading, text, fullPage, children, className }) {
3367
3573
  ] }) })
3368
3574
  ] });
3369
3575
  }
3370
- var sizeMap2 = {
3576
+ var sizeMap3 = {
3371
3577
  sm: { avatar: "h-7 w-7", name: "text-sm", subtitle: "text-xs" },
3372
3578
  md: { avatar: "h-9 w-9", name: "text-sm font-medium", subtitle: "text-xs" },
3373
3579
  lg: { avatar: "h-12 w-12", name: "text-base font-medium", subtitle: "text-sm" }
3374
3580
  };
3375
3581
  function Persona({ name, subtitle, src, size = "md", badge, className }) {
3376
- const s = sizeMap2[size];
3582
+ const s = sizeMap3[size];
3377
3583
  const initials = name.split(" ").map((w) => w[0]).slice(0, 2).join("").toUpperCase();
3378
3584
  return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2.5", className), children: [
3379
3585
  /* @__PURE__ */ jsxs("div", { className: "relative shrink-0", children: [
@@ -3389,7 +3595,7 @@ function Persona({ name, subtitle, src, size = "md", badge, className }) {
3389
3595
  ] })
3390
3596
  ] });
3391
3597
  }
3392
- var PropertyList = React131__default.forwardRef(
3598
+ var PropertyList = React136__default.forwardRef(
3393
3599
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("dl", { ref, className: cn("divide-y divide-[hsl(var(--border))]", className), ...props })
3394
3600
  );
3395
3601
  PropertyList.displayName = "PropertyList";
@@ -3475,7 +3681,7 @@ function StructuredListItem({ left, title, description, right, onClick, classNam
3475
3681
  }
3476
3682
  );
3477
3683
  }
3478
- var StructuredList = React131__default.forwardRef(
3684
+ var StructuredList = React136__default.forwardRef(
3479
3685
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-4", className), ...props })
3480
3686
  );
3481
3687
  StructuredList.displayName = "StructuredList";
@@ -3485,7 +3691,7 @@ var dotColors = {
3485
3691
  error: "bg-red-500",
3486
3692
  warning: "bg-yellow-500"
3487
3693
  };
3488
- var TimelineContent = React131__default.forwardRef(
3694
+ var TimelineContent = React136__default.forwardRef(
3489
3695
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("pb-1", className), ...props })
3490
3696
  );
3491
3697
  TimelineContent.displayName = "TimelineContent";
@@ -3508,9 +3714,9 @@ function TimelineItem({ icon, title, description, timestamp, variant = "default"
3508
3714
  ] });
3509
3715
  }
3510
3716
  function Timeline({ children, className }) {
3511
- const items = React131__default.Children.toArray(children);
3717
+ const items = React136__default.Children.toArray(children);
3512
3718
  return /* @__PURE__ */ jsx("div", { className: cn("", className), children: items.map(
3513
- (child, i) => React131__default.isValidElement(child) ? React131__default.cloneElement(child, { isLast: i === items.length - 1 }) : child
3719
+ (child, i) => React136__default.isValidElement(child) ? React136__default.cloneElement(child, { isLast: i === items.length - 1 }) : child
3514
3720
  ) });
3515
3721
  }
3516
3722
  var INITIAL_MESSAGES = [
@@ -3694,7 +3900,7 @@ function FileRow({ file, onDelete }) {
3694
3900
  ] });
3695
3901
  }
3696
3902
  function FilesList({ className }) {
3697
- const [files, setFiles] = React131__default.useState(FILES2);
3903
+ const [files, setFiles] = React136__default.useState(FILES2);
3698
3904
  return /* @__PURE__ */ jsx("div", { className: cn("rounded-md border border-[hsl(var(--border))] overflow-hidden", className), children: /* @__PURE__ */ jsxs("table", { className: "w-full", children: [
3699
3905
  /* @__PURE__ */ jsx("thead", { className: "bg-[hsl(var(--muted)/0.5)]", children: /* @__PURE__ */ jsx("tr", { children: ["Name", "Type", "Size", "Modified", ""].map((h) => /* @__PURE__ */ jsx("th", { className: "px-4 py-2.5 text-left text-xs font-medium text-[hsl(var(--muted-foreground))]", children: h }, h)) }) }),
3700
3906
  /* @__PURE__ */ jsx("tbody", { children: files.map((f) => /* @__PURE__ */ jsx(FileRow, { file: f, onDelete: () => setFiles((fs) => fs.filter((x) => x.id !== f.id)) }, f.id)) })
@@ -3774,7 +3980,7 @@ function InviteModal({ className }) {
3774
3980
  pending.length > 0 && /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
3775
3981
  /* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-[hsl(var(--muted-foreground))]", children: "Pending invites" }),
3776
3982
  /* @__PURE__ */ jsx("div", { className: "divide-y divide-[hsl(var(--border))] rounded-md border border-[hsl(var(--border))]", children: pending.map((p, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-3 py-2", children: [
3777
- /* @__PURE__ */ jsx(Avatar, { className: "h-6 w-6", children: /* @__PURE__ */ jsx(AvatarFallback, { className: "text-[10px]", children: p.email[0].toUpperCase() }) }),
3983
+ /* @__PURE__ */ jsx(Avatar, { className: "h-6 w-6", children: /* @__PURE__ */ jsx(AvatarFallback, { className: "text-[10px]", children: p.email.charAt(0).toUpperCase() }) }),
3778
3984
  /* @__PURE__ */ jsx("span", { className: "flex-1 text-sm truncate", children: p.email }),
3779
3985
  /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "text-[10px] px-1.5 py-0.5 shrink-0", children: p.role }),
3780
3986
  /* @__PURE__ */ jsx("button", { onClick: () => setPending((ps) => ps.filter((_, j) => j !== i)), children: /* @__PURE__ */ jsx(X, { className: "h-3.5 w-3.5 text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))]" }) })
@@ -4189,9 +4395,9 @@ function apply(mode) {
4189
4395
  document.documentElement.classList.toggle("dark", isDark);
4190
4396
  }
4191
4397
  function ThemeSwitch({ defaultMode, onChange, className, variant = "segmented" }) {
4192
- const [mode, setMode] = React131__default.useState(() => defaultMode ?? readInitial());
4193
- const didMount = React131__default.useRef(false);
4194
- React131__default.useEffect(() => {
4398
+ const [mode, setMode] = React136__default.useState(() => defaultMode ?? readInitial());
4399
+ const didMount = React136__default.useRef(false);
4400
+ React136__default.useEffect(() => {
4195
4401
  if (!didMount.current) {
4196
4402
  didMount.current = true;
4197
4403
  return;
@@ -4203,7 +4409,7 @@ function ThemeSwitch({ defaultMode, onChange, className, variant = "segmented" }
4203
4409
  }
4204
4410
  onChange?.(mode);
4205
4411
  }, [mode, onChange]);
4206
- React131__default.useEffect(() => {
4412
+ React136__default.useEffect(() => {
4207
4413
  if (mode !== "system" || typeof window === "undefined") return;
4208
4414
  const mql = window.matchMedia("(prefers-color-scheme: dark)");
4209
4415
  const handler = () => apply("system");
@@ -4294,7 +4500,7 @@ function FloatingActionButton({
4294
4500
  position = "bottom-right",
4295
4501
  className
4296
4502
  }) {
4297
- const [open, setOpen] = React131__default.useState(false);
4503
+ const [open, setOpen] = React136__default.useState(false);
4298
4504
  return /* @__PURE__ */ jsx(
4299
4505
  "div",
4300
4506
  {
@@ -4335,7 +4541,7 @@ function FloatingActionButton({
4335
4541
  ] }),
4336
4542
  sections.length > 0 && /* @__PURE__ */ jsx(Separator6, {})
4337
4543
  ] }),
4338
- sections.length > 0 && /* @__PURE__ */ jsx("div", { className: "px-3 py-2.5 space-y-3", children: sections.map((section, i) => /* @__PURE__ */ jsxs(React131__default.Fragment, { children: [
4544
+ sections.length > 0 && /* @__PURE__ */ jsx("div", { className: "px-3 py-2.5 space-y-3", children: sections.map((section, i) => /* @__PURE__ */ jsxs(React136__default.Fragment, { children: [
4339
4545
  /* @__PURE__ */ jsxs("div", { children: [
4340
4546
  /* @__PURE__ */ jsx("p", { className: "text-[9px] font-semibold uppercase tracking-widest text-muted-foreground mb-1.5", children: section.label }),
4341
4547
  section.content
@@ -4377,7 +4583,7 @@ function applyTheme(val) {
4377
4583
  }
4378
4584
  }
4379
4585
  function PaletteSwatches({ options = DEFAULT_THEME_OPTIONS }) {
4380
- const [activeValue, setActiveValue] = React131__default.useState(readStoredTheme);
4586
+ const [activeValue, setActiveValue] = React136__default.useState(readStoredTheme);
4381
4587
  const activeOption = options.find((o) => o.value === activeValue) ?? options[0];
4382
4588
  const handleSelect = (value) => {
4383
4589
  setActiveValue(value);
@@ -4467,7 +4673,7 @@ function NotificationSettings({ className }) {
4467
4673
  NotifRow,
4468
4674
  {
4469
4675
  ...n,
4470
- checked: states[n.id],
4676
+ checked: states[n.id] ?? false,
4471
4677
  onChange: (val) => setStates((s) => ({ ...s, [n.id]: val }))
4472
4678
  },
4473
4679
  n.id
@@ -4669,7 +4875,7 @@ var ROLES = [
4669
4875
  ];
4670
4876
  function RolesMenu({ value = "member", onChange, className }) {
4671
4877
  const [role, setRole] = useState(value);
4672
- const current = ROLES.find((r) => r.value === role) ?? ROLES[2];
4878
+ const current = ROLES.find((r) => r.value === role) ?? ROLES[0];
4673
4879
  const handleChange = (v) => {
4674
4880
  setRole(v);
4675
4881
  onChange?.(v);
@@ -5253,8 +5459,8 @@ function BulkActions({ count, actions, onClear, className }) {
5253
5459
  ] });
5254
5460
  }
5255
5461
  function useCommandBar() {
5256
- const [open, setOpen] = React131__default.useState(false);
5257
- React131__default.useEffect(() => {
5462
+ const [open, setOpen] = React136__default.useState(false);
5463
+ React136__default.useEffect(() => {
5258
5464
  const handler = (e) => {
5259
5465
  if ((e.metaKey || e.ctrlKey) && e.key === "k") {
5260
5466
  e.preventDefault();
@@ -5294,12 +5500,12 @@ function CommandBarItem({ icon, label, shortcut, onSelect, active, className })
5294
5500
  );
5295
5501
  }
5296
5502
  function CommandBar({ open, onOpenChange, children, placeholder = "Search commands...", onSearch }) {
5297
- const [query, setQuery] = React131__default.useState("");
5503
+ const [query, setQuery] = React136__default.useState("");
5298
5504
  const handleSearch = (v) => {
5299
5505
  setQuery(v);
5300
5506
  onSearch?.(v);
5301
5507
  };
5302
- const items = React131__default.useRef(null);
5508
+ const items = React136__default.useRef(null);
5303
5509
  const handleKeyDown = (e) => {
5304
5510
  if (e.key === "Escape") {
5305
5511
  onOpenChange(false);
@@ -5340,10 +5546,10 @@ function CommandBar({ open, onOpenChange, children, placeholder = "Search comman
5340
5546
  var textOps = ["contains", "equals", "starts with"];
5341
5547
  var numOps = ["=", ">", "<", ">=", "<="];
5342
5548
  function AddFilterPopover({ filters, onAdd }) {
5343
- const [open, setOpen] = React131__default.useState(false);
5344
- const [key, setKey] = React131__default.useState("");
5345
- const [op, setOp] = React131__default.useState("");
5346
- const [val, setVal] = React131__default.useState("");
5549
+ const [open, setOpen] = React136__default.useState(false);
5550
+ const [key, setKey] = React136__default.useState("");
5551
+ const [op, setOp] = React136__default.useState("");
5552
+ const [val, setVal] = React136__default.useState("");
5347
5553
  const def = filters.find((f) => f.key === key);
5348
5554
  const ops = def?.type === "number" ? numOps : textOps;
5349
5555
  const handleAdd = () => {
@@ -5455,7 +5661,7 @@ function formatColumnSubLabel(date, scale) {
5455
5661
  function snapDate(date, scale) {
5456
5662
  return startOfScale(date, scale);
5457
5663
  }
5458
- var Gantt = React131__default.forwardRef(
5664
+ var Gantt = React136__default.forwardRef(
5459
5665
  ({
5460
5666
  items,
5461
5667
  scale = "days",
@@ -5473,7 +5679,7 @@ var Gantt = React131__default.forwardRef(
5473
5679
  }, ref) => {
5474
5680
  const interactive = !!onItemMove || !!onItemResize;
5475
5681
  const columnWidth = DEFAULT_COLUMN_WIDTH[scale];
5476
- const viewport = React131__default.useMemo(() => {
5682
+ const viewport = React136__default.useMemo(() => {
5477
5683
  const earliest = startDate ?? (items.length ? new Date(Math.min(...items.map((i) => i.start.getTime()))) : /* @__PURE__ */ new Date());
5478
5684
  const latest = endDate ?? (items.length ? new Date(Math.max(...items.map((i) => i.end.getTime()))) : addDays(/* @__PURE__ */ new Date(), 14));
5479
5685
  return {
@@ -5483,7 +5689,7 @@ var Gantt = React131__default.forwardRef(
5483
5689
  }, [items, startDate, endDate, scale]);
5484
5690
  const colCount = totalColumns(viewport.start, viewport.end, scale);
5485
5691
  const timelineWidth = colCount * columnWidth;
5486
- const grouped = React131__default.useMemo(() => {
5692
+ const grouped = React136__default.useMemo(() => {
5487
5693
  const map = /* @__PURE__ */ new Map();
5488
5694
  for (const it of items) {
5489
5695
  const k = it.group ?? void 0;
@@ -5493,7 +5699,7 @@ var Gantt = React131__default.forwardRef(
5493
5699
  return Array.from(map.entries());
5494
5700
  }, [items]);
5495
5701
  const hasGroups = grouped.some(([k]) => k !== void 0);
5496
- const [collapsed, setCollapsed] = React131__default.useState(() => /* @__PURE__ */ new Set());
5702
+ const [collapsed, setCollapsed] = React136__default.useState(() => /* @__PURE__ */ new Set());
5497
5703
  const toggleGroup = (key) => {
5498
5704
  setCollapsed((prev) => {
5499
5705
  const next = new Set(prev);
@@ -5502,7 +5708,7 @@ var Gantt = React131__default.forwardRef(
5502
5708
  return next;
5503
5709
  });
5504
5710
  };
5505
- const rows = React131__default.useMemo(() => {
5711
+ const rows = React136__default.useMemo(() => {
5506
5712
  const out = [];
5507
5713
  for (const [groupKey, list] of grouped) {
5508
5714
  if (groupKey !== void 0) {
@@ -5513,21 +5719,21 @@ var Gantt = React131__default.forwardRef(
5513
5719
  }
5514
5720
  return out;
5515
5721
  }, [grouped, collapsed]);
5516
- const itemRowIndex = React131__default.useMemo(() => {
5722
+ const itemRowIndex = React136__default.useMemo(() => {
5517
5723
  const m = /* @__PURE__ */ new Map();
5518
5724
  rows.forEach((r, i) => {
5519
5725
  if (r.kind === "item") m.set(r.item.id, i);
5520
5726
  });
5521
5727
  return m;
5522
5728
  }, [rows]);
5523
- const todayOffsetPx = React131__default.useMemo(() => {
5729
+ const todayOffsetPx = React136__default.useMemo(() => {
5524
5730
  if (!showToday) return null;
5525
5731
  const now = /* @__PURE__ */ new Date();
5526
5732
  const u = unitsBetween(viewport.start, now, scale);
5527
5733
  if (u < 0 || u > colCount) return null;
5528
5734
  return u * columnWidth;
5529
5735
  }, [showToday, viewport.start, scale, colCount, columnWidth]);
5530
- const columnDates = React131__default.useMemo(() => {
5736
+ const columnDates = React136__default.useMemo(() => {
5531
5737
  return Array.from(
5532
5738
  { length: colCount },
5533
5739
  (_, i) => addUnits(viewport.start, i, scale)
@@ -5751,12 +5957,12 @@ function GanttBar({
5751
5957
  }) {
5752
5958
  const color = item.color ?? DEFAULT_COLOR2;
5753
5959
  const progress = Math.max(0, Math.min(100, item.progress ?? 0));
5754
- const [previewLeftDelta, setPreviewLeftDelta] = React131__default.useState(0);
5755
- const [previewRightDelta, setPreviewRightDelta] = React131__default.useState(0);
5756
- const dragMode = React131__default.useRef(null);
5757
- const startX = React131__default.useRef(0);
5758
- const longPressTimer = React131__default.useRef(null);
5759
- const moved = React131__default.useRef(false);
5960
+ const [previewLeftDelta, setPreviewLeftDelta] = React136__default.useState(0);
5961
+ const [previewRightDelta, setPreviewRightDelta] = React136__default.useState(0);
5962
+ const dragMode = React136__default.useRef(null);
5963
+ const startX = React136__default.useRef(0);
5964
+ const longPressTimer = React136__default.useRef(null);
5965
+ const moved = React136__default.useRef(false);
5760
5966
  const baseLeft = unitsBetween(viewportStart, item.start, scale) * columnWidth;
5761
5967
  const baseRight = unitsBetween(viewportStart, item.end, scale) * columnWidth;
5762
5968
  const baseWidth = Math.max(columnWidth * 0.25, baseRight - baseLeft);
@@ -5962,7 +6168,7 @@ function DependencyLayer({
5962
6168
  timelineWidth,
5963
6169
  totalHeight
5964
6170
  }) {
5965
- const itemById = React131__default.useMemo(() => {
6171
+ const itemById = React136__default.useMemo(() => {
5966
6172
  const m = /* @__PURE__ */ new Map();
5967
6173
  for (const it of items) m.set(it.id, it);
5968
6174
  return m;
@@ -6061,9 +6267,9 @@ function KanbanColumn({ column, isOver }) {
6061
6267
  ] });
6062
6268
  }
6063
6269
  function Kanban({ columns: initialColumns, onMoveCard, className }) {
6064
- const [cols, setCols] = React131__default.useState(initialColumns);
6065
- const [activeCard, setActiveCard] = React131__default.useState(null);
6066
- const [overColId, setOverColId] = React131__default.useState(null);
6270
+ const [cols, setCols] = React136__default.useState(initialColumns);
6271
+ const [activeCard, setActiveCard] = React136__default.useState(null);
6272
+ const [overColId, setOverColId] = React136__default.useState(null);
6067
6273
  const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));
6068
6274
  const findColByCard = (cardId) => cols.find((c) => c.cards.some((card) => card.id === cardId));
6069
6275
  const onDragStart = ({ active }) => {
@@ -6132,10 +6338,10 @@ function ToolbarButton({
6132
6338
  ] });
6133
6339
  }
6134
6340
  function LinkPopover({ editor }) {
6135
- const [open, setOpen] = React131__default.useState(false);
6136
- const [url, setUrl] = React131__default.useState("");
6341
+ const [open, setOpen] = React136__default.useState(false);
6342
+ const [url, setUrl] = React136__default.useState("");
6137
6343
  const isActive = editor.isActive("link");
6138
- React131__default.useEffect(() => {
6344
+ React136__default.useEffect(() => {
6139
6345
  if (!open) return;
6140
6346
  const current = editor.getAttributes("link")?.href;
6141
6347
  setUrl(current ?? "");
@@ -6600,7 +6806,7 @@ var proseClasses = cn(
6600
6806
  // Selected cells in tables
6601
6807
  "[&_.selectedCell]:bg-[hsl(var(--accent))]/40"
6602
6808
  );
6603
- var RichEditor = React131__default.forwardRef(
6809
+ var RichEditor = React136__default.forwardRef(
6604
6810
  function RichEditor2({
6605
6811
  value,
6606
6812
  defaultValue,
@@ -6614,12 +6820,12 @@ var RichEditor = React131__default.forwardRef(
6614
6820
  }, ref) {
6615
6821
  const isControlled = value !== void 0;
6616
6822
  const initialContent = isControlled ? value ?? "" : defaultValue ?? "";
6617
- const debounceRef = React131__default.useRef(null);
6618
- const onChangeRef = React131__default.useRef(onChange);
6619
- React131__default.useEffect(() => {
6823
+ const debounceRef = React136__default.useRef(null);
6824
+ const onChangeRef = React136__default.useRef(onChange);
6825
+ React136__default.useEffect(() => {
6620
6826
  onChangeRef.current = onChange;
6621
6827
  }, [onChange]);
6622
- const [charCount, setCharCount] = React131__default.useState(0);
6828
+ const [charCount, setCharCount] = React136__default.useState(0);
6623
6829
  const editor = useEditor({
6624
6830
  editable,
6625
6831
  content: initialContent,
@@ -6662,18 +6868,18 @@ var RichEditor = React131__default.forwardRef(
6662
6868
  }, 100);
6663
6869
  }
6664
6870
  });
6665
- React131__default.useEffect(() => {
6871
+ React136__default.useEffect(() => {
6666
6872
  if (!editor || !isControlled) return;
6667
6873
  const current = editor.getHTML();
6668
6874
  if ((value ?? "") !== current) {
6669
6875
  editor.commands.setContent(value ?? "", { emitUpdate: false });
6670
6876
  }
6671
6877
  }, [editor, isControlled, value]);
6672
- React131__default.useEffect(() => {
6878
+ React136__default.useEffect(() => {
6673
6879
  if (!editor) return;
6674
6880
  if (editor.isEditable !== editable) editor.setEditable(editable);
6675
6881
  }, [editor, editable]);
6676
- React131__default.useEffect(() => {
6882
+ React136__default.useEffect(() => {
6677
6883
  return () => {
6678
6884
  if (debounceRef.current) clearTimeout(debounceRef.current);
6679
6885
  };
@@ -6771,10 +6977,10 @@ function ToggleButtonGroup(props) {
6771
6977
  props.onChange(val);
6772
6978
  }
6773
6979
  };
6774
- return /* @__PURE__ */ jsx("div", { className: cn("inline-flex items-center gap-1 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.4)] p-0.5", className), children: React131__default.Children.map(children, (child) => {
6775
- if (!React131__default.isValidElement(child)) return child;
6980
+ return /* @__PURE__ */ jsx("div", { className: cn("inline-flex items-center gap-1 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.4)] p-0.5", className), children: React136__default.Children.map(children, (child) => {
6981
+ if (!React136__default.isValidElement(child)) return child;
6776
6982
  const tb = child;
6777
- return React131__default.cloneElement(tb, {
6983
+ return React136__default.cloneElement(tb, {
6778
6984
  pressed: isPressed(tb.props.value),
6779
6985
  onClick: () => handleClick(tb.props.value)
6780
6986
  });
@@ -7014,7 +7220,7 @@ function Sparkline({
7014
7220
  const max = Math.max(...data);
7015
7221
  const range = max - min || 1;
7016
7222
  const pad = 2;
7017
- const lastY = pad + (1 - (data[data.length - 1] - min) / range) * (height - pad * 2);
7223
+ const lastY = pad + (1 - ((data.at(-1) ?? 0) - min) / range) * (height - pad * 2);
7018
7224
  const areaPath = type === "area" ? `${path} L ${width - pad},${height - pad} L ${pad},${height - pad} Z` : void 0;
7019
7225
  return /* @__PURE__ */ jsxs(
7020
7226
  "svg",
@@ -7038,7 +7244,7 @@ var colorMap2 = {
7038
7244
  warning: "bg-yellow-500",
7039
7245
  error: "bg-red-500"
7040
7246
  };
7041
- var sizeMap3 = {
7247
+ var sizeMap4 = {
7042
7248
  sm: "h-1.5 w-1.5",
7043
7249
  md: "h-2.5 w-2.5",
7044
7250
  lg: "h-3.5 w-3.5"
@@ -7046,7 +7252,7 @@ var sizeMap3 = {
7046
7252
  function BeaconDot({ color = "primary", size = "md" }) {
7047
7253
  return /* @__PURE__ */ jsxs("span", { className: "relative flex", children: [
7048
7254
  /* @__PURE__ */ jsx("span", { className: cn("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75", colorMap2[color]) }),
7049
- /* @__PURE__ */ jsx("span", { className: cn("relative inline-flex rounded-full", sizeMap3[size], colorMap2[color]) })
7255
+ /* @__PURE__ */ jsx("span", { className: cn("relative inline-flex rounded-full", sizeMap4[size], colorMap2[color]) })
7050
7256
  ] });
7051
7257
  }
7052
7258
  function Beacon({ color = "primary", size = "md", children, className }) {
@@ -7129,7 +7335,7 @@ function useChecklist() {
7129
7335
  if (!ctx) throw new Error("<ChecklistItem> must be used inside <Checklist>");
7130
7336
  return ctx;
7131
7337
  }
7132
- var Checklist = React131__default.forwardRef(
7338
+ var Checklist = React136__default.forwardRef(
7133
7339
  ({
7134
7340
  title = "Getting started",
7135
7341
  description,
@@ -7145,7 +7351,7 @@ var Checklist = React131__default.forwardRef(
7145
7351
  }, ref) => {
7146
7352
  const [internalCompleted, setInternalCompleted] = useState({});
7147
7353
  const [open, setOpen] = useState(defaultOpen);
7148
- const completedFiredRef = React131__default.useRef(false);
7354
+ const completedFiredRef = React136__default.useRef(false);
7149
7355
  const isControlled = controlledCompleted !== void 0;
7150
7356
  const completed = isControlled ? controlledCompleted : internalCompleted;
7151
7357
  const setCompleted = useCallback(
@@ -7157,8 +7363,8 @@ var Checklist = React131__default.forwardRef(
7157
7363
  );
7158
7364
  const total = useMemo(() => {
7159
7365
  let n = 0;
7160
- React131__default.Children.forEach(children, (child) => {
7161
- if (React131__default.isValidElement(child) && child.type.displayName === "ChecklistItem") {
7366
+ React136__default.Children.forEach(children, (child) => {
7367
+ if (React136__default.isValidElement(child) && child.type.displayName === "ChecklistItem") {
7162
7368
  n++;
7163
7369
  }
7164
7370
  });
@@ -7168,7 +7374,7 @@ var Checklist = React131__default.forwardRef(
7168
7374
  () => Object.values(completed).filter(Boolean).length,
7169
7375
  [completed]
7170
7376
  );
7171
- React131__default.useEffect(() => {
7377
+ React136__default.useEffect(() => {
7172
7378
  if (!completedFiredRef.current && total > 0 && doneCount >= total) {
7173
7379
  completedFiredRef.current = true;
7174
7380
  onComplete?.();
@@ -7229,7 +7435,7 @@ var Checklist = React131__default.forwardRef(
7229
7435
  }
7230
7436
  );
7231
7437
  Checklist.displayName = "Checklist";
7232
- var ChecklistItem = React131__default.forwardRef(
7438
+ var ChecklistItem = React136__default.forwardRef(
7233
7439
  ({ id, title, description, action, onActivate, className, ...props }, ref) => {
7234
7440
  const { completed, setCompleted } = useChecklist();
7235
7441
  const done = !!completed[id];
@@ -7577,7 +7783,7 @@ function Field({ label, description, error, required, children, className }) {
7577
7783
  error && /* @__PURE__ */ jsx(FieldError, { children: error })
7578
7784
  ] });
7579
7785
  }
7580
- var FieldLabel = React131__default.forwardRef(
7786
+ var FieldLabel = React136__default.forwardRef(
7581
7787
  ({ className, required, children, ...props }, ref) => /* @__PURE__ */ jsxs(
7582
7788
  "label",
7583
7789
  {
@@ -7592,7 +7798,7 @@ var FieldLabel = React131__default.forwardRef(
7592
7798
  )
7593
7799
  );
7594
7800
  FieldLabel.displayName = "FieldLabel";
7595
- var FieldDescription = React131__default.forwardRef(
7801
+ var FieldDescription = React136__default.forwardRef(
7596
7802
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7597
7803
  "p",
7598
7804
  {
@@ -7603,7 +7809,7 @@ var FieldDescription = React131__default.forwardRef(
7603
7809
  )
7604
7810
  );
7605
7811
  FieldDescription.displayName = "FieldDescription";
7606
- var FieldError = React131__default.forwardRef(
7812
+ var FieldError = React136__default.forwardRef(
7607
7813
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7608
7814
  "p",
7609
7815
  {
@@ -7666,6 +7872,7 @@ function FieldRenderer({ name, field, register, setValue, watch, error }) {
7666
7872
  }
7667
7873
  function AutoForm({ schema, onSubmit, defaultValues, submitLabel = "Submit" }) {
7668
7874
  const { register, handleSubmit, setValue, watch, formState } = useForm({
7875
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7669
7876
  resolver: zodResolver(schema),
7670
7877
  defaultValues
7671
7878
  });
@@ -7703,7 +7910,7 @@ function defaultFor(format3, showAlpha) {
7703
7910
  if (format3 === "rgb") return showAlpha ? "rgba(59, 130, 246, 1)" : "rgb(59, 130, 246)";
7704
7911
  return showAlpha ? "hsla(217, 91%, 60%, 1)" : "hsl(217, 91%, 60%)";
7705
7912
  }
7706
- var ColorPicker = React131__default.forwardRef(
7913
+ var ColorPicker = React136__default.forwardRef(
7707
7914
  ({
7708
7915
  value: valueProp,
7709
7916
  defaultValue,
@@ -7718,21 +7925,21 @@ var ColorPicker = React131__default.forwardRef(
7718
7925
  }, ref) => {
7719
7926
  const fallback = defaultValue ?? defaultFor(format3, showAlpha);
7720
7927
  const isControlled = valueProp !== void 0;
7721
- const [internal, setInternal] = React131__default.useState(fallback);
7928
+ const [internal, setInternal] = React136__default.useState(fallback);
7722
7929
  const value = isControlled ? valueProp : internal;
7723
- const [draft, setDraft] = React131__default.useState(value);
7724
- const [draftValid, setDraftValid] = React131__default.useState(true);
7725
- React131__default.useEffect(() => {
7930
+ const [draft, setDraft] = React136__default.useState(value);
7931
+ const [draftValid, setDraftValid] = React136__default.useState(true);
7932
+ React136__default.useEffect(() => {
7726
7933
  setDraft(value);
7727
7934
  setDraftValid(true);
7728
7935
  }, [value]);
7729
- const [eyeDropperSupported, setEyeDropperSupported] = React131__default.useState(false);
7730
- React131__default.useEffect(() => {
7936
+ const [eyeDropperSupported, setEyeDropperSupported] = React136__default.useState(false);
7937
+ React136__default.useEffect(() => {
7731
7938
  if (typeof window !== "undefined" && "EyeDropper" in window) {
7732
7939
  setEyeDropperSupported(true);
7733
7940
  }
7734
7941
  }, []);
7735
- const commit = React131__default.useCallback(
7942
+ const commit = React136__default.useCallback(
7736
7943
  (next) => {
7737
7944
  if (!isControlled) setInternal(next);
7738
7945
  onValueChange?.(next);
@@ -7969,7 +8176,91 @@ function FileUploadPreview({ files, onRemove, className }) {
7969
8176
  ] })
7970
8177
  ] }, i)) });
7971
8178
  }
7972
- var FormLabel2 = React131__default.forwardRef(
8179
+ var FloatingLabelInput = React136__default.forwardRef(
8180
+ ({ label, error, hint, wrapperClassName, className, id, value, defaultValue, onFocus, onBlur, onChange, ...props }, ref) => {
8181
+ const autoId = useId();
8182
+ const inputId = id ?? autoId;
8183
+ const errorId = error ? `${inputId}-error` : void 0;
8184
+ const hintId = hint ? `${inputId}-hint` : void 0;
8185
+ const describedBy = [errorId, hintId].filter(Boolean).join(" ") || void 0;
8186
+ const [focused, setFocused] = useState(false);
8187
+ const [filled, setFilled] = useState(() => {
8188
+ if (value !== void 0 && value !== null && value !== "") return true;
8189
+ if (defaultValue !== void 0 && defaultValue !== null && defaultValue !== "") return true;
8190
+ return false;
8191
+ });
8192
+ const isFloated = focused || filled;
8193
+ return /* @__PURE__ */ jsxs("div", { "data-slot": "floating-label-input", className: cn("flex flex-col gap-1.5", wrapperClassName), children: [
8194
+ /* @__PURE__ */ jsxs("div", { className: "relative", children: [
8195
+ /* @__PURE__ */ jsx(
8196
+ "input",
8197
+ {
8198
+ ref,
8199
+ id: inputId,
8200
+ value,
8201
+ defaultValue,
8202
+ "data-slot": "input",
8203
+ "data-state": isFloated ? "floated" : "rest",
8204
+ "aria-invalid": Boolean(error) || void 0,
8205
+ "aria-describedby": describedBy,
8206
+ onFocus: (e) => {
8207
+ setFocused(true);
8208
+ onFocus?.(e);
8209
+ },
8210
+ onBlur: (e) => {
8211
+ setFocused(false);
8212
+ onBlur?.(e);
8213
+ },
8214
+ onChange: (e) => {
8215
+ setFilled(e.target.value.length > 0);
8216
+ onChange?.(e);
8217
+ },
8218
+ className: cn(
8219
+ // Reset + structure
8220
+ "peer w-full appearance-none bg-transparent",
8221
+ "h-14 rounded-md border px-3 pt-5 pb-1.5",
8222
+ "text-base text-foreground leading-tight",
8223
+ // Border / focus ring colors
8224
+ "border-input focus:border-ring focus:outline-none focus:ring-2 focus:ring-ring/30",
8225
+ error && "border-destructive focus:border-destructive focus:ring-destructive/30",
8226
+ "disabled:cursor-not-allowed disabled:opacity-50",
8227
+ "placeholder:text-transparent",
8228
+ // hide native placeholder; label takes its job
8229
+ className
8230
+ ),
8231
+ ...props
8232
+ }
8233
+ ),
8234
+ /* @__PURE__ */ jsx(
8235
+ "label",
8236
+ {
8237
+ htmlFor: inputId,
8238
+ className: cn(
8239
+ "pointer-events-none absolute left-3",
8240
+ "origin-[0_50%] transition-all duration-150 ease-out",
8241
+ "text-muted-foreground",
8242
+ // Rest: centered vertically inside the field, full size
8243
+ !isFloated && "top-1/2 -translate-y-1/2 text-base",
8244
+ // Floated: tucked into the top with a small subtle background
8245
+ isFloated && "top-1.5 text-[11px] uppercase tracking-wider text-foreground/85",
8246
+ error && "text-destructive"
8247
+ ),
8248
+ children: label
8249
+ }
8250
+ )
8251
+ ] }),
8252
+ error ? /* @__PURE__ */ jsx("p", { id: errorId, className: "text-xs text-destructive", children: error }) : hint ? /* @__PURE__ */ jsx("p", { id: hintId, className: "text-xs text-muted-foreground", children: hint }) : null
8253
+ ] });
8254
+ }
8255
+ );
8256
+ FloatingLabelInput.displayName = "FloatingLabelInput";
8257
+ function FormField(props) {
8258
+ return /* @__PURE__ */ jsx(Controller, { ...props });
8259
+ }
8260
+ function FormItem({ className, ...props }) {
8261
+ return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-1.5", className), ...props });
8262
+ }
8263
+ var FormLabel = React136__default.forwardRef(
7973
8264
  ({ className, error, ...props }, ref) => /* @__PURE__ */ jsx(
7974
8265
  "label",
7975
8266
  {
@@ -7983,14 +8274,24 @@ var FormLabel2 = React131__default.forwardRef(
7983
8274
  }
7984
8275
  )
7985
8276
  );
7986
- FormLabel2.displayName = "FormLabel";
7987
- var FormControl2 = React131__default.forwardRef(
8277
+ FormLabel.displayName = "FormLabel";
8278
+ var FormControl = React136__default.forwardRef(
7988
8279
  ({ ...props }, ref) => {
7989
8280
  const id = useId();
7990
8281
  return /* @__PURE__ */ jsx("div", { ref, id, ...props });
7991
8282
  }
7992
8283
  );
7993
- FormControl2.displayName = "FormControl";
8284
+ FormControl.displayName = "FormControl";
8285
+ function FormDescription({ className, ...props }) {
8286
+ return /* @__PURE__ */ jsx("p", { className: cn("text-xs text-[hsl(var(--muted-foreground))]", className), ...props });
8287
+ }
8288
+ function FormMessage({ className, children, name }) {
8289
+ const { formState } = useFormContext();
8290
+ const error = name ? formState.errors[name] : void 0;
8291
+ const message = error?.message ? String(error.message) : children;
8292
+ if (!message) return null;
8293
+ return /* @__PURE__ */ jsx("p", { className: cn("text-xs text-[hsl(var(--destructive))]", className), children: message });
8294
+ }
7994
8295
  function ObjectField({
7995
8296
  title,
7996
8297
  description,
@@ -8031,7 +8332,7 @@ function getStrength(value) {
8031
8332
  if (score <= 3) return { level: "medium", width: "w-2/3", color: "bg-yellow-500" };
8032
8333
  return { level: "strong", width: "w-full", color: "bg-green-500" };
8033
8334
  }
8034
- var PasswordInput = React131__default.forwardRef(
8335
+ var PasswordInput = React136__default.forwardRef(
8035
8336
  ({ className, strength, ...props }, ref) => {
8036
8337
  const [show, setShow] = useState(false);
8037
8338
  const value = String(props.value ?? "");
@@ -8066,7 +8367,7 @@ var PasswordInput = React131__default.forwardRef(
8066
8367
  }
8067
8368
  );
8068
8369
  PasswordInput.displayName = "PasswordInput";
8069
- var SearchInput = React131__default.forwardRef(
8370
+ var SearchInput = React136__default.forwardRef(
8070
8371
  ({ className, shortcut, onClear, onChange, value: valueProp, defaultValue, ...props }, ref) => {
8071
8372
  const [internalValue, setInternalValue] = useState(defaultValue ?? "");
8072
8373
  const isControlled = valueProp !== void 0;
@@ -8129,7 +8430,7 @@ function StepForm({ steps, onSubmit, children, className }) {
8129
8430
  isFirst: currentStep === 0,
8130
8431
  isLast: currentStep === totalSteps - 1
8131
8432
  };
8132
- const childArray = React131__default.Children.toArray(children);
8433
+ const childArray = React136__default.Children.toArray(children);
8133
8434
  const currentChild = childArray[currentStep];
8134
8435
  return /* @__PURE__ */ jsx(StepFormContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-6", className), children: [
8135
8436
  /* @__PURE__ */ jsx(StepIndicator, { steps, currentStep }),
@@ -8138,7 +8439,7 @@ function StepForm({ steps, onSubmit, children, className }) {
8138
8439
  ] }) });
8139
8440
  }
8140
8441
  function StepIndicator({ steps, currentStep }) {
8141
- return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: steps.map((label, i) => /* @__PURE__ */ jsxs(React131__default.Fragment, { children: [
8442
+ return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: steps.map((label, i) => /* @__PURE__ */ jsxs(React136__default.Fragment, { children: [
8142
8443
  i > 0 && /* @__PURE__ */ jsx("div", { className: cn("h-px flex-1 bg-[hsl(var(--border))]", i <= currentStep && "bg-[hsl(var(--primary))]") }),
8143
8444
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-1", children: [
8144
8445
  /* @__PURE__ */ jsx("div", { className: cn(
@@ -8167,7 +8468,7 @@ function StepFormNavigation({ onSubmit, submitLabel = "Submit" }) {
8167
8468
  isLast ? /* @__PURE__ */ jsx(Button, { type: "button", onClick: onSubmit, children: submitLabel }) : /* @__PURE__ */ jsx(Button, { type: "button", onClick: next, children: "Next" })
8168
8469
  ] });
8169
8470
  }
8170
- var Tags = React131__default.forwardRef(
8471
+ var Tags = React136__default.forwardRef(
8171
8472
  ({
8172
8473
  value: valueProp,
8173
8474
  defaultValue,
@@ -8183,25 +8484,25 @@ var Tags = React131__default.forwardRef(
8183
8484
  ...props
8184
8485
  }, ref) => {
8185
8486
  const isControlled = valueProp !== void 0;
8186
- const [internal, setInternal] = React131__default.useState(defaultValue ?? []);
8487
+ const [internal, setInternal] = React136__default.useState(defaultValue ?? []);
8187
8488
  const tags = isControlled ? valueProp : internal;
8188
- const [input, setInput] = React131__default.useState("");
8189
- const [error, setError] = React131__default.useState(null);
8190
- const [focused, setFocused] = React131__default.useState(false);
8191
- const [activeIndex, setActiveIndex] = React131__default.useState(0);
8192
- const inputRef = React131__default.useRef(null);
8193
- const containerRef = React131__default.useRef(null);
8194
- React131__default.useImperativeHandle(ref, () => containerRef.current);
8489
+ const [input, setInput] = React136__default.useState("");
8490
+ const [error, setError] = React136__default.useState(null);
8491
+ const [focused, setFocused] = React136__default.useState(false);
8492
+ const [activeIndex, setActiveIndex] = React136__default.useState(0);
8493
+ const inputRef = React136__default.useRef(null);
8494
+ const containerRef = React136__default.useRef(null);
8495
+ React136__default.useImperativeHandle(ref, () => containerRef.current);
8195
8496
  const atMax = maxTags !== void 0 && tags.length >= maxTags;
8196
8497
  const inputDisabled = disabled || atMax;
8197
- const commit = React131__default.useCallback(
8498
+ const commit = React136__default.useCallback(
8198
8499
  (next) => {
8199
8500
  if (!isControlled) setInternal(next);
8200
8501
  onValueChange?.(next);
8201
8502
  },
8202
8503
  [isControlled, onValueChange]
8203
8504
  );
8204
- const addTag = React131__default.useCallback(
8505
+ const addTag = React136__default.useCallback(
8205
8506
  (raw) => {
8206
8507
  const tag = raw.trim();
8207
8508
  if (!tag) return false;
@@ -8227,20 +8528,20 @@ var Tags = React131__default.forwardRef(
8227
8528
  },
8228
8529
  [tags, allowDuplicates, validate, atMax, commit]
8229
8530
  );
8230
- const removeTag = React131__default.useCallback(
8531
+ const removeTag = React136__default.useCallback(
8231
8532
  (index) => {
8232
8533
  commit(tags.filter((_, i) => i !== index));
8233
8534
  setError(null);
8234
8535
  },
8235
8536
  [tags, commit]
8236
8537
  );
8237
- const filteredSuggestions = React131__default.useMemo(() => {
8538
+ const filteredSuggestions = React136__default.useMemo(() => {
8238
8539
  if (!suggestions || !input.trim()) return [];
8239
8540
  const q = input.trim().toLowerCase();
8240
8541
  return suggestions.filter((s) => s.toLowerCase().includes(q)).filter((s) => allowDuplicates || !tags.includes(s)).slice(0, 8);
8241
8542
  }, [suggestions, input, tags, allowDuplicates]);
8242
8543
  const showPopover = focused && !inputDisabled && filteredSuggestions.length > 0;
8243
- React131__default.useEffect(() => {
8544
+ React136__default.useEffect(() => {
8244
8545
  if (activeIndex >= filteredSuggestions.length) setActiveIndex(0);
8245
8546
  }, [filteredSuggestions.length, activeIndex]);
8246
8547
  const handleKeyDown = (e) => {
@@ -8382,7 +8683,7 @@ var Tags = React131__default.forwardRef(
8382
8683
  }
8383
8684
  );
8384
8685
  Tags.displayName = "Tags";
8385
- var AppShellCtx = React131__default.createContext({
8686
+ var AppShellCtx = React136__default.createContext({
8386
8687
  collapsed: false,
8387
8688
  setCollapsed: () => {
8388
8689
  },
@@ -8390,12 +8691,12 @@ var AppShellCtx = React131__default.createContext({
8390
8691
  setMobileOpen: () => {
8391
8692
  }
8392
8693
  });
8393
- var useAppShell = () => React131__default.useContext(AppShellCtx);
8394
- var AppShell = React131__default.forwardRef(
8694
+ var useAppShell = () => React136__default.useContext(AppShellCtx);
8695
+ var AppShell = React136__default.forwardRef(
8395
8696
  ({ className, defaultCollapsed = false, children, ...props }, ref) => {
8396
- const [collapsed, setCollapsed] = React131__default.useState(defaultCollapsed);
8397
- const [mobileOpen, setMobileOpen] = React131__default.useState(false);
8398
- React131__default.useEffect(() => {
8697
+ const [collapsed, setCollapsed] = React136__default.useState(defaultCollapsed);
8698
+ const [mobileOpen, setMobileOpen] = React136__default.useState(false);
8699
+ React136__default.useEffect(() => {
8399
8700
  const handleClick = (e) => {
8400
8701
  const target = e.target;
8401
8702
  if (target.closest("a[href]") || target.closest("[data-mobile-close]")) {
@@ -8426,7 +8727,7 @@ var AppShell = React131__default.forwardRef(
8426
8727
  }
8427
8728
  );
8428
8729
  AppShell.displayName = "AppShell";
8429
- var AppShellSidebar = React131__default.forwardRef(
8730
+ var AppShellSidebar = React136__default.forwardRef(
8430
8731
  ({ className, ...props }, ref) => {
8431
8732
  const { mobileOpen } = useAppShell();
8432
8733
  return /* @__PURE__ */ jsx(
@@ -8447,11 +8748,11 @@ var AppShellSidebar = React131__default.forwardRef(
8447
8748
  }
8448
8749
  );
8449
8750
  AppShellSidebar.displayName = "AppShellSidebar";
8450
- var AppShellMain = React131__default.forwardRef(
8751
+ var AppShellMain = React136__default.forwardRef(
8451
8752
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex-1 min-w-0 flex flex-col overflow-auto", className), ...props })
8452
8753
  );
8453
8754
  AppShellMain.displayName = "AppShellMain";
8454
- var MobileSidebarTrigger = React131__default.forwardRef(
8755
+ var MobileSidebarTrigger = React136__default.forwardRef(
8455
8756
  ({ className, ...props }, ref) => {
8456
8757
  const { mobileOpen, setMobileOpen } = useAppShell();
8457
8758
  return /* @__PURE__ */ jsx(
@@ -8473,21 +8774,21 @@ var MobileSidebarTrigger = React131__default.forwardRef(
8473
8774
  }
8474
8775
  );
8475
8776
  MobileSidebarTrigger.displayName = "MobileSidebarTrigger";
8476
- var sizeMap4 = {
8777
+ var sizeMap5 = {
8477
8778
  sm: "max-w-screen-sm",
8478
8779
  md: "max-w-screen-md",
8479
8780
  lg: "max-w-screen-lg",
8480
8781
  xl: "max-w-screen-xl",
8481
8782
  full: "max-w-full"
8482
8783
  };
8483
- var Container = React131__default.forwardRef(
8784
+ var Container = React136__default.forwardRef(
8484
8785
  ({ className, size = "lg", noPadding = false, ...props }, ref) => /* @__PURE__ */ jsx(
8485
8786
  "div",
8486
8787
  {
8487
8788
  ref,
8488
8789
  className: cn(
8489
8790
  "mx-auto w-full",
8490
- sizeMap4[size],
8791
+ sizeMap5[size],
8491
8792
  !noPadding && "px-4 sm:px-6 lg:px-8",
8492
8793
  className
8493
8794
  ),
@@ -8496,7 +8797,7 @@ var Container = React131__default.forwardRef(
8496
8797
  )
8497
8798
  );
8498
8799
  Container.displayName = "Container";
8499
- var Navbar = React131__default.forwardRef(
8800
+ var Navbar = React136__default.forwardRef(
8500
8801
  ({ className, sticky = false, border = true, ...props }, ref) => /* @__PURE__ */ jsx(
8501
8802
  "nav",
8502
8803
  {
@@ -8512,7 +8813,7 @@ var Navbar = React131__default.forwardRef(
8512
8813
  )
8513
8814
  );
8514
8815
  Navbar.displayName = "Navbar";
8515
- var NavbarBrand = React131__default.forwardRef(
8816
+ var NavbarBrand = React136__default.forwardRef(
8516
8817
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center gap-2 px-4 shrink-0", className), ...props })
8517
8818
  );
8518
8819
  NavbarBrand.displayName = "NavbarBrand";
@@ -8521,7 +8822,7 @@ var alignMap = {
8521
8822
  center: "justify-center flex-1",
8522
8823
  end: "justify-end ml-auto"
8523
8824
  };
8524
- var NavbarContent = React131__default.forwardRef(
8825
+ var NavbarContent = React136__default.forwardRef(
8525
8826
  ({ className, align = "start", ...props }, ref) => /* @__PURE__ */ jsx(
8526
8827
  "div",
8527
8828
  {
@@ -8532,11 +8833,11 @@ var NavbarContent = React131__default.forwardRef(
8532
8833
  )
8533
8834
  );
8534
8835
  NavbarContent.displayName = "NavbarContent";
8535
- var NavbarItem = React131__default.forwardRef(
8836
+ var NavbarItem = React136__default.forwardRef(
8536
8837
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center", className), ...props })
8537
8838
  );
8538
8839
  NavbarItem.displayName = "NavbarItem";
8539
- var Page = React131__default.forwardRef(
8840
+ var Page = React136__default.forwardRef(
8540
8841
  ({ className, maxWidth, style, ...props }, ref) => /* @__PURE__ */ jsx(
8541
8842
  "div",
8542
8843
  {
@@ -8548,7 +8849,7 @@ var Page = React131__default.forwardRef(
8548
8849
  )
8549
8850
  );
8550
8851
  Page.displayName = "Page";
8551
- var PageHeader = React131__default.forwardRef(
8852
+ var PageHeader = React136__default.forwardRef(
8552
8853
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
8553
8854
  "div",
8554
8855
  {
@@ -8559,7 +8860,7 @@ var PageHeader = React131__default.forwardRef(
8559
8860
  )
8560
8861
  );
8561
8862
  PageHeader.displayName = "PageHeader";
8562
- var PageTitle = React131__default.forwardRef(
8863
+ var PageTitle = React136__default.forwardRef(
8563
8864
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
8564
8865
  "h1",
8565
8866
  {
@@ -8570,19 +8871,19 @@ var PageTitle = React131__default.forwardRef(
8570
8871
  )
8571
8872
  );
8572
8873
  PageTitle.displayName = "PageTitle";
8573
- var PageDescription = React131__default.forwardRef(
8874
+ var PageDescription = React136__default.forwardRef(
8574
8875
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("p", { ref, className: cn("text-sm text-[hsl(var(--muted-foreground))] mt-1", className), ...props })
8575
8876
  );
8576
8877
  PageDescription.displayName = "PageDescription";
8577
- var PageActions = React131__default.forwardRef(
8878
+ var PageActions = React136__default.forwardRef(
8578
8879
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center gap-2 shrink-0", className), ...props })
8579
8880
  );
8580
8881
  PageActions.displayName = "PageActions";
8581
- var PageBody = React131__default.forwardRef(
8882
+ var PageBody = React136__default.forwardRef(
8582
8883
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex-1 p-6 flex flex-col gap-6", className), ...props })
8583
8884
  );
8584
8885
  PageBody.displayName = "PageBody";
8585
- var ResizeBox = React131__default.forwardRef(
8886
+ var ResizeBox = React136__default.forwardRef(
8586
8887
  ({ className, resize = "both", minWidth = 100, minHeight = 100, style, ...props }, ref) => /* @__PURE__ */ jsx(
8587
8888
  "div",
8588
8889
  {
@@ -8599,7 +8900,7 @@ var HandleIcon = () => /* @__PURE__ */ jsxs("svg", { width: "10", height: "10",
8599
8900
  /* @__PURE__ */ jsx("path", { d: "M8 5L5 8", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }),
8600
8901
  /* @__PURE__ */ jsx("path", { d: "M8 8L8 8", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
8601
8902
  ] });
8602
- var ResizeHandle = React131__default.forwardRef(
8903
+ var ResizeHandle = React136__default.forwardRef(
8603
8904
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
8604
8905
  "div",
8605
8906
  {
@@ -8615,16 +8916,16 @@ var ResizeHandle = React131__default.forwardRef(
8615
8916
  )
8616
8917
  );
8617
8918
  ResizeHandle.displayName = "ResizeHandle";
8618
- var SidebarCtx2 = React131__default.createContext({ collapsed: false });
8619
- var useSidebarCtx = () => React131__default.useContext(SidebarCtx2);
8919
+ var SidebarCtx2 = React136__default.createContext({ collapsed: false });
8920
+ var useSidebarCtx = () => React136__default.useContext(SidebarCtx2);
8620
8921
  var makeSlot = (name, cls) => {
8621
- const C = React131__default.forwardRef(
8922
+ const C = React136__default.forwardRef(
8622
8923
  ({ className, ...p }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn(cls, className), ...p })
8623
8924
  );
8624
8925
  C.displayName = name;
8625
8926
  return C;
8626
8927
  };
8627
- var Sidebar2 = React131__default.forwardRef(
8928
+ var Sidebar2 = React136__default.forwardRef(
8628
8929
  ({ className, collapsed = false, onCollapse, width = "240px", style, children, ...props }, ref) => /* @__PURE__ */ jsx(SidebarCtx2.Provider, { value: { collapsed }, children: /* @__PURE__ */ jsxs(
8629
8930
  "div",
8630
8931
  {
@@ -8652,7 +8953,7 @@ var SidebarContent = makeSlot("SidebarContent", "flex-1 overflow-y-auto py-2");
8652
8953
  var SidebarFooter2 = makeSlot("SidebarFooter", "px-3 py-3 border-t border-[hsl(var(--border))] shrink-0");
8653
8954
  var SidebarGroup = makeSlot("SidebarGroup", "mb-2");
8654
8955
  var SidebarSeparator2 = makeSlot("SidebarSeparator", "h-px bg-[hsl(var(--border))] mx-3 my-2");
8655
- var SidebarGroupLabel = React131__default.forwardRef(
8956
+ var SidebarGroupLabel = React136__default.forwardRef(
8656
8957
  ({ className, ...props }, ref) => {
8657
8958
  const { collapsed } = useSidebarCtx();
8658
8959
  return /* @__PURE__ */ jsx(
@@ -8666,7 +8967,7 @@ var SidebarGroupLabel = React131__default.forwardRef(
8666
8967
  }
8667
8968
  );
8668
8969
  SidebarGroupLabel.displayName = "SidebarGroupLabel";
8669
- var SidebarItem2 = React131__default.forwardRef(
8970
+ var SidebarItem2 = React136__default.forwardRef(
8670
8971
  ({ className, icon, label, active, href, badge, onClick, ...props }, ref) => {
8671
8972
  const { collapsed } = useSidebarCtx();
8672
8973
  const cls = cn(
@@ -8685,11 +8986,11 @@ var SidebarItem2 = React131__default.forwardRef(
8685
8986
  }
8686
8987
  );
8687
8988
  SidebarItem2.displayName = "SidebarItem";
8688
- var SplitPage = React131__default.forwardRef(
8989
+ var SplitPage = React136__default.forwardRef(
8689
8990
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex h-full w-full overflow-hidden", className), ...props })
8690
8991
  );
8691
8992
  SplitPage.displayName = "SplitPage";
8692
- var SplitPageList = React131__default.forwardRef(
8993
+ var SplitPageList = React136__default.forwardRef(
8693
8994
  ({ className, width = "320px", style, ...props }, ref) => /* @__PURE__ */ jsx(
8694
8995
  "div",
8695
8996
  {
@@ -8701,7 +9002,7 @@ var SplitPageList = React131__default.forwardRef(
8701
9002
  )
8702
9003
  );
8703
9004
  SplitPageList.displayName = "SplitPageList";
8704
- var SplitPageDetail = React131__default.forwardRef(
9005
+ var SplitPageDetail = React136__default.forwardRef(
8705
9006
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex-1 min-w-0 h-full overflow-auto", className), ...props })
8706
9007
  );
8707
9008
  SplitPageDetail.displayName = "SplitPageDetail";
@@ -8726,7 +9027,7 @@ var justifyMap = {
8726
9027
  around: "justify-around",
8727
9028
  evenly: "justify-evenly"
8728
9029
  };
8729
- var Stack = React131__default.forwardRef(
9030
+ var Stack = React136__default.forwardRef(
8730
9031
  ({ className, gap, direction = "col", align, justify, wrap, style, ...props }, ref) => /* @__PURE__ */ jsx(
8731
9032
  "div",
8732
9033
  {
@@ -8745,15 +9046,15 @@ var Stack = React131__default.forwardRef(
8745
9046
  )
8746
9047
  );
8747
9048
  Stack.displayName = "Stack";
8748
- var HStack = React131__default.forwardRef(
9049
+ var HStack = React136__default.forwardRef(
8749
9050
  (props, ref) => /* @__PURE__ */ jsx(Stack, { ref, direction: "row", ...props })
8750
9051
  );
8751
9052
  HStack.displayName = "HStack";
8752
- var VStack = React131__default.forwardRef(
9053
+ var VStack = React136__default.forwardRef(
8753
9054
  (props, ref) => /* @__PURE__ */ jsx(Stack, { ref, direction: "col", ...props })
8754
9055
  );
8755
9056
  VStack.displayName = "VStack";
8756
- var PageLayout = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
9057
+ var PageLayout = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
8757
9058
  "div",
8758
9059
  {
8759
9060
  ref,
@@ -8763,7 +9064,7 @@ var PageLayout = React131__default.forwardRef(({ className, ...props }, ref) =>
8763
9064
  }
8764
9065
  ));
8765
9066
  PageLayout.displayName = "PageLayout";
8766
- var PageHeader2 = React131__default.forwardRef(
9067
+ var PageHeader2 = React136__default.forwardRef(
8767
9068
  ({ className, title, description, actions, back, children }, ref) => /* @__PURE__ */ jsxs(
8768
9069
  "div",
8769
9070
  {
@@ -8785,7 +9086,7 @@ var PageHeader2 = React131__default.forwardRef(
8785
9086
  )
8786
9087
  );
8787
9088
  PageHeader2.displayName = "PageHeader";
8788
- var PageContainer = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
9089
+ var PageContainer = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
8789
9090
  "div",
8790
9091
  {
8791
9092
  ref,
@@ -8799,7 +9100,7 @@ var PageContainer = React131__default.forwardRef(({ className, ...props }, ref)
8799
9100
  }
8800
9101
  ));
8801
9102
  PageContainer.displayName = "PageContainer";
8802
- var PageMain = React131__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
9103
+ var PageMain = React136__default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
8803
9104
  "div",
8804
9105
  {
8805
9106
  ref,
@@ -9245,7 +9546,7 @@ var directionClasses = {
9245
9546
  bl: "bg-gradient-to-bl",
9246
9547
  l: "bg-gradient-to-l"
9247
9548
  };
9248
- var GradientHeading = React131__default.forwardRef(
9549
+ var GradientHeading = React136__default.forwardRef(
9249
9550
  ({
9250
9551
  as: Tag = "h2",
9251
9552
  preset = "primary",
@@ -9291,7 +9592,7 @@ function formatNumber(value, decimals, format3, locale) {
9291
9592
  }
9292
9593
  return decimals > 0 ? value.toFixed(decimals) : String(Math.round(value));
9293
9594
  }
9294
- var AnimatedNumber = React131__default.forwardRef(
9595
+ var AnimatedNumber = React136__default.forwardRef(
9295
9596
  ({
9296
9597
  value,
9297
9598
  from = 0,
@@ -9311,7 +9612,7 @@ var AnimatedNumber = React131__default.forwardRef(
9311
9612
  const startTimeRef = useRef(null);
9312
9613
  const containerRef = useRef(null);
9313
9614
  const hasStarted = useRef(false);
9314
- const runAnimation = React131__default.useCallback(
9615
+ const runAnimation = React136__default.useCallback(
9315
9616
  (startFrom) => {
9316
9617
  if (rafRef.current !== null) cancelAnimationFrame(rafRef.current);
9317
9618
  startTimeRef.current = null;
@@ -9423,7 +9724,7 @@ function TextReveal({
9423
9724
  }
9424
9725
  }, [autoStart, delay]);
9425
9726
  const units = mode === "chars" ? text.split("") : mode === "words" ? text.split(" ") : [text];
9426
- return React131__default.createElement(
9727
+ return React136__default.createElement(
9427
9728
  Tag,
9428
9729
  {
9429
9730
  ref: containerRef,
@@ -9503,7 +9804,7 @@ function Typewriter({
9503
9804
  if (timerRef.current) clearTimeout(timerRef.current);
9504
9805
  };
9505
9806
  }, [display, phase, wordIdx, words, typeSpeed, deleteSpeed, pauseAfter, loop]);
9506
- return React131__default.createElement(
9807
+ return React136__default.createElement(
9507
9808
  Tag,
9508
9809
  {
9509
9810
  "data-slot": "typewriter",
@@ -9542,9 +9843,9 @@ var headingVariants = cva("font-heading tracking-tight text-foreground", {
9542
9843
  },
9543
9844
  defaultVariants: { size: "lg", tone: "default" }
9544
9845
  });
9545
- var Heading = React131__default.forwardRef(
9846
+ var Heading = React136__default.forwardRef(
9546
9847
  ({ as: Tag = "h2", size, tone, className, ...props }, ref) => {
9547
- return React131__default.createElement(Tag, {
9848
+ return React136__default.createElement(Tag, {
9548
9849
  ref,
9549
9850
  "data-slot": "heading",
9550
9851
  className: cn(headingVariants({ size, tone }), className),
@@ -9574,9 +9875,9 @@ var bodyVariants = cva("font-sans", {
9574
9875
  },
9575
9876
  defaultVariants: { size: "md", tone: "default", weight: "normal" }
9576
9877
  });
9577
- var Body = React131__default.forwardRef(
9878
+ var Body = React136__default.forwardRef(
9578
9879
  ({ as: Tag = "p", size, tone, weight, className, ...props }, ref) => {
9579
- return React131__default.createElement(Tag, {
9880
+ return React136__default.createElement(Tag, {
9580
9881
  ref,
9581
9882
  "data-slot": "body",
9582
9883
  className: cn(bodyVariants({ size, tone, weight }), className),
@@ -9595,7 +9896,7 @@ var captionVariants = cva("font-sans text-[11px] font-semibold uppercase trackin
9595
9896
  },
9596
9897
  defaultVariants: { tone: "default" }
9597
9898
  });
9598
- var Caption = React131__default.forwardRef(
9899
+ var Caption = React136__default.forwardRef(
9599
9900
  ({ tone, className, ...props }, ref) => /* @__PURE__ */ jsx(
9600
9901
  "span",
9601
9902
  {
@@ -9607,7 +9908,7 @@ var Caption = React131__default.forwardRef(
9607
9908
  )
9608
9909
  );
9609
9910
  Caption.displayName = "Caption";
9610
- var Code3 = React131__default.forwardRef(
9911
+ var Code3 = React136__default.forwardRef(
9611
9912
  ({ block, className, children, ...props }, ref) => {
9612
9913
  if (block) {
9613
9914
  return /* @__PURE__ */ jsx(
@@ -9659,7 +9960,7 @@ var presetStyles = {
9659
9960
  },
9660
9961
  custom: {}
9661
9962
  };
9662
- var GradientBackground = React131__default.forwardRef(
9963
+ var GradientBackground = React136__default.forwardRef(
9663
9964
  ({
9664
9965
  fixed = false,
9665
9966
  preset = "slate",
@@ -9718,7 +10019,7 @@ var DEFAULT_COLORS4 = [
9718
10019
  "hsl(280 100% 70% / 0.25)",
9719
10020
  "hsl(217 33% 17% / 0.4)"
9720
10021
  ];
9721
- var AnimatedGradient = React131__default.forwardRef(
10022
+ var AnimatedGradient = React136__default.forwardRef(
9722
10023
  ({
9723
10024
  colors = DEFAULT_COLORS4,
9724
10025
  speed = 1,
@@ -9837,7 +10138,7 @@ var AnimatedGradient = React131__default.forwardRef(
9837
10138
  }
9838
10139
  );
9839
10140
  AnimatedGradient.displayName = "AnimatedGradient";
9840
- var DottedBackground = React131__default.forwardRef(
10141
+ var DottedBackground = React136__default.forwardRef(
9841
10142
  ({
9842
10143
  color,
9843
10144
  dotSize = 1,
@@ -9884,7 +10185,7 @@ var DottedBackground = React131__default.forwardRef(
9884
10185
  }
9885
10186
  );
9886
10187
  DottedBackground.displayName = "DottedBackground";
9887
- var NoiseBackground = React131__default.forwardRef(
10188
+ var NoiseBackground = React136__default.forwardRef(
9888
10189
  ({
9889
10190
  opacity = 0.04,
9890
10191
  frequency = 0.65,
@@ -9980,7 +10281,7 @@ var DEFAULT_COLORS5 = [
9980
10281
  [0.55, 0.3, 0.95]
9981
10282
  // chart-3 violet
9982
10283
  ];
9983
- var HeroShaderA = React131__default.forwardRef(
10284
+ var HeroShaderA = React136__default.forwardRef(
9984
10285
  ({
9985
10286
  className,
9986
10287
  colors = DEFAULT_COLORS5,
@@ -9994,7 +10295,7 @@ var HeroShaderA = React131__default.forwardRef(
9994
10295
  const wrapRef = useRef(null);
9995
10296
  const canvasRef = useRef(null);
9996
10297
  const fallbackRef = useRef(false);
9997
- React131__default.useImperativeHandle(ref, () => wrapRef.current);
10298
+ React136__default.useImperativeHandle(ref, () => wrapRef.current);
9998
10299
  useEffect(() => {
9999
10300
  if (typeof window === "undefined") return;
10000
10301
  const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
@@ -10131,7 +10432,7 @@ var HeroShaderA = React131__default.forwardRef(
10131
10432
  }
10132
10433
  );
10133
10434
  HeroShaderA.displayName = "HeroShaderA";
10134
- var ScrollHeader = React131__default.forwardRef(
10435
+ var ScrollHeader = React136__default.forwardRef(
10135
10436
  ({
10136
10437
  title,
10137
10438
  subtitle,
@@ -10218,7 +10519,7 @@ var DEFAULT_TRANSITION = {
10218
10519
  ease: [0.16, 1, 0.3, 1]
10219
10520
  // ease-out-expo (BezierDefinition)
10220
10521
  };
10221
- var FadeIn = React131__default.forwardRef(
10522
+ var FadeIn = React136__default.forwardRef(
10222
10523
  ({ delay = 0, duration, children, ...props }, ref) => {
10223
10524
  const transition = {
10224
10525
  ...DEFAULT_TRANSITION,
@@ -10246,7 +10547,7 @@ var DIRECTION_PRESET_MAP = {
10246
10547
  left: "slideLeft",
10247
10548
  right: "slideRight"
10248
10549
  };
10249
- var SlideIn = React131__default.forwardRef(
10550
+ var SlideIn = React136__default.forwardRef(
10250
10551
  ({ direction = "up", delay = 0, duration, children, ...props }, ref) => {
10251
10552
  const preset = MOTION_PRESETS[DIRECTION_PRESET_MAP[direction]];
10252
10553
  const transition = {
@@ -10269,7 +10570,7 @@ var SlideIn = React131__default.forwardRef(
10269
10570
  }
10270
10571
  );
10271
10572
  SlideIn.displayName = "SlideIn";
10272
- var ScaleIn = React131__default.forwardRef(
10573
+ var ScaleIn = React136__default.forwardRef(
10273
10574
  ({ delay = 0, duration, children, ...props }, ref) => {
10274
10575
  const transition = {
10275
10576
  ...DEFAULT_TRANSITION,
@@ -10333,16 +10634,16 @@ function Stagger({ staggerDelay = 0.05, preset = "fadeIn", children, className,
10333
10634
  initial: "hidden",
10334
10635
  animate: isInView ? "visible" : "hidden",
10335
10636
  className,
10336
- children: React131__default.Children.map(children, (child, i) => /* @__PURE__ */ jsx(motion.div, { variants: itemVariants, children: child }, i))
10637
+ children: React136__default.Children.map(children, (child, i) => /* @__PURE__ */ jsx(motion.div, { variants: itemVariants, children: child }, i))
10337
10638
  }
10338
10639
  );
10339
10640
  }
10340
- var Morph = React131__default.forwardRef(
10641
+ var Morph = React136__default.forwardRef(
10341
10642
  ({ layoutId, children, ...props }, ref) => /* @__PURE__ */ jsx(motion.div, { ref, layoutId, layout: true, ...props, children })
10342
10643
  );
10343
10644
  Morph.displayName = "Morph";
10344
10645
  var rippleCounter = 0;
10345
- var Ripple = React131__default.forwardRef(
10646
+ var Ripple = React136__default.forwardRef(
10346
10647
  ({ color = "currentColor", duration = 0.6, children, style, ...props }, ref) => {
10347
10648
  const [ripples, setRipples] = useState([]);
10348
10649
  const handlePointerDown = useCallback(
@@ -10398,7 +10699,7 @@ var Ripple = React131__default.forwardRef(
10398
10699
  }
10399
10700
  );
10400
10701
  Ripple.displayName = "Ripple";
10401
- var Parallax = React131__default.forwardRef(
10702
+ var Parallax = React136__default.forwardRef(
10402
10703
  ({ offset = 50, scrollRef, children, style, ...props }, ref) => {
10403
10704
  const innerRef = useRef(null);
10404
10705
  const resolvedRef = ref ?? innerRef;
@@ -10427,7 +10728,7 @@ function useLayoutId(key) {
10427
10728
  function Transition({ show = true, children, mode = "wait" }) {
10428
10729
  return /* @__PURE__ */ jsx(AnimatePresence, { mode, children: show ? children : null });
10429
10730
  }
10430
- var DataList = React131__default.forwardRef(
10731
+ var DataList = React136__default.forwardRef(
10431
10732
  ({ divided = true, bordered = true, className, ...props }, ref) => /* @__PURE__ */ jsx(
10432
10733
  "ul",
10433
10734
  {
@@ -10444,7 +10745,7 @@ var DataList = React131__default.forwardRef(
10444
10745
  )
10445
10746
  );
10446
10747
  DataList.displayName = "DataList";
10447
- var DataListItem = React131__default.forwardRef(
10748
+ var DataListItem = React136__default.forwardRef(
10448
10749
  ({ left, title, description, right, interactive, onSelect, className, children, ...props }, ref) => {
10449
10750
  const clickable = interactive || !!onSelect;
10450
10751
  return /* @__PURE__ */ jsxs(
@@ -10504,7 +10805,7 @@ function getWeekDays(date, weekStartsOn) {
10504
10805
  const start = startOfWeek$1(date, { weekStartsOn });
10505
10806
  return Array.from({ length: 7 }, (_, i) => addDays(start, i));
10506
10807
  }
10507
- var EventCalendar = React131__default.forwardRef(
10808
+ var EventCalendar = React136__default.forwardRef(
10508
10809
  ({
10509
10810
  events,
10510
10811
  view: viewProp,
@@ -10519,20 +10820,20 @@ var EventCalendar = React131__default.forwardRef(
10519
10820
  className,
10520
10821
  ...props
10521
10822
  }, ref) => {
10522
- const [internalView, setInternalView] = React131__default.useState("month");
10823
+ const [internalView, setInternalView] = React136__default.useState("month");
10523
10824
  const view = viewProp ?? internalView;
10524
- const commitView = React131__default.useCallback(
10825
+ const commitView = React136__default.useCallback(
10525
10826
  (next) => {
10526
10827
  if (viewProp === void 0) setInternalView(next);
10527
10828
  onViewChange?.(next);
10528
10829
  },
10529
10830
  [viewProp, onViewChange]
10530
10831
  );
10531
- const [internalDate, setInternalDate] = React131__default.useState(
10832
+ const [internalDate, setInternalDate] = React136__default.useState(
10532
10833
  () => defaultDate ?? /* @__PURE__ */ new Date()
10533
10834
  );
10534
10835
  const date = dateProp ?? internalDate;
10535
- const commitDate = React131__default.useCallback(
10836
+ const commitDate = React136__default.useCallback(
10536
10837
  (next) => {
10537
10838
  if (dateProp === void 0) setInternalDate(next);
10538
10839
  onDateChange?.(next);
@@ -10558,7 +10859,7 @@ var EventCalendar = React131__default.forwardRef(
10558
10859
  handleToday();
10559
10860
  }
10560
10861
  };
10561
- const headerLabel = React131__default.useMemo(() => {
10862
+ const headerLabel = React136__default.useMemo(() => {
10562
10863
  if (view === "month") return format(date, "MMMM yyyy");
10563
10864
  if (view === "week") {
10564
10865
  const start = startOfWeek$1(date, { weekStartsOn });
@@ -10707,11 +11008,11 @@ function MonthView({
10707
11008
  onEventCreate,
10708
11009
  onDayPick
10709
11010
  }) {
10710
- const cells = React131__default.useMemo(
11011
+ const cells = React136__default.useMemo(
10711
11012
  () => getMonthMatrix(date, weekStartsOn),
10712
11013
  [date, weekStartsOn]
10713
11014
  );
10714
- const weekdayLabels = React131__default.useMemo(() => {
11015
+ const weekdayLabels = React136__default.useMemo(() => {
10715
11016
  const start = startOfWeek$1(/* @__PURE__ */ new Date(), { weekStartsOn });
10716
11017
  return Array.from({ length: 7 }, (_, i) => format(addDays(start, i), "EEE"));
10717
11018
  }, [weekStartsOn]);
@@ -10858,7 +11159,7 @@ function HourGrid({
10858
11159
  onEventCreate,
10859
11160
  onEventResize
10860
11161
  }) {
10861
- const hours = React131__default.useMemo(() => Array.from({ length: 24 }, (_, i) => i), []);
11162
+ const hours = React136__default.useMemo(() => Array.from({ length: 24 }, (_, i) => i), []);
10862
11163
  const today = /* @__PURE__ */ new Date();
10863
11164
  return /* @__PURE__ */ jsxs(
10864
11165
  "div",
@@ -10912,7 +11213,7 @@ function DayColumn({
10912
11213
  onEventResize,
10913
11214
  showHeader
10914
11215
  }) {
10915
- const bodyRef = React131__default.useRef(null);
11216
+ const bodyRef = React136__default.useRef(null);
10916
11217
  const handleEmptyClick = (e) => {
10917
11218
  if (e.target.closest("[data-event-block]")) return;
10918
11219
  if (!onEventCreate) return;
@@ -10993,10 +11294,10 @@ function EventBlock({ event, day, onClick, onResize }) {
10993
11294
  differenceInMinutes(visibleEnd, visibleStart)
10994
11295
  );
10995
11296
  const top = startMinutes / 60 * HOUR_ROW_PX;
10996
- const [resizingDelta, setResizingDelta] = React131__default.useState(0);
11297
+ const [resizingDelta, setResizingDelta] = React136__default.useState(0);
10997
11298
  const height = durationMinutes / 60 * HOUR_ROW_PX + resizingDelta;
10998
- const isResizing = React131__default.useRef(false);
10999
- const startY = React131__default.useRef(0);
11299
+ const isResizing = React136__default.useRef(false);
11300
+ const startY = React136__default.useRef(0);
11000
11301
  const handleResizePointerDown = (e) => {
11001
11302
  if (!onResize) return;
11002
11303
  e.preventDefault();
@@ -11085,7 +11386,7 @@ function WeekView({
11085
11386
  onEventCreate,
11086
11387
  onEventResize
11087
11388
  }) {
11088
- const days = React131__default.useMemo(
11389
+ const days = React136__default.useMemo(
11089
11390
  () => getWeekDays(date, weekStartsOn),
11090
11391
  [date, weekStartsOn]
11091
11392
  );
@@ -11118,7 +11419,7 @@ function DayView({
11118
11419
  }
11119
11420
  ) });
11120
11421
  }
11121
- var GridList = React131__default.forwardRef(
11422
+ var GridList = React136__default.forwardRef(
11122
11423
  ({ minItemWidth = 240, gap = 1, className, style, ...props }, ref) => /* @__PURE__ */ jsx(
11123
11424
  "ul",
11124
11425
  {
@@ -11135,7 +11436,7 @@ var GridList = React131__default.forwardRef(
11135
11436
  )
11136
11437
  );
11137
11438
  GridList.displayName = "GridList";
11138
- var GridListItem = React131__default.forwardRef(
11439
+ var GridListItem = React136__default.forwardRef(
11139
11440
  ({ interactive, onSelect, className, ...props }, ref) => {
11140
11441
  const clickable = interactive || !!onSelect;
11141
11442
  return /* @__PURE__ */ jsx(
@@ -11206,7 +11507,7 @@ async function extractCroppedDataUrl(image, crop, format3, quality) {
11206
11507
  const mime = format3 === "jpeg" ? "image/jpeg" : format3 === "webp" ? "image/webp" : "image/png";
11207
11508
  return canvas.toDataURL(mime, quality);
11208
11509
  }
11209
- var ImageCrop = React131__default.forwardRef(
11510
+ var ImageCrop = React136__default.forwardRef(
11210
11511
  ({
11211
11512
  src,
11212
11513
  aspect,
@@ -11221,13 +11522,13 @@ var ImageCrop = React131__default.forwardRef(
11221
11522
  className,
11222
11523
  ...props
11223
11524
  }, ref) => {
11224
- const [crop, setCrop] = React131__default.useState(void 0);
11225
- const imgRef = React131__default.useRef(null);
11226
- const timerRef = React131__default.useRef(null);
11227
- React131__default.useEffect(() => {
11525
+ const [crop, setCrop] = React136__default.useState(void 0);
11526
+ const imgRef = React136__default.useRef(null);
11527
+ const timerRef = React136__default.useRef(null);
11528
+ React136__default.useEffect(() => {
11228
11529
  setCrop(void 0);
11229
11530
  }, [src]);
11230
- React131__default.useEffect(() => {
11531
+ React136__default.useEffect(() => {
11231
11532
  return () => {
11232
11533
  if (timerRef.current) clearTimeout(timerRef.current);
11233
11534
  };
@@ -11452,7 +11753,7 @@ function TreeRow({
11452
11753
  }
11453
11754
  );
11454
11755
  }
11455
- var Tree = React131__default.forwardRef(
11756
+ var Tree = React136__default.forwardRef(
11456
11757
  ({
11457
11758
  data,
11458
11759
  defaultExpandedIds,
@@ -11468,21 +11769,21 @@ var Tree = React131__default.forwardRef(
11468
11769
  ...props
11469
11770
  }, ref) => {
11470
11771
  const isControlled = expandedIds !== void 0;
11471
- const [internalExpanded, setInternalExpanded] = React131__default.useState(
11772
+ const [internalExpanded, setInternalExpanded] = React136__default.useState(
11472
11773
  () => new Set(defaultExpandedIds ?? [])
11473
11774
  );
11474
- const expandedSet = React131__default.useMemo(
11775
+ const expandedSet = React136__default.useMemo(
11475
11776
  () => isControlled ? new Set(expandedIds) : internalExpanded,
11476
11777
  [isControlled, expandedIds, internalExpanded]
11477
11778
  );
11478
- const commitExpanded = React131__default.useCallback(
11779
+ const commitExpanded = React136__default.useCallback(
11479
11780
  (next) => {
11480
11781
  if (!isControlled) setInternalExpanded(next);
11481
11782
  onExpandedChange?.(Array.from(next));
11482
11783
  },
11483
11784
  [isControlled, onExpandedChange]
11484
11785
  );
11485
- const toggle = React131__default.useCallback(
11786
+ const toggle = React136__default.useCallback(
11486
11787
  (id) => {
11487
11788
  const next = new Set(expandedSet);
11488
11789
  if (next.has(id)) next.delete(id);
@@ -11491,7 +11792,7 @@ var Tree = React131__default.forwardRef(
11491
11792
  },
11492
11793
  [expandedSet, commitExpanded]
11493
11794
  );
11494
- const expand = React131__default.useCallback(
11795
+ const expand = React136__default.useCallback(
11495
11796
  (id) => {
11496
11797
  if (expandedSet.has(id)) return;
11497
11798
  const next = new Set(expandedSet);
@@ -11500,7 +11801,7 @@ var Tree = React131__default.forwardRef(
11500
11801
  },
11501
11802
  [expandedSet, commitExpanded]
11502
11803
  );
11503
- const collapse = React131__default.useCallback(
11804
+ const collapse = React136__default.useCallback(
11504
11805
  (id) => {
11505
11806
  if (!expandedSet.has(id)) return;
11506
11807
  const next = new Set(expandedSet);
@@ -11509,27 +11810,27 @@ var Tree = React131__default.forwardRef(
11509
11810
  },
11510
11811
  [expandedSet, commitExpanded]
11511
11812
  );
11512
- const rows = React131__default.useMemo(
11813
+ const rows = React136__default.useMemo(
11513
11814
  () => flatten(data, expandedSet),
11514
11815
  [data, expandedSet]
11515
11816
  );
11516
- const [focusedId, setFocusedId] = React131__default.useState(
11817
+ const [focusedId, setFocusedId] = React136__default.useState(
11517
11818
  () => selectedId ?? data[0]?.id ?? null
11518
11819
  );
11519
- const rowRefs = React131__default.useRef(/* @__PURE__ */ new Map());
11520
- const registerRef = React131__default.useCallback(
11820
+ const rowRefs = React136__default.useRef(/* @__PURE__ */ new Map());
11821
+ const registerRef = React136__default.useCallback(
11521
11822
  (id, el) => {
11522
11823
  if (el) rowRefs.current.set(id, el);
11523
11824
  else rowRefs.current.delete(id);
11524
11825
  },
11525
11826
  []
11526
11827
  );
11527
- const moveFocus = React131__default.useCallback((id) => {
11828
+ const moveFocus = React136__default.useCallback((id) => {
11528
11829
  setFocusedId(id);
11529
11830
  const el = rowRefs.current.get(id);
11530
11831
  el?.focus();
11531
11832
  }, []);
11532
- const onRowKeyDown = React131__default.useCallback(
11833
+ const onRowKeyDown = React136__default.useCallback(
11533
11834
  (e, row) => {
11534
11835
  const idx = rows.findIndex((r) => r.node.id === row.node.id);
11535
11836
  if (idx === -1) return;
@@ -11579,11 +11880,11 @@ var Tree = React131__default.forwardRef(
11579
11880
  useSensor(PointerSensor, { activationConstraint: { distance: 5 } }),
11580
11881
  useSensor(KeyboardSensor)
11581
11882
  );
11582
- const [activeDragId, setActiveDragId] = React131__default.useState(null);
11583
- const handleDragStart = React131__default.useCallback((e) => {
11883
+ const [activeDragId, setActiveDragId] = React136__default.useState(null);
11884
+ const handleDragStart = React136__default.useCallback((e) => {
11584
11885
  setActiveDragId(String(e.active.id));
11585
11886
  }, []);
11586
- const handleDragEnd = React131__default.useCallback(
11887
+ const handleDragEnd = React136__default.useCallback(
11587
11888
  (e) => {
11588
11889
  setActiveDragId(null);
11589
11890
  const { active, over } = e;
@@ -11599,8 +11900,8 @@ var Tree = React131__default.forwardRef(
11599
11900
  },
11600
11901
  [onMove]
11601
11902
  );
11602
- const handleDragCancel = React131__default.useCallback(() => setActiveDragId(null), []);
11603
- const scrollerRef = React131__default.useRef(null);
11903
+ const handleDragCancel = React136__default.useCallback(() => setActiveDragId(null), []);
11904
+ const scrollerRef = React136__default.useRef(null);
11604
11905
  const virtualizer = useVirtualizer({
11605
11906
  count: virtualize ? rows.length : 0,
11606
11907
  getScrollElement: () => scrollerRef.current,
@@ -11702,7 +12003,7 @@ async function exitFs() {
11702
12003
  if (d.exitFullscreen) return void d.exitFullscreen();
11703
12004
  if (d.webkitExitFullscreen) return void d.webkitExitFullscreen();
11704
12005
  }
11705
- var VideoPlayer = React131__default.forwardRef(
12006
+ var VideoPlayer = React136__default.forwardRef(
11706
12007
  ({
11707
12008
  src,
11708
12009
  poster,
@@ -11719,33 +12020,33 @@ var VideoPlayer = React131__default.forwardRef(
11719
12020
  muted: mutedProp,
11720
12021
  ...videoProps
11721
12022
  }, ref) => {
11722
- const containerRef = React131__default.useRef(null);
11723
- const videoRef = React131__default.useRef(null);
11724
- const hideTimerRef = React131__default.useRef(null);
11725
- const [isPlaying, setIsPlaying] = React131__default.useState(false);
11726
- const [hasPlayed, setHasPlayed] = React131__default.useState(Boolean(autoPlay));
11727
- const [currentTime, setCurrentTime] = React131__default.useState(0);
11728
- const [duration, setDuration] = React131__default.useState(0);
11729
- const [buffered, setBuffered] = React131__default.useState(0);
11730
- const [volume, setVolume] = React131__default.useState(1);
11731
- const [isMuted, setIsMuted] = React131__default.useState(Boolean(mutedProp ?? autoPlay));
11732
- const [isFullscreen, setIsFullscreen] = React131__default.useState(false);
11733
- const [showControls, setShowControls] = React131__default.useState(true);
11734
- React131__default.useImperativeHandle(ref, () => containerRef.current);
11735
- React131__default.useEffect(() => {
12023
+ const containerRef = React136__default.useRef(null);
12024
+ const videoRef = React136__default.useRef(null);
12025
+ const hideTimerRef = React136__default.useRef(null);
12026
+ const [isPlaying, setIsPlaying] = React136__default.useState(false);
12027
+ const [hasPlayed, setHasPlayed] = React136__default.useState(Boolean(autoPlay));
12028
+ const [currentTime, setCurrentTime] = React136__default.useState(0);
12029
+ const [duration, setDuration] = React136__default.useState(0);
12030
+ const [buffered, setBuffered] = React136__default.useState(0);
12031
+ const [volume, setVolume] = React136__default.useState(1);
12032
+ const [isMuted, setIsMuted] = React136__default.useState(Boolean(mutedProp ?? autoPlay));
12033
+ const [isFullscreen, setIsFullscreen] = React136__default.useState(false);
12034
+ const [showControls, setShowControls] = React136__default.useState(true);
12035
+ React136__default.useImperativeHandle(ref, () => containerRef.current);
12036
+ React136__default.useEffect(() => {
11736
12037
  const v = videoRef.current;
11737
12038
  if (!v) return;
11738
12039
  v.volume = volume;
11739
12040
  v.muted = isMuted;
11740
12041
  }, [volume, isMuted]);
11741
- const showAndScheduleHide = React131__default.useCallback(() => {
12042
+ const showAndScheduleHide = React136__default.useCallback(() => {
11742
12043
  setShowControls(true);
11743
12044
  if (hideTimerRef.current) clearTimeout(hideTimerRef.current);
11744
12045
  if (isPlaying) {
11745
12046
  hideTimerRef.current = setTimeout(() => setShowControls(false), 3e3);
11746
12047
  }
11747
12048
  }, [isPlaying]);
11748
- React131__default.useEffect(() => {
12049
+ React136__default.useEffect(() => {
11749
12050
  if (!isPlaying) {
11750
12051
  if (hideTimerRef.current) clearTimeout(hideTimerRef.current);
11751
12052
  setShowControls(true);
@@ -11756,7 +12057,7 @@ var VideoPlayer = React131__default.forwardRef(
11756
12057
  if (hideTimerRef.current) clearTimeout(hideTimerRef.current);
11757
12058
  };
11758
12059
  }, [isPlaying]);
11759
- React131__default.useEffect(() => {
12060
+ React136__default.useEffect(() => {
11760
12061
  const onFsChange = () => setIsFullscreen(isFullscreenActive());
11761
12062
  document.addEventListener("fullscreenchange", onFsChange);
11762
12063
  document.addEventListener("webkitfullscreenchange", onFsChange);
@@ -11765,7 +12066,7 @@ var VideoPlayer = React131__default.forwardRef(
11765
12066
  document.removeEventListener("webkitfullscreenchange", onFsChange);
11766
12067
  };
11767
12068
  }, []);
11768
- const togglePlay = React131__default.useCallback(() => {
12069
+ const togglePlay = React136__default.useCallback(() => {
11769
12070
  const v = videoRef.current;
11770
12071
  if (!v) return;
11771
12072
  if (v.paused) {
@@ -11774,22 +12075,22 @@ var VideoPlayer = React131__default.forwardRef(
11774
12075
  v.pause();
11775
12076
  }
11776
12077
  }, []);
11777
- const toggleMute = React131__default.useCallback(() => {
12078
+ const toggleMute = React136__default.useCallback(() => {
11778
12079
  setIsMuted((m) => !m);
11779
12080
  }, []);
11780
- const toggleFullscreen = React131__default.useCallback(() => {
12081
+ const toggleFullscreen = React136__default.useCallback(() => {
11781
12082
  const el = containerRef.current;
11782
12083
  if (!el) return;
11783
12084
  if (isFullscreenActive()) void exitFs();
11784
12085
  else void requestFs(el);
11785
12086
  }, []);
11786
- const seekTo = React131__default.useCallback((time) => {
12087
+ const seekTo = React136__default.useCallback((time) => {
11787
12088
  const v = videoRef.current;
11788
12089
  if (!v) return;
11789
12090
  const clamped = Math.max(0, Math.min(v.duration || 0, time));
11790
12091
  v.currentTime = clamped;
11791
12092
  }, []);
11792
- const seekBy = React131__default.useCallback(
12093
+ const seekBy = React136__default.useCallback(
11793
12094
  (delta) => {
11794
12095
  seekTo((videoRef.current?.currentTime ?? 0) + delta);
11795
12096
  },
@@ -12137,7 +12438,7 @@ function Combobox({
12137
12438
  className,
12138
12439
  contentWidth = "trigger"
12139
12440
  }) {
12140
- const [open, setOpen] = React131__default.useState(false);
12441
+ const [open, setOpen] = React136__default.useState(false);
12141
12442
  const selected = options.find((o) => o.value === value);
12142
12443
  return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
12143
12444
  /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
@@ -12231,9 +12532,9 @@ function ColorSchemeSelect({
12231
12532
  className
12232
12533
  }) {
12233
12534
  const fallback = defaultValue ?? options[0]?.value ?? "";
12234
- const [value, setValue] = React131__default.useState(() => readInitial2(fallback));
12235
- const didMount = React131__default.useRef(false);
12236
- React131__default.useEffect(() => {
12535
+ const [value, setValue] = React136__default.useState(() => readInitial2(fallback));
12536
+ const didMount = React136__default.useRef(false);
12537
+ React136__default.useEffect(() => {
12237
12538
  if (!didMount.current) {
12238
12539
  didMount.current = true;
12239
12540
  return;
@@ -12679,6 +12980,6 @@ function SortableNav({ items, onReorder, className }) {
12679
12980
  return /* @__PURE__ */ jsx(DndContext, { sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: /* @__PURE__ */ jsx(SortableContext, { items: items.map((i) => i.id), strategy: verticalListSortingStrategy, children: /* @__PURE__ */ jsx("nav", { "data-slot": "sortable-nav", className: cn("space-y-0.5 px-2 py-1", className), children: items.map((item) => /* @__PURE__ */ jsx(SortableNavItemWrapper, { item }, item.id)) }) }) });
12680
12981
  }
12681
12982
 
12682
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityHeatmap, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedGradient, AnimatedNumber, AppShell, AppShellMain, AppShellSidebar, AppShellUserMenu, Sidebar as AppSidebar, AreaChart, ArrayField, AspectRatio, AutoForm, Avatar, AvatarFallback, AvatarGroup, AvatarImage, Badge, Banner, BarChart, BarList, Beacon, BillingStatus, Body, Breadcrumb, BreadcrumbItem, BreadcrumbPage, BreadcrumbSeparator, BulkActions, Button, Calendar, CalendarDayButton, Caption, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatDetail, Checkbox, Checklist, ChecklistItem, Code3 as Code, CodeBlock, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorPicker, ColorSchemeSelect, Combobox, Command, CommandBar, CommandBarEmpty, CommandBarGroup, CommandBarItem, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandList, CommandPalette, CommandPaletteProvider, CommandSeparator, CommandShortcut, Comparison, Container, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DEFAULT_THEME_OPTIONS, DEFAULT_TRANSITION, DataGrid, DataList, DataListItem, DataTable, DataTableColumnHeader, DataTablePagination, DataTableToolbar, DatePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DottedBackground, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateIcon, EventCalendar, FadeIn, FeedbackModal, Field, FieldDescription, FieldError, FieldLabel, FileCards, FileUpload, FileUploadPreview, FilesList, FilterBadge, FilterItem, Filters, FloatingActionButton, FloatingThemePicker, Gantt, GradientBackground, GradientHeading, GridList, GridListItem, HStack, Heading, Heatmap, HelpSheet, HeroShaderA, HotkeyBadge, Hotkeys, HotkeysProvider, HoverCard, HoverCardContent, HoverCardTrigger, IconBadge, ImageCrop, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, IntegrationCard, IntroDisclosure, InviteModal, Kanban, KanbanCard, KanbanColumn, Label3 as Label, LineChart, LoadingOverlay, LogoCarousel, MOTION_PRESETS, ManageTagsModal, Marquee, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MessagesCard, MetricCard, MetricCardWithButton, MetricCardWithIcon, MobileSidebarTrigger, Morph, Navbar, NavbarBrand, NavbarContent, NavbarItem, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NoiseBackground, NotificationSettings, ObjectField, OrgMenu, Page, PageActions, PageBody, PageContainer, PageDescription, PageHeader, PageLayout, PageMain, PageTitle, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PaletteSwatches, Parallax, PasswordInput, Persona, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, PropertyItem, PropertyList, QrCode, RadioGroup4 as RadioGroup, RadioGroupItem, Rating, ResizableHandle, ResizablePanel, ResizablePanelGroup, ResizeBox, ResizeHandle, Reveal, RichEditor, Ripple, RolesMenu, ScaleIn, ScrollArea, ScrollBar, ScrollHeader, SearchInput, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectUsersModal, SelectValue, Separator6 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, AppShell2 as Shell, Sidebar2 as Sidebar, SidebarContent, SidebarFooter2 as SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader2 as SidebarHeader, SidebarItem2 as SidebarItem, SidebarLayoutDashboard, SidebarLayoutGroups, SidebarLayoutMinimal, SidebarLayoutSearch, SidebarLayoutUser, SidebarResizer, SidebarSeparator2 as SidebarSeparator, Skeleton, SlideIn, Slider, SortableNav, SortableTaskList, Sparkline, Spinner, SplitPage, SplitPageDetail, SplitPageList, Stack, StackedLayoutBranded, StackedLayoutTabs, Stagger, Stat, StatGroup, StepForm, StepFormNavigation, StepFormStep, Stepper, StepperStep, StructuredList, StructuredListItem, StructuredListSection, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tags, TaskCard, TaskCardWithLabels, TextReveal, Textarea, TextureCard, TextureCardDescription, TextureCardHeader, TextureCardTitle, ThemeSwitch, Timeline, TimelineConnector, TimelineContent, TimelineItem, Toaster, Toggle, ToggleButton, ToggleButtonGroup, ToggleGroup, ToggleGroupItem, Tooltip2 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Tour, TourStep, Transition, Tree, Typewriter, UserMenu, VStack, VideoPlayer, WorkspaceMembers, WorkspacesMenu, badgeVariants, buttonVariants, cn, navigationMenuTriggerStyle, toastFn as toast, toastEmitter, toggleVariants, useAppShell, useCommandBar, useCommandPalette, useFormField, useHotkeys, useLayoutId, useSidebar, useTour };
12983
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityHeatmap, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedGradient, AnimatedNumber, AppShell, AppShellMain, AppShellSidebar, AppShellUserMenu, Sidebar as AppSidebar, AreaChart, ArrayField, AspectRatio, AutoForm, Avatar, AvatarFallback, AvatarGroup, AvatarImage, Badge, Banner, BarChart, BarList, Beacon, BillingStatus, Body, Breadcrumb, BreadcrumbItem, BreadcrumbPage, BreadcrumbSeparator, BulkActions, Button, Calendar, CalendarDayButton, Caption, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, CartLineItem, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatDetail, Checkbox, Checklist, ChecklistItem, Code3 as Code, CodeBlock, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorPicker, ColorSchemeSelect, Combobox, Command, CommandBar, CommandBarEmpty, CommandBarGroup, CommandBarItem, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandItem2 as CommandListItem, CommandPalette, CommandPaletteProvider, CommandSeparator, CommandShortcut, Comparison, Container, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DEFAULT_THEME_OPTIONS, DEFAULT_TRANSITION, DataGrid, DataList, DataListItem, DataTable, DataTableColumnHeader, DataTablePagination, DataTableToolbar, DatePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DottedBackground, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyCart, EmptyState, EmptyStateIcon, EventCalendar, FadeIn, FeedbackModal, Field, FieldDescription, FieldError, FieldLabel, FileCards, FileUpload, FileUploadPreview, FilesList, FilterBadge, FilterItem, Filters, FloatingActionButton, FloatingLabelInput, FloatingThemePicker, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Gantt, GradientBackground, GradientHeading, GridList, GridListItem, HStack, Heading, Heatmap, HelpSheet, HeroShaderA, HotkeyBadge, Hotkeys, HotkeysProvider, HoverCard, HoverCardContent, HoverCardTrigger, IconBadge, ImageCrop, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, IntegrationCard, IntroDisclosure, InviteModal, Kanban, KanbanCard, KanbanColumn, Label3 as Label, LineChart, LoadingOverlay, LogoCarousel, MOTION_PRESETS, ManageTagsModal, Marquee, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MessagesCard, MetricCard, MetricCardWithButton, MetricCardWithIcon, MobileSidebarTrigger, Morph, Navbar, NavbarBrand, NavbarContent, NavbarItem, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NoiseBackground, NotificationSettings, ObjectField, OrgMenu, Page, PageActions, PageBody, PageContainer, PageDescription, PageHeader, PageLayout, PageMain, PageTitle, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PaletteSwatches, Parallax, PasswordInput, Persona, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PriceTag, Progress, PropertyItem, PropertyList, QrCode, QuantityStepper, RadioGroup4 as RadioGroup, RadioGroupItem, Rating, ResizableHandle, ResizablePanel, ResizablePanelGroup, ResizeBox, ResizeHandle, Reveal, RichEditor, Ripple, RolesMenu, ScaleIn, ScrollArea, ScrollBar, ScrollHeader, SearchInput, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectUsersModal, SelectValue, Separator6 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, AppShell2 as Shell, Sidebar2 as Sidebar, SidebarContent, SidebarFooter2 as SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader2 as SidebarHeader, SidebarItem2 as SidebarItem, SidebarLayoutDashboard, SidebarLayoutGroups, SidebarLayoutMinimal, SidebarLayoutSearch, SidebarLayoutUser, SidebarResizer, SidebarSeparator2 as SidebarSeparator, Skeleton, SlideIn, Slider, SortableNav, SortableTaskList, Sparkline, Spinner, SplitPage, SplitPageDetail, SplitPageList, Stack, StackedLayoutBranded, StackedLayoutTabs, Stagger, Stat, StatGroup, StepForm, StepFormNavigation, StepFormStep, Stepper, StepperStep, StructuredList, StructuredListItem, StructuredListSection, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tags, TaskCard, TaskCardWithLabels, TextReveal, Textarea, TextureCard, TextureCardDescription, TextureCardHeader, TextureCardTitle, ThemeSwitch, Timeline, TimelineConnector, TimelineContent, TimelineItem, Toaster, Toggle, ToggleButton, ToggleButtonGroup, ToggleGroup, ToggleGroupItem, Tooltip2 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Tour, TourStep, Transition, Tree, Typewriter, UserMenu, VStack, VariantPicker, VideoPlayer, WorkspaceMembers, WorkspacesMenu, badgeVariants, buttonVariants, cn, navigationMenuTriggerStyle, toastFn as toast, toastEmitter, toggleVariants, useAppShell, useCommandBar, useCommandPalette, useHotkeys, useLayoutId, useSidebar, useTour };
12683
12984
  //# sourceMappingURL=index.mjs.map
12684
12985
  //# sourceMappingURL=index.mjs.map