@hanzo/ui 8.0.11 → 8.0.12

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 (165) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/backends/gui/index.d.ts +2 -0
  3. package/dist/backends/shadcn/aspect-ratio.d.ts +4 -0
  4. package/dist/backends/shadcn/avatar.d.ts +6 -0
  5. package/dist/backends/shadcn/badge.d.ts +9 -0
  6. package/dist/backends/shadcn/button.d.ts +19 -0
  7. package/dist/backends/shadcn/card.d.ts +9 -0
  8. package/dist/backends/shadcn/checkbox.d.ts +9 -0
  9. package/dist/backends/shadcn/collapsible.d.ts +5 -0
  10. package/dist/backends/shadcn/command.d.ts +80 -0
  11. package/dist/backends/shadcn/dialog.d.ts +15 -0
  12. package/dist/backends/shadcn/dropdown-menu.d.ts +34 -0
  13. package/dist/backends/shadcn/index.d.ts +23 -0
  14. package/dist/backends/shadcn/input.d.ts +11 -0
  15. package/dist/backends/shadcn/label.d.ts +4 -0
  16. package/dist/backends/shadcn/popover.d.ts +7 -0
  17. package/dist/backends/shadcn/progress.d.ts +4 -0
  18. package/dist/backends/shadcn/scroll-area.d.ts +5 -0
  19. package/dist/backends/shadcn/select.d.ts +13 -0
  20. package/dist/backends/shadcn/separator.d.ts +4 -0
  21. package/dist/backends/shadcn/slider.d.ts +4 -0
  22. package/dist/backends/shadcn/switch.d.ts +4 -0
  23. package/dist/backends/shadcn/tabs.d.ts +7 -0
  24. package/dist/backends/shadcn/textarea.d.ts +4 -0
  25. package/dist/backends/shadcn/toaster.d.ts +10 -0
  26. package/dist/backends/shadcn/tooltip.d.ts +7 -0
  27. package/dist/backends/shadcn/utils.d.ts +8 -0
  28. package/dist/components.d.ts +1 -0
  29. package/dist/core/cn.d.ts +11 -0
  30. package/dist/core/fonts.d.ts +26 -0
  31. package/dist/core/index.d.ts +3 -0
  32. package/dist/core/tokens.d.ts +16 -0
  33. package/dist/index.cjs +1138 -291
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.js +1017 -3
  37. package/dist/index.js.map +1 -1
  38. package/dist/models/ModelSelector.d.ts +23 -0
  39. package/dist/models/catalog.d.ts +53 -0
  40. package/dist/models/index.d.ts +5 -0
  41. package/dist/models/types.d.ts +39 -0
  42. package/dist/primitives/AspectRatio.d.ts +1 -0
  43. package/dist/primitives/Avatar.d.ts +1 -0
  44. package/dist/primitives/AvatarFallback.d.ts +1 -0
  45. package/dist/primitives/AvatarImage.d.ts +1 -0
  46. package/dist/primitives/Badge.d.ts +1 -0
  47. package/dist/primitives/Button.d.ts +1 -0
  48. package/dist/primitives/Card.d.ts +1 -0
  49. package/dist/primitives/CardAction.d.ts +1 -0
  50. package/dist/primitives/CardContent.d.ts +1 -0
  51. package/dist/primitives/CardDescription.d.ts +1 -0
  52. package/dist/primitives/CardFooter.d.ts +1 -0
  53. package/dist/primitives/CardHeader.d.ts +1 -0
  54. package/dist/primitives/CardTitle.d.ts +1 -0
  55. package/dist/primitives/Checkbox.d.ts +1 -0
  56. package/dist/primitives/Collapsible.d.ts +1 -0
  57. package/dist/primitives/CollapsibleContent.d.ts +1 -0
  58. package/dist/primitives/CollapsibleTrigger.d.ts +1 -0
  59. package/dist/primitives/Command.d.ts +1 -0
  60. package/dist/primitives/CommandDialog.d.ts +1 -0
  61. package/dist/primitives/CommandEmpty.d.ts +1 -0
  62. package/dist/primitives/CommandGroup.d.ts +1 -0
  63. package/dist/primitives/CommandInput.d.ts +1 -0
  64. package/dist/primitives/CommandItem.d.ts +1 -0
  65. package/dist/primitives/CommandList.d.ts +1 -0
  66. package/dist/primitives/CommandSeparator.d.ts +1 -0
  67. package/dist/primitives/CommandShortcut.d.ts +1 -0
  68. package/dist/primitives/Dialog.d.ts +1 -0
  69. package/dist/primitives/DialogClose.d.ts +1 -0
  70. package/dist/primitives/DialogContent.d.ts +1 -0
  71. package/dist/primitives/DialogDescription.d.ts +1 -0
  72. package/dist/primitives/DialogFooter.d.ts +1 -0
  73. package/dist/primitives/DialogHeader.d.ts +1 -0
  74. package/dist/primitives/DialogOverlay.d.ts +1 -0
  75. package/dist/primitives/DialogPortal.d.ts +1 -0
  76. package/dist/primitives/DialogTitle.d.ts +1 -0
  77. package/dist/primitives/DialogTrigger.d.ts +1 -0
  78. package/dist/primitives/DropdownMenu.d.ts +1 -0
  79. package/dist/primitives/DropdownMenuCheckboxItem.d.ts +1 -0
  80. package/dist/primitives/DropdownMenuContent.d.ts +1 -0
  81. package/dist/primitives/DropdownMenuGroup.d.ts +1 -0
  82. package/dist/primitives/DropdownMenuItem.d.ts +1 -0
  83. package/dist/primitives/DropdownMenuLabel.d.ts +1 -0
  84. package/dist/primitives/DropdownMenuPortal.d.ts +1 -0
  85. package/dist/primitives/DropdownMenuRadioGroup.d.ts +1 -0
  86. package/dist/primitives/DropdownMenuRadioItem.d.ts +1 -0
  87. package/dist/primitives/DropdownMenuSeparator.d.ts +1 -0
  88. package/dist/primitives/DropdownMenuShortcut.d.ts +1 -0
  89. package/dist/primitives/DropdownMenuSub.d.ts +1 -0
  90. package/dist/primitives/DropdownMenuSubContent.d.ts +1 -0
  91. package/dist/primitives/DropdownMenuSubTrigger.d.ts +1 -0
  92. package/dist/primitives/DropdownMenuTrigger.d.ts +1 -0
  93. package/dist/primitives/Input.d.ts +1 -0
  94. package/dist/primitives/Label.d.ts +1 -0
  95. package/dist/primitives/Popover.d.ts +1 -0
  96. package/dist/primitives/PopoverAnchor.d.ts +1 -0
  97. package/dist/primitives/PopoverContent.d.ts +1 -0
  98. package/dist/primitives/PopoverTrigger.d.ts +1 -0
  99. package/dist/primitives/Progress.d.ts +1 -0
  100. package/dist/primitives/ScrollArea.d.ts +1 -0
  101. package/dist/primitives/ScrollBar.d.ts +1 -0
  102. package/dist/primitives/Select.d.ts +1 -0
  103. package/dist/primitives/SelectContent.d.ts +1 -0
  104. package/dist/primitives/SelectGroup.d.ts +1 -0
  105. package/dist/primitives/SelectItem.d.ts +1 -0
  106. package/dist/primitives/SelectLabel.d.ts +1 -0
  107. package/dist/primitives/SelectScrollDownButton.d.ts +1 -0
  108. package/dist/primitives/SelectScrollUpButton.d.ts +1 -0
  109. package/dist/primitives/SelectSeparator.d.ts +1 -0
  110. package/dist/primitives/SelectTrigger.d.ts +1 -0
  111. package/dist/primitives/SelectValue.d.ts +1 -0
  112. package/dist/primitives/Separator.d.ts +1 -0
  113. package/dist/primitives/Slider.d.ts +1 -0
  114. package/dist/primitives/Switch.d.ts +1 -0
  115. package/dist/primitives/Tabs.d.ts +1 -0
  116. package/dist/primitives/TabsContent.d.ts +1 -0
  117. package/dist/primitives/TabsList.d.ts +1 -0
  118. package/dist/primitives/TabsTrigger.d.ts +1 -0
  119. package/dist/primitives/Textarea.d.ts +1 -0
  120. package/dist/primitives/Toaster.d.ts +1 -0
  121. package/dist/primitives/Tooltip.d.ts +1 -0
  122. package/dist/primitives/TooltipContent.d.ts +1 -0
  123. package/dist/primitives/TooltipProvider.d.ts +1 -0
  124. package/dist/primitives/TooltipTrigger.d.ts +1 -0
  125. package/dist/primitives/badgeVariants.d.ts +1 -0
  126. package/dist/primitives/buttonVariants.d.ts +1 -0
  127. package/dist/primitives/index.d.ts +1 -0
  128. package/dist/primitives/toast.d.ts +1 -0
  129. package/dist/product/AnimatedLogo.d.ts +47 -0
  130. package/dist/product/BackendState.d.ts +42 -0
  131. package/dist/product/Charts.d.ts +4 -0
  132. package/dist/product/CommerceResource.d.ts +32 -0
  133. package/dist/product/ConfirmDelete.d.ts +8 -0
  134. package/dist/product/DataTable.d.ts +30 -2
  135. package/dist/product/Field.d.ts +7 -2
  136. package/dist/product/Filters.d.ts +29 -0
  137. package/dist/product/PrimaryButton.d.ts +5 -0
  138. package/dist/product/SiteFooter.d.ts +28 -0
  139. package/dist/product/SiteNav.d.ts +60 -0
  140. package/dist/product/accent.d.ts +33 -0
  141. package/dist/product/animatedLogo.logic.d.ts +52 -0
  142. package/dist/product/brand.d.ts +45 -0
  143. package/dist/product/host.d.ts +21 -0
  144. package/dist/product/index.cjs +3205 -265
  145. package/dist/product/index.cjs.map +1 -1
  146. package/dist/product/index.d.ts +11 -0
  147. package/dist/product/index.js +3103 -1
  148. package/dist/product/index.js.map +1 -1
  149. package/dist/product/social/CampaignCard.d.ts +13 -0
  150. package/dist/product/social/ChannelBadge.d.ts +12 -0
  151. package/dist/product/social/PostAgenda.d.ts +5 -0
  152. package/dist/product/social/PostCard.d.ts +15 -0
  153. package/dist/product/social/PostComposer.d.ts +24 -0
  154. package/dist/product/social/ProviderReadinessList.d.ts +10 -0
  155. package/dist/product/social/SocialSummaryBar.d.ts +9 -0
  156. package/dist/product/social/ViewToggle.d.ts +5 -0
  157. package/dist/product/social/format.d.ts +16 -0
  158. package/dist/product/social/index.d.ts +9 -0
  159. package/dist/product/surfaces.data.d.ts +1 -0
  160. package/dist/styles/hanzo-motion.css +52 -0
  161. package/package.json +94 -20
  162. package/dist/chunk-M2ILMK44.cjs +0 -2104
  163. package/dist/chunk-M2ILMK44.cjs.map +0 -1
  164. package/dist/chunk-YSURJUOA.js +0 -2035
  165. package/dist/chunk-YSURJUOA.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,6 +1,1020 @@
1
1
  'use client';
2
- export { AppHeader, BarChart, BarRows, BrandMark, CHART_OTHER, CHART_PALETTE, ComboBox, ContextMenu, Boxes as CustomModelMark, DataTable, Donut, Donut2 as DonutRing, DropdownMenu, EmptyState, FadeIn, FieldRow, FieldSelect, FieldSlider, FieldSwitch, FieldText, FieldTextArea, FloatingMenu, GenericLogo, HanzoMark, HintButton, LegendDot, LineChart, MenuItemView, MenuLabelView, MenuPanel, MenuSeparatorView, MetricCard, Sparkline2 as MetricSparkline, MiniBars, OrgMark, OrgSwitcher, PageHeader, Panel, PortalTheme, PrimaryButton, ProductIcon, ProviderLogo, Reorder, SERIES, LG as SLIDEOVER_LG, SURFACES, SelectMenu, SlideOver, Sparkline, StatusTag, ToastProvider, UtilBar, asColor, colorForIndex, filterOptions, filterOrgs, isKnownOption, monogram, orgScope, otherSurfaces, providerInitials, renderMenuItems, rowShift, targetIndex, useToast, utilColor } from './chunk-YSURJUOA.js';
3
- export { AgnosticThemeToggle, ThemeToggle, ThemeToggleNext } from './chunk-42CU5GSF.js';
4
- export { TAG_TONES, tagTone, tokens } from '@hanzo/data';
2
+ import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
3
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
5
+ import * as React6 from 'react';
6
+ import { clsx } from 'clsx';
7
+ import { twMerge } from 'tailwind-merge';
8
+ import { Slot } from '@radix-ui/react-slot';
9
+ import { cva } from 'class-variance-authority';
10
+ import { Loader2, XIcon, SearchIcon, CheckIcon as CheckIcon$1, CircleIcon, ChevronRightIcon, EyeOffIcon, EyeIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';
11
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
12
+ import { CheckIcon } from '@radix-ui/react-icons';
13
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
14
+ import { Command as Command$1 } from 'cmdk';
15
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
16
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
17
+ import * as LabelPrimitive from '@radix-ui/react-label';
18
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
19
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
20
+ import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
21
+ import * as SelectPrimitive from '@radix-ui/react-select';
22
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
23
+ import * as SliderPrimitive from '@radix-ui/react-slider';
24
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
25
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
26
+ import { useTheme } from 'next-themes';
27
+ import { Toaster as Toaster$1 } from 'sonner';
28
+ export { toast } from 'sonner';
29
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
30
+
31
+ // src/backends/shadcn/aspect-ratio.tsx
32
+ function AspectRatio(props) {
33
+ return /* @__PURE__ */ jsx(AspectRatioPrimitive.Root, { "data-slot": "aspect-ratio", ...props });
34
+ }
35
+ function cn(...inputs) {
36
+ return twMerge(clsx(inputs));
37
+ }
38
+ var Avatar = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
39
+ AvatarPrimitive.Root,
40
+ {
41
+ ref,
42
+ "data-slot": "avatar",
43
+ className: cn("relative flex size-8 shrink-0 overflow-hidden rounded-full", className),
44
+ ...props
45
+ }
46
+ ));
47
+ Avatar.displayName = AvatarPrimitive.Root.displayName;
48
+ var AvatarImage = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
49
+ AvatarPrimitive.Image,
50
+ {
51
+ ref,
52
+ "data-slot": "avatar-image",
53
+ className: cn("aspect-square size-full", className),
54
+ ...props
55
+ }
56
+ ));
57
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
58
+ var AvatarFallback = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
59
+ AvatarPrimitive.Fallback,
60
+ {
61
+ ref,
62
+ "data-slot": "avatar-fallback",
63
+ className: cn(
64
+ "bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm",
65
+ className
66
+ ),
67
+ ...props
68
+ }
69
+ ));
70
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
71
+ var badgeVariants = cva(
72
+ "inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] focus-visible:outline-none aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive [&>svg]:pointer-events-none overflow-hidden",
73
+ {
74
+ variants: {
75
+ variant: {
76
+ default: "bg-primary text-primary-foreground hover:bg-primary/90 border-transparent shadow-sm",
77
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent",
78
+ destructive: "bg-destructive text-white hover:bg-destructive/90 border-transparent shadow-sm focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
79
+ outline: "text-foreground border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",
80
+ ghost: "hover:bg-accent hover:text-accent-foreground border-transparent",
81
+ link: "text-primary underline-offset-4 hover:underline border-transparent",
82
+ // Hanzo compatibility variants — retokenized to standard vars
83
+ // (was `bg-gray-600 text-white`, an app-private color).
84
+ inputAdornment: "bg-muted px-2 font-medium text-foreground border-transparent",
85
+ tags: "text-muted-foreground border-border bg-muted rounded-lg px-2 py-1 font-normal capitalize"
86
+ }
87
+ },
88
+ defaultVariants: {
89
+ variant: "default"
90
+ }
91
+ }
92
+ );
93
+ function Badge({
94
+ className,
95
+ variant = "default",
96
+ asChild = false,
97
+ ...props
98
+ }) {
99
+ const Comp = asChild ? Slot : "span";
100
+ return /* @__PURE__ */ jsx(
101
+ Comp,
102
+ {
103
+ "data-slot": "badge",
104
+ "data-variant": variant,
105
+ className: cn(badgeVariants({ variant }), className),
106
+ ...props
107
+ }
108
+ );
109
+ }
110
+ var buttonVariants = cva(
111
+ 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*="size-"])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',
112
+ {
113
+ variants: {
114
+ variant: {
115
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
116
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
117
+ outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
118
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
119
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
120
+ link: "text-primary underline-offset-4 hover:underline",
121
+ // Hanzo compatibility variants (kept so existing call sites don't churn).
122
+ primary: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
123
+ linkFG: "text-primary underline-offset-4 hover:underline",
124
+ linkMuted: "text-muted-foreground underline-offset-4 hover:underline hover:text-foreground"
125
+ },
126
+ size: {
127
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
128
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
129
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
130
+ icon: "size-9",
131
+ "icon-sm": "size-8",
132
+ "icon-lg": "size-10"
133
+ }
134
+ },
135
+ defaultVariants: {
136
+ variant: "default",
137
+ size: "default"
138
+ }
139
+ }
140
+ );
141
+ var Button = React6.forwardRef(
142
+ ({
143
+ className,
144
+ variant = "default",
145
+ size = "default",
146
+ asChild = false,
147
+ isLoading = false,
148
+ children,
149
+ ...props
150
+ }, ref) => {
151
+ const Comp = asChild ? Slot : "button";
152
+ const iconSize = size === "icon" || size === "icon-sm" || size === "icon-lg";
153
+ return /* @__PURE__ */ jsx(
154
+ Comp,
155
+ {
156
+ "data-slot": "button",
157
+ "data-variant": variant,
158
+ "data-size": size,
159
+ className: cn(buttonVariants({ variant, size, className })),
160
+ ref,
161
+ ...props,
162
+ children: asChild ? (
163
+ // A Radix `Slot` calls `React.Children.only`; it must receive exactly
164
+ // one child, so an injected spinner alongside `children` would crash
165
+ // the tree. Pass `children` through unchanged when slotted.
166
+ children
167
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
168
+ isLoading ? /* @__PURE__ */ jsx(Loader2, { className: cn("h-4 w-4 animate-spin", !iconSize && "mr-2") }) : null,
169
+ children
170
+ ] })
171
+ }
172
+ );
173
+ }
174
+ );
175
+ Button.displayName = "Button";
176
+ function Card({ className, ...props }) {
177
+ return /* @__PURE__ */ jsx(
178
+ "div",
179
+ {
180
+ "data-slot": "card",
181
+ className: cn(
182
+ "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
183
+ className
184
+ ),
185
+ ...props
186
+ }
187
+ );
188
+ }
189
+ function CardHeader({ className, ...props }) {
190
+ return /* @__PURE__ */ jsx(
191
+ "div",
192
+ {
193
+ "data-slot": "card-header",
194
+ className: cn(
195
+ "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
196
+ className
197
+ ),
198
+ ...props
199
+ }
200
+ );
201
+ }
202
+ function CardTitle({ className, ...props }) {
203
+ return /* @__PURE__ */ jsx(
204
+ "div",
205
+ {
206
+ "data-slot": "card-title",
207
+ className: cn("leading-none font-semibold", className),
208
+ ...props
209
+ }
210
+ );
211
+ }
212
+ function CardDescription({ className, ...props }) {
213
+ return /* @__PURE__ */ jsx(
214
+ "div",
215
+ {
216
+ "data-slot": "card-description",
217
+ className: cn("text-muted-foreground text-sm", className),
218
+ ...props
219
+ }
220
+ );
221
+ }
222
+ function CardAction({ className, ...props }) {
223
+ return /* @__PURE__ */ jsx(
224
+ "div",
225
+ {
226
+ "data-slot": "card-action",
227
+ className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className),
228
+ ...props
229
+ }
230
+ );
231
+ }
232
+ function CardContent({ className, ...props }) {
233
+ return /* @__PURE__ */ jsx("div", { "data-slot": "card-content", className: cn("px-6", className), ...props });
234
+ }
235
+ function CardFooter({ className, ...props }) {
236
+ return /* @__PURE__ */ jsx(
237
+ "div",
238
+ {
239
+ "data-slot": "card-footer",
240
+ className: cn("flex items-center px-6 [.border-t]:pt-6", className),
241
+ ...props
242
+ }
243
+ );
244
+ }
245
+ var Checkbox = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
246
+ CheckboxPrimitive.Root,
247
+ {
248
+ ref,
249
+ "data-slot": "checkbox",
250
+ className: cn(
251
+ "peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground aria-invalid:border-destructive",
252
+ className
253
+ ),
254
+ ...props,
255
+ children: /* @__PURE__ */ jsx(
256
+ CheckboxPrimitive.Indicator,
257
+ {
258
+ "data-slot": "checkbox-indicator",
259
+ className: cn("flex items-center justify-center text-current"),
260
+ children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
261
+ }
262
+ )
263
+ }
264
+ ));
265
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
266
+ function Collapsible(props) {
267
+ return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, { "data-slot": "collapsible", ...props });
268
+ }
269
+ function CollapsibleTrigger2(props) {
270
+ return /* @__PURE__ */ jsx(CollapsiblePrimitive.CollapsibleTrigger, { "data-slot": "collapsible-trigger", ...props });
271
+ }
272
+ function CollapsibleContent2(props) {
273
+ return /* @__PURE__ */ jsx(CollapsiblePrimitive.CollapsibleContent, { "data-slot": "collapsible-content", ...props });
274
+ }
275
+ var Dialog = DialogPrimitive.Root;
276
+ var DialogTrigger = DialogPrimitive.Trigger;
277
+ var DialogPortal = DialogPrimitive.Portal;
278
+ var DialogClose = DialogPrimitive.Close;
279
+ var DialogOverlay = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
280
+ DialogPrimitive.Overlay,
281
+ {
282
+ ref,
283
+ "data-slot": "dialog-overlay",
284
+ className: cn(
285
+ "fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
286
+ className
287
+ ),
288
+ ...props
289
+ }
290
+ ));
291
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
292
+ var DialogContent = React6.forwardRef(({ className, children, showCloseButton = true, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
293
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
294
+ /* @__PURE__ */ jsxs(
295
+ DialogPrimitive.Content,
296
+ {
297
+ ref,
298
+ "data-slot": "dialog-content",
299
+ className: cn(
300
+ "bg-background text-foreground font-sans fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:max-w-lg",
301
+ className
302
+ ),
303
+ ...props,
304
+ children: [
305
+ children,
306
+ showCloseButton ? /* @__PURE__ */ jsxs(
307
+ DialogPrimitive.Close,
308
+ {
309
+ "data-slot": "dialog-close",
310
+ className: "ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:size-4",
311
+ children: [
312
+ /* @__PURE__ */ jsx(XIcon, {}),
313
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
314
+ ]
315
+ }
316
+ ) : null
317
+ ]
318
+ }
319
+ )
320
+ ] }));
321
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
322
+ function DialogHeader({ className, ...props }) {
323
+ return /* @__PURE__ */ jsx(
324
+ "div",
325
+ {
326
+ "data-slot": "dialog-header",
327
+ className: cn("flex flex-col gap-2 text-center sm:text-left", className),
328
+ ...props
329
+ }
330
+ );
331
+ }
332
+ function DialogFooter({ className, ...props }) {
333
+ return /* @__PURE__ */ jsx(
334
+ "div",
335
+ {
336
+ "data-slot": "dialog-footer",
337
+ className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
338
+ ...props
339
+ }
340
+ );
341
+ }
342
+ var DialogTitle = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
343
+ DialogPrimitive.Title,
344
+ {
345
+ ref,
346
+ "data-slot": "dialog-title",
347
+ className: cn("text-lg leading-none font-semibold", className),
348
+ ...props
349
+ }
350
+ ));
351
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
352
+ var DialogDescription = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
353
+ DialogPrimitive.Description,
354
+ {
355
+ ref,
356
+ "data-slot": "dialog-description",
357
+ className: cn("text-muted-foreground text-sm", className),
358
+ ...props
359
+ }
360
+ ));
361
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
362
+ var Command = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
363
+ Command$1,
364
+ {
365
+ ref,
366
+ "data-slot": "command",
367
+ className: cn(
368
+ "bg-popover text-popover-foreground font-sans flex h-full w-full flex-col overflow-hidden rounded-md",
369
+ className
370
+ ),
371
+ ...props
372
+ }
373
+ ));
374
+ Command.displayName = Command$1.displayName;
375
+ function CommandDialog({
376
+ title = "Command Palette",
377
+ description = "Search for a command to run...",
378
+ children,
379
+ ...props
380
+ }) {
381
+ return /* @__PURE__ */ jsxs(Dialog, { ...props, children: [
382
+ /* @__PURE__ */ jsxs(DialogHeader, { className: "sr-only", children: [
383
+ /* @__PURE__ */ jsx(DialogTitle, { children: title }),
384
+ /* @__PURE__ */ jsx(DialogDescription, { children: description })
385
+ ] }),
386
+ /* @__PURE__ */ jsx(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsx(Command, { className: "[&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) })
387
+ ] });
388
+ }
389
+ var CommandInput = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs("div", { "data-slot": "command-input-wrapper", className: "flex h-9 items-center gap-2 border-b px-3", children: [
390
+ /* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }),
391
+ /* @__PURE__ */ jsx(
392
+ Command$1.Input,
393
+ {
394
+ ref,
395
+ "data-slot": "command-input",
396
+ className: cn(
397
+ "placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none disabled:cursor-not-allowed disabled:opacity-50",
398
+ className
399
+ ),
400
+ ...props
401
+ }
402
+ )
403
+ ] }));
404
+ CommandInput.displayName = Command$1.Input.displayName;
405
+ var CommandList = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
406
+ Command$1.List,
407
+ {
408
+ ref,
409
+ "data-slot": "command-list",
410
+ className: cn("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto", className),
411
+ ...props
412
+ }
413
+ ));
414
+ CommandList.displayName = Command$1.List.displayName;
415
+ var CommandEmpty = React6.forwardRef((props, ref) => /* @__PURE__ */ jsx(
416
+ Command$1.Empty,
417
+ {
418
+ ref,
419
+ "data-slot": "command-empty",
420
+ className: "py-6 text-center text-sm",
421
+ ...props
422
+ }
423
+ ));
424
+ CommandEmpty.displayName = Command$1.Empty.displayName;
425
+ var CommandGroup = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
426
+ Command$1.Group,
427
+ {
428
+ ref,
429
+ "data-slot": "command-group",
430
+ className: cn(
431
+ "text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",
432
+ className
433
+ ),
434
+ ...props
435
+ }
436
+ ));
437
+ CommandGroup.displayName = Command$1.Group.displayName;
438
+ var CommandSeparator = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
439
+ Command$1.Separator,
440
+ {
441
+ ref,
442
+ "data-slot": "command-separator",
443
+ className: cn("bg-border -mx-1 h-px", className),
444
+ ...props
445
+ }
446
+ ));
447
+ CommandSeparator.displayName = Command$1.Separator.displayName;
448
+ var CommandItem = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
449
+ Command$1.Item,
450
+ {
451
+ ref,
452
+ "data-slot": "command-item",
453
+ className: cn(
454
+ "data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
455
+ className
456
+ ),
457
+ ...props
458
+ }
459
+ ));
460
+ CommandItem.displayName = Command$1.Item.displayName;
461
+ function CommandShortcut({ className, ...props }) {
462
+ return /* @__PURE__ */ jsx(
463
+ "span",
464
+ {
465
+ "data-slot": "command-shortcut",
466
+ className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
467
+ ...props
468
+ }
469
+ );
470
+ }
471
+ var DropdownMenu = DropdownMenuPrimitive.Root;
472
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
473
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
474
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
475
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
476
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
477
+ var DropdownMenuContent = React6.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
478
+ DropdownMenuPrimitive.Content,
479
+ {
480
+ ref,
481
+ "data-slot": "dropdown-menu-content",
482
+ sideOffset,
483
+ className: cn(
484
+ "bg-popover text-popover-foreground font-sans z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
485
+ className
486
+ ),
487
+ ...props
488
+ }
489
+ ) }));
490
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
491
+ var DropdownMenuItem = React6.forwardRef(({ className, inset, variant = "default", ...props }, ref) => /* @__PURE__ */ jsx(
492
+ DropdownMenuPrimitive.Item,
493
+ {
494
+ ref,
495
+ "data-slot": "dropdown-menu-item",
496
+ "data-inset": inset,
497
+ "data-variant": variant,
498
+ className: cn(
499
+ "relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden transition-colors select-none focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[inset]:pl-8 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
500
+ className
501
+ ),
502
+ ...props
503
+ }
504
+ ));
505
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
506
+ var DropdownMenuCheckboxItem = React6.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
507
+ DropdownMenuPrimitive.CheckboxItem,
508
+ {
509
+ ref,
510
+ "data-slot": "dropdown-menu-checkbox-item",
511
+ checked,
512
+ className: cn(
513
+ "relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden transition-colors select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
514
+ className
515
+ ),
516
+ ...props,
517
+ children: [
518
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon$1, { className: "size-4" }) }) }),
519
+ children
520
+ ]
521
+ }
522
+ ));
523
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
524
+ var DropdownMenuRadioItem = React6.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
525
+ DropdownMenuPrimitive.RadioItem,
526
+ {
527
+ ref,
528
+ "data-slot": "dropdown-menu-radio-item",
529
+ className: cn(
530
+ "relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden transition-colors select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
531
+ className
532
+ ),
533
+ ...props,
534
+ children: [
535
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
536
+ children
537
+ ]
538
+ }
539
+ ));
540
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
541
+ var DropdownMenuLabel = React6.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
542
+ DropdownMenuPrimitive.Label,
543
+ {
544
+ ref,
545
+ "data-slot": "dropdown-menu-label",
546
+ "data-inset": inset,
547
+ className: cn("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className),
548
+ ...props
549
+ }
550
+ ));
551
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
552
+ var DropdownMenuSeparator = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
553
+ DropdownMenuPrimitive.Separator,
554
+ {
555
+ ref,
556
+ "data-slot": "dropdown-menu-separator",
557
+ className: cn("bg-border -mx-1 my-1 h-px", className),
558
+ ...props
559
+ }
560
+ ));
561
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
562
+ function DropdownMenuShortcut({ className, ...props }) {
563
+ return /* @__PURE__ */ jsx(
564
+ "span",
565
+ {
566
+ "data-slot": "dropdown-menu-shortcut",
567
+ className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
568
+ ...props
569
+ }
570
+ );
571
+ }
572
+ var DropdownMenuSubTrigger = React6.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
573
+ DropdownMenuPrimitive.SubTrigger,
574
+ {
575
+ ref,
576
+ "data-slot": "dropdown-menu-sub-trigger",
577
+ "data-inset": inset,
578
+ className: cn(
579
+ "flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground data-[inset]:pl-8",
580
+ className
581
+ ),
582
+ ...props,
583
+ children: [
584
+ children,
585
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto size-4" })
586
+ ]
587
+ }
588
+ ));
589
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
590
+ var DropdownMenuSubContent = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
591
+ DropdownMenuPrimitive.SubContent,
592
+ {
593
+ ref,
594
+ "data-slot": "dropdown-menu-sub-content",
595
+ className: cn(
596
+ "bg-popover text-popover-foreground font-sans z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
597
+ className
598
+ ),
599
+ ...props
600
+ }
601
+ ));
602
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
603
+ var BASE = "flex h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-sm text-foreground shadow-xs transition-colors outline-none file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20";
604
+ var Input = React6.forwardRef(
605
+ ({ className, type, startAdornment, endAdornment, hidePasswordToggle, ...props }, ref) => {
606
+ const [showPassword, setShowPassword] = React6.useState(false);
607
+ const isPassword = type === "password";
608
+ const showToggle = isPassword && !hidePasswordToggle;
609
+ const inputType = isPassword && showPassword ? "text" : type;
610
+ const field = /* @__PURE__ */ jsx(
611
+ "input",
612
+ {
613
+ ref,
614
+ "data-slot": "input",
615
+ type: inputType,
616
+ spellCheck: false,
617
+ className: cn(
618
+ BASE,
619
+ startAdornment && "pl-9",
620
+ (endAdornment || showToggle) && "pr-9",
621
+ className
622
+ ),
623
+ ...props
624
+ }
625
+ );
626
+ if (!startAdornment && !endAdornment && !showToggle) return field;
627
+ return /* @__PURE__ */ jsxs("div", { className: "relative w-full", children: [
628
+ startAdornment ? /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground [&_svg]:size-4", children: startAdornment }) : null,
629
+ field,
630
+ endAdornment && !showToggle ? /* @__PURE__ */ jsx("span", { className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground [&_svg]:size-4", children: endAdornment }) : null,
631
+ showToggle ? /* @__PURE__ */ jsx(
632
+ "button",
633
+ {
634
+ type: "button",
635
+ "aria-label": showPassword ? "Hide password" : "Show password",
636
+ onClick: () => setShowPassword((v) => !v),
637
+ className: "absolute right-2 top-1/2 -translate-y-1/2 rounded-sm p-1 text-muted-foreground hover:text-foreground",
638
+ children: showPassword ? /* @__PURE__ */ jsx(EyeOffIcon, { "aria-hidden": true, className: "size-4" }) : /* @__PURE__ */ jsx(EyeIcon, { "aria-hidden": true, className: "size-4" })
639
+ }
640
+ ) : null
641
+ ] });
642
+ }
643
+ );
644
+ Input.displayName = "Input";
645
+ var Label2 = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
646
+ LabelPrimitive.Root,
647
+ {
648
+ ref,
649
+ "data-slot": "label",
650
+ className: cn(
651
+ "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
652
+ className
653
+ ),
654
+ ...props
655
+ }
656
+ ));
657
+ Label2.displayName = LabelPrimitive.Root.displayName;
658
+ var Popover = PopoverPrimitive.Root;
659
+ var PopoverTrigger = PopoverPrimitive.Trigger;
660
+ var PopoverAnchor = PopoverPrimitive.Anchor;
661
+ var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
662
+ PopoverPrimitive.Content,
663
+ {
664
+ ref,
665
+ "data-slot": "popover-content",
666
+ align,
667
+ sideOffset,
668
+ className: cn(
669
+ "bg-popover text-popover-foreground font-sans z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
670
+ className
671
+ ),
672
+ ...props
673
+ }
674
+ ) }));
675
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
676
+ var Progress = React6.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx(
677
+ ProgressPrimitive.Root,
678
+ {
679
+ ref,
680
+ "data-slot": "progress",
681
+ className: cn("bg-muted relative h-2 w-full overflow-hidden rounded-full", className),
682
+ ...props,
683
+ children: /* @__PURE__ */ jsx(
684
+ ProgressPrimitive.Indicator,
685
+ {
686
+ "data-slot": "progress-indicator",
687
+ className: "bg-primary h-full w-full flex-1 transition-all",
688
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
689
+ }
690
+ )
691
+ }
692
+ ));
693
+ Progress.displayName = ProgressPrimitive.Root.displayName;
694
+ var ScrollBar = React6.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx(
695
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
696
+ {
697
+ ref,
698
+ "data-slot": "scroll-area-scrollbar",
699
+ orientation,
700
+ className: cn(
701
+ "flex touch-none p-px transition-colors select-none",
702
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
703
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
704
+ className
705
+ ),
706
+ ...props,
707
+ children: /* @__PURE__ */ jsx(
708
+ ScrollAreaPrimitive.ScrollAreaThumb,
709
+ {
710
+ "data-slot": "scroll-area-thumb",
711
+ className: "bg-border relative flex-1 rounded-full"
712
+ }
713
+ )
714
+ }
715
+ ));
716
+ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
717
+ var ScrollArea = React6.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
718
+ ScrollAreaPrimitive.Root,
719
+ {
720
+ ref,
721
+ "data-slot": "scroll-area",
722
+ className: cn("relative overflow-hidden", className),
723
+ ...props,
724
+ children: [
725
+ /* @__PURE__ */ jsx(
726
+ ScrollAreaPrimitive.Viewport,
727
+ {
728
+ "data-slot": "scroll-area-viewport",
729
+ className: "size-full rounded-[inherit] outline-none focus-visible:ring-ring/50 focus-visible:ring-[3px] transition-[color,box-shadow]",
730
+ children
731
+ }
732
+ ),
733
+ /* @__PURE__ */ jsx(ScrollBar, {}),
734
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, {})
735
+ ]
736
+ }
737
+ ));
738
+ ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
739
+ var Select = SelectPrimitive.Root;
740
+ var SelectGroup = SelectPrimitive.Group;
741
+ var SelectValue = SelectPrimitive.Value;
742
+ var SelectTrigger = React6.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
743
+ SelectPrimitive.Trigger,
744
+ {
745
+ ref,
746
+ "data-slot": "select-trigger",
747
+ className: cn(
748
+ "border-input bg-transparent text-foreground data-[placeholder]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive flex h-9 w-fit items-center justify-between gap-2 rounded-md border px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
749
+ className
750
+ ),
751
+ ...props,
752
+ children: [
753
+ children,
754
+ /* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" }) })
755
+ ]
756
+ }
757
+ ));
758
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
759
+ var SelectScrollUpButton = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
760
+ SelectPrimitive.ScrollUpButton,
761
+ {
762
+ ref,
763
+ "data-slot": "select-scroll-up-button",
764
+ className: cn("flex cursor-default items-center justify-center py-1", className),
765
+ ...props,
766
+ children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4" })
767
+ }
768
+ ));
769
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
770
+ var SelectScrollDownButton = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
771
+ SelectPrimitive.ScrollDownButton,
772
+ {
773
+ ref,
774
+ "data-slot": "select-scroll-down-button",
775
+ className: cn("flex cursor-default items-center justify-center py-1", className),
776
+ ...props,
777
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4" })
778
+ }
779
+ ));
780
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
781
+ var SelectContent = React6.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
782
+ SelectPrimitive.Content,
783
+ {
784
+ ref,
785
+ "data-slot": "select-content",
786
+ position,
787
+ className: cn(
788
+ "bg-popover text-popover-foreground font-sans relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
789
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
790
+ className
791
+ ),
792
+ ...props,
793
+ children: [
794
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
795
+ /* @__PURE__ */ jsx(
796
+ SelectPrimitive.Viewport,
797
+ {
798
+ className: cn(
799
+ "p-1",
800
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
801
+ ),
802
+ children
803
+ }
804
+ ),
805
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
806
+ ]
807
+ }
808
+ ) }));
809
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
810
+ var SelectLabel = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
811
+ SelectPrimitive.Label,
812
+ {
813
+ ref,
814
+ "data-slot": "select-label",
815
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
816
+ ...props
817
+ }
818
+ ));
819
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
820
+ var SelectItem = React6.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
821
+ SelectPrimitive.Item,
822
+ {
823
+ ref,
824
+ "data-slot": "select-item",
825
+ className: cn(
826
+ "focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
827
+ className
828
+ ),
829
+ ...props,
830
+ children: [
831
+ /* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon$1, { className: "size-4" }) }) }),
832
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })
833
+ ]
834
+ }
835
+ ));
836
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
837
+ var SelectSeparator = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
838
+ SelectPrimitive.Separator,
839
+ {
840
+ ref,
841
+ "data-slot": "select-separator",
842
+ className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
843
+ ...props
844
+ }
845
+ ));
846
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
847
+ var Separator3 = React6.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
848
+ SeparatorPrimitive.Root,
849
+ {
850
+ ref,
851
+ "data-slot": "separator",
852
+ decorative,
853
+ orientation,
854
+ className: cn(
855
+ "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
856
+ className
857
+ ),
858
+ ...props
859
+ }
860
+ ));
861
+ Separator3.displayName = SeparatorPrimitive.Root.displayName;
862
+ var Slider = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(
863
+ SliderPrimitive.Root,
864
+ {
865
+ ref,
866
+ "data-slot": "slider",
867
+ className: cn(
868
+ "relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50",
869
+ className
870
+ ),
871
+ ...props,
872
+ children: [
873
+ /* @__PURE__ */ jsx(
874
+ SliderPrimitive.Track,
875
+ {
876
+ "data-slot": "slider-track",
877
+ className: "bg-muted relative h-1.5 w-full grow overflow-hidden rounded-full",
878
+ children: /* @__PURE__ */ jsx(SliderPrimitive.Range, { "data-slot": "slider-range", className: "bg-primary absolute h-full" })
879
+ }
880
+ ),
881
+ /* @__PURE__ */ jsx(
882
+ SliderPrimitive.Thumb,
883
+ {
884
+ "data-slot": "slider-thumb",
885
+ className: "border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] focus-visible:ring-4 focus-visible:outline-none disabled:pointer-events-none"
886
+ }
887
+ )
888
+ ]
889
+ }
890
+ ));
891
+ Slider.displayName = SliderPrimitive.Root.displayName;
892
+ var Switch = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
893
+ SwitchPrimitive.Root,
894
+ {
895
+ ref,
896
+ "data-slot": "switch",
897
+ className: cn(
898
+ "peer inline-flex h-5 w-9 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-colors outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
899
+ className
900
+ ),
901
+ ...props,
902
+ children: /* @__PURE__ */ jsx(
903
+ SwitchPrimitive.Thumb,
904
+ {
905
+ "data-slot": "switch-thumb",
906
+ className: cn(
907
+ "bg-background pointer-events-none block size-4 rounded-full ring-0 shadow-lg transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
908
+ )
909
+ }
910
+ )
911
+ }
912
+ ));
913
+ Switch.displayName = SwitchPrimitive.Root.displayName;
914
+ var Tabs = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
915
+ TabsPrimitive.Root,
916
+ {
917
+ ref,
918
+ "data-slot": "tabs",
919
+ className: cn("flex flex-col gap-2", className),
920
+ ...props
921
+ }
922
+ ));
923
+ Tabs.displayName = TabsPrimitive.Root.displayName;
924
+ var TabsList = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
925
+ TabsPrimitive.List,
926
+ {
927
+ ref,
928
+ "data-slot": "tabs-list",
929
+ className: cn(
930
+ "bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
931
+ className
932
+ ),
933
+ ...props
934
+ }
935
+ ));
936
+ TabsList.displayName = TabsPrimitive.List.displayName;
937
+ var TabsTrigger = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
938
+ TabsPrimitive.Trigger,
939
+ {
940
+ ref,
941
+ "data-slot": "tabs-trigger",
942
+ className: cn(
943
+ "data-[state=active]:bg-background data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-colors focus-visible:ring-[3px] focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
944
+ className
945
+ ),
946
+ ...props
947
+ }
948
+ ));
949
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
950
+ var TabsContent = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
951
+ TabsPrimitive.Content,
952
+ {
953
+ ref,
954
+ "data-slot": "tabs-content",
955
+ className: cn("flex-1 outline-none", className),
956
+ ...props
957
+ }
958
+ ));
959
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
960
+ var Textarea = React6.forwardRef(
961
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
962
+ "textarea",
963
+ {
964
+ ref,
965
+ "data-slot": "textarea",
966
+ className: cn(
967
+ "flex min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm text-foreground shadow-xs transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 field-sizing-content",
968
+ className
969
+ ),
970
+ ...props
971
+ }
972
+ )
973
+ );
974
+ Textarea.displayName = "Textarea";
975
+ var Toaster = ({ className, ...props }) => {
976
+ const { theme = "system" } = useTheme();
977
+ return /* @__PURE__ */ jsx(
978
+ Toaster$1,
979
+ {
980
+ theme,
981
+ className: cn("toaster group", className),
982
+ style: {
983
+ "--normal-bg": "var(--popover)",
984
+ "--normal-text": "var(--popover-foreground)",
985
+ "--normal-border": "var(--border)"
986
+ },
987
+ toastOptions: {
988
+ classNames: {
989
+ toast: "group toast group-[.toaster]:bg-popover group-[.toaster]:text-popover-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
990
+ description: "group-[.toast]:text-muted-foreground",
991
+ actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
992
+ cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
993
+ }
994
+ },
995
+ ...props
996
+ }
997
+ );
998
+ };
999
+ var TooltipProvider = TooltipPrimitive.Provider;
1000
+ var Tooltip = TooltipPrimitive.Root;
1001
+ var TooltipTrigger = TooltipPrimitive.Trigger;
1002
+ var TooltipContent = React6.forwardRef(({ className, sideOffset = 4, children, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1003
+ TooltipPrimitive.Content,
1004
+ {
1005
+ ref,
1006
+ "data-slot": "tooltip-content",
1007
+ sideOffset,
1008
+ className: cn(
1009
+ "bg-popover text-popover-foreground font-sans z-50 w-fit rounded-md border px-3 py-1.5 text-xs shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1010
+ className
1011
+ ),
1012
+ ...props,
1013
+ children
1014
+ }
1015
+ ) }));
1016
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
1017
+
1018
+ export { AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, Button, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Input, Label2 as Label, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, Slider, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cn };
5
1019
  //# sourceMappingURL=index.js.map
6
1020
  //# sourceMappingURL=index.js.map