@hilum/ui 2.0.0 → 2.0.1
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.
- package/README.md +2 -2
- package/dist/index.d.ts +350 -290
- package/dist/index.js +489 -435
- package/dist/index.js.map +1 -1
- package/llms.txt +9 -9
- package/package.json +1 -1
- package/src/components/accordion.tsx +5 -5
- package/src/components/action-panel.tsx +8 -6
- package/src/components/activity-feed.tsx +7 -5
- package/src/components/alert-dialog.tsx +5 -5
- package/src/components/alert.tsx +5 -5
- package/src/components/avatar-stack.tsx +3 -3
- package/src/components/avatar.tsx +4 -4
- package/src/components/badge.tsx +7 -7
- package/src/components/breadcrumb.tsx +5 -6
- package/src/components/button-group.tsx +7 -4
- package/src/components/button.tsx +7 -7
- package/src/components/calendar.tsx +10 -10
- package/src/components/card-heading.tsx +3 -3
- package/src/components/card.tsx +4 -4
- package/src/components/chart.tsx +10 -10
- package/src/components/checkbox.tsx +2 -2
- package/src/components/color-input.tsx +7 -5
- package/src/components/color-picker.tsx +8 -6
- package/src/components/combobox.tsx +66 -31
- package/src/components/command-palette.tsx +13 -11
- package/src/components/command.tsx +14 -12
- package/src/components/context-menu.tsx +16 -16
- package/src/components/data-table.tsx +18 -7
- package/src/components/date-picker.tsx +2 -2
- package/src/components/description-list.tsx +10 -8
- package/src/components/dialog.tsx +4 -4
- package/src/components/drawer.tsx +5 -5
- package/src/components/dropdown-menu.tsx +16 -16
- package/src/components/empty-state.tsx +5 -3
- package/src/components/field.tsx +4 -4
- package/src/components/grid-list.tsx +17 -13
- package/src/components/hover-card.tsx +1 -1
- package/src/components/input-group.tsx +10 -10
- package/src/components/input-number.tsx +7 -7
- package/src/components/input-otp.tsx +3 -3
- package/src/components/input.tsx +4 -4
- package/src/components/kbd.tsx +1 -1
- package/src/components/label.tsx +1 -1
- package/src/components/media-object.tsx +2 -0
- package/src/components/menubar.tsx +21 -21
- package/src/components/native-select.tsx +5 -5
- package/src/components/navigation-menu.tsx +10 -10
- package/src/components/notification.tsx +13 -11
- package/src/components/page-heading.tsx +8 -8
- package/src/components/pagination.tsx +1 -1
- package/src/components/popover.tsx +1 -1
- package/src/components/progress.tsx +1 -1
- package/src/components/property-row.tsx +3 -1
- package/src/components/radio-card.tsx +10 -8
- package/src/components/radio-group.tsx +4 -4
- package/src/components/resizable.tsx +3 -3
- package/src/components/scroll-area.tsx +1 -1
- package/src/components/section-heading.tsx +3 -3
- package/src/components/select.tsx +13 -13
- package/src/components/separator.tsx +1 -1
- package/src/components/sheet.tsx +4 -4
- package/src/components/sidebar.tsx +20 -20
- package/src/components/skeleton.tsx +1 -1
- package/src/components/slider.tsx +2 -2
- package/src/components/sonner.tsx +9 -8
- package/src/components/stacked-list.tsx +5 -5
- package/src/components/stat-card.tsx +9 -7
- package/src/components/steps.tsx +16 -14
- package/src/components/switch.tsx +2 -2
- package/src/components/table.tsx +9 -9
- package/src/components/tabs.tsx +2 -2
- package/src/components/textarea.tsx +4 -4
- package/src/components/toggle.tsx +9 -9
- package/src/components/tooltip.tsx +1 -1
package/dist/index.js
CHANGED
|
@@ -20,7 +20,7 @@ import { Toaster as Toaster$1 } from 'sonner';
|
|
|
20
20
|
function cn(...inputs) {
|
|
21
21
|
return twMerge(clsx(inputs));
|
|
22
22
|
}
|
|
23
|
-
var AccordionRoot = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Accordion.Root, { ref, className: cn("divide-y divide-
|
|
23
|
+
var AccordionRoot = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Accordion.Root, { ref, className: cn("divide-y divide-border", className), ...props }));
|
|
24
24
|
AccordionRoot.displayName = "Accordion";
|
|
25
25
|
var AccordionItem = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Accordion.Item, { ref, className: cn("", className), ...props }));
|
|
26
26
|
AccordionItem.displayName = "AccordionItem";
|
|
@@ -30,9 +30,9 @@ var AccordionTrigger = React15.forwardRef(({ className, children, ...props }, re
|
|
|
30
30
|
ref,
|
|
31
31
|
className: cn(
|
|
32
32
|
"flex w-full items-center justify-between py-4",
|
|
33
|
-
"body font-medium text-
|
|
33
|
+
"body font-medium text-foreground transition-colors hover:text-muted-foreground",
|
|
34
34
|
"[&[data-state=open]>svg]:rotate-180",
|
|
35
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
35
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/20",
|
|
36
36
|
className
|
|
37
37
|
),
|
|
38
38
|
...props,
|
|
@@ -42,7 +42,7 @@ var AccordionTrigger = React15.forwardRef(({ className, children, ...props }, re
|
|
|
42
42
|
ChevronDown,
|
|
43
43
|
{
|
|
44
44
|
size: 16,
|
|
45
|
-
className: "text-
|
|
45
|
+
className: "text-muted-foreground transition-transform duration-200 shrink-0"
|
|
46
46
|
}
|
|
47
47
|
)
|
|
48
48
|
]
|
|
@@ -54,7 +54,7 @@ var AccordionContent = React15.forwardRef(({ className, children, ...props }, re
|
|
|
54
54
|
{
|
|
55
55
|
ref,
|
|
56
56
|
className: cn(
|
|
57
|
-
"overflow-hidden body text-
|
|
57
|
+
"overflow-hidden body text-muted-foreground",
|
|
58
58
|
"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
59
59
|
className
|
|
60
60
|
),
|
|
@@ -75,13 +75,13 @@ var buttonVariants = cva(
|
|
|
75
75
|
{
|
|
76
76
|
variants: {
|
|
77
77
|
variant: {
|
|
78
|
-
default: "bg-brand-primary text-
|
|
79
|
-
destructive: "bg-
|
|
80
|
-
outline: "bg-
|
|
81
|
-
secondary: "bg-
|
|
82
|
-
brand: "bg-brand-secondary text-
|
|
83
|
-
ghost: "text-
|
|
84
|
-
link: "text-
|
|
78
|
+
default: "bg-brand-primary text-background hover:bg-brand-primary/90 active:bg-brand-primary/80",
|
|
79
|
+
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 active:bg-destructive/80",
|
|
80
|
+
outline: "bg-card text-muted-foreground shadow-natural hover:bg-muted rounded-xl",
|
|
81
|
+
secondary: "bg-muted text-muted-foreground hover:bg-muted",
|
|
82
|
+
brand: "bg-brand-secondary text-foreground hover:bg-brand-secondary/90 active:bg-brand-secondary/80",
|
|
83
|
+
ghost: "text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
84
|
+
link: "text-foreground underline-offset-4 hover:underline"
|
|
85
85
|
},
|
|
86
86
|
size: {
|
|
87
87
|
default: "h-9 px-4 py-2 rounded-md",
|
|
@@ -131,7 +131,7 @@ function ActionPanel({
|
|
|
131
131
|
"a",
|
|
132
132
|
{
|
|
133
133
|
href: link.href,
|
|
134
|
-
className: "body font-medium text-
|
|
134
|
+
className: "body font-medium text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-1",
|
|
135
135
|
children: [
|
|
136
136
|
link.label,
|
|
137
137
|
" ",
|
|
@@ -143,7 +143,7 @@ function ActionPanel({
|
|
|
143
143
|
{
|
|
144
144
|
type: "button",
|
|
145
145
|
onClick: link.onClick,
|
|
146
|
-
className: "body font-medium text-
|
|
146
|
+
className: "body font-medium text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-1",
|
|
147
147
|
children: [
|
|
148
148
|
link.label,
|
|
149
149
|
" ",
|
|
@@ -161,14 +161,14 @@ function ActionPanel({
|
|
|
161
161
|
{
|
|
162
162
|
className: cn(
|
|
163
163
|
"rounded-xl border px-5 py-5",
|
|
164
|
-
variant === "muted" ? "border-
|
|
164
|
+
variant === "muted" ? "border-border bg-muted" : "border-border bg-card shadow-natural",
|
|
165
165
|
layout === "inline" && "flex items-center justify-between gap-6",
|
|
166
166
|
className
|
|
167
167
|
),
|
|
168
168
|
children: [
|
|
169
169
|
/* @__PURE__ */ jsxs("div", { className: cn("min-w-0", layout === "inline" ? "flex-1" : ""), children: [
|
|
170
|
-
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-
|
|
171
|
-
description && /* @__PURE__ */ jsx("p", { className: cn("body text-
|
|
170
|
+
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground", children: title }),
|
|
171
|
+
description && /* @__PURE__ */ jsx("p", { className: cn("body text-muted-foreground", layout === "stacked" ? "mt-1" : ""), children: description }),
|
|
172
172
|
children && layout === "stacked" && /* @__PURE__ */ jsx("div", { className: "mt-4", children })
|
|
173
173
|
] }),
|
|
174
174
|
layout === "stacked" ? (allActions.length > 0 || link) && /* @__PURE__ */ jsx("div", { className: "mt-4", children: renderActions() }) : /* @__PURE__ */ jsxs("div", { className: "shrink-0 flex items-center gap-3", children: [
|
|
@@ -179,6 +179,7 @@ function ActionPanel({
|
|
|
179
179
|
}
|
|
180
180
|
);
|
|
181
181
|
}
|
|
182
|
+
ActionPanel.displayName = "ActionPanel";
|
|
182
183
|
function ActivityFeed({ events, className }) {
|
|
183
184
|
return /* @__PURE__ */ jsx("div", { className: cn("flow-root", className), children: /* @__PURE__ */ jsx("ul", { role: "list", className: "-mb-8", children: events.map((event, i) => {
|
|
184
185
|
const isLast = i === events.length - 1;
|
|
@@ -186,7 +187,7 @@ function ActivityFeed({ events, className }) {
|
|
|
186
187
|
!isLast && /* @__PURE__ */ jsx(
|
|
187
188
|
"span",
|
|
188
189
|
{
|
|
189
|
-
className: "absolute top-4 left-4 -ml-px h-full w-0.5 bg-
|
|
190
|
+
className: "absolute top-4 left-4 -ml-px h-full w-0.5 bg-muted",
|
|
190
191
|
"aria-hidden": "true"
|
|
191
192
|
}
|
|
192
193
|
),
|
|
@@ -195,19 +196,19 @@ function ActivityFeed({ events, className }) {
|
|
|
195
196
|
"span",
|
|
196
197
|
{
|
|
197
198
|
className: cn(
|
|
198
|
-
"flex size-8 items-center justify-center rounded-full ring-8 ring-
|
|
199
|
-
event.iconBgClass ?? "bg-
|
|
199
|
+
"flex size-8 items-center justify-center rounded-full ring-8 ring-background",
|
|
200
|
+
event.iconBgClass ?? "bg-muted text-muted-foreground"
|
|
200
201
|
),
|
|
201
202
|
children: event.icon
|
|
202
203
|
}
|
|
203
204
|
) }),
|
|
204
205
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 items-baseline justify-between gap-4 pt-1", children: [
|
|
205
|
-
/* @__PURE__ */ jsx("div", { className: "body text-
|
|
206
|
+
/* @__PURE__ */ jsx("div", { className: "body text-muted-foreground", children: event.content }),
|
|
206
207
|
event.date && /* @__PURE__ */ jsx(
|
|
207
208
|
"time",
|
|
208
209
|
{
|
|
209
210
|
dateTime: event.datetime ?? event.date,
|
|
210
|
-
className: "caption whitespace-nowrap text-
|
|
211
|
+
className: "caption whitespace-nowrap text-muted-foreground",
|
|
211
212
|
children: event.date
|
|
212
213
|
}
|
|
213
214
|
)
|
|
@@ -216,6 +217,7 @@ function ActivityFeed({ events, className }) {
|
|
|
216
217
|
] }) }, event.id ?? i);
|
|
217
218
|
}) }) });
|
|
218
219
|
}
|
|
220
|
+
ActivityFeed.displayName = "ActivityFeed";
|
|
219
221
|
var AlertDialogRoot = AlertDialog.Root;
|
|
220
222
|
var AlertDialogTrigger = AlertDialog.Trigger;
|
|
221
223
|
var AlertDialogPortal = AlertDialog.Portal;
|
|
@@ -241,7 +243,7 @@ var AlertDialogContent = React15.forwardRef(({ className, children, ...props },
|
|
|
241
243
|
ref,
|
|
242
244
|
className: cn(
|
|
243
245
|
"fixed left-[50%] top-[50%] z-50 translate-x-[-50%] translate-y-[-50%]",
|
|
244
|
-
"w-full max-w-md bg-
|
|
246
|
+
"w-full max-w-md bg-card rounded-2xl shadow-elevated p-6",
|
|
245
247
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
246
248
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
247
249
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -265,12 +267,12 @@ var AlertDialogTitle = React15.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
265
267
|
AlertDialog.Title,
|
|
266
268
|
{
|
|
267
269
|
ref,
|
|
268
|
-
className: cn("body-lg font-semibold text-
|
|
270
|
+
className: cn("body-lg font-semibold text-foreground", className),
|
|
269
271
|
...props
|
|
270
272
|
}
|
|
271
273
|
));
|
|
272
274
|
AlertDialogTitle.displayName = "AlertDialogTitle";
|
|
273
|
-
var AlertDialogDescription = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AlertDialog.Description, { ref, className: cn("body text-
|
|
275
|
+
var AlertDialogDescription = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AlertDialog.Description, { ref, className: cn("body text-muted-foreground", className), ...props }));
|
|
274
276
|
AlertDialogDescription.displayName = "AlertDialogDescription";
|
|
275
277
|
var AlertDialogAction = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
276
278
|
AlertDialog.Action,
|
|
@@ -279,7 +281,7 @@ var AlertDialogAction = React15.forwardRef(({ className, ...props }, ref) => /*
|
|
|
279
281
|
className: cn(
|
|
280
282
|
"inline-flex h-9 items-center justify-center rounded-md px-4",
|
|
281
283
|
"body font-medium whitespace-nowrap transition-all duration-150",
|
|
282
|
-
"bg-brand-primary text-
|
|
284
|
+
"bg-brand-primary text-background hover:bg-brand-primary/90 active:bg-brand-primary/80",
|
|
283
285
|
"focus-visible:ring-2 focus-visible:ring-brand-primary/30 focus-visible:ring-offset-1 outline-none",
|
|
284
286
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
285
287
|
className
|
|
@@ -295,7 +297,7 @@ var AlertDialogCancel = React15.forwardRef(({ className, ...props }, ref) => /*
|
|
|
295
297
|
className: cn(
|
|
296
298
|
"inline-flex h-9 items-center justify-center rounded-md px-4",
|
|
297
299
|
"body font-medium whitespace-nowrap transition-all duration-150",
|
|
298
|
-
"bg-
|
|
300
|
+
"bg-card text-muted-foreground shadow-natural hover:bg-muted rounded-xl",
|
|
299
301
|
"focus-visible:ring-2 focus-visible:ring-brand-primary/30 focus-visible:ring-offset-1 outline-none",
|
|
300
302
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
301
303
|
className
|
|
@@ -309,11 +311,11 @@ var alertVariants = cva(
|
|
|
309
311
|
{
|
|
310
312
|
variants: {
|
|
311
313
|
variant: {
|
|
312
|
-
default: "bg-
|
|
313
|
-
info: "bg-brand-secondary/40 text-
|
|
314
|
-
success: "bg-brand-secondary/15 text-
|
|
315
|
-
warning: "bg-brand-secondary/70 text-
|
|
316
|
-
destructive: "bg-
|
|
314
|
+
default: "bg-muted text-muted-foreground [&>svg]:text-muted-foreground",
|
|
315
|
+
info: "bg-brand-secondary/40 text-muted-foreground [&>svg]:text-muted-foreground",
|
|
316
|
+
success: "bg-brand-secondary/15 text-muted-foreground [&>svg]:text-muted-foreground",
|
|
317
|
+
warning: "bg-brand-secondary/70 text-muted-foreground [&>svg]:text-muted-foreground",
|
|
318
|
+
destructive: "bg-destructive/10 text-destructive [&>svg]:text-destructive/70"
|
|
317
319
|
}
|
|
318
320
|
},
|
|
319
321
|
defaultVariants: { variant: "default" }
|
|
@@ -355,7 +357,7 @@ function AvatarStack({ avatars, max, size = "md", className }) {
|
|
|
355
357
|
{
|
|
356
358
|
title: avatar.name,
|
|
357
359
|
className: cn(
|
|
358
|
-
"relative inline-flex shrink-0 overflow-hidden rounded-full ring-
|
|
360
|
+
"relative inline-flex shrink-0 overflow-hidden rounded-full ring-background",
|
|
359
361
|
s.wrapper
|
|
360
362
|
),
|
|
361
363
|
children: avatar.src ? /* @__PURE__ */ jsx("img", { src: avatar.src, alt: avatar.name, className: "size-full object-cover" }) : /* @__PURE__ */ jsx(
|
|
@@ -364,7 +366,7 @@ function AvatarStack({ avatars, max, size = "md", className }) {
|
|
|
364
366
|
className: cn(
|
|
365
367
|
"flex size-full items-center justify-center font-medium",
|
|
366
368
|
s.text,
|
|
367
|
-
avatar.colorClass ?? "bg-
|
|
369
|
+
avatar.colorClass ?? "bg-muted text-muted-foreground"
|
|
368
370
|
),
|
|
369
371
|
children: avatar.fallback ?? avatar.name.slice(0, 2).toUpperCase()
|
|
370
372
|
}
|
|
@@ -376,7 +378,7 @@ function AvatarStack({ avatars, max, size = "md", className }) {
|
|
|
376
378
|
"span",
|
|
377
379
|
{
|
|
378
380
|
className: cn(
|
|
379
|
-
"relative inline-flex shrink-0 items-center justify-center rounded-full ring-
|
|
381
|
+
"relative inline-flex shrink-0 items-center justify-center rounded-full ring-background bg-muted font-medium text-muted-foreground",
|
|
380
382
|
s.wrapper,
|
|
381
383
|
s.text
|
|
382
384
|
),
|
|
@@ -424,7 +426,7 @@ var AvatarFallback = React15.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
424
426
|
{
|
|
425
427
|
ref,
|
|
426
428
|
className: cn(
|
|
427
|
-
"flex h-full w-full items-center justify-center rounded-full bg-
|
|
429
|
+
"flex h-full w-full items-center justify-center rounded-full bg-muted body font-semibold text-muted-foreground",
|
|
428
430
|
className
|
|
429
431
|
),
|
|
430
432
|
...props
|
|
@@ -433,8 +435,8 @@ var AvatarFallback = React15.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
433
435
|
AvatarFallback.displayName = "AvatarFallback";
|
|
434
436
|
var statusColorMap = {
|
|
435
437
|
online: "bg-brand-secondary",
|
|
436
|
-
offline: "bg-
|
|
437
|
-
busy: "bg-
|
|
438
|
+
offline: "bg-muted",
|
|
439
|
+
busy: "bg-destructive",
|
|
438
440
|
away: "bg-brand-secondary"
|
|
439
441
|
};
|
|
440
442
|
var statusSizeMap = {
|
|
@@ -450,7 +452,7 @@ var AvatarWithStatus = React15.forwardRef(({ status, size = "md", className, chi
|
|
|
450
452
|
"span",
|
|
451
453
|
{
|
|
452
454
|
className: cn(
|
|
453
|
-
"absolute bottom-0 right-0 rounded-full ring-
|
|
455
|
+
"absolute bottom-0 right-0 rounded-full ring-background",
|
|
454
456
|
statusColorMap[status],
|
|
455
457
|
statusSizeMap[size]
|
|
456
458
|
)
|
|
@@ -463,13 +465,13 @@ var badgeVariants = cva(
|
|
|
463
465
|
{
|
|
464
466
|
variants: {
|
|
465
467
|
variant: {
|
|
466
|
-
default: "bg-
|
|
467
|
-
secondary: "bg-
|
|
468
|
-
outline: "border border-
|
|
469
|
-
brand: "bg-brand-primary text-
|
|
470
|
-
success: "bg-brand-secondary/20 text-
|
|
471
|
-
warning: "bg-brand-secondary/70 text-
|
|
472
|
-
destructive: "bg-
|
|
468
|
+
default: "bg-foreground text-background",
|
|
469
|
+
secondary: "bg-muted text-muted-foreground",
|
|
470
|
+
outline: "border border-border text-muted-foreground bg-transparent",
|
|
471
|
+
brand: "bg-brand-primary text-background",
|
|
472
|
+
success: "bg-brand-secondary/20 text-muted-foreground border border-brand-secondary/50",
|
|
473
|
+
warning: "bg-brand-secondary/70 text-muted-foreground border border-brand-secondary",
|
|
474
|
+
destructive: "bg-destructive/10 text-destructive border border-destructive/20"
|
|
473
475
|
}
|
|
474
476
|
},
|
|
475
477
|
defaultVariants: {
|
|
@@ -488,7 +490,7 @@ var BreadcrumbList = React15.forwardRef(
|
|
|
488
490
|
"ol",
|
|
489
491
|
{
|
|
490
492
|
ref,
|
|
491
|
-
className: cn("flex flex-wrap items-center gap-1.5 body text-
|
|
493
|
+
className: cn("flex flex-wrap items-center gap-1.5 body text-muted-foreground", className),
|
|
492
494
|
...props
|
|
493
495
|
}
|
|
494
496
|
)
|
|
@@ -499,7 +501,7 @@ var BreadcrumbItem = React15.forwardRef(
|
|
|
499
501
|
);
|
|
500
502
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
501
503
|
var BreadcrumbLink = React15.forwardRef(
|
|
502
|
-
({ className, ...props }, ref) => /* @__PURE__ */ jsx("a", { ref, className: cn("transition-colors hover:text-
|
|
504
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx("a", { ref, className: cn("transition-colors hover:text-foreground", className), ...props })
|
|
503
505
|
);
|
|
504
506
|
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
505
507
|
var BreadcrumbPage = React15.forwardRef(
|
|
@@ -507,15 +509,14 @@ var BreadcrumbPage = React15.forwardRef(
|
|
|
507
509
|
"span",
|
|
508
510
|
{
|
|
509
511
|
ref,
|
|
510
|
-
role: "link",
|
|
511
512
|
"aria-current": "page",
|
|
512
|
-
className: cn("body font-medium text-
|
|
513
|
+
className: cn("body font-medium text-foreground", className),
|
|
513
514
|
...props
|
|
514
515
|
}
|
|
515
516
|
)
|
|
516
517
|
);
|
|
517
518
|
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
518
|
-
var BreadcrumbSeparator = ({ children, className, ...props }) => /* @__PURE__ */ jsx("li", { role: "presentation", "aria-hidden": "true", className: cn("text-
|
|
519
|
+
var BreadcrumbSeparator = ({ children, className, ...props }) => /* @__PURE__ */ jsx("li", { role: "presentation", "aria-hidden": "true", className: cn("text-muted-foreground", className), ...props, children: children ?? /* @__PURE__ */ jsx(ChevronRight, { size: 14 }) });
|
|
519
520
|
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
520
521
|
var BreadcrumbEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
521
522
|
"span",
|
|
@@ -524,7 +525,7 @@ var BreadcrumbEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
524
525
|
"aria-hidden": "true",
|
|
525
526
|
className: cn("flex size-5 items-center justify-center", className),
|
|
526
527
|
...props,
|
|
527
|
-
children: /* @__PURE__ */ jsx(MoreHorizontal, { size: 14, className: "text-
|
|
528
|
+
children: /* @__PURE__ */ jsx(MoreHorizontal, { size: 14, className: "text-muted-foreground" })
|
|
528
529
|
}
|
|
529
530
|
);
|
|
530
531
|
BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
|
|
@@ -533,7 +534,7 @@ function ButtonGroup({ children, className }) {
|
|
|
533
534
|
"div",
|
|
534
535
|
{
|
|
535
536
|
className: cn(
|
|
536
|
-
"inline-flex divide-x divide-
|
|
537
|
+
"inline-flex divide-x divide-border overflow-hidden rounded-lg border border-border bg-card shadow-natural",
|
|
537
538
|
className
|
|
538
539
|
),
|
|
539
540
|
children
|
|
@@ -547,8 +548,8 @@ function ButtonGroupItem({ active, className, children, ...props }) {
|
|
|
547
548
|
type: "button",
|
|
548
549
|
className: cn(
|
|
549
550
|
"relative inline-flex items-center gap-1.5 px-3.5 py-2 body font-medium transition-colors",
|
|
550
|
-
"focus:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
551
|
-
active ? "bg-
|
|
551
|
+
"focus:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30 focus-visible:ring-inset",
|
|
552
|
+
active ? "bg-foreground text-background" : "text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
552
553
|
className
|
|
553
554
|
),
|
|
554
555
|
...props,
|
|
@@ -556,6 +557,8 @@ function ButtonGroupItem({ active, className, children, ...props }) {
|
|
|
556
557
|
}
|
|
557
558
|
);
|
|
558
559
|
}
|
|
560
|
+
ButtonGroup.displayName = "ButtonGroup";
|
|
561
|
+
ButtonGroupItem.displayName = "ButtonGroupItem";
|
|
559
562
|
function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
560
563
|
return /* @__PURE__ */ jsx(
|
|
561
564
|
DayPicker,
|
|
@@ -566,33 +569,33 @@ function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
|
566
569
|
months: "flex flex-col sm:flex-row gap-4",
|
|
567
570
|
month: "flex flex-col gap-4",
|
|
568
571
|
month_caption: "flex justify-center pt-1 relative items-center px-10",
|
|
569
|
-
caption_label: "body font-semibold text-
|
|
572
|
+
caption_label: "body font-semibold text-foreground",
|
|
570
573
|
nav: "flex items-center justify-between absolute inset-x-0 top-1",
|
|
571
574
|
button_previous: cn(
|
|
572
575
|
"absolute left-0 h-7 w-7 flex items-center justify-center rounded-md",
|
|
573
|
-
"text-
|
|
576
|
+
"text-muted-foreground hover:bg-muted hover:text-muted-foreground transition-colors"
|
|
574
577
|
),
|
|
575
578
|
button_next: cn(
|
|
576
579
|
"absolute right-0 h-7 w-7 flex items-center justify-center rounded-md",
|
|
577
|
-
"text-
|
|
580
|
+
"text-muted-foreground hover:bg-muted hover:text-muted-foreground transition-colors"
|
|
578
581
|
),
|
|
579
582
|
month_grid: "w-full border-collapse mt-1",
|
|
580
583
|
weekdays: "flex",
|
|
581
|
-
weekday: "w-9 h-9 flex items-center justify-center label text-
|
|
584
|
+
weekday: "w-9 h-9 flex items-center justify-center label text-muted-foreground font-normal",
|
|
582
585
|
week: "flex w-full mt-1",
|
|
583
586
|
day: "relative p-0 text-center",
|
|
584
587
|
day_button: cn(
|
|
585
588
|
"h-9 w-9 flex items-center justify-center rounded-full body font-normal",
|
|
586
|
-
"text-
|
|
589
|
+
"text-foreground hover:bg-muted transition-colors",
|
|
587
590
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30"
|
|
588
591
|
),
|
|
589
|
-
selected: "[&>button]:bg-brand-primary [&>button]:text-
|
|
592
|
+
selected: "[&>button]:bg-brand-primary [&>button]:text-background [&>button]:hover:bg-brand-primary/90",
|
|
590
593
|
today: "[&>button]:font-semibold [&>button]:text-brand-primary",
|
|
591
|
-
outside: "opacity-40 [&>button]:text-
|
|
594
|
+
outside: "opacity-40 [&>button]:text-muted-foreground",
|
|
592
595
|
disabled: "opacity-30 [&>button]:cursor-not-allowed",
|
|
593
|
-
range_start: "[&>button]:bg-brand-primary [&>button]:text-
|
|
594
|
-
range_end: "[&>button]:bg-brand-primary [&>button]:text-
|
|
595
|
-
range_middle: "[&>button]:bg-brand-primary/15 [&>button]:text-
|
|
596
|
+
range_start: "[&>button]:bg-brand-primary [&>button]:text-background [&>button]:rounded-full",
|
|
597
|
+
range_end: "[&>button]:bg-brand-primary [&>button]:text-background [&>button]:rounded-full",
|
|
598
|
+
range_middle: "[&>button]:bg-brand-primary/15 [&>button]:text-foreground [&>button]:rounded-none",
|
|
596
599
|
hidden: "invisible",
|
|
597
600
|
...classNames
|
|
598
601
|
},
|
|
@@ -609,15 +612,15 @@ function CardHeading({ title, description, actions, children, className }) {
|
|
|
609
612
|
"div",
|
|
610
613
|
{
|
|
611
614
|
className: cn(
|
|
612
|
-
"flex items-start justify-between gap-4 border-b border-
|
|
615
|
+
"flex items-start justify-between gap-4 border-b border-border px-5 py-4",
|
|
613
616
|
className
|
|
614
617
|
),
|
|
615
618
|
children: [
|
|
616
619
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-3", children: [
|
|
617
620
|
children,
|
|
618
621
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
619
|
-
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-
|
|
620
|
-
description && /* @__PURE__ */ jsx("p", { className: "caption text-
|
|
622
|
+
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground truncate", children: title }),
|
|
623
|
+
description && /* @__PURE__ */ jsx("p", { className: "caption text-muted-foreground mt-0.5", children: description })
|
|
621
624
|
] })
|
|
622
625
|
] }),
|
|
623
626
|
actions && actions.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-2", children: actions.map(
|
|
@@ -639,8 +642,8 @@ function CardHeading({ title, description, actions, children, className }) {
|
|
|
639
642
|
var cardVariants = cva("rounded-xl", {
|
|
640
643
|
variants: {
|
|
641
644
|
variant: {
|
|
642
|
-
default: "bg-
|
|
643
|
-
muted: "bg-
|
|
645
|
+
default: "bg-card shadow-natural",
|
|
646
|
+
muted: "bg-muted",
|
|
644
647
|
ghost: "bg-transparent"
|
|
645
648
|
}
|
|
646
649
|
},
|
|
@@ -678,7 +681,7 @@ var CardTitle = React15.forwardRef(
|
|
|
678
681
|
{
|
|
679
682
|
ref,
|
|
680
683
|
"data-slot": "card-title",
|
|
681
|
-
className: cn("subheading text-
|
|
684
|
+
className: cn("subheading text-foreground", className),
|
|
682
685
|
...props
|
|
683
686
|
}
|
|
684
687
|
)
|
|
@@ -690,7 +693,7 @@ var CardDescription = React15.forwardRef(
|
|
|
690
693
|
{
|
|
691
694
|
ref,
|
|
692
695
|
"data-slot": "card-description",
|
|
693
|
-
className: cn("caption text-
|
|
696
|
+
className: cn("caption text-muted-foreground", className),
|
|
694
697
|
...props
|
|
695
698
|
}
|
|
696
699
|
)
|
|
@@ -893,18 +896,12 @@ function CarouselNext({
|
|
|
893
896
|
);
|
|
894
897
|
}
|
|
895
898
|
var CHART_COLORS = {
|
|
896
|
-
primary: tokens.
|
|
897
|
-
// "#C100F1" — vivid purple
|
|
899
|
+
primary: tokens.semantic.light.primary,
|
|
898
900
|
secondary: tokens.semantic.light.success,
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
// "#a8978a"
|
|
904
|
-
subtle: tokens.ground[200],
|
|
905
|
-
// "#e3dcd4"
|
|
906
|
-
dark: tokens.ground[900]
|
|
907
|
-
// "#26181a"
|
|
901
|
+
tertiary: tokens.semantic.light.warning,
|
|
902
|
+
muted: tokens.semantic.light.mutedForeground,
|
|
903
|
+
subtle: tokens.semantic.light.border,
|
|
904
|
+
dark: tokens.semantic.light.foreground
|
|
908
905
|
};
|
|
909
906
|
function ChartContainer({ children, className, height = 300 }) {
|
|
910
907
|
return /* @__PURE__ */ jsx("div", { className: cn("w-full", className), children: /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height, children }) });
|
|
@@ -912,8 +909,8 @@ function ChartContainer({ children, className, height = 300 }) {
|
|
|
912
909
|
ChartContainer.displayName = "ChartContainer";
|
|
913
910
|
function ChartTooltip({ active, payload, label, labelClassName }) {
|
|
914
911
|
if (!active || !payload?.length) return null;
|
|
915
|
-
return /* @__PURE__ */ jsxs("div", { className: "rounded-xl border border-
|
|
916
|
-
label && /* @__PURE__ */ jsx("p", { className: cn("mb-1 label text-
|
|
912
|
+
return /* @__PURE__ */ jsxs("div", { className: "rounded-xl border border-border bg-card px-3 py-2 shadow-elevated", children: [
|
|
913
|
+
label && /* @__PURE__ */ jsx("p", { className: cn("mb-1 label text-muted-foreground", labelClassName), children: label }),
|
|
917
914
|
payload.map((entry, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
918
915
|
/* @__PURE__ */ jsx(
|
|
919
916
|
"span",
|
|
@@ -922,11 +919,11 @@ function ChartTooltip({ active, payload, label, labelClassName }) {
|
|
|
922
919
|
style: { backgroundColor: entry.color }
|
|
923
920
|
}
|
|
924
921
|
),
|
|
925
|
-
/* @__PURE__ */ jsxs("span", { className: "caption text-
|
|
922
|
+
/* @__PURE__ */ jsxs("span", { className: "caption text-muted-foreground", children: [
|
|
926
923
|
entry.name,
|
|
927
924
|
":"
|
|
928
925
|
] }),
|
|
929
|
-
/* @__PURE__ */ jsx("span", { className: "caption font-medium text-
|
|
926
|
+
/* @__PURE__ */ jsx("span", { className: "caption font-medium text-foreground", children: entry.value })
|
|
930
927
|
] }, i))
|
|
931
928
|
] });
|
|
932
929
|
}
|
|
@@ -936,7 +933,7 @@ var CheckboxRoot = React15.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
936
933
|
{
|
|
937
934
|
ref,
|
|
938
935
|
className: cn(
|
|
939
|
-
"peer size-4 shrink-0 rounded border border-
|
|
936
|
+
"peer size-4 shrink-0 rounded border border-border bg-card transition-colors",
|
|
940
937
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
941
938
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
942
939
|
"data-[state=checked]:bg-brand-primary data-[state=checked]:border-brand-primary",
|
|
@@ -944,7 +941,7 @@ var CheckboxRoot = React15.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
944
941
|
className
|
|
945
942
|
),
|
|
946
943
|
...props,
|
|
947
|
-
children: /* @__PURE__ */ jsx(Checkbox.Indicator, { className: "flex items-center justify-center text-
|
|
944
|
+
children: /* @__PURE__ */ jsx(Checkbox.Indicator, { className: "flex items-center justify-center text-background", children: props.checked === "indeterminate" ? /* @__PURE__ */ jsx(Minus, { size: 11, strokeWidth: 3 }) : /* @__PURE__ */ jsx(Check, { size: 11, strokeWidth: 3 }) })
|
|
948
945
|
}
|
|
949
946
|
));
|
|
950
947
|
CheckboxRoot.displayName = "Checkbox";
|
|
@@ -977,8 +974,8 @@ function ColorPicker({
|
|
|
977
974
|
disabled,
|
|
978
975
|
"aria-label": ariaLabel,
|
|
979
976
|
className: cn(
|
|
980
|
-
"inline-flex h-8 w-8 items-center justify-center rounded-md border border-
|
|
981
|
-
"transition-colors hover:border-
|
|
977
|
+
"inline-flex h-8 w-8 items-center justify-center rounded-md border border-border bg-card",
|
|
978
|
+
"transition-colors hover:border-border",
|
|
982
979
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/20 focus-visible:border-brand-primary",
|
|
983
980
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
984
981
|
className
|
|
@@ -998,7 +995,7 @@ function ColorPicker({
|
|
|
998
995
|
{
|
|
999
996
|
align: "start",
|
|
1000
997
|
sideOffset: 6,
|
|
1001
|
-
className: "z-50 w-56 rounded-xl bg-
|
|
998
|
+
className: "z-50 w-56 rounded-xl bg-card p-3 shadow-natural outline-none",
|
|
1002
999
|
children: [
|
|
1003
1000
|
/* @__PURE__ */ jsx(
|
|
1004
1001
|
"input",
|
|
@@ -1009,11 +1006,11 @@ function ColorPicker({
|
|
|
1009
1006
|
setHex(e.target.value);
|
|
1010
1007
|
onChange(e.target.value);
|
|
1011
1008
|
},
|
|
1012
|
-
className: "h-10 w-full cursor-pointer rounded-md border border-
|
|
1009
|
+
className: "h-10 w-full cursor-pointer rounded-md border border-border bg-card p-0.5"
|
|
1013
1010
|
}
|
|
1014
1011
|
),
|
|
1015
1012
|
/* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center gap-2", children: [
|
|
1016
|
-
/* @__PURE__ */ jsx("span", { className: "caption text-
|
|
1013
|
+
/* @__PURE__ */ jsx("span", { className: "caption text-muted-foreground", children: "Hex" }),
|
|
1017
1014
|
/* @__PURE__ */ jsx(
|
|
1018
1015
|
"input",
|
|
1019
1016
|
{
|
|
@@ -1024,7 +1021,7 @@ function ColorPicker({
|
|
|
1024
1021
|
onKeyDown: (e) => {
|
|
1025
1022
|
if (e.key === "Enter") commit(e.target.value);
|
|
1026
1023
|
},
|
|
1027
|
-
className: "flex-1 h-7 rounded-md border border-
|
|
1024
|
+
className: "flex-1 h-7 rounded-md border border-border bg-card px-2 caption text-foreground focus:outline-none focus:border-brand-primary"
|
|
1028
1025
|
}
|
|
1029
1026
|
)
|
|
1030
1027
|
] }),
|
|
@@ -1044,6 +1041,7 @@ function ColorPicker({
|
|
|
1044
1041
|
) })
|
|
1045
1042
|
] });
|
|
1046
1043
|
}
|
|
1044
|
+
ColorPicker.displayName = "ColorPicker";
|
|
1047
1045
|
function ColorInput({
|
|
1048
1046
|
value,
|
|
1049
1047
|
onChange,
|
|
@@ -1065,7 +1063,7 @@ function ColorInput({
|
|
|
1065
1063
|
"div",
|
|
1066
1064
|
{
|
|
1067
1065
|
className: cn(
|
|
1068
|
-
"inline-flex h-8 items-stretch gap-0 rounded-md border border-
|
|
1066
|
+
"inline-flex h-8 items-stretch gap-0 rounded-md border border-border bg-card overflow-hidden",
|
|
1069
1067
|
"focus-within:ring-2 focus-within:ring-brand-primary/20 focus-within:border-brand-primary",
|
|
1070
1068
|
disabled && "opacity-50 pointer-events-none",
|
|
1071
1069
|
className
|
|
@@ -1093,10 +1091,10 @@ function ColorInput({
|
|
|
1093
1091
|
commitHex("#" + e.target.value.replace(/^#/, ""));
|
|
1094
1092
|
},
|
|
1095
1093
|
spellCheck: false,
|
|
1096
|
-
className: "w-[5.5rem] caption text-
|
|
1094
|
+
className: "w-[5.5rem] caption text-foreground px-2 bg-transparent border-l border-border focus:outline-none uppercase"
|
|
1097
1095
|
}
|
|
1098
1096
|
),
|
|
1099
|
-
typeof opacity === "number" && onOpacityChange && /* @__PURE__ */ jsxs("div", { className: "relative flex items-center border-l border-
|
|
1097
|
+
typeof opacity === "number" && onOpacityChange && /* @__PURE__ */ jsxs("div", { className: "relative flex items-center border-l border-border", children: [
|
|
1100
1098
|
/* @__PURE__ */ jsx(
|
|
1101
1099
|
"input",
|
|
1102
1100
|
{
|
|
@@ -1105,15 +1103,16 @@ function ColorInput({
|
|
|
1105
1103
|
max: 100,
|
|
1106
1104
|
value: Math.round(opacity),
|
|
1107
1105
|
onChange: (e) => onOpacityChange(Number(e.target.value)),
|
|
1108
|
-
className: "w-12 caption text-
|
|
1106
|
+
className: "w-12 caption text-foreground px-2 bg-transparent focus:outline-none text-right [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none"
|
|
1109
1107
|
}
|
|
1110
1108
|
),
|
|
1111
|
-
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "caption-xs text-
|
|
1109
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "caption-xs text-muted-foreground pr-2", children: "%" })
|
|
1112
1110
|
] })
|
|
1113
1111
|
]
|
|
1114
1112
|
}
|
|
1115
1113
|
);
|
|
1116
1114
|
}
|
|
1115
|
+
ColorInput.displayName = "ColorInput";
|
|
1117
1116
|
function Combobox({
|
|
1118
1117
|
options,
|
|
1119
1118
|
value,
|
|
@@ -1125,12 +1124,17 @@ function Combobox({
|
|
|
1125
1124
|
}) {
|
|
1126
1125
|
const [open, setOpen] = React15.useState(false);
|
|
1127
1126
|
const [query, setQuery] = React15.useState("");
|
|
1127
|
+
const [activeIndex, setActiveIndex] = React15.useState(-1);
|
|
1128
1128
|
const containerRef = React15.useRef(null);
|
|
1129
1129
|
const inputRef = React15.useRef(null);
|
|
1130
|
+
const listboxId = React15.useId();
|
|
1130
1131
|
const selectedOption = options.find((o) => o.value === value);
|
|
1131
1132
|
const filtered = query === "" ? options : options.filter(
|
|
1132
1133
|
(o) => o.label.toLowerCase().includes(query.toLowerCase()) || o.description?.toLowerCase().includes(query.toLowerCase())
|
|
1133
1134
|
);
|
|
1135
|
+
React15.useEffect(() => {
|
|
1136
|
+
setActiveIndex(-1);
|
|
1137
|
+
}, [filtered.length, open]);
|
|
1134
1138
|
React15.useEffect(() => {
|
|
1135
1139
|
function onMouseDown(e) {
|
|
1136
1140
|
if (containerRef.current && !containerRef.current.contains(e.target)) {
|
|
@@ -1141,20 +1145,45 @@ function Combobox({
|
|
|
1141
1145
|
document.addEventListener("mousedown", onMouseDown);
|
|
1142
1146
|
return () => document.removeEventListener("mousedown", onMouseDown);
|
|
1143
1147
|
}, []);
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1148
|
+
function closeDropdown() {
|
|
1149
|
+
setOpen(false);
|
|
1150
|
+
setQuery("");
|
|
1151
|
+
setActiveIndex(-1);
|
|
1152
|
+
}
|
|
1153
|
+
function selectOption(opt) {
|
|
1154
|
+
onValueChange?.(opt.value);
|
|
1155
|
+
closeDropdown();
|
|
1156
|
+
}
|
|
1157
|
+
function handleInputKeyDown(e) {
|
|
1158
|
+
if (e.key === "Escape") {
|
|
1159
|
+
closeDropdown();
|
|
1160
|
+
return;
|
|
1161
|
+
}
|
|
1162
|
+
if (e.key === "ArrowDown") {
|
|
1163
|
+
e.preventDefault();
|
|
1164
|
+
if (!open) {
|
|
1165
|
+
setOpen(true);
|
|
1166
|
+
return;
|
|
1150
1167
|
}
|
|
1168
|
+
setActiveIndex((i) => Math.min(i + 1, filtered.length - 1));
|
|
1169
|
+
} else if (e.key === "ArrowUp") {
|
|
1170
|
+
e.preventDefault();
|
|
1171
|
+
setActiveIndex((i) => Math.max(i - 1, 0));
|
|
1172
|
+
} else if (e.key === "Enter") {
|
|
1173
|
+
e.preventDefault();
|
|
1174
|
+
if (!open) {
|
|
1175
|
+
setOpen(true);
|
|
1176
|
+
return;
|
|
1177
|
+
}
|
|
1178
|
+
const target = activeIndex >= 0 ? filtered[activeIndex] : filtered[0];
|
|
1179
|
+
if (target) selectOption(target);
|
|
1180
|
+
} else if (e.key === "Tab") {
|
|
1181
|
+
closeDropdown();
|
|
1151
1182
|
}
|
|
1152
|
-
|
|
1153
|
-
return () => document.removeEventListener("keydown", onKey);
|
|
1154
|
-
}, [open]);
|
|
1183
|
+
}
|
|
1155
1184
|
return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: cn("relative", className), children: [
|
|
1156
1185
|
/* @__PURE__ */ jsxs("div", { className: "relative flex items-center", children: [
|
|
1157
|
-
selectedOption?.avatar && !open && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute left-2.5 flex size-5 items-center justify-center rounded-full bg-
|
|
1186
|
+
selectedOption?.avatar && !open && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute left-2.5 flex size-5 items-center justify-center rounded-full bg-muted caption-xs font-semibold text-muted-foreground shrink-0", children: selectedOption.avatar }),
|
|
1158
1187
|
selectedOption?.statusColor && !open && /* @__PURE__ */ jsx(
|
|
1159
1188
|
"div",
|
|
1160
1189
|
{
|
|
@@ -1169,10 +1198,14 @@ function Combobox({
|
|
|
1169
1198
|
type: "text",
|
|
1170
1199
|
role: "combobox",
|
|
1171
1200
|
"aria-expanded": open,
|
|
1201
|
+
"aria-haspopup": "listbox",
|
|
1202
|
+
"aria-controls": open ? listboxId : void 0,
|
|
1203
|
+
"aria-activedescendant": open && activeIndex >= 0 ? `${listboxId}-option-${activeIndex}` : void 0,
|
|
1204
|
+
"aria-autocomplete": "list",
|
|
1172
1205
|
className: cn(
|
|
1173
|
-
"flex h-9 w-full rounded-lg border border-
|
|
1174
|
-
"placeholder:text-
|
|
1175
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
1206
|
+
"flex h-9 w-full rounded-lg border border-border bg-card pr-8 body text-foreground",
|
|
1207
|
+
"placeholder:text-muted-foreground",
|
|
1208
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30 focus-visible:border-border",
|
|
1176
1209
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
1177
1210
|
selectedOption?.avatar && !open ? "pl-8" : selectedOption?.statusColor && !open ? "pl-7" : "pl-3"
|
|
1178
1211
|
),
|
|
@@ -1185,7 +1218,8 @@ function Combobox({
|
|
|
1185
1218
|
onFocus: () => {
|
|
1186
1219
|
setOpen(true);
|
|
1187
1220
|
setQuery("");
|
|
1188
|
-
}
|
|
1221
|
+
},
|
|
1222
|
+
onKeyDown: handleInputKeyDown
|
|
1189
1223
|
}
|
|
1190
1224
|
),
|
|
1191
1225
|
/* @__PURE__ */ jsx(
|
|
@@ -1193,11 +1227,11 @@ function Combobox({
|
|
|
1193
1227
|
{
|
|
1194
1228
|
type: "button",
|
|
1195
1229
|
tabIndex: -1,
|
|
1196
|
-
|
|
1230
|
+
"aria-label": open ? "Close" : "Open",
|
|
1231
|
+
className: "absolute inset-y-0 right-0 flex items-center px-2 text-muted-foreground hover:text-muted-foreground transition-colors",
|
|
1197
1232
|
onClick: () => {
|
|
1198
1233
|
if (open) {
|
|
1199
|
-
|
|
1200
|
-
setQuery("");
|
|
1234
|
+
closeDropdown();
|
|
1201
1235
|
} else {
|
|
1202
1236
|
setOpen(true);
|
|
1203
1237
|
inputRef.current?.focus();
|
|
@@ -1207,30 +1241,29 @@ function Combobox({
|
|
|
1207
1241
|
}
|
|
1208
1242
|
)
|
|
1209
1243
|
] }),
|
|
1210
|
-
open && /* @__PURE__ */ jsx("div", { className: "absolute z-50 mt-1 w-full overflow-hidden rounded-lg border border-
|
|
1244
|
+
open && /* @__PURE__ */ jsx("div", { className: "absolute z-50 mt-1 w-full overflow-hidden rounded-lg border border-border bg-card shadow-elevated", children: /* @__PURE__ */ jsx("ul", { id: listboxId, role: "listbox", className: "max-h-60 overflow-auto py-1", children: filtered.length === 0 ? /* @__PURE__ */ jsx("li", { className: "px-3 py-2 body text-muted-foreground", children: emptyText }) : filtered.map((option, idx) => {
|
|
1211
1245
|
const isSelected = option.value === value;
|
|
1246
|
+
const isActive = idx === activeIndex;
|
|
1212
1247
|
return /* @__PURE__ */ jsxs(
|
|
1213
1248
|
"li",
|
|
1214
1249
|
{
|
|
1250
|
+
id: `${listboxId}-option-${idx}`,
|
|
1215
1251
|
role: "option",
|
|
1216
1252
|
"aria-selected": isSelected,
|
|
1217
1253
|
className: cn(
|
|
1218
1254
|
"flex cursor-pointer select-none items-center gap-2.5 px-3 py-2 body transition-colors",
|
|
1219
|
-
isSelected ? "bg-brand-primary text-
|
|
1255
|
+
isSelected ? "bg-brand-primary text-background" : isActive ? "bg-muted text-foreground" : "text-foreground hover:bg-muted"
|
|
1220
1256
|
),
|
|
1221
1257
|
onMouseDown: (e) => e.preventDefault(),
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
setQuery("");
|
|
1225
|
-
setOpen(false);
|
|
1226
|
-
},
|
|
1258
|
+
onMouseEnter: () => setActiveIndex(idx),
|
|
1259
|
+
onClick: () => selectOption(option),
|
|
1227
1260
|
children: [
|
|
1228
1261
|
option.avatar && /* @__PURE__ */ jsx(
|
|
1229
1262
|
"div",
|
|
1230
1263
|
{
|
|
1231
1264
|
className: cn(
|
|
1232
1265
|
"flex size-6 shrink-0 items-center justify-center rounded-full caption-xs font-semibold",
|
|
1233
|
-
isSelected ? "bg-
|
|
1266
|
+
isSelected ? "bg-card/20 text-background" : "bg-muted text-muted-foreground"
|
|
1234
1267
|
),
|
|
1235
1268
|
children: option.avatar
|
|
1236
1269
|
}
|
|
@@ -1249,7 +1282,7 @@ function Combobox({
|
|
|
1249
1282
|
{
|
|
1250
1283
|
className: cn(
|
|
1251
1284
|
"caption truncate",
|
|
1252
|
-
isSelected ? "text-
|
|
1285
|
+
isSelected ? "text-background/70" : "text-muted-foreground"
|
|
1253
1286
|
),
|
|
1254
1287
|
children: option.description
|
|
1255
1288
|
}
|
|
@@ -1263,6 +1296,7 @@ function Combobox({
|
|
|
1263
1296
|
}) }) })
|
|
1264
1297
|
] });
|
|
1265
1298
|
}
|
|
1299
|
+
Combobox.displayName = "Combobox";
|
|
1266
1300
|
var DialogRoot = Dialog.Root;
|
|
1267
1301
|
var DialogTrigger = Dialog.Trigger;
|
|
1268
1302
|
var DialogClose = Dialog.Close;
|
|
@@ -1288,7 +1322,7 @@ var DialogContent = React15.forwardRef(({ className, children, ...props }, ref)
|
|
|
1288
1322
|
ref,
|
|
1289
1323
|
className: cn(
|
|
1290
1324
|
"fixed left-[50%] top-[50%] z-50 translate-x-[-50%] translate-y-[-50%]",
|
|
1291
|
-
"w-full max-w-lg bg-
|
|
1325
|
+
"w-full max-w-lg bg-card rounded-2xl shadow-elevated p-6",
|
|
1292
1326
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
1293
1327
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
1294
1328
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -1297,7 +1331,7 @@ var DialogContent = React15.forwardRef(({ className, children, ...props }, ref)
|
|
|
1297
1331
|
...props,
|
|
1298
1332
|
children: [
|
|
1299
1333
|
children,
|
|
1300
|
-
/* @__PURE__ */ jsxs(Dialog.Close, { className: "absolute right-4 top-4 rounded-md p-1 text-
|
|
1334
|
+
/* @__PURE__ */ jsxs(Dialog.Close, { className: "absolute right-4 top-4 rounded-md p-1 text-muted-foreground opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring/20", children: [
|
|
1301
1335
|
/* @__PURE__ */ jsx(X, { size: 16 }),
|
|
1302
1336
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
1303
1337
|
] })
|
|
@@ -1318,12 +1352,12 @@ var DialogTitle = React15.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
1318
1352
|
Dialog.Title,
|
|
1319
1353
|
{
|
|
1320
1354
|
ref,
|
|
1321
|
-
className: cn("body-lg font-semibold text-
|
|
1355
|
+
className: cn("body-lg font-semibold text-foreground", className),
|
|
1322
1356
|
...props
|
|
1323
1357
|
}
|
|
1324
1358
|
));
|
|
1325
1359
|
DialogTitle.displayName = "DialogTitle";
|
|
1326
|
-
var DialogDescription = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Dialog.Description, { ref, className: cn("body text-
|
|
1360
|
+
var DialogDescription = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Dialog.Description, { ref, className: cn("body text-muted-foreground", className), ...props }));
|
|
1327
1361
|
DialogDescription.displayName = "DialogDescription";
|
|
1328
1362
|
function CommandPalette({
|
|
1329
1363
|
open,
|
|
@@ -1359,14 +1393,14 @@ function CommandPalette({
|
|
|
1359
1393
|
onClose();
|
|
1360
1394
|
}
|
|
1361
1395
|
return /* @__PURE__ */ jsx(DialogRoot, { open, onOpenChange: (v) => !v && onClose(), children: /* @__PURE__ */ jsxs(DialogContent, { className: "gap-0 overflow-hidden p-0 sm:max-w-xl", children: [
|
|
1362
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 border-b border-
|
|
1363
|
-
/* @__PURE__ */ jsx(Search, { size: 16, className: "shrink-0 text-
|
|
1396
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 border-b border-border px-4", children: [
|
|
1397
|
+
/* @__PURE__ */ jsx(Search, { size: 16, className: "shrink-0 text-muted-foreground" }),
|
|
1364
1398
|
/* @__PURE__ */ jsx(
|
|
1365
1399
|
"input",
|
|
1366
1400
|
{
|
|
1367
1401
|
ref: inputRef,
|
|
1368
1402
|
type: "text",
|
|
1369
|
-
className: "h-12 flex-1 bg-transparent body text-
|
|
1403
|
+
className: "h-12 flex-1 bg-transparent body text-foreground placeholder:text-muted-foreground focus:outline-none",
|
|
1370
1404
|
placeholder,
|
|
1371
1405
|
value: query,
|
|
1372
1406
|
onChange: (e) => setQuery(e.target.value),
|
|
@@ -1376,23 +1410,23 @@ function CommandPalette({
|
|
|
1376
1410
|
}
|
|
1377
1411
|
}
|
|
1378
1412
|
),
|
|
1379
|
-
/* @__PURE__ */ jsx("kbd", { className: "hidden items-center gap-0.5 sm:flex", children: /* @__PURE__ */ jsx("span", { className: "caption-xs font-medium text-
|
|
1413
|
+
/* @__PURE__ */ jsx("kbd", { className: "hidden items-center gap-0.5 sm:flex", children: /* @__PURE__ */ jsx("span", { className: "caption-xs font-medium text-muted-foreground rounded border border-border px-1.5 py-0.5", children: "esc" }) })
|
|
1380
1414
|
] }),
|
|
1381
|
-
/* @__PURE__ */ jsx("div", { className: "max-h-80 overflow-y-auto", children: filtered.length === 0 ? /* @__PURE__ */ jsx("p", { className: "px-4 py-8 text-center body text-
|
|
1382
|
-
cat && /* @__PURE__ */ jsx("p", { className: "label px-4 py-2 text-
|
|
1415
|
+
/* @__PURE__ */ jsx("div", { className: "max-h-80 overflow-y-auto", children: filtered.length === 0 ? /* @__PURE__ */ jsx("p", { className: "px-4 py-8 text-center body text-muted-foreground", children: emptyText }) : /* @__PURE__ */ jsx("ul", { role: "list", className: "py-2", children: categories.map((cat) => /* @__PURE__ */ jsxs("li", { children: [
|
|
1416
|
+
cat && /* @__PURE__ */ jsx("p", { className: "label px-4 py-2 text-muted-foreground", children: cat }),
|
|
1383
1417
|
grouped[cat].map((item, i) => /* @__PURE__ */ jsxs(
|
|
1384
1418
|
"button",
|
|
1385
1419
|
{
|
|
1386
1420
|
type: "button",
|
|
1387
|
-
className: "flex w-full items-center gap-3 px-4 py-2.5 body text-left transition-colors hover:bg-
|
|
1421
|
+
className: "flex w-full items-center gap-3 px-4 py-2.5 body text-left transition-colors hover:bg-muted focus-visible:bg-muted focus-visible:outline-none",
|
|
1388
1422
|
onClick: () => handleSelect(item),
|
|
1389
1423
|
children: [
|
|
1390
|
-
item.icon && /* @__PURE__ */ jsx("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-lg border border-
|
|
1424
|
+
item.icon && /* @__PURE__ */ jsx("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-lg border border-border bg-card text-muted-foreground", children: item.icon }),
|
|
1391
1425
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
1392
|
-
/* @__PURE__ */ jsx("p", { className: "font-medium text-
|
|
1393
|
-
item.description && /* @__PURE__ */ jsx("p", { className: "caption text-
|
|
1426
|
+
/* @__PURE__ */ jsx("p", { className: "font-medium text-foreground truncate", children: item.label }),
|
|
1427
|
+
item.description && /* @__PURE__ */ jsx("p", { className: "caption text-muted-foreground truncate", children: item.description })
|
|
1394
1428
|
] }),
|
|
1395
|
-
/* @__PURE__ */ jsx(ArrowRight, { size: 13, className: "shrink-0 text-
|
|
1429
|
+
/* @__PURE__ */ jsx(ArrowRight, { size: 13, className: "shrink-0 text-muted-foreground" })
|
|
1396
1430
|
]
|
|
1397
1431
|
},
|
|
1398
1432
|
item.id ?? i
|
|
@@ -1400,6 +1434,7 @@ function CommandPalette({
|
|
|
1400
1434
|
] }, cat)) }) })
|
|
1401
1435
|
] }) });
|
|
1402
1436
|
}
|
|
1437
|
+
CommandPalette.displayName = "CommandPalette";
|
|
1403
1438
|
var CommandCtx = React15.createContext({
|
|
1404
1439
|
query: "",
|
|
1405
1440
|
setQuery: () => {
|
|
@@ -1426,7 +1461,7 @@ function Command({ className, children, onSelect, ...props }) {
|
|
|
1426
1461
|
"div",
|
|
1427
1462
|
{
|
|
1428
1463
|
className: cn(
|
|
1429
|
-
"flex flex-col overflow-hidden rounded-xl border border-
|
|
1464
|
+
"flex flex-col overflow-hidden rounded-xl border border-border bg-card",
|
|
1430
1465
|
className
|
|
1431
1466
|
),
|
|
1432
1467
|
...props,
|
|
@@ -1436,8 +1471,8 @@ function Command({ className, children, onSelect, ...props }) {
|
|
|
1436
1471
|
}
|
|
1437
1472
|
var CommandInput = React15.forwardRef(({ className, ...props }, ref) => {
|
|
1438
1473
|
const { query, setQuery } = React15.useContext(CommandCtx);
|
|
1439
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-b border-
|
|
1440
|
-
/* @__PURE__ */ jsx(Search, { size: 14, className: "shrink-0 text-
|
|
1474
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-b border-border px-3", children: [
|
|
1475
|
+
/* @__PURE__ */ jsx(Search, { size: 14, className: "shrink-0 text-muted-foreground" }),
|
|
1441
1476
|
/* @__PURE__ */ jsx(
|
|
1442
1477
|
"input",
|
|
1443
1478
|
{
|
|
@@ -1447,8 +1482,8 @@ var CommandInput = React15.forwardRef(({ className, ...props }, ref) => {
|
|
|
1447
1482
|
autoCorrect: "off",
|
|
1448
1483
|
spellCheck: false,
|
|
1449
1484
|
className: cn(
|
|
1450
|
-
"flex h-10 w-full bg-transparent body text-
|
|
1451
|
-
"placeholder:text-
|
|
1485
|
+
"flex h-10 w-full bg-transparent body text-foreground",
|
|
1486
|
+
"placeholder:text-muted-foreground focus:outline-none",
|
|
1452
1487
|
className
|
|
1453
1488
|
),
|
|
1454
1489
|
value: query,
|
|
@@ -1505,7 +1540,7 @@ var CommandEmpty = React15.forwardRef(
|
|
|
1505
1540
|
"div",
|
|
1506
1541
|
{
|
|
1507
1542
|
ref,
|
|
1508
|
-
className: cn("py-6 text-center caption text-
|
|
1543
|
+
className: cn("py-6 text-center caption text-muted-foreground", className),
|
|
1509
1544
|
...props,
|
|
1510
1545
|
children
|
|
1511
1546
|
}
|
|
@@ -1515,7 +1550,7 @@ var CommandEmpty = React15.forwardRef(
|
|
|
1515
1550
|
CommandEmpty.displayName = "CommandEmpty";
|
|
1516
1551
|
var CommandGroup = React15.forwardRef(
|
|
1517
1552
|
({ className, heading, children, ...props }, ref) => /* @__PURE__ */ jsxs("div", { ref, role: "group", className: cn("py-1", className), ...props, children: [
|
|
1518
|
-
heading && /* @__PURE__ */ jsx("p", { className: "px-3 pb-1 pt-0.5 label text-
|
|
1553
|
+
heading && /* @__PURE__ */ jsx("p", { className: "px-3 pb-1 pt-0.5 label text-muted-foreground", children: heading }),
|
|
1519
1554
|
children
|
|
1520
1555
|
] })
|
|
1521
1556
|
);
|
|
@@ -1547,9 +1582,9 @@ var CommandItem = React15.forwardRef(
|
|
|
1547
1582
|
tabIndex: disabled ? void 0 : 0,
|
|
1548
1583
|
className: cn(
|
|
1549
1584
|
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-1.5 mx-1",
|
|
1550
|
-
"body text-
|
|
1551
|
-
"hover:bg-
|
|
1552
|
-
"focus:bg-
|
|
1585
|
+
"body text-muted-foreground outline-none transition-colors",
|
|
1586
|
+
"hover:bg-muted hover:text-foreground",
|
|
1587
|
+
"focus:bg-muted focus:text-foreground",
|
|
1553
1588
|
disabled && "pointer-events-none opacity-40",
|
|
1554
1589
|
className
|
|
1555
1590
|
),
|
|
@@ -1568,19 +1603,20 @@ var CommandItem = React15.forwardRef(
|
|
|
1568
1603
|
);
|
|
1569
1604
|
CommandItem.displayName = "CommandItem";
|
|
1570
1605
|
var CommandSeparator = React15.forwardRef(
|
|
1571
|
-
({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("my-1 h-px bg-
|
|
1606
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("my-1 h-px bg-muted", className), ...props })
|
|
1572
1607
|
);
|
|
1573
1608
|
CommandSeparator.displayName = "CommandSeparator";
|
|
1574
1609
|
function CommandShortcut({ className, ...props }) {
|
|
1575
1610
|
return /* @__PURE__ */ jsx(
|
|
1576
1611
|
"span",
|
|
1577
1612
|
{
|
|
1578
|
-
className: cn("ml-auto caption text-
|
|
1613
|
+
className: cn("ml-auto caption text-muted-foreground tracking-widest font-medium", className),
|
|
1579
1614
|
...props
|
|
1580
1615
|
}
|
|
1581
1616
|
);
|
|
1582
1617
|
}
|
|
1583
1618
|
CommandShortcut.displayName = "CommandShortcut";
|
|
1619
|
+
Command.displayName = "Command";
|
|
1584
1620
|
var ContextMenuRoot = ContextMenu.Root;
|
|
1585
1621
|
var ContextMenuTrigger = ContextMenu.Trigger;
|
|
1586
1622
|
var ContextMenuGroup = ContextMenu.Group;
|
|
@@ -1592,7 +1628,7 @@ var ContextMenuContent = React15.forwardRef(({ className, ...props }, ref) => /*
|
|
|
1592
1628
|
{
|
|
1593
1629
|
ref,
|
|
1594
1630
|
className: cn(
|
|
1595
|
-
"z-50 min-w-[8rem] bg-
|
|
1631
|
+
"z-50 min-w-[8rem] bg-card rounded-xl shadow-natural p-1",
|
|
1596
1632
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
1597
1633
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
1598
1634
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -1611,7 +1647,7 @@ var ContextMenuItem = React15.forwardRef(({ className, inset, destructive, ...pr
|
|
|
1611
1647
|
className: cn(
|
|
1612
1648
|
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-1.5",
|
|
1613
1649
|
"body outline-none transition-colors",
|
|
1614
|
-
destructive ? "text-
|
|
1650
|
+
destructive ? "text-destructive focus:bg-destructive/10 focus:text-destructive" : "text-muted-foreground focus:bg-muted focus:text-foreground",
|
|
1615
1651
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
1616
1652
|
inset && "pl-8",
|
|
1617
1653
|
className
|
|
@@ -1626,14 +1662,14 @@ var ContextMenuCheckboxItem = React15.forwardRef(({ className, children, ...prop
|
|
|
1626
1662
|
ref,
|
|
1627
1663
|
className: cn(
|
|
1628
1664
|
"relative flex cursor-default select-none items-center gap-2 rounded-md pl-8 pr-2.5 py-1.5",
|
|
1629
|
-
"body text-
|
|
1630
|
-
"focus:bg-
|
|
1665
|
+
"body text-muted-foreground outline-none transition-colors",
|
|
1666
|
+
"focus:bg-muted focus:text-foreground",
|
|
1631
1667
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
1632
1668
|
className
|
|
1633
1669
|
),
|
|
1634
1670
|
...props,
|
|
1635
1671
|
children: [
|
|
1636
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { size: 13, className: "text-
|
|
1672
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { size: 13, className: "text-foreground" }) }) }),
|
|
1637
1673
|
children
|
|
1638
1674
|
]
|
|
1639
1675
|
}
|
|
@@ -1645,14 +1681,14 @@ var ContextMenuRadioItem = React15.forwardRef(({ className, children, ...props }
|
|
|
1645
1681
|
ref,
|
|
1646
1682
|
className: cn(
|
|
1647
1683
|
"relative flex cursor-default select-none items-center gap-2 rounded-md pl-8 pr-2.5 py-1.5",
|
|
1648
|
-
"body text-
|
|
1649
|
-
"focus:bg-
|
|
1684
|
+
"body text-muted-foreground outline-none transition-colors",
|
|
1685
|
+
"focus:bg-muted focus:text-foreground",
|
|
1650
1686
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
1651
1687
|
className
|
|
1652
1688
|
),
|
|
1653
1689
|
...props,
|
|
1654
1690
|
children: [
|
|
1655
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { size: 8, className: "fill-
|
|
1691
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { size: 8, className: "fill-foreground text-foreground" }) }) }),
|
|
1656
1692
|
children
|
|
1657
1693
|
]
|
|
1658
1694
|
}
|
|
@@ -1662,7 +1698,7 @@ var ContextMenuLabel = React15.forwardRef(({ className, inset, ...props }, ref)
|
|
|
1662
1698
|
ContextMenu.Label,
|
|
1663
1699
|
{
|
|
1664
1700
|
ref,
|
|
1665
|
-
className: cn("px-2.5 py-1 label text-
|
|
1701
|
+
className: cn("px-2.5 py-1 label text-muted-foreground", inset && "pl-8", className),
|
|
1666
1702
|
...props
|
|
1667
1703
|
}
|
|
1668
1704
|
));
|
|
@@ -1671,7 +1707,7 @@ var ContextMenuSeparator = React15.forwardRef(({ className, ...props }, ref) =>
|
|
|
1671
1707
|
ContextMenu.Separator,
|
|
1672
1708
|
{
|
|
1673
1709
|
ref,
|
|
1674
|
-
className: cn("mx-1 my-1 h-px bg-
|
|
1710
|
+
className: cn("mx-1 my-1 h-px bg-muted", className),
|
|
1675
1711
|
...props
|
|
1676
1712
|
}
|
|
1677
1713
|
));
|
|
@@ -1682,15 +1718,15 @@ var ContextMenuSubTrigger = React15.forwardRef(({ className, inset, children, ..
|
|
|
1682
1718
|
ref,
|
|
1683
1719
|
className: cn(
|
|
1684
1720
|
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-1.5",
|
|
1685
|
-
"body text-
|
|
1686
|
-
"focus:bg-
|
|
1721
|
+
"body text-muted-foreground outline-none transition-colors",
|
|
1722
|
+
"focus:bg-muted focus:text-foreground data-[state=open]:bg-muted",
|
|
1687
1723
|
inset && "pl-8",
|
|
1688
1724
|
className
|
|
1689
1725
|
),
|
|
1690
1726
|
...props,
|
|
1691
1727
|
children: [
|
|
1692
1728
|
children,
|
|
1693
|
-
/* @__PURE__ */ jsx(ChevronRight, { size: 14, className: "ml-auto text-
|
|
1729
|
+
/* @__PURE__ */ jsx(ChevronRight, { size: 14, className: "ml-auto text-muted-foreground" })
|
|
1694
1730
|
]
|
|
1695
1731
|
}
|
|
1696
1732
|
));
|
|
@@ -1700,7 +1736,7 @@ var ContextMenuSubContent = React15.forwardRef(({ className, ...props }, ref) =>
|
|
|
1700
1736
|
{
|
|
1701
1737
|
ref,
|
|
1702
1738
|
className: cn(
|
|
1703
|
-
"z-50 min-w-[8rem] bg-
|
|
1739
|
+
"z-50 min-w-[8rem] bg-card rounded-xl border border-border shadow-natural p-1",
|
|
1704
1740
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
1705
1741
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
1706
1742
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -1712,32 +1748,32 @@ var ContextMenuSubContent = React15.forwardRef(({ className, ...props }, ref) =>
|
|
|
1712
1748
|
));
|
|
1713
1749
|
ContextMenuSubContent.displayName = "ContextMenuSubContent";
|
|
1714
1750
|
function ContextMenuShortcut({ className, ...props }) {
|
|
1715
|
-
return /* @__PURE__ */ jsx("span", { className: cn("ml-auto caption text-
|
|
1751
|
+
return /* @__PURE__ */ jsx("span", { className: cn("ml-auto caption text-muted-foreground", className), ...props });
|
|
1716
1752
|
}
|
|
1717
1753
|
ContextMenuShortcut.displayName = "ContextMenuShortcut";
|
|
1718
1754
|
var Table = React15.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1719
1755
|
"div",
|
|
1720
1756
|
{
|
|
1721
1757
|
className: cn(
|
|
1722
|
-
"w-full overflow-hidden rounded-xl border border-
|
|
1758
|
+
"w-full overflow-hidden rounded-xl border border-border bg-card",
|
|
1723
1759
|
containerClassName
|
|
1724
1760
|
),
|
|
1725
1761
|
children: /* @__PURE__ */ jsx(
|
|
1726
1762
|
"table",
|
|
1727
1763
|
{
|
|
1728
1764
|
ref,
|
|
1729
|
-
className: cn("min-w-full caption-bottom divide-y divide-
|
|
1765
|
+
className: cn("min-w-full caption-bottom divide-y divide-border", className),
|
|
1730
1766
|
...props
|
|
1731
1767
|
}
|
|
1732
1768
|
)
|
|
1733
1769
|
}
|
|
1734
1770
|
));
|
|
1735
1771
|
Table.displayName = "Table";
|
|
1736
|
-
var TableHeader = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("bg-
|
|
1772
|
+
var TableHeader = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("bg-muted", className), ...props }));
|
|
1737
1773
|
TableHeader.displayName = "TableHeader";
|
|
1738
|
-
var TableBody = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("tbody", { ref, className: cn("divide-y divide-
|
|
1774
|
+
var TableBody = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("tbody", { ref, className: cn("divide-y divide-border bg-card", className), ...props }));
|
|
1739
1775
|
TableBody.displayName = "TableBody";
|
|
1740
|
-
var TableFooter = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("tfoot", { ref, className: cn("bg-
|
|
1776
|
+
var TableFooter = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("tfoot", { ref, className: cn("bg-muted font-medium", className), ...props }));
|
|
1741
1777
|
TableFooter.displayName = "TableFooter";
|
|
1742
1778
|
var TableRow = React15.forwardRef(
|
|
1743
1779
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
@@ -1745,7 +1781,7 @@ var TableRow = React15.forwardRef(
|
|
|
1745
1781
|
{
|
|
1746
1782
|
ref,
|
|
1747
1783
|
className: cn(
|
|
1748
|
-
"transition-colors hover:bg-
|
|
1784
|
+
"transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
|
|
1749
1785
|
className
|
|
1750
1786
|
),
|
|
1751
1787
|
...props
|
|
@@ -1758,7 +1794,7 @@ var TableHead = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
1758
1794
|
{
|
|
1759
1795
|
ref,
|
|
1760
1796
|
className: cn(
|
|
1761
|
-
"px-6 py-3 text-left align-middle label text-
|
|
1797
|
+
"px-6 py-3 text-left align-middle label text-muted-foreground",
|
|
1762
1798
|
"[&:has([role=checkbox])]:pr-0",
|
|
1763
1799
|
className
|
|
1764
1800
|
),
|
|
@@ -1771,7 +1807,7 @@ var TableCell = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
1771
1807
|
{
|
|
1772
1808
|
ref,
|
|
1773
1809
|
className: cn(
|
|
1774
|
-
"px-6 py-4 align-middle body text-
|
|
1810
|
+
"px-6 py-4 align-middle body text-muted-foreground",
|
|
1775
1811
|
"[&:has([role=checkbox])]:pr-0",
|
|
1776
1812
|
className
|
|
1777
1813
|
),
|
|
@@ -1779,7 +1815,7 @@ var TableCell = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
1779
1815
|
}
|
|
1780
1816
|
));
|
|
1781
1817
|
TableCell.displayName = "TableCell";
|
|
1782
|
-
var TableCaption = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("caption", { ref, className: cn("mt-4 caption text-
|
|
1818
|
+
var TableCaption = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("caption", { ref, className: cn("mt-4 caption text-muted-foreground", className), ...props }));
|
|
1783
1819
|
TableCaption.displayName = "TableCaption";
|
|
1784
1820
|
function Input({ className, type, ...props }) {
|
|
1785
1821
|
return /* @__PURE__ */ jsx(
|
|
@@ -1788,12 +1824,12 @@ function Input({ className, type, ...props }) {
|
|
|
1788
1824
|
type,
|
|
1789
1825
|
"data-slot": "input",
|
|
1790
1826
|
className: cn(
|
|
1791
|
-
"flex h-9 w-full rounded-md border border-
|
|
1792
|
-
"body text-
|
|
1827
|
+
"flex h-9 w-full rounded-md border border-border bg-card px-3 py-1",
|
|
1828
|
+
"body text-foreground placeholder:text-muted-foreground",
|
|
1793
1829
|
"transition-colors duration-150",
|
|
1794
1830
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/20 focus-visible:border-brand-primary",
|
|
1795
|
-
"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-
|
|
1796
|
-
"file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-
|
|
1831
|
+
"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted",
|
|
1832
|
+
"file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground",
|
|
1797
1833
|
className
|
|
1798
1834
|
),
|
|
1799
1835
|
...props
|
|
@@ -1834,30 +1870,37 @@ function DataTable({
|
|
|
1834
1870
|
}
|
|
1835
1871
|
),
|
|
1836
1872
|
/* @__PURE__ */ jsxs(Table, { children: [
|
|
1837
|
-
/* @__PURE__ */ jsx(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx(
|
|
1838
|
-
|
|
1873
|
+
/* @__PURE__ */ jsx(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx(
|
|
1874
|
+
TableHead,
|
|
1839
1875
|
{
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1876
|
+
"aria-sort": header.column.getCanSort() ? header.column.getIsSorted() === "asc" ? "ascending" : header.column.getIsSorted() === "desc" ? "descending" : "none" : void 0,
|
|
1877
|
+
children: header.isPlaceholder ? null : header.column.getCanSort() ? /* @__PURE__ */ jsxs(
|
|
1878
|
+
"button",
|
|
1879
|
+
{
|
|
1880
|
+
className: cn(
|
|
1881
|
+
"flex items-center gap-1 transition-colors hover:text-muted-foreground",
|
|
1882
|
+
header.column.getIsSorted() && "text-foreground"
|
|
1883
|
+
),
|
|
1884
|
+
onClick: header.column.getToggleSortingHandler(),
|
|
1885
|
+
children: [
|
|
1886
|
+
flexRender(header.column.columnDef.header, header.getContext()),
|
|
1887
|
+
header.column.getIsSorted() === "asc" ? /* @__PURE__ */ jsx(ChevronUp, { size: 12, className: "text-brand-primary" }) : header.column.getIsSorted() === "desc" ? /* @__PURE__ */ jsx(ChevronDown, { size: 12, className: "text-brand-primary" }) : /* @__PURE__ */ jsx(ChevronsUpDown, { size: 12, className: "text-muted-foreground" })
|
|
1888
|
+
]
|
|
1889
|
+
}
|
|
1890
|
+
) : flexRender(header.column.columnDef.header, header.getContext())
|
|
1891
|
+
},
|
|
1892
|
+
header.id
|
|
1893
|
+
)) }, headerGroup.id)) }),
|
|
1894
|
+
/* @__PURE__ */ jsx(TableBody, { children: table.getRowModel().rows?.length ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx(TableRow, { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx(TableCell, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id)) }, row.id)) : /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(TableCell, { colSpan: columns.length, className: "h-24 text-center text-muted-foreground", children: "No results." }) }) })
|
|
1852
1895
|
] }),
|
|
1853
1896
|
showPagination && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
1854
|
-
/* @__PURE__ */ jsxs("p", { className: "caption text-
|
|
1897
|
+
/* @__PURE__ */ jsxs("p", { className: "caption text-muted-foreground", children: [
|
|
1855
1898
|
table.getFilteredRowModel().rows.length,
|
|
1856
1899
|
" result",
|
|
1857
1900
|
table.getFilteredRowModel().rows.length !== 1 ? "s" : ""
|
|
1858
1901
|
] }),
|
|
1859
1902
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1860
|
-
/* @__PURE__ */ jsxs("span", { className: "caption text-
|
|
1903
|
+
/* @__PURE__ */ jsxs("span", { className: "caption text-muted-foreground", children: [
|
|
1861
1904
|
"Page ",
|
|
1862
1905
|
table.getState().pagination.pageIndex + 1,
|
|
1863
1906
|
" of ",
|
|
@@ -1897,7 +1940,7 @@ var PopoverContent = React15.forwardRef(({ className, align = "center", sideOffs
|
|
|
1897
1940
|
align,
|
|
1898
1941
|
sideOffset,
|
|
1899
1942
|
className: cn(
|
|
1900
|
-
"z-50 w-72 rounded-xl bg-
|
|
1943
|
+
"z-50 w-72 rounded-xl bg-card p-4 shadow-natural outline-none",
|
|
1901
1944
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
1902
1945
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
1903
1946
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -1928,12 +1971,12 @@ function DatePicker({
|
|
|
1928
1971
|
variant: "outline",
|
|
1929
1972
|
className: cn(
|
|
1930
1973
|
"w-[240px] justify-start gap-2 text-left font-normal",
|
|
1931
|
-
!value && "text-
|
|
1974
|
+
!value && "text-muted-foreground",
|
|
1932
1975
|
className
|
|
1933
1976
|
),
|
|
1934
1977
|
disabled,
|
|
1935
1978
|
children: [
|
|
1936
|
-
/* @__PURE__ */ jsx(CalendarIcon, { size: 14, className: "text-
|
|
1979
|
+
/* @__PURE__ */ jsx(CalendarIcon, { size: 14, className: "text-muted-foreground shrink-0" }),
|
|
1937
1980
|
value ? formatDate(value) : /* @__PURE__ */ jsx("span", { children: placeholder })
|
|
1938
1981
|
]
|
|
1939
1982
|
}
|
|
@@ -1960,21 +2003,21 @@ function DescriptionList({
|
|
|
1960
2003
|
}) {
|
|
1961
2004
|
return /* @__PURE__ */ jsxs("div", { className, children: [
|
|
1962
2005
|
(title || description) && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
|
|
1963
|
-
title && /* @__PURE__ */ jsx("p", { className: "body font-semibold text-
|
|
1964
|
-
description && /* @__PURE__ */ jsx("p", { className: "mt-1 caption text-
|
|
2006
|
+
title && /* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground", children: title }),
|
|
2007
|
+
description && /* @__PURE__ */ jsx("p", { className: "mt-1 caption text-muted-foreground", children: description })
|
|
1965
2008
|
] }),
|
|
1966
|
-
/* @__PURE__ */ jsx("dl", { className: cn("border-t border-
|
|
2009
|
+
/* @__PURE__ */ jsx("dl", { className: cn("border-t border-border", columns === 2 && "sm:grid sm:grid-cols-2"), children: items.map((item, i) => /* @__PURE__ */ jsxs(
|
|
1967
2010
|
"div",
|
|
1968
2011
|
{
|
|
1969
2012
|
className: cn(
|
|
1970
2013
|
"py-3.5",
|
|
1971
|
-
columns === 1 ? "grid grid-cols-3 gap-4 items-baseline" : "flex flex-col gap-1 border-b border-
|
|
1972
|
-
columns === 1 && i !== items.length - 1 && "border-b border-
|
|
1973
|
-
striped && i % 2 === 0 && "bg-
|
|
2014
|
+
columns === 1 ? "grid grid-cols-3 gap-4 items-baseline" : "flex flex-col gap-1 border-b border-border",
|
|
2015
|
+
columns === 1 && i !== items.length - 1 && "border-b border-border",
|
|
2016
|
+
striped && i % 2 === 0 && "bg-muted -mx-4 px-4 rounded"
|
|
1974
2017
|
),
|
|
1975
2018
|
children: [
|
|
1976
|
-
/* @__PURE__ */ jsx("dt", { className: "caption font-semibold text-
|
|
1977
|
-
/* @__PURE__ */ jsx("dd", { className: cn("body text-
|
|
2019
|
+
/* @__PURE__ */ jsx("dt", { className: "caption font-semibold text-muted-foreground uppercase tracking-wide", children: item.term }),
|
|
2020
|
+
/* @__PURE__ */ jsx("dd", { className: cn("body text-foreground", columns === 1 ? "col-span-2" : ""), children: item.action ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4", children: [
|
|
1978
2021
|
/* @__PURE__ */ jsx("span", { children: item.details }),
|
|
1979
2022
|
item.action
|
|
1980
2023
|
] }) : item.details })
|
|
@@ -1984,6 +2027,7 @@ function DescriptionList({
|
|
|
1984
2027
|
)) })
|
|
1985
2028
|
] });
|
|
1986
2029
|
}
|
|
2030
|
+
DescriptionList.displayName = "DescriptionList";
|
|
1987
2031
|
var DrawerRoot = Drawer.Root;
|
|
1988
2032
|
var DrawerTrigger = Drawer.Trigger;
|
|
1989
2033
|
var DrawerPortal = Drawer.Portal;
|
|
@@ -1992,7 +2036,7 @@ var DrawerOverlay = React15.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
1992
2036
|
Drawer.Overlay,
|
|
1993
2037
|
{
|
|
1994
2038
|
ref,
|
|
1995
|
-
className: cn("fixed inset-0 z-50 bg-
|
|
2039
|
+
className: cn("fixed inset-0 z-50 bg-foreground/40 backdrop-blur-[1px]", className),
|
|
1996
2040
|
...props
|
|
1997
2041
|
}
|
|
1998
2042
|
));
|
|
@@ -2004,12 +2048,12 @@ var DrawerContent = React15.forwardRef(({ className, children, ...props }, ref)
|
|
|
2004
2048
|
{
|
|
2005
2049
|
ref,
|
|
2006
2050
|
className: cn(
|
|
2007
|
-
"fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-2xl border border-
|
|
2051
|
+
"fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-2xl border border-border bg-card",
|
|
2008
2052
|
className
|
|
2009
2053
|
),
|
|
2010
2054
|
...props,
|
|
2011
2055
|
children: [
|
|
2012
|
-
/* @__PURE__ */ jsx("div", { className: "mx-auto mt-4 h-1 w-12 rounded-full bg-
|
|
2056
|
+
/* @__PURE__ */ jsx("div", { className: "mx-auto mt-4 h-1 w-12 rounded-full bg-muted" }),
|
|
2013
2057
|
children
|
|
2014
2058
|
]
|
|
2015
2059
|
}
|
|
@@ -2024,7 +2068,7 @@ var DrawerTitle = React15.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
2024
2068
|
Drawer.Title,
|
|
2025
2069
|
{
|
|
2026
2070
|
ref,
|
|
2027
|
-
className: cn("subheading text-
|
|
2071
|
+
className: cn("subheading text-foreground", className),
|
|
2028
2072
|
...props
|
|
2029
2073
|
}
|
|
2030
2074
|
));
|
|
@@ -2033,7 +2077,7 @@ var DrawerDescription = React15.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2033
2077
|
Drawer.Description,
|
|
2034
2078
|
{
|
|
2035
2079
|
ref,
|
|
2036
|
-
className: cn("body text-
|
|
2080
|
+
className: cn("body text-muted-foreground", className),
|
|
2037
2081
|
...props
|
|
2038
2082
|
}
|
|
2039
2083
|
));
|
|
@@ -2050,7 +2094,7 @@ var DropdownMenuContent = React15.forwardRef(({ className, sideOffset = 4, ...pr
|
|
|
2050
2094
|
ref,
|
|
2051
2095
|
sideOffset,
|
|
2052
2096
|
className: cn(
|
|
2053
|
-
"z-50 min-w-[8rem] bg-
|
|
2097
|
+
"z-50 min-w-[8rem] bg-card rounded-xl shadow-natural p-1",
|
|
2054
2098
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
2055
2099
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
2056
2100
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -2069,7 +2113,7 @@ var DropdownMenuItem = React15.forwardRef(({ className, inset, destructive, ...p
|
|
|
2069
2113
|
className: cn(
|
|
2070
2114
|
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-1.5",
|
|
2071
2115
|
"body outline-none transition-colors",
|
|
2072
|
-
destructive ? "text-
|
|
2116
|
+
destructive ? "text-destructive focus:bg-destructive/10 focus:text-destructive" : "text-muted-foreground focus:bg-muted focus:text-foreground",
|
|
2073
2117
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
2074
2118
|
inset && "pl-8",
|
|
2075
2119
|
className
|
|
@@ -2084,14 +2128,14 @@ var DropdownMenuCheckboxItem = React15.forwardRef(({ className, children, ...pro
|
|
|
2084
2128
|
ref,
|
|
2085
2129
|
className: cn(
|
|
2086
2130
|
"relative flex cursor-default select-none items-center gap-2 rounded-md pl-8 pr-2.5 py-1.5",
|
|
2087
|
-
"body text-
|
|
2088
|
-
"focus:bg-
|
|
2131
|
+
"body text-muted-foreground outline-none transition-colors",
|
|
2132
|
+
"focus:bg-muted focus:text-foreground",
|
|
2089
2133
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
2090
2134
|
className
|
|
2091
2135
|
),
|
|
2092
2136
|
...props,
|
|
2093
2137
|
children: [
|
|
2094
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { size: 13, className: "text-
|
|
2138
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { size: 13, className: "text-foreground" }) }) }),
|
|
2095
2139
|
children
|
|
2096
2140
|
]
|
|
2097
2141
|
}
|
|
@@ -2103,14 +2147,14 @@ var DropdownMenuRadioItem = React15.forwardRef(({ className, children, ...props
|
|
|
2103
2147
|
ref,
|
|
2104
2148
|
className: cn(
|
|
2105
2149
|
"relative flex cursor-default select-none items-center gap-2 rounded-md pl-8 pr-2.5 py-1.5",
|
|
2106
|
-
"body text-
|
|
2107
|
-
"focus:bg-
|
|
2150
|
+
"body text-muted-foreground outline-none transition-colors",
|
|
2151
|
+
"focus:bg-muted focus:text-foreground",
|
|
2108
2152
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
2109
2153
|
className
|
|
2110
2154
|
),
|
|
2111
2155
|
...props,
|
|
2112
2156
|
children: [
|
|
2113
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { size: 8, className: "fill-
|
|
2157
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { size: 8, className: "fill-foreground text-foreground" }) }) }),
|
|
2114
2158
|
children
|
|
2115
2159
|
]
|
|
2116
2160
|
}
|
|
@@ -2120,7 +2164,7 @@ var DropdownMenuLabel = React15.forwardRef(({ className, inset, ...props }, ref)
|
|
|
2120
2164
|
DropdownMenu.Label,
|
|
2121
2165
|
{
|
|
2122
2166
|
ref,
|
|
2123
|
-
className: cn("px-2.5 py-1 label text-
|
|
2167
|
+
className: cn("px-2.5 py-1 label text-muted-foreground", inset && "pl-8", className),
|
|
2124
2168
|
...props
|
|
2125
2169
|
}
|
|
2126
2170
|
));
|
|
@@ -2129,7 +2173,7 @@ var DropdownMenuSeparator = React15.forwardRef(({ className, ...props }, ref) =>
|
|
|
2129
2173
|
DropdownMenu.Separator,
|
|
2130
2174
|
{
|
|
2131
2175
|
ref,
|
|
2132
|
-
className: cn("mx-1 my-1 h-px bg-
|
|
2176
|
+
className: cn("mx-1 my-1 h-px bg-muted", className),
|
|
2133
2177
|
...props
|
|
2134
2178
|
}
|
|
2135
2179
|
));
|
|
@@ -2140,15 +2184,15 @@ var DropdownMenuSubTrigger = React15.forwardRef(({ className, inset, children, .
|
|
|
2140
2184
|
ref,
|
|
2141
2185
|
className: cn(
|
|
2142
2186
|
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-1.5",
|
|
2143
|
-
"body text-
|
|
2144
|
-
"focus:bg-
|
|
2187
|
+
"body text-muted-foreground outline-none transition-colors",
|
|
2188
|
+
"focus:bg-muted focus:text-foreground data-[state=open]:bg-muted",
|
|
2145
2189
|
inset && "pl-8",
|
|
2146
2190
|
className
|
|
2147
2191
|
),
|
|
2148
2192
|
...props,
|
|
2149
2193
|
children: [
|
|
2150
2194
|
children,
|
|
2151
|
-
/* @__PURE__ */ jsx(ChevronRight, { size: 14, className: "ml-auto text-
|
|
2195
|
+
/* @__PURE__ */ jsx(ChevronRight, { size: 14, className: "ml-auto text-muted-foreground" })
|
|
2152
2196
|
]
|
|
2153
2197
|
}
|
|
2154
2198
|
));
|
|
@@ -2158,7 +2202,7 @@ var DropdownMenuSubContent = React15.forwardRef(({ className, ...props }, ref) =
|
|
|
2158
2202
|
{
|
|
2159
2203
|
ref,
|
|
2160
2204
|
className: cn(
|
|
2161
|
-
"z-50 min-w-[8rem] bg-
|
|
2205
|
+
"z-50 min-w-[8rem] bg-card rounded-xl border border-border shadow-natural p-1",
|
|
2162
2206
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
2163
2207
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
2164
2208
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -2170,25 +2214,26 @@ var DropdownMenuSubContent = React15.forwardRef(({ className, ...props }, ref) =
|
|
|
2170
2214
|
));
|
|
2171
2215
|
DropdownMenuSubContent.displayName = "DropdownMenuSubContent";
|
|
2172
2216
|
function DropdownMenuShortcut({ className, ...props }) {
|
|
2173
|
-
return /* @__PURE__ */ jsx("span", { className: cn("ml-auto caption text-
|
|
2217
|
+
return /* @__PURE__ */ jsx("span", { className: cn("ml-auto caption text-muted-foreground", className), ...props });
|
|
2174
2218
|
}
|
|
2175
2219
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
2176
2220
|
function EmptyState({ icon, title, description, action, className }) {
|
|
2177
2221
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center gap-4 px-6 py-14 text-center", className), children: [
|
|
2178
|
-
icon && /* @__PURE__ */ jsx("div", { className: "flex size-12 items-center justify-center rounded-xl bg-brand-secondary/20 text-
|
|
2222
|
+
icon && /* @__PURE__ */ jsx("div", { className: "flex size-12 items-center justify-center rounded-xl bg-brand-secondary/20 text-muted-foreground", children: icon }),
|
|
2179
2223
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
2180
|
-
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-
|
|
2181
|
-
description && /* @__PURE__ */ jsx("p", { className: "body max-w-xs text-
|
|
2224
|
+
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground", children: title }),
|
|
2225
|
+
description && /* @__PURE__ */ jsx("p", { className: "body max-w-xs text-muted-foreground", children: description })
|
|
2182
2226
|
] }),
|
|
2183
2227
|
action && (action.href ? /* @__PURE__ */ jsx(Button, { size: "sm", asChild: true, children: /* @__PURE__ */ jsx("a", { href: action.href, children: action.label }) }) : /* @__PURE__ */ jsx(Button, { size: "sm", onClick: action.onClick, children: action.label }))
|
|
2184
2228
|
] });
|
|
2185
2229
|
}
|
|
2230
|
+
EmptyState.displayName = "EmptyState";
|
|
2186
2231
|
var Label = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2187
2232
|
Label$1.Root,
|
|
2188
2233
|
{
|
|
2189
2234
|
ref,
|
|
2190
2235
|
className: cn(
|
|
2191
|
-
"body font-medium leading-none text-
|
|
2236
|
+
"body font-medium leading-none text-muted-foreground",
|
|
2192
2237
|
"peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
2193
2238
|
className
|
|
2194
2239
|
),
|
|
@@ -2212,12 +2257,12 @@ function Field({
|
|
|
2212
2257
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
2213
2258
|
/* @__PURE__ */ jsxs(Label, { htmlFor, "aria-required": required, children: [
|
|
2214
2259
|
label,
|
|
2215
|
-
required && /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-
|
|
2260
|
+
required && /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-destructive", "aria-hidden": "true", children: "*" })
|
|
2216
2261
|
] }),
|
|
2217
|
-
cornerHint && /* @__PURE__ */ jsx("span", { className: "caption text-
|
|
2262
|
+
cornerHint && /* @__PURE__ */ jsx("span", { className: "caption text-muted-foreground", children: cornerHint })
|
|
2218
2263
|
] }),
|
|
2219
2264
|
children,
|
|
2220
|
-
error ? /* @__PURE__ */ jsx("p", { id: descriptionId, role: "alert", className: "caption text-
|
|
2265
|
+
error ? /* @__PURE__ */ jsx("p", { id: descriptionId, role: "alert", className: "caption text-destructive", children: error }) : hint ? /* @__PURE__ */ jsx("p", { id: descriptionId, className: "caption text-muted-foreground", children: hint }) : null
|
|
2221
2266
|
] });
|
|
2222
2267
|
}
|
|
2223
2268
|
Field.displayName = "Field";
|
|
@@ -2247,17 +2292,17 @@ function GridListCard({
|
|
|
2247
2292
|
"div",
|
|
2248
2293
|
{
|
|
2249
2294
|
className: cn(
|
|
2250
|
-
"flex h-full flex-col gap-1 rounded-xl border border-
|
|
2295
|
+
"flex h-full flex-col gap-1 rounded-xl border border-border bg-card p-4 shadow-natural transition-shadow",
|
|
2251
2296
|
href && "hover:shadow-elevated",
|
|
2252
2297
|
className
|
|
2253
2298
|
),
|
|
2254
2299
|
children: [
|
|
2255
2300
|
accent && /* @__PURE__ */ jsx("div", { className: "mb-2", children: accent }),
|
|
2256
|
-
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-
|
|
2257
|
-
description && /* @__PURE__ */ jsx("p", { className: "caption text-
|
|
2301
|
+
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground", children: title }),
|
|
2302
|
+
description && /* @__PURE__ */ jsx("p", { className: "caption text-muted-foreground", children: description }),
|
|
2258
2303
|
(meta || trailing) && /* @__PURE__ */ jsxs("div", { className: "mt-auto flex items-center justify-between pt-3", children: [
|
|
2259
|
-
meta && /* @__PURE__ */ jsx("span", { className: "caption text-
|
|
2260
|
-
trailing && /* @__PURE__ */ jsx("span", { className: "caption text-
|
|
2304
|
+
meta && /* @__PURE__ */ jsx("span", { className: "caption text-muted-foreground", children: meta }),
|
|
2305
|
+
trailing && /* @__PURE__ */ jsx("span", { className: "caption text-muted-foreground", children: trailing })
|
|
2261
2306
|
] })
|
|
2262
2307
|
]
|
|
2263
2308
|
}
|
|
@@ -2266,7 +2311,7 @@ function GridListCard({
|
|
|
2266
2311
|
"a",
|
|
2267
2312
|
{
|
|
2268
2313
|
href,
|
|
2269
|
-
className: "block h-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
2314
|
+
className: "block h-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30 rounded-xl",
|
|
2270
2315
|
children: inner
|
|
2271
2316
|
}
|
|
2272
2317
|
) : inner });
|
|
@@ -2275,7 +2320,7 @@ function GridListAccentCard({
|
|
|
2275
2320
|
title,
|
|
2276
2321
|
meta,
|
|
2277
2322
|
href,
|
|
2278
|
-
accentClass = "bg-
|
|
2323
|
+
accentClass = "bg-foreground",
|
|
2279
2324
|
initials,
|
|
2280
2325
|
trailing,
|
|
2281
2326
|
className
|
|
@@ -2284,7 +2329,7 @@ function GridListAccentCard({
|
|
|
2284
2329
|
"div",
|
|
2285
2330
|
{
|
|
2286
2331
|
className: cn(
|
|
2287
|
-
"flex overflow-hidden rounded-xl border border-
|
|
2332
|
+
"flex overflow-hidden rounded-xl border border-border bg-card shadow-natural transition-shadow",
|
|
2288
2333
|
href && "hover:shadow-elevated",
|
|
2289
2334
|
className
|
|
2290
2335
|
),
|
|
@@ -2293,16 +2338,16 @@ function GridListAccentCard({
|
|
|
2293
2338
|
"div",
|
|
2294
2339
|
{
|
|
2295
2340
|
className: cn(
|
|
2296
|
-
"flex w-14 shrink-0 items-center justify-center body font-semibold text-
|
|
2341
|
+
"flex w-14 shrink-0 items-center justify-center body font-semibold text-background",
|
|
2297
2342
|
accentClass
|
|
2298
2343
|
),
|
|
2299
2344
|
children: initials
|
|
2300
2345
|
}
|
|
2301
2346
|
),
|
|
2302
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-1 items-center justify-between truncate border-l border-
|
|
2347
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-1 items-center justify-between truncate border-l border-border px-4 py-3", children: [
|
|
2303
2348
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
2304
|
-
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-
|
|
2305
|
-
meta && /* @__PURE__ */ jsx("p", { className: "caption text-
|
|
2349
|
+
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground truncate", children: title }),
|
|
2350
|
+
meta && /* @__PURE__ */ jsx("p", { className: "caption text-muted-foreground", children: meta })
|
|
2306
2351
|
] }),
|
|
2307
2352
|
trailing && /* @__PURE__ */ jsx("div", { className: "shrink-0 pl-2", children: trailing })
|
|
2308
2353
|
] })
|
|
@@ -2313,11 +2358,14 @@ function GridListAccentCard({
|
|
|
2313
2358
|
"a",
|
|
2314
2359
|
{
|
|
2315
2360
|
href,
|
|
2316
|
-
className: "block focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
2361
|
+
className: "block focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30 rounded-xl",
|
|
2317
2362
|
children: inner
|
|
2318
2363
|
}
|
|
2319
2364
|
) : inner });
|
|
2320
2365
|
}
|
|
2366
|
+
GridList.displayName = "GridList";
|
|
2367
|
+
GridListCard.displayName = "GridListCard";
|
|
2368
|
+
GridListAccentCard.displayName = "GridListAccentCard";
|
|
2321
2369
|
var HoverCardRoot = HoverCard.Root;
|
|
2322
2370
|
var HoverCardTrigger = HoverCard.Trigger;
|
|
2323
2371
|
var HoverCardContent = React15.forwardRef(({ className, align = "center", sideOffset = 6, ...props }, ref) => /* @__PURE__ */ jsx(HoverCard.Portal, { children: /* @__PURE__ */ jsx(
|
|
@@ -2327,7 +2375,7 @@ var HoverCardContent = React15.forwardRef(({ className, align = "center", sideOf
|
|
|
2327
2375
|
align,
|
|
2328
2376
|
sideOffset,
|
|
2329
2377
|
className: cn(
|
|
2330
|
-
"z-50 w-64 rounded-xl border border-
|
|
2378
|
+
"z-50 w-64 rounded-xl border border-border bg-card p-4 shadow-elevated outline-none",
|
|
2331
2379
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
2332
2380
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
2333
2381
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -2356,9 +2404,9 @@ var InputGroup = React15.forwardRef(
|
|
|
2356
2404
|
const hasLeading = leadingAddon || leadingIcon;
|
|
2357
2405
|
const hasTrailing = trailingAddon || trailingIcon || trailingButton || error;
|
|
2358
2406
|
const baseInput = cn(
|
|
2359
|
-
"flex h-9 w-full border bg-
|
|
2407
|
+
"flex h-9 w-full border bg-card body text-foreground placeholder:text-muted-foreground",
|
|
2360
2408
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:disabled:cursor-not-allowed disabled:opacity-50",
|
|
2361
|
-
error ? "border-
|
|
2409
|
+
error ? "border-destructive focus-visible:ring-destructive/20 focus-visible:border-destructive" : "border-border focus-visible:ring-brand-primary/20 focus-visible:border-brand-primary"
|
|
2362
2410
|
);
|
|
2363
2411
|
if (!hasLeading && !hasTrailing) {
|
|
2364
2412
|
return /* @__PURE__ */ jsx("input", { ref, className: cn(baseInput, radius, "px-3", className), ...props });
|
|
@@ -2368,15 +2416,15 @@ var InputGroup = React15.forwardRef(
|
|
|
2368
2416
|
"span",
|
|
2369
2417
|
{
|
|
2370
2418
|
className: cn(
|
|
2371
|
-
"inline-flex items-center border border-r-0 bg-
|
|
2372
|
-
error ? "border-
|
|
2419
|
+
"inline-flex items-center border border-r-0 bg-muted px-3 body text-muted-foreground select-none",
|
|
2420
|
+
error ? "border-destructive" : "border-border",
|
|
2373
2421
|
pill ? "rounded-l-full" : "rounded-l-lg"
|
|
2374
2422
|
),
|
|
2375
2423
|
children: leadingAddon
|
|
2376
2424
|
}
|
|
2377
2425
|
),
|
|
2378
2426
|
/* @__PURE__ */ jsxs("div", { className: "relative flex-1", children: [
|
|
2379
|
-
leadingIcon && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3 text-
|
|
2427
|
+
leadingIcon && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3 text-muted-foreground", children: leadingIcon }),
|
|
2380
2428
|
/* @__PURE__ */ jsx(
|
|
2381
2429
|
"input",
|
|
2382
2430
|
{
|
|
@@ -2390,14 +2438,14 @@ var InputGroup = React15.forwardRef(
|
|
|
2390
2438
|
...props
|
|
2391
2439
|
}
|
|
2392
2440
|
),
|
|
2393
|
-
(trailingIcon || error) && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3", children: error ? /* @__PURE__ */ jsx(AlertCircle, { size: 15, className: "text-
|
|
2441
|
+
(trailingIcon || error) && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3", children: error ? /* @__PURE__ */ jsx(AlertCircle, { size: 15, className: "text-destructive" }) : /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: trailingIcon }) })
|
|
2394
2442
|
] }),
|
|
2395
2443
|
trailingAddon && /* @__PURE__ */ jsx(
|
|
2396
2444
|
"span",
|
|
2397
2445
|
{
|
|
2398
2446
|
className: cn(
|
|
2399
|
-
"inline-flex items-center border border-l-0 bg-
|
|
2400
|
-
error ? "border-
|
|
2447
|
+
"inline-flex items-center border border-l-0 bg-muted px-3 body text-muted-foreground select-none",
|
|
2448
|
+
error ? "border-destructive" : "border-border",
|
|
2401
2449
|
pill ? "rounded-r-full" : "rounded-r-lg"
|
|
2402
2450
|
),
|
|
2403
2451
|
children: trailingAddon
|
|
@@ -2457,7 +2505,7 @@ var InputNumber = React15.forwardRef(
|
|
|
2457
2505
|
"div",
|
|
2458
2506
|
{
|
|
2459
2507
|
className: cn(
|
|
2460
|
-
"inline-flex h-8 items-stretch rounded-md border border-
|
|
2508
|
+
"inline-flex h-8 items-stretch rounded-md border border-border bg-card overflow-hidden",
|
|
2461
2509
|
"focus-within:ring-2 focus-within:ring-brand-primary/20 focus-within:border-brand-primary",
|
|
2462
2510
|
disabled && "opacity-50 pointer-events-none",
|
|
2463
2511
|
className
|
|
@@ -2475,12 +2523,12 @@ var InputNumber = React15.forwardRef(
|
|
|
2475
2523
|
onBlur: (e) => commit(e.target.value),
|
|
2476
2524
|
onKeyDown,
|
|
2477
2525
|
disabled,
|
|
2478
|
-
className: "w-full caption text-
|
|
2526
|
+
className: "w-full caption text-foreground px-2 bg-transparent focus:outline-none [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none text-right",
|
|
2479
2527
|
...rest
|
|
2480
2528
|
}
|
|
2481
2529
|
),
|
|
2482
|
-
unit && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "caption-xs text-
|
|
2483
|
-
!hideSteppers && /* @__PURE__ */ jsxs("div", { className: "flex flex-col border-l border-
|
|
2530
|
+
unit && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "caption-xs text-muted-foreground self-center pr-1.5 select-none", children: unit }),
|
|
2531
|
+
!hideSteppers && /* @__PURE__ */ jsxs("div", { className: "flex flex-col border-l border-border", children: [
|
|
2484
2532
|
/* @__PURE__ */ jsx(
|
|
2485
2533
|
"button",
|
|
2486
2534
|
{
|
|
@@ -2488,11 +2536,11 @@ var InputNumber = React15.forwardRef(
|
|
|
2488
2536
|
tabIndex: -1,
|
|
2489
2537
|
onClick: () => bump(step),
|
|
2490
2538
|
"aria-label": "Increment",
|
|
2491
|
-
className: "flex-1 px-1 hover:bg-
|
|
2539
|
+
className: "flex-1 px-1 hover:bg-muted active:bg-muted transition-colors text-muted-foreground",
|
|
2492
2540
|
children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 8 5", width: "8", height: "5", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M0 5 L4 0 L8 5 Z" }) })
|
|
2493
2541
|
}
|
|
2494
2542
|
),
|
|
2495
|
-
/* @__PURE__ */ jsx("div", { className: "border-t border-
|
|
2543
|
+
/* @__PURE__ */ jsx("div", { className: "border-t border-border" }),
|
|
2496
2544
|
/* @__PURE__ */ jsx(
|
|
2497
2545
|
"button",
|
|
2498
2546
|
{
|
|
@@ -2500,7 +2548,7 @@ var InputNumber = React15.forwardRef(
|
|
|
2500
2548
|
tabIndex: -1,
|
|
2501
2549
|
onClick: () => bump(-step),
|
|
2502
2550
|
"aria-label": "Decrement",
|
|
2503
|
-
className: "flex-1 px-1 hover:bg-
|
|
2551
|
+
className: "flex-1 px-1 hover:bg-muted active:bg-muted transition-colors text-muted-foreground",
|
|
2504
2552
|
children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 8 5", width: "8", height: "5", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M0 0 L4 5 L8 0 Z" }) })
|
|
2505
2553
|
}
|
|
2506
2554
|
)
|
|
@@ -2534,7 +2582,7 @@ var InputOTPSlot = React15.forwardRef(({ index, className, ...props }, ref) => {
|
|
|
2534
2582
|
ref,
|
|
2535
2583
|
className: cn(
|
|
2536
2584
|
"relative flex h-12 w-11 items-center justify-center",
|
|
2537
|
-
"border-y border-r border-
|
|
2585
|
+
"border-y border-r border-border body font-medium text-foreground",
|
|
2538
2586
|
"first:rounded-l-xl first:border-l last:rounded-r-xl",
|
|
2539
2587
|
"transition-all",
|
|
2540
2588
|
isActive && "z-10 ring-2 ring-brand-primary/40 border-brand-primary",
|
|
@@ -2543,14 +2591,14 @@ var InputOTPSlot = React15.forwardRef(({ index, className, ...props }, ref) => {
|
|
|
2543
2591
|
...props,
|
|
2544
2592
|
children: [
|
|
2545
2593
|
char,
|
|
2546
|
-
hasFakeCaret && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "h-5 w-px animate-caret-blink bg-
|
|
2594
|
+
hasFakeCaret && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "h-5 w-px animate-caret-blink bg-foreground duration-1000" }) })
|
|
2547
2595
|
]
|
|
2548
2596
|
}
|
|
2549
2597
|
);
|
|
2550
2598
|
});
|
|
2551
2599
|
InputOTPSlot.displayName = "InputOTPSlot";
|
|
2552
2600
|
var InputOTPSeparator = React15.forwardRef(
|
|
2553
|
-
({ ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx(Minus, { size: 14, className: "text-
|
|
2601
|
+
({ ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx(Minus, { size: 14, className: "text-muted-foreground" }) })
|
|
2554
2602
|
);
|
|
2555
2603
|
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
2556
2604
|
var Kbd = React15.forwardRef(
|
|
@@ -2559,7 +2607,7 @@ var Kbd = React15.forwardRef(
|
|
|
2559
2607
|
{
|
|
2560
2608
|
ref,
|
|
2561
2609
|
className: cn(
|
|
2562
|
-
"inline-flex h-5 min-w-5 items-center justify-center rounded border border-
|
|
2610
|
+
"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono caption-xs font-medium text-muted-foreground",
|
|
2563
2611
|
className
|
|
2564
2612
|
),
|
|
2565
2613
|
...props
|
|
@@ -2602,12 +2650,13 @@ function MediaObject({
|
|
|
2602
2650
|
}
|
|
2603
2651
|
);
|
|
2604
2652
|
}
|
|
2653
|
+
MediaObject.displayName = "MediaObject";
|
|
2605
2654
|
var MenubarRoot = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2606
2655
|
Menubar.Root,
|
|
2607
2656
|
{
|
|
2608
2657
|
ref,
|
|
2609
2658
|
className: cn(
|
|
2610
|
-
"flex h-9 items-center gap-0.5 rounded-lg border border-
|
|
2659
|
+
"flex h-9 items-center gap-0.5 rounded-lg border border-border bg-card px-1",
|
|
2611
2660
|
className
|
|
2612
2661
|
),
|
|
2613
2662
|
...props
|
|
@@ -2623,10 +2672,10 @@ var MenubarTrigger = React15.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
2623
2672
|
{
|
|
2624
2673
|
ref,
|
|
2625
2674
|
className: cn(
|
|
2626
|
-
"flex cursor-default items-center rounded-md px-3 py-1 body font-medium text-
|
|
2627
|
-
"hover:bg-
|
|
2628
|
-
"data-[state=open]:bg-
|
|
2629
|
-
"focus:bg-
|
|
2675
|
+
"flex cursor-default items-center rounded-md px-3 py-1 body font-medium text-muted-foreground select-none outline-none",
|
|
2676
|
+
"hover:bg-muted",
|
|
2677
|
+
"data-[state=open]:bg-muted data-[state=open]:text-foreground",
|
|
2678
|
+
"focus:bg-muted",
|
|
2630
2679
|
className
|
|
2631
2680
|
),
|
|
2632
2681
|
...props
|
|
@@ -2641,7 +2690,7 @@ var MenubarContent = React15.forwardRef(({ className, align = "start", alignOffs
|
|
|
2641
2690
|
alignOffset,
|
|
2642
2691
|
sideOffset,
|
|
2643
2692
|
className: cn(
|
|
2644
|
-
"z-50 min-w-[12rem] bg-
|
|
2693
|
+
"z-50 min-w-[12rem] bg-card rounded-xl shadow-natural p-1",
|
|
2645
2694
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
2646
2695
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
2647
2696
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -2659,8 +2708,8 @@ var MenubarItem = React15.forwardRef(({ className, inset, ...props }, ref) => /*
|
|
|
2659
2708
|
ref,
|
|
2660
2709
|
className: cn(
|
|
2661
2710
|
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-1.5",
|
|
2662
|
-
"body text-
|
|
2663
|
-
"focus:bg-
|
|
2711
|
+
"body text-muted-foreground outline-none transition-colors",
|
|
2712
|
+
"focus:bg-muted focus:text-foreground",
|
|
2664
2713
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
2665
2714
|
inset && "pl-8",
|
|
2666
2715
|
className
|
|
@@ -2675,14 +2724,14 @@ var MenubarCheckboxItem = React15.forwardRef(({ className, children, ...props },
|
|
|
2675
2724
|
ref,
|
|
2676
2725
|
className: cn(
|
|
2677
2726
|
"relative flex cursor-default select-none items-center gap-2 rounded-md pl-8 pr-2.5 py-1.5",
|
|
2678
|
-
"body text-
|
|
2679
|
-
"focus:bg-
|
|
2727
|
+
"body text-muted-foreground outline-none transition-colors",
|
|
2728
|
+
"focus:bg-muted focus:text-foreground",
|
|
2680
2729
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
2681
2730
|
className
|
|
2682
2731
|
),
|
|
2683
2732
|
...props,
|
|
2684
2733
|
children: [
|
|
2685
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(Menubar.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { size: 13, className: "text-
|
|
2734
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(Menubar.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { size: 13, className: "text-foreground" }) }) }),
|
|
2686
2735
|
children
|
|
2687
2736
|
]
|
|
2688
2737
|
}
|
|
@@ -2694,14 +2743,14 @@ var MenubarRadioItem = React15.forwardRef(({ className, children, ...props }, re
|
|
|
2694
2743
|
ref,
|
|
2695
2744
|
className: cn(
|
|
2696
2745
|
"relative flex cursor-default select-none items-center gap-2 rounded-md pl-8 pr-2.5 py-1.5",
|
|
2697
|
-
"body text-
|
|
2698
|
-
"focus:bg-
|
|
2746
|
+
"body text-muted-foreground outline-none transition-colors",
|
|
2747
|
+
"focus:bg-muted focus:text-foreground",
|
|
2699
2748
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
2700
2749
|
className
|
|
2701
2750
|
),
|
|
2702
2751
|
...props,
|
|
2703
2752
|
children: [
|
|
2704
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(Menubar.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { size: 8, className: "fill-
|
|
2753
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(Menubar.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { size: 8, className: "fill-foreground text-foreground" }) }) }),
|
|
2705
2754
|
children
|
|
2706
2755
|
]
|
|
2707
2756
|
}
|
|
@@ -2711,7 +2760,7 @@ var MenubarLabel = React15.forwardRef(({ className, inset, ...props }, ref) => /
|
|
|
2711
2760
|
Menubar.Label,
|
|
2712
2761
|
{
|
|
2713
2762
|
ref,
|
|
2714
|
-
className: cn("px-2.5 py-1 label text-
|
|
2763
|
+
className: cn("px-2.5 py-1 label text-muted-foreground", inset && "pl-8", className),
|
|
2715
2764
|
...props
|
|
2716
2765
|
}
|
|
2717
2766
|
));
|
|
@@ -2720,7 +2769,7 @@ var MenubarSeparator = React15.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
2720
2769
|
Menubar.Separator,
|
|
2721
2770
|
{
|
|
2722
2771
|
ref,
|
|
2723
|
-
className: cn("mx-1 my-1 h-px bg-
|
|
2772
|
+
className: cn("mx-1 my-1 h-px bg-muted", className),
|
|
2724
2773
|
...props
|
|
2725
2774
|
}
|
|
2726
2775
|
));
|
|
@@ -2731,15 +2780,15 @@ var MenubarSubTrigger = React15.forwardRef(({ className, inset, children, ...pro
|
|
|
2731
2780
|
ref,
|
|
2732
2781
|
className: cn(
|
|
2733
2782
|
"relative flex cursor-default select-none items-center gap-2 rounded-md px-2.5 py-1.5",
|
|
2734
|
-
"body text-
|
|
2735
|
-
"focus:bg-
|
|
2783
|
+
"body text-muted-foreground outline-none transition-colors",
|
|
2784
|
+
"focus:bg-muted focus:text-foreground data-[state=open]:bg-muted",
|
|
2736
2785
|
inset && "pl-8",
|
|
2737
2786
|
className
|
|
2738
2787
|
),
|
|
2739
2788
|
...props,
|
|
2740
2789
|
children: [
|
|
2741
2790
|
children,
|
|
2742
|
-
/* @__PURE__ */ jsx(ChevronRight, { size: 14, className: "ml-auto text-
|
|
2791
|
+
/* @__PURE__ */ jsx(ChevronRight, { size: 14, className: "ml-auto text-muted-foreground" })
|
|
2743
2792
|
]
|
|
2744
2793
|
}
|
|
2745
2794
|
));
|
|
@@ -2749,7 +2798,7 @@ var MenubarSubContent = React15.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2749
2798
|
{
|
|
2750
2799
|
ref,
|
|
2751
2800
|
className: cn(
|
|
2752
|
-
"z-50 min-w-[8rem] bg-
|
|
2801
|
+
"z-50 min-w-[8rem] bg-card rounded-xl border border-border shadow-natural p-1",
|
|
2753
2802
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
2754
2803
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
2755
2804
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -2761,7 +2810,7 @@ var MenubarSubContent = React15.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2761
2810
|
));
|
|
2762
2811
|
MenubarSubContent.displayName = "MenubarSubContent";
|
|
2763
2812
|
function MenubarShortcut({ className, ...props }) {
|
|
2764
|
-
return /* @__PURE__ */ jsx("span", { className: cn("ml-auto caption text-
|
|
2813
|
+
return /* @__PURE__ */ jsx("span", { className: cn("ml-auto caption text-muted-foreground", className), ...props });
|
|
2765
2814
|
}
|
|
2766
2815
|
MenubarShortcut.displayName = "MenubarShortcut";
|
|
2767
2816
|
var NativeSelect = React15.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
@@ -2770,11 +2819,11 @@ var NativeSelect = React15.forwardRef(({ className, children, ...props }, ref) =
|
|
|
2770
2819
|
{
|
|
2771
2820
|
ref,
|
|
2772
2821
|
className: cn(
|
|
2773
|
-
"peer h-9 w-full appearance-none rounded-lg border border-
|
|
2774
|
-
"body text-
|
|
2775
|
-
"focus:outline-none focus:ring-2 focus:ring-
|
|
2822
|
+
"peer h-9 w-full appearance-none rounded-lg border border-border bg-card pl-3 pr-8",
|
|
2823
|
+
"body text-foreground",
|
|
2824
|
+
"focus:outline-none focus:ring-2 focus:ring-ring/30 focus:border-border",
|
|
2776
2825
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
2777
|
-
"aria-[invalid=true]:border-
|
|
2826
|
+
"aria-[invalid=true]:border-destructive aria-[invalid=true]:focus:ring-destructive/20",
|
|
2778
2827
|
className
|
|
2779
2828
|
),
|
|
2780
2829
|
...props,
|
|
@@ -2785,7 +2834,7 @@ var NativeSelect = React15.forwardRef(({ className, children, ...props }, ref) =
|
|
|
2785
2834
|
ChevronDown,
|
|
2786
2835
|
{
|
|
2787
2836
|
size: 14,
|
|
2788
|
-
className: "pointer-events-none absolute right-2.5 top-1/2 -translate-y-1/2 text-
|
|
2837
|
+
className: "pointer-events-none absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground peer-disabled:opacity-50"
|
|
2789
2838
|
}
|
|
2790
2839
|
)
|
|
2791
2840
|
] }));
|
|
@@ -2820,9 +2869,9 @@ var NavigationMenuTrigger = React15.forwardRef(({ className, children, ...props
|
|
|
2820
2869
|
ref,
|
|
2821
2870
|
className: cn(
|
|
2822
2871
|
"group inline-flex h-9 w-max items-center justify-center gap-1 rounded-md px-3 py-2",
|
|
2823
|
-
"body font-medium text-
|
|
2824
|
-
"hover:bg-
|
|
2825
|
-
"data-[active]:bg-
|
|
2872
|
+
"body font-medium text-muted-foreground",
|
|
2873
|
+
"hover:bg-muted hover:text-foreground",
|
|
2874
|
+
"data-[active]:bg-muted data-[state=open]:bg-muted",
|
|
2826
2875
|
"outline-none transition-colors",
|
|
2827
2876
|
className
|
|
2828
2877
|
),
|
|
@@ -2863,8 +2912,8 @@ var NavigationMenuLink = React15.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2863
2912
|
{
|
|
2864
2913
|
ref,
|
|
2865
2914
|
className: cn(
|
|
2866
|
-
"block select-none rounded-md px-3 py-2 body text-
|
|
2867
|
-
"hover:bg-
|
|
2915
|
+
"block select-none rounded-md px-3 py-2 body text-muted-foreground",
|
|
2916
|
+
"hover:bg-muted hover:text-foreground",
|
|
2868
2917
|
"outline-none transition-colors",
|
|
2869
2918
|
className
|
|
2870
2919
|
),
|
|
@@ -2877,7 +2926,7 @@ var NavigationMenuViewport = React15.forwardRef(({ className, ...props }, ref) =
|
|
|
2877
2926
|
{
|
|
2878
2927
|
ref,
|
|
2879
2928
|
className: cn(
|
|
2880
|
-
"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-xl border border-
|
|
2929
|
+
"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-xl border border-border bg-card shadow-elevated",
|
|
2881
2930
|
"md:w-[var(--radix-navigation-menu-viewport-width)]",
|
|
2882
2931
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
2883
2932
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90",
|
|
@@ -2898,31 +2947,31 @@ var NavigationMenuIndicator = React15.forwardRef(({ className, ...props }, ref)
|
|
|
2898
2947
|
className
|
|
2899
2948
|
),
|
|
2900
2949
|
...props,
|
|
2901
|
-
children: /* @__PURE__ */ jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-
|
|
2950
|
+
children: /* @__PURE__ */ jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-muted shadow-elevated" })
|
|
2902
2951
|
}
|
|
2903
2952
|
));
|
|
2904
2953
|
NavigationMenuIndicator.displayName = "NavigationMenuIndicator";
|
|
2905
2954
|
function navigationMenuTriggerStyle() {
|
|
2906
2955
|
return cn(
|
|
2907
2956
|
"group inline-flex h-9 w-max items-center justify-center gap-1 rounded-md px-3 py-2",
|
|
2908
|
-
"body font-medium text-
|
|
2909
|
-
"hover:bg-
|
|
2910
|
-
"data-[active]:bg-
|
|
2957
|
+
"body font-medium text-muted-foreground",
|
|
2958
|
+
"hover:bg-muted hover:text-foreground",
|
|
2959
|
+
"data-[active]:bg-muted data-[state=open]:bg-muted",
|
|
2911
2960
|
"outline-none transition-colors"
|
|
2912
2961
|
);
|
|
2913
2962
|
}
|
|
2914
2963
|
var variantConfig = {
|
|
2915
|
-
default: { icon: null, iconClass: "text-
|
|
2964
|
+
default: { icon: null, iconClass: "text-muted-foreground" },
|
|
2916
2965
|
success: {
|
|
2917
2966
|
icon: CheckCircle,
|
|
2918
|
-
iconClass: "bg-brand-secondary/25 text-
|
|
2967
|
+
iconClass: "bg-brand-secondary/25 text-muted-foreground rounded-full p-1"
|
|
2919
2968
|
},
|
|
2920
|
-
error: { icon: AlertCircle, iconClass: "text-
|
|
2969
|
+
error: { icon: AlertCircle, iconClass: "text-destructive" },
|
|
2921
2970
|
warning: {
|
|
2922
2971
|
icon: AlertTriangle,
|
|
2923
|
-
iconClass: "bg-brand-secondary/80 text-
|
|
2972
|
+
iconClass: "bg-brand-secondary/80 text-muted-foreground rounded-full p-1"
|
|
2924
2973
|
},
|
|
2925
|
-
info: { icon: Info, iconClass: "text-
|
|
2974
|
+
info: { icon: Info, iconClass: "text-muted-foreground" }
|
|
2926
2975
|
};
|
|
2927
2976
|
function Notification({
|
|
2928
2977
|
title,
|
|
@@ -2940,14 +2989,14 @@ function Notification({
|
|
|
2940
2989
|
"div",
|
|
2941
2990
|
{
|
|
2942
2991
|
className: cn(
|
|
2943
|
-
"pointer-events-auto w-full max-w-sm overflow-hidden rounded-xl border border-
|
|
2992
|
+
"pointer-events-auto w-full max-w-sm overflow-hidden rounded-xl border border-border bg-card shadow-elevated",
|
|
2944
2993
|
className
|
|
2945
2994
|
),
|
|
2946
2995
|
children: /* @__PURE__ */ jsx("div", { className: "p-4", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
|
|
2947
2996
|
resolvedIcon && /* @__PURE__ */ jsx("div", { className: cn("shrink-0 mt-0.5", config.iconClass), children: resolvedIcon }),
|
|
2948
2997
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
2949
|
-
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-
|
|
2950
|
-
description && /* @__PURE__ */ jsx("p", { className: "mt-0.5 body text-
|
|
2998
|
+
/* @__PURE__ */ jsx("p", { className: "body font-semibold text-foreground", children: title }),
|
|
2999
|
+
description && /* @__PURE__ */ jsx("p", { className: "mt-0.5 body text-muted-foreground", children: description }),
|
|
2951
3000
|
actions && actions.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-3 flex gap-3", children: actions.map((action, i) => /* @__PURE__ */ jsx(
|
|
2952
3001
|
"button",
|
|
2953
3002
|
{
|
|
@@ -2955,7 +3004,7 @@ function Notification({
|
|
|
2955
3004
|
onClick: action.onClick,
|
|
2956
3005
|
className: cn(
|
|
2957
3006
|
"body font-semibold transition-colors",
|
|
2958
|
-
action.variant === "ghost" ? "text-
|
|
3007
|
+
action.variant === "ghost" ? "text-muted-foreground hover:text-muted-foreground" : "text-foreground hover:text-muted-foreground"
|
|
2959
3008
|
),
|
|
2960
3009
|
children: action.label
|
|
2961
3010
|
},
|
|
@@ -2967,7 +3016,7 @@ function Notification({
|
|
|
2967
3016
|
{
|
|
2968
3017
|
type: "button",
|
|
2969
3018
|
onClick: onClose,
|
|
2970
|
-
className: "rounded-md text-
|
|
3019
|
+
className: "rounded-md text-muted-foreground hover:text-muted-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30",
|
|
2971
3020
|
children: [
|
|
2972
3021
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" }),
|
|
2973
3022
|
/* @__PURE__ */ jsx(X, { size: 16 })
|
|
@@ -2978,6 +3027,7 @@ function Notification({
|
|
|
2978
3027
|
}
|
|
2979
3028
|
);
|
|
2980
3029
|
}
|
|
3030
|
+
Notification.displayName = "Notification";
|
|
2981
3031
|
function PageHeading({
|
|
2982
3032
|
title,
|
|
2983
3033
|
description,
|
|
@@ -2987,27 +3037,27 @@ function PageHeading({
|
|
|
2987
3037
|
badge,
|
|
2988
3038
|
className
|
|
2989
3039
|
}) {
|
|
2990
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("border-b border-
|
|
3040
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("border-b border-border pb-6", className), children: [
|
|
2991
3041
|
breadcrumbs && breadcrumbs.length > 0 && /* @__PURE__ */ jsx("nav", { className: "mb-3 flex items-center gap-1.5", "aria-label": "Breadcrumb", children: breadcrumbs.map((crumb, i) => /* @__PURE__ */ jsxs(React15.Fragment, { children: [
|
|
2992
|
-
i > 0 && /* @__PURE__ */ jsx(ChevronRight, { size: 12, className: "text-
|
|
3042
|
+
i > 0 && /* @__PURE__ */ jsx(ChevronRight, { size: 12, className: "text-muted-foreground shrink-0" }),
|
|
2993
3043
|
crumb.href ? /* @__PURE__ */ jsx(
|
|
2994
3044
|
"a",
|
|
2995
3045
|
{
|
|
2996
3046
|
href: crumb.href,
|
|
2997
|
-
className: "caption text-
|
|
3047
|
+
className: "caption text-muted-foreground hover:text-muted-foreground transition-colors",
|
|
2998
3048
|
children: crumb.label
|
|
2999
3049
|
}
|
|
3000
|
-
) : /* @__PURE__ */ jsx("span", { className: "caption font-semibold text-
|
|
3050
|
+
) : /* @__PURE__ */ jsx("span", { className: "caption font-semibold text-muted-foreground", children: crumb.label })
|
|
3001
3051
|
] }, i)) }),
|
|
3002
3052
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-start justify-between gap-4", children: [
|
|
3003
3053
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3004
3054
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
3005
|
-
/* @__PURE__ */ jsx("h1", { className: "display text-
|
|
3055
|
+
/* @__PURE__ */ jsx("h1", { className: "display text-foreground truncate", children: title }),
|
|
3006
3056
|
badge && (typeof badge === "string" ? /* @__PURE__ */ jsx(Badge, { variant: "secondary", children: badge }) : /* @__PURE__ */ jsx(Badge, { variant: badge.variant ?? "secondary", children: badge.label }))
|
|
3007
3057
|
] }),
|
|
3008
|
-
description && /* @__PURE__ */ jsx("p", { className: "mt-1.5 body text-
|
|
3009
|
-
meta && meta.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-3 flex flex-wrap items-center gap-4", children: meta.map((m, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 caption text-
|
|
3010
|
-
m.icon && /* @__PURE__ */ jsx("span", { className: "text-
|
|
3058
|
+
description && /* @__PURE__ */ jsx("p", { className: "mt-1.5 body text-muted-foreground max-w-2xl", children: description }),
|
|
3059
|
+
meta && meta.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-3 flex flex-wrap items-center gap-4", children: meta.map((m, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 caption text-muted-foreground", children: [
|
|
3060
|
+
m.icon && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: m.icon }),
|
|
3011
3061
|
/* @__PURE__ */ jsx("span", { children: m.text })
|
|
3012
3062
|
] }, i)) })
|
|
3013
3063
|
] }),
|
|
@@ -3099,7 +3149,7 @@ var PaginationEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
3099
3149
|
"span",
|
|
3100
3150
|
{
|
|
3101
3151
|
"aria-hidden": true,
|
|
3102
|
-
className: cn("flex size-8 items-center justify-center text-
|
|
3152
|
+
className: cn("flex size-8 items-center justify-center text-muted-foreground", className),
|
|
3103
3153
|
...props,
|
|
3104
3154
|
children: /* @__PURE__ */ jsx(MoreHorizontal, { size: 14 })
|
|
3105
3155
|
}
|
|
@@ -3109,7 +3159,7 @@ var ProgressRoot = React15.forwardRef(({ className, value, ...props }, ref) => /
|
|
|
3109
3159
|
Progress.Root,
|
|
3110
3160
|
{
|
|
3111
3161
|
ref,
|
|
3112
|
-
className: cn("relative h-2 w-full overflow-hidden rounded-full bg-
|
|
3162
|
+
className: cn("relative h-2 w-full overflow-hidden rounded-full bg-muted", className),
|
|
3113
3163
|
value,
|
|
3114
3164
|
...props,
|
|
3115
3165
|
children: /* @__PURE__ */ jsx(
|
|
@@ -3143,7 +3193,7 @@ function PropertyRow({
|
|
|
3143
3193
|
label !== void 0 && /* @__PURE__ */ jsx(
|
|
3144
3194
|
"div",
|
|
3145
3195
|
{
|
|
3146
|
-
className: "caption text-
|
|
3196
|
+
className: "caption text-muted-foreground shrink-0 select-none",
|
|
3147
3197
|
style: { width: typeof labelWidth === "number" ? `${labelWidth}px` : labelWidth },
|
|
3148
3198
|
children: label
|
|
3149
3199
|
}
|
|
@@ -3153,6 +3203,7 @@ function PropertyRow({
|
|
|
3153
3203
|
}
|
|
3154
3204
|
);
|
|
3155
3205
|
}
|
|
3206
|
+
PropertyRow.displayName = "PropertyRow";
|
|
3156
3207
|
function RadioCards({ options, value, onValueChange, columns = 3, className }) {
|
|
3157
3208
|
const colMap2 = {
|
|
3158
3209
|
1: "grid-cols-1",
|
|
@@ -3174,7 +3225,7 @@ function RadioCards({ options, value, onValueChange, columns = 3, className }) {
|
|
|
3174
3225
|
"relative flex cursor-pointer flex-col gap-1 rounded-xl border p-4 text-left transition-all",
|
|
3175
3226
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
3176
3227
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
3177
|
-
isSelected ? "border-brand-primary bg-
|
|
3228
|
+
isSelected ? "border-brand-primary bg-card shadow-natural" : "border-border bg-card hover:border-border"
|
|
3178
3229
|
),
|
|
3179
3230
|
children: [
|
|
3180
3231
|
isSelected && /* @__PURE__ */ jsx(
|
|
@@ -3186,27 +3237,27 @@ function RadioCards({ options, value, onValueChange, columns = 3, className }) {
|
|
|
3186
3237
|
),
|
|
3187
3238
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-2", children: [
|
|
3188
3239
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3189
|
-
option.icon && /* @__PURE__ */ jsx("div", { className: "mb-2 text-
|
|
3240
|
+
option.icon && /* @__PURE__ */ jsx("div", { className: "mb-2 text-muted-foreground", children: option.icon }),
|
|
3190
3241
|
/* @__PURE__ */ jsx(
|
|
3191
3242
|
"p",
|
|
3192
3243
|
{
|
|
3193
3244
|
className: cn(
|
|
3194
3245
|
"body font-semibold",
|
|
3195
|
-
isSelected ? "text-
|
|
3246
|
+
isSelected ? "text-foreground" : "text-muted-foreground"
|
|
3196
3247
|
),
|
|
3197
3248
|
children: option.label
|
|
3198
3249
|
}
|
|
3199
3250
|
),
|
|
3200
|
-
option.description && /* @__PURE__ */ jsx("p", { className: "mt-0.5 caption text-
|
|
3251
|
+
option.description && /* @__PURE__ */ jsx("p", { className: "mt-0.5 caption text-muted-foreground", children: option.description })
|
|
3201
3252
|
] }),
|
|
3202
3253
|
/* @__PURE__ */ jsx(
|
|
3203
3254
|
"div",
|
|
3204
3255
|
{
|
|
3205
3256
|
className: cn(
|
|
3206
3257
|
"flex size-5 shrink-0 items-center justify-center rounded-full border-2 transition-colors",
|
|
3207
|
-
isSelected ? "border-brand-primary bg-brand-primary" : "border-
|
|
3258
|
+
isSelected ? "border-brand-primary bg-brand-primary" : "border-border bg-card"
|
|
3208
3259
|
),
|
|
3209
|
-
children: isSelected && /* @__PURE__ */ jsx(Check, { size: 10, className: "text-
|
|
3260
|
+
children: isSelected && /* @__PURE__ */ jsx(Check, { size: 10, className: "text-background", strokeWidth: 3 })
|
|
3210
3261
|
}
|
|
3211
3262
|
)
|
|
3212
3263
|
] }),
|
|
@@ -3215,7 +3266,7 @@ function RadioCards({ options, value, onValueChange, columns = 3, className }) {
|
|
|
3215
3266
|
{
|
|
3216
3267
|
className: cn(
|
|
3217
3268
|
"caption font-semibold mt-2",
|
|
3218
|
-
isSelected ? "text-
|
|
3269
|
+
isSelected ? "text-foreground" : "text-muted-foreground"
|
|
3219
3270
|
),
|
|
3220
3271
|
children: option.meta
|
|
3221
3272
|
}
|
|
@@ -3226,6 +3277,7 @@ function RadioCards({ options, value, onValueChange, columns = 3, className }) {
|
|
|
3226
3277
|
);
|
|
3227
3278
|
}) });
|
|
3228
3279
|
}
|
|
3280
|
+
RadioCards.displayName = "RadioCards";
|
|
3229
3281
|
var RadioGroupRoot = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(RadioGroup.Root, { ref, className: cn("grid gap-2", className), ...props }));
|
|
3230
3282
|
RadioGroupRoot.displayName = "RadioGroup";
|
|
3231
3283
|
var RadioGroupItem = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
@@ -3233,15 +3285,15 @@ var RadioGroupItem = React15.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
3233
3285
|
{
|
|
3234
3286
|
ref,
|
|
3235
3287
|
className: cn(
|
|
3236
|
-
"aspect-square size-4 rounded-full border border-
|
|
3288
|
+
"aspect-square size-4 rounded-full border border-border text-foreground",
|
|
3237
3289
|
"shadow-none transition-colors",
|
|
3238
|
-
"focus:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
3290
|
+
"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring/20",
|
|
3239
3291
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
3240
|
-
"data-[state=checked]:bg-
|
|
3292
|
+
"data-[state=checked]:bg-foreground data-[state=checked]:border-foreground",
|
|
3241
3293
|
className
|
|
3242
3294
|
),
|
|
3243
3295
|
...props,
|
|
3244
|
-
children: /* @__PURE__ */ jsx(RadioGroup.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "size-2 rounded-full bg-
|
|
3296
|
+
children: /* @__PURE__ */ jsx(RadioGroup.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "size-2 rounded-full bg-card" }) })
|
|
3245
3297
|
}
|
|
3246
3298
|
));
|
|
3247
3299
|
RadioGroupItem.displayName = "RadioGroupItem";
|
|
@@ -3272,7 +3324,7 @@ function ResizableHandle({ className, withHandle = true, ...props }) {
|
|
|
3272
3324
|
Separator$1,
|
|
3273
3325
|
{
|
|
3274
3326
|
className: cn(
|
|
3275
|
-
"relative flex shrink-0 items-center justify-center bg-
|
|
3327
|
+
"relative flex shrink-0 items-center justify-center bg-muted",
|
|
3276
3328
|
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-brand-primary/50",
|
|
3277
3329
|
// Horizontal (default): vertical bar
|
|
3278
3330
|
"[&:not([aria-orientation=vertical])]:h-full [&:not([aria-orientation=vertical])]:w-px",
|
|
@@ -3286,7 +3338,7 @@ function ResizableHandle({ className, withHandle = true, ...props }) {
|
|
|
3286
3338
|
className
|
|
3287
3339
|
),
|
|
3288
3340
|
...props,
|
|
3289
|
-
children: withHandle && /* @__PURE__ */ jsx("div", { className: "z-10 flex h-5 w-3 items-center justify-center rounded-sm border border-
|
|
3341
|
+
children: withHandle && /* @__PURE__ */ jsx("div", { className: "z-10 flex h-5 w-3 items-center justify-center rounded-sm border border-border bg-card shadow-natural", children: /* @__PURE__ */ jsx(GripVertical, { size: 10, className: "text-muted-foreground" }) })
|
|
3290
3342
|
}
|
|
3291
3343
|
);
|
|
3292
3344
|
}
|
|
@@ -3310,7 +3362,7 @@ var ScrollAreaScrollbar = React15.forwardRef(({ className, orientation = "vertic
|
|
|
3310
3362
|
className
|
|
3311
3363
|
),
|
|
3312
3364
|
...props,
|
|
3313
|
-
children: /* @__PURE__ */ jsx(ScrollArea.Thumb, { className: "relative flex-1 rounded-full bg-
|
|
3365
|
+
children: /* @__PURE__ */ jsx(ScrollArea.Thumb, { className: "relative flex-1 rounded-full bg-muted hover:bg-muted transition-colors" })
|
|
3314
3366
|
}
|
|
3315
3367
|
));
|
|
3316
3368
|
ScrollAreaScrollbar.displayName = "ScrollAreaScrollbar";
|
|
@@ -3326,13 +3378,13 @@ function SectionHeading({
|
|
|
3326
3378
|
{
|
|
3327
3379
|
className: cn(
|
|
3328
3380
|
"flex flex-col gap-1 pb-4 sm:flex-row sm:items-start sm:justify-between",
|
|
3329
|
-
border && "border-b border-
|
|
3381
|
+
border && "border-b border-border",
|
|
3330
3382
|
className
|
|
3331
3383
|
),
|
|
3332
3384
|
children: [
|
|
3333
3385
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3334
|
-
/* @__PURE__ */ jsx("h2", { className: "heading text-
|
|
3335
|
-
description && /* @__PURE__ */ jsx("p", { className: "mt-1 body text-
|
|
3386
|
+
/* @__PURE__ */ jsx("h2", { className: "heading text-foreground truncate", children: title }),
|
|
3387
|
+
description && /* @__PURE__ */ jsx("p", { className: "mt-1 body text-muted-foreground", children: description })
|
|
3336
3388
|
] }),
|
|
3337
3389
|
actions && actions.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-2 pt-1", children: actions.map(
|
|
3338
3390
|
(action, i) => action.href ? /* @__PURE__ */ jsx(Button, { size: "sm", variant: action.variant ?? "default", asChild: true, children: /* @__PURE__ */ jsx("a", { href: action.href, children: action.label }) }, i) : /* @__PURE__ */ jsx(
|
|
@@ -3358,18 +3410,18 @@ var SelectTrigger = React15.forwardRef(({ className, children, ...props }, ref)
|
|
|
3358
3410
|
{
|
|
3359
3411
|
ref,
|
|
3360
3412
|
className: cn(
|
|
3361
|
-
"flex h-9 w-full items-center justify-between rounded-xl bg-
|
|
3362
|
-
"body text-
|
|
3363
|
-
"focus:outline-none focus:ring-2 focus:ring-
|
|
3413
|
+
"flex h-9 w-full items-center justify-between rounded-xl bg-card px-3 py-2",
|
|
3414
|
+
"body text-foreground shadow-natural",
|
|
3415
|
+
"focus:outline-none focus:ring-2 focus:ring-ring/20",
|
|
3364
3416
|
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
3365
|
-
"data-[placeholder]:text-
|
|
3417
|
+
"data-[placeholder]:text-muted-foreground",
|
|
3366
3418
|
"[&>span]:line-clamp-1",
|
|
3367
3419
|
className
|
|
3368
3420
|
),
|
|
3369
3421
|
...props,
|
|
3370
3422
|
children: [
|
|
3371
3423
|
children,
|
|
3372
|
-
/* @__PURE__ */ jsx(Select.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDown, { size: 15, className: "text-
|
|
3424
|
+
/* @__PURE__ */ jsx(Select.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDown, { size: 15, className: "text-muted-foreground shrink-0" }) })
|
|
3373
3425
|
]
|
|
3374
3426
|
}
|
|
3375
3427
|
));
|
|
@@ -3380,7 +3432,7 @@ var SelectContent = React15.forwardRef(({ className, children, position = "poppe
|
|
|
3380
3432
|
ref,
|
|
3381
3433
|
className: cn(
|
|
3382
3434
|
"relative z-50 max-h-96 min-w-[8rem] overflow-hidden",
|
|
3383
|
-
"bg-
|
|
3435
|
+
"bg-card rounded-xl shadow-natural p-1",
|
|
3384
3436
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
3385
3437
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
3386
3438
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -3391,7 +3443,7 @@ var SelectContent = React15.forwardRef(({ className, children, position = "poppe
|
|
|
3391
3443
|
position,
|
|
3392
3444
|
...props,
|
|
3393
3445
|
children: [
|
|
3394
|
-
/* @__PURE__ */ jsx(Select.ScrollUpButton, { className: "flex cursor-default items-center justify-center py-1", children: /* @__PURE__ */ jsx(ChevronUp, { size: 14, className: "text-
|
|
3446
|
+
/* @__PURE__ */ jsx(Select.ScrollUpButton, { className: "flex cursor-default items-center justify-center py-1", children: /* @__PURE__ */ jsx(ChevronUp, { size: 14, className: "text-muted-foreground" }) }),
|
|
3395
3447
|
/* @__PURE__ */ jsx(
|
|
3396
3448
|
Select.Viewport,
|
|
3397
3449
|
{
|
|
@@ -3401,7 +3453,7 @@ var SelectContent = React15.forwardRef(({ className, children, position = "poppe
|
|
|
3401
3453
|
children
|
|
3402
3454
|
}
|
|
3403
3455
|
),
|
|
3404
|
-
/* @__PURE__ */ jsx(Select.ScrollDownButton, { className: "flex cursor-default items-center justify-center py-1", children: /* @__PURE__ */ jsx(ChevronDown, { size: 14, className: "text-
|
|
3456
|
+
/* @__PURE__ */ jsx(Select.ScrollDownButton, { className: "flex cursor-default items-center justify-center py-1", children: /* @__PURE__ */ jsx(ChevronDown, { size: 14, className: "text-muted-foreground" }) })
|
|
3405
3457
|
]
|
|
3406
3458
|
}
|
|
3407
3459
|
) }));
|
|
@@ -3412,14 +3464,14 @@ var SelectItem = React15.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
3412
3464
|
ref,
|
|
3413
3465
|
className: cn(
|
|
3414
3466
|
"relative flex w-full cursor-default select-none items-center rounded-md px-2.5 py-1.5",
|
|
3415
|
-
"body text-
|
|
3416
|
-
"focus:bg-
|
|
3467
|
+
"body text-muted-foreground outline-none",
|
|
3468
|
+
"focus:bg-muted focus:text-foreground",
|
|
3417
3469
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
3418
3470
|
className
|
|
3419
3471
|
),
|
|
3420
3472
|
...props,
|
|
3421
3473
|
children: [
|
|
3422
|
-
/* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(Select.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { size: 13, className: "text-
|
|
3474
|
+
/* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(Select.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { size: 13, className: "text-foreground" }) }) }),
|
|
3423
3475
|
/* @__PURE__ */ jsx(Select.ItemText, { children })
|
|
3424
3476
|
]
|
|
3425
3477
|
}
|
|
@@ -3429,12 +3481,12 @@ var SelectLabel = React15.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
3429
3481
|
Select.Label,
|
|
3430
3482
|
{
|
|
3431
3483
|
ref,
|
|
3432
|
-
className: cn("px-2.5 py-1 label text-
|
|
3484
|
+
className: cn("px-2.5 py-1 label text-muted-foreground", className),
|
|
3433
3485
|
...props
|
|
3434
3486
|
}
|
|
3435
3487
|
));
|
|
3436
3488
|
SelectLabel.displayName = "SelectLabel";
|
|
3437
|
-
var SelectSeparator = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Select.Separator, { ref, className: cn("mx-1 my-1 h-px bg-
|
|
3489
|
+
var SelectSeparator = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Select.Separator, { ref, className: cn("mx-1 my-1 h-px bg-muted", className), ...props }));
|
|
3438
3490
|
SelectSeparator.displayName = "SelectSeparator";
|
|
3439
3491
|
var Separator2 = React15.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3440
3492
|
Separator.Root,
|
|
@@ -3443,7 +3495,7 @@ var Separator2 = React15.forwardRef(({ className, orientation = "horizontal", de
|
|
|
3443
3495
|
decorative,
|
|
3444
3496
|
orientation,
|
|
3445
3497
|
className: cn(
|
|
3446
|
-
"shrink-0 bg-
|
|
3498
|
+
"shrink-0 bg-muted",
|
|
3447
3499
|
orientation === "horizontal" ? "h-px w-full" : "h-full w-px",
|
|
3448
3500
|
className
|
|
3449
3501
|
),
|
|
@@ -3470,7 +3522,7 @@ var SheetOverlay = React15.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
3470
3522
|
SheetOverlay.displayName = "SheetOverlay";
|
|
3471
3523
|
var sheetContentVariants = cva(
|
|
3472
3524
|
[
|
|
3473
|
-
"fixed z-50 bg-
|
|
3525
|
+
"fixed z-50 bg-card shadow-elevated p-6",
|
|
3474
3526
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
3475
3527
|
"transition ease-in-out duration-300"
|
|
3476
3528
|
],
|
|
@@ -3499,7 +3551,7 @@ var SheetContent = React15.forwardRef(
|
|
|
3499
3551
|
...props,
|
|
3500
3552
|
children: [
|
|
3501
3553
|
children,
|
|
3502
|
-
/* @__PURE__ */ jsxs(Dialog.Close, { className: "absolute right-4 top-4 rounded-md p-1 text-
|
|
3554
|
+
/* @__PURE__ */ jsxs(Dialog.Close, { className: "absolute right-4 top-4 rounded-md p-1 text-muted-foreground opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring/20", children: [
|
|
3503
3555
|
/* @__PURE__ */ jsx(X, { size: 16 }),
|
|
3504
3556
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
3505
3557
|
] })
|
|
@@ -3521,12 +3573,12 @@ var SheetTitle = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
3521
3573
|
Dialog.Title,
|
|
3522
3574
|
{
|
|
3523
3575
|
ref,
|
|
3524
|
-
className: cn("body-lg font-semibold text-
|
|
3576
|
+
className: cn("body-lg font-semibold text-foreground", className),
|
|
3525
3577
|
...props
|
|
3526
3578
|
}
|
|
3527
3579
|
));
|
|
3528
3580
|
SheetTitle.displayName = "SheetTitle";
|
|
3529
|
-
var SheetDescription = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Dialog.Description, { ref, className: cn("body text-
|
|
3581
|
+
var SheetDescription = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Dialog.Description, { ref, className: cn("body text-muted-foreground", className), ...props }));
|
|
3530
3582
|
SheetDescription.displayName = "SheetDescription";
|
|
3531
3583
|
function TooltipProvider({
|
|
3532
3584
|
children,
|
|
@@ -3542,7 +3594,7 @@ var TooltipContent = React15.forwardRef(({ className, sideOffset = 4, ...props }
|
|
|
3542
3594
|
ref,
|
|
3543
3595
|
sideOffset,
|
|
3544
3596
|
className: cn(
|
|
3545
|
-
"z-50 rounded-lg bg-
|
|
3597
|
+
"z-50 rounded-lg bg-foreground px-2.5 py-1.5 caption text-background",
|
|
3546
3598
|
"animate-in fade-in-0 zoom-in-95",
|
|
3547
3599
|
"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
|
|
3548
3600
|
"data-[side=bottom]:slide-in-from-top-1 data-[side=top]:slide-in-from-bottom-1",
|
|
@@ -3625,7 +3677,7 @@ function Sidebar({
|
|
|
3625
3677
|
"data-variant": variant,
|
|
3626
3678
|
"data-collapsible": "none",
|
|
3627
3679
|
className: cn(
|
|
3628
|
-
"flex flex-col h-svh bg-
|
|
3680
|
+
"flex flex-col h-svh bg-card border-r border-border w-(--sidebar-width)",
|
|
3629
3681
|
side === "right" && "border-r-0 border-l",
|
|
3630
3682
|
className
|
|
3631
3683
|
),
|
|
@@ -3643,7 +3695,7 @@ function Sidebar({
|
|
|
3643
3695
|
"data-variant": variant,
|
|
3644
3696
|
"data-collapsible": "offcanvas",
|
|
3645
3697
|
className: cn(
|
|
3646
|
-
"group peer flex flex-col h-svh bg-
|
|
3698
|
+
"group peer flex flex-col h-svh bg-card border-r border-border",
|
|
3647
3699
|
"transition-[width,transform] duration-200 ease-linear",
|
|
3648
3700
|
"data-[state=expanded]:w-(--sidebar-width) data-[state=collapsed]:w-0 data-[state=collapsed]:-translate-x-full",
|
|
3649
3701
|
side === "right" && "border-r-0 border-l data-[state=collapsed]:translate-x-full",
|
|
@@ -3662,7 +3714,7 @@ function Sidebar({
|
|
|
3662
3714
|
"data-variant": variant,
|
|
3663
3715
|
"data-collapsible": "icon",
|
|
3664
3716
|
className: cn(
|
|
3665
|
-
"group peer hidden md:flex flex-col h-svh bg-
|
|
3717
|
+
"group peer hidden md:flex flex-col h-svh bg-card border-r border-border",
|
|
3666
3718
|
"transition-[width] duration-200 ease-linear overflow-hidden",
|
|
3667
3719
|
"data-[state=expanded]:w-(--sidebar-width) data-[state=collapsed]:w-(--sidebar-width-icon)",
|
|
3668
3720
|
side === "right" && "border-r-0 border-l",
|
|
@@ -3723,7 +3775,7 @@ function SidebarInset({ className, ...props }) {
|
|
|
3723
3775
|
"main",
|
|
3724
3776
|
{
|
|
3725
3777
|
"data-sidebar": "inset",
|
|
3726
|
-
className: cn("relative flex min-h-svh flex-1 flex-col bg-
|
|
3778
|
+
className: cn("relative flex min-h-svh flex-1 flex-col bg-card overflow-hidden", className),
|
|
3727
3779
|
...props
|
|
3728
3780
|
}
|
|
3729
3781
|
);
|
|
@@ -3733,7 +3785,7 @@ function SidebarHeader({ className, ...props }) {
|
|
|
3733
3785
|
"div",
|
|
3734
3786
|
{
|
|
3735
3787
|
"data-sidebar": "header",
|
|
3736
|
-
className: cn("flex flex-col gap-2 p-3 border-b border-
|
|
3788
|
+
className: cn("flex flex-col gap-2 p-3 border-b border-border", className),
|
|
3737
3789
|
...props
|
|
3738
3790
|
}
|
|
3739
3791
|
);
|
|
@@ -3753,7 +3805,7 @@ function SidebarFooter({ className, ...props }) {
|
|
|
3753
3805
|
"div",
|
|
3754
3806
|
{
|
|
3755
3807
|
"data-sidebar": "footer",
|
|
3756
|
-
className: cn("flex flex-col gap-2 p-3 border-t border-
|
|
3808
|
+
className: cn("flex flex-col gap-2 p-3 border-t border-border", className),
|
|
3757
3809
|
...props
|
|
3758
3810
|
}
|
|
3759
3811
|
);
|
|
@@ -3763,7 +3815,7 @@ function SidebarSeparator({ className, ...props }) {
|
|
|
3763
3815
|
Separator2,
|
|
3764
3816
|
{
|
|
3765
3817
|
"data-sidebar": "separator",
|
|
3766
|
-
className: cn("mx-2 my-1 bg-
|
|
3818
|
+
className: cn("mx-2 my-1 bg-muted", className),
|
|
3767
3819
|
...props
|
|
3768
3820
|
}
|
|
3769
3821
|
);
|
|
@@ -3789,8 +3841,8 @@ function SidebarGroupLabel({
|
|
|
3789
3841
|
{
|
|
3790
3842
|
"data-sidebar": "group-label",
|
|
3791
3843
|
className: cn(
|
|
3792
|
-
"flex h-8 shrink-0 items-center rounded-md px-2 label text-
|
|
3793
|
-
"outline-none ring-
|
|
3844
|
+
"flex h-8 shrink-0 items-center rounded-md px-2 label text-muted-foreground",
|
|
3845
|
+
"outline-none ring-ring transition-[margin,opacity] duration-200 ease-linear",
|
|
3794
3846
|
"group-data-[state=collapsed]/sidebar-wrapper:opacity-0",
|
|
3795
3847
|
"group-data-[state=collapsed]/sidebar-wrapper:h-0",
|
|
3796
3848
|
"group-data-[state=collapsed]/sidebar-wrapper:m-0",
|
|
@@ -3817,7 +3869,7 @@ function SidebarGroupAction({
|
|
|
3817
3869
|
"data-sidebar": "group-action",
|
|
3818
3870
|
className: cn(
|
|
3819
3871
|
"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center",
|
|
3820
|
-
"rounded-md text-
|
|
3872
|
+
"rounded-md text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
3821
3873
|
"outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
3822
3874
|
className
|
|
3823
3875
|
),
|
|
@@ -3857,11 +3909,11 @@ function SidebarMenuButton({
|
|
|
3857
3909
|
className: cn(
|
|
3858
3910
|
// Base
|
|
3859
3911
|
"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 body-sm text-left",
|
|
3860
|
-
"outline-none ring-
|
|
3912
|
+
"outline-none ring-ring",
|
|
3861
3913
|
"transition-[width,height,padding] duration-150",
|
|
3862
|
-
"hover:bg-
|
|
3914
|
+
"hover:bg-muted hover:text-foreground",
|
|
3863
3915
|
"focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
3864
|
-
"active:bg-
|
|
3916
|
+
"active:bg-muted",
|
|
3865
3917
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
3866
3918
|
"[&>svg]:size-4 [&>svg]:shrink-0",
|
|
3867
3919
|
// Size variants
|
|
@@ -3913,7 +3965,7 @@ function SidebarMenuAction({
|
|
|
3913
3965
|
"data-sidebar": "menu-action",
|
|
3914
3966
|
className: cn(
|
|
3915
3967
|
"absolute right-1 top-1/2 -translate-y-1/2 flex aspect-square w-5 items-center justify-center",
|
|
3916
|
-
"rounded-md text-
|
|
3968
|
+
"rounded-md text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
3917
3969
|
"outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
3918
3970
|
showOnHover && [
|
|
3919
3971
|
"opacity-0 transition-opacity",
|
|
@@ -3934,7 +3986,7 @@ function SidebarMenuBadge({ className, ...props }) {
|
|
|
3934
3986
|
"data-sidebar": "menu-badge",
|
|
3935
3987
|
className: cn(
|
|
3936
3988
|
"absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-full",
|
|
3937
|
-
"caption font-medium bg-
|
|
3989
|
+
"caption font-medium bg-muted text-muted-foreground px-1",
|
|
3938
3990
|
"group-data-[state=collapsed]/sidebar-wrapper:hidden",
|
|
3939
3991
|
className
|
|
3940
3992
|
),
|
|
@@ -3957,11 +4009,11 @@ function SidebarMenuSkeleton({
|
|
|
3957
4009
|
className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
3958
4010
|
...props,
|
|
3959
4011
|
children: [
|
|
3960
|
-
showIcon && /* @__PURE__ */ jsx("div", { className: "size-4 shrink-0 rounded-md bg-
|
|
4012
|
+
showIcon && /* @__PURE__ */ jsx("div", { className: "size-4 shrink-0 rounded-md bg-muted animate-pulse" }),
|
|
3961
4013
|
/* @__PURE__ */ jsx(
|
|
3962
4014
|
"div",
|
|
3963
4015
|
{
|
|
3964
|
-
className: "h-4 max-w-(--skeleton-width) flex-1 rounded-md bg-
|
|
4016
|
+
className: "h-4 max-w-(--skeleton-width) flex-1 rounded-md bg-muted animate-pulse",
|
|
3965
4017
|
style: { "--skeleton-width": width }
|
|
3966
4018
|
}
|
|
3967
4019
|
)
|
|
@@ -3975,7 +4027,7 @@ function SidebarMenuSub({ className, ...props }) {
|
|
|
3975
4027
|
{
|
|
3976
4028
|
"data-sidebar": "menu-sub",
|
|
3977
4029
|
className: cn(
|
|
3978
|
-
"mx-3.5 flex min-w-0 flex-col gap-1 border-l border-
|
|
4030
|
+
"mx-3.5 flex min-w-0 flex-col gap-1 border-l border-border pl-3",
|
|
3979
4031
|
"group-data-[state=collapsed]/sidebar-wrapper:hidden",
|
|
3980
4032
|
className
|
|
3981
4033
|
),
|
|
@@ -4007,9 +4059,9 @@ function SidebarMenuSubButton({
|
|
|
4007
4059
|
"data-active": isActive,
|
|
4008
4060
|
className: cn(
|
|
4009
4061
|
"flex h-7 min-w-0 items-center gap-2 overflow-hidden rounded-md px-2",
|
|
4010
|
-
"body text-
|
|
4062
|
+
"body text-muted-foreground outline-none",
|
|
4011
4063
|
"transition-colors duration-150",
|
|
4012
|
-
"hover:text-
|
|
4064
|
+
"hover:text-foreground hover:bg-muted",
|
|
4013
4065
|
"focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
4014
4066
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
4015
4067
|
"[&>svg]:size-3.5 [&>svg]:shrink-0",
|
|
@@ -4025,7 +4077,7 @@ function Skeleton({ className, ...props }) {
|
|
|
4025
4077
|
"div",
|
|
4026
4078
|
{
|
|
4027
4079
|
"data-slot": "skeleton",
|
|
4028
|
-
className: cn("animate-pulse rounded-md bg-
|
|
4080
|
+
className: cn("animate-pulse rounded-md bg-muted", className),
|
|
4029
4081
|
...props
|
|
4030
4082
|
}
|
|
4031
4083
|
);
|
|
@@ -4037,8 +4089,8 @@ var SliderRoot = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
4037
4089
|
className: cn("relative flex w-full touch-none select-none items-center", className),
|
|
4038
4090
|
...props,
|
|
4039
4091
|
children: [
|
|
4040
|
-
/* @__PURE__ */ jsx(Slider.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-
|
|
4041
|
-
/* @__PURE__ */ jsx(Slider.Thumb, { className: "block size-4 rounded-full border-2 border-brand-primary bg-
|
|
4092
|
+
/* @__PURE__ */ jsx(Slider.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-muted", children: /* @__PURE__ */ jsx(Slider.Range, { className: "absolute h-full bg-brand-primary" }) }),
|
|
4093
|
+
/* @__PURE__ */ jsx(Slider.Thumb, { className: "block size-4 rounded-full border-2 border-brand-primary bg-card shadow-natural transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30 disabled:pointer-events-none disabled:opacity-50" })
|
|
4042
4094
|
]
|
|
4043
4095
|
}
|
|
4044
4096
|
));
|
|
@@ -4051,14 +4103,14 @@ function Toaster({ ...props }) {
|
|
|
4051
4103
|
className: "toaster group",
|
|
4052
4104
|
toastOptions: {
|
|
4053
4105
|
classNames: {
|
|
4054
|
-
toast: "group toast font-sans text-sm group-[.toaster]:bg-
|
|
4055
|
-
description: "group-[.toast]:text-
|
|
4056
|
-
actionButton: "group-[.toast]:bg-brand-primary group-[.toast]:text-
|
|
4057
|
-
cancelButton: "group-[.toast]:bg-
|
|
4058
|
-
success: "group-[.toaster]:border-brand-secondary/40 group-[.toaster]:text-
|
|
4059
|
-
error: "group-[.toaster]:bg-
|
|
4060
|
-
warning: "group-[.toaster]:bg-
|
|
4061
|
-
info: "group-[.toaster]:border-
|
|
4106
|
+
toast: "group toast font-sans text-sm group-[.toaster]:bg-card group-[.toaster]:text-foreground group-[.toaster]:border group-[.toaster]:border-border group-[.toaster]:shadow-elevated group-[.toaster]:rounded-xl",
|
|
4107
|
+
description: "group-[.toast]:text-muted-foreground group-[.toast]:text-xs",
|
|
4108
|
+
actionButton: "group-[.toast]:bg-brand-primary group-[.toast]:text-background group-[.toast]:rounded-md group-[.toast]:text-xs group-[.toast]:font-medium",
|
|
4109
|
+
cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground group-[.toast]:rounded-md group-[.toast]:text-xs group-[.toast]:font-medium",
|
|
4110
|
+
success: "group-[.toaster]:border-brand-secondary/40 group-[.toaster]:text-foreground",
|
|
4111
|
+
error: "group-[.toaster]:bg-destructive/10 group-[.toaster]:text-destructive group-[.toaster]:border-destructive/20",
|
|
4112
|
+
warning: "group-[.toaster]:bg-warning group-[.toaster]:text-warning-foreground group-[.toaster]:border-warning/40",
|
|
4113
|
+
info: "group-[.toaster]:border-border"
|
|
4062
4114
|
}
|
|
4063
4115
|
},
|
|
4064
4116
|
...props
|
|
@@ -4099,9 +4151,9 @@ function StackedList({ children, divided = true, bordered = true, className }) {
|
|
|
4099
4151
|
{
|
|
4100
4152
|
role: "list",
|
|
4101
4153
|
className: cn(
|
|
4102
|
-
"overflow-hidden rounded-xl bg-
|
|
4103
|
-
bordered && "border border-
|
|
4104
|
-
divided && "divide-y divide-
|
|
4154
|
+
"overflow-hidden rounded-xl bg-card",
|
|
4155
|
+
bordered && "border border-border shadow-natural",
|
|
4156
|
+
divided && "divide-y divide-border",
|
|
4105
4157
|
className
|
|
4106
4158
|
),
|
|
4107
4159
|
children
|
|
@@ -4111,14 +4163,14 @@ function StackedList({ children, divided = true, bordered = true, className }) {
|
|
|
4111
4163
|
function StackedListItem({ children, href, onClick, className }) {
|
|
4112
4164
|
const inner = /* @__PURE__ */ jsx("div", { className: cn("px-4 py-3.5", className), children });
|
|
4113
4165
|
if (href) {
|
|
4114
|
-
return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("a", { href, className: "block hover:bg-
|
|
4166
|
+
return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("a", { href, className: "block hover:bg-muted transition-colors", children: inner }) });
|
|
4115
4167
|
}
|
|
4116
4168
|
if (onClick) {
|
|
4117
4169
|
return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
4118
4170
|
"button",
|
|
4119
4171
|
{
|
|
4120
4172
|
type: "button",
|
|
4121
|
-
className: "w-full text-left hover:bg-
|
|
4173
|
+
className: "w-full text-left hover:bg-muted transition-colors",
|
|
4122
4174
|
onClick,
|
|
4123
4175
|
children: inner
|
|
4124
4176
|
}
|
|
@@ -4128,21 +4180,21 @@ function StackedListItem({ children, href, onClick, className }) {
|
|
|
4128
4180
|
}
|
|
4129
4181
|
function StatCard({ label, value, trend, icon, className }) {
|
|
4130
4182
|
const trendColor = {
|
|
4131
|
-
up: "text-
|
|
4132
|
-
down: "text-
|
|
4133
|
-
neutral: "text-
|
|
4183
|
+
up: "text-muted-foreground bg-brand-secondary/30 rounded-full px-2 py-0.5 w-fit",
|
|
4184
|
+
down: "text-destructive",
|
|
4185
|
+
neutral: "text-muted-foreground"
|
|
4134
4186
|
};
|
|
4135
4187
|
const TrendIcon = {
|
|
4136
4188
|
up: TrendingUp,
|
|
4137
4189
|
down: TrendingDown,
|
|
4138
4190
|
neutral: Minus
|
|
4139
4191
|
};
|
|
4140
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-xl border border-
|
|
4192
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-xl border border-border bg-card p-5", className), children: [
|
|
4141
4193
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
4142
|
-
/* @__PURE__ */ jsx("p", { className: "label text-
|
|
4143
|
-
icon && /* @__PURE__ */ jsx("div", { className: "flex size-8 shrink-0 items-center justify-center rounded-lg bg-
|
|
4194
|
+
/* @__PURE__ */ jsx("p", { className: "label text-muted-foreground", children: label }),
|
|
4195
|
+
icon && /* @__PURE__ */ jsx("div", { className: "flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground", children: icon })
|
|
4144
4196
|
] }),
|
|
4145
|
-
/* @__PURE__ */ jsx("p", { className: "heading-xl mt-2 text-
|
|
4197
|
+
/* @__PURE__ */ jsx("p", { className: "heading-xl mt-2 text-foreground", children: value }),
|
|
4146
4198
|
trend && (() => {
|
|
4147
4199
|
const Icon = TrendIcon[trend.direction];
|
|
4148
4200
|
return /* @__PURE__ */ jsxs("div", { className: cn("mt-2 flex items-center gap-1", trendColor[trend.direction]), children: [
|
|
@@ -4152,6 +4204,7 @@ function StatCard({ label, value, trend, icon, className }) {
|
|
|
4152
4204
|
})()
|
|
4153
4205
|
] });
|
|
4154
4206
|
}
|
|
4207
|
+
StatCard.displayName = "StatCard";
|
|
4155
4208
|
function CirclesSteps({ steps, className }) {
|
|
4156
4209
|
return /* @__PURE__ */ jsx("nav", { "aria-label": "Progress", className, children: /* @__PURE__ */ jsx("ol", { role: "list", className: "flex items-center", children: steps.map((step, i) => {
|
|
4157
4210
|
const isLast = i === steps.length - 1;
|
|
@@ -4161,7 +4214,7 @@ function CirclesSteps({ steps, className }) {
|
|
|
4161
4214
|
{
|
|
4162
4215
|
className: cn(
|
|
4163
4216
|
"h-full",
|
|
4164
|
-
step.status === "complete" ? "bg-brand-primary" : "bg-
|
|
4217
|
+
step.status === "complete" ? "bg-brand-primary" : "bg-muted"
|
|
4165
4218
|
)
|
|
4166
4219
|
}
|
|
4167
4220
|
) }),
|
|
@@ -4178,10 +4231,10 @@ function CirclesSteps({ steps, className }) {
|
|
|
4178
4231
|
className: cn(
|
|
4179
4232
|
"relative z-10 flex size-8 items-center justify-center rounded-full transition-colors",
|
|
4180
4233
|
step.status === "complete" && "bg-brand-primary group-hover:bg-brand-primary/80",
|
|
4181
|
-
step.status === "current" && "border-2 border-brand-primary bg-
|
|
4182
|
-
step.status === "upcoming" && "border-2 border-
|
|
4234
|
+
step.status === "current" && "border-2 border-brand-primary bg-card",
|
|
4235
|
+
step.status === "upcoming" && "border-2 border-border bg-card group-hover:border-border"
|
|
4183
4236
|
),
|
|
4184
|
-
children: step.status === "complete" ? /* @__PURE__ */ jsx(Check, { size: 14, className: "text-
|
|
4237
|
+
children: step.status === "complete" ? /* @__PURE__ */ jsx(Check, { size: 14, className: "text-background", strokeWidth: 2.5 }) : step.status === "current" ? /* @__PURE__ */ jsx("span", { className: "size-2.5 rounded-full bg-brand-primary" }) : /* @__PURE__ */ jsx("span", { className: "size-2.5 rounded-full bg-transparent group-hover:bg-muted" })
|
|
4185
4238
|
}
|
|
4186
4239
|
),
|
|
4187
4240
|
/* @__PURE__ */ jsxs("span", { className: "flex flex-col items-center", children: [
|
|
@@ -4190,12 +4243,12 @@ function CirclesSteps({ steps, className }) {
|
|
|
4190
4243
|
{
|
|
4191
4244
|
className: cn(
|
|
4192
4245
|
"caption font-semibold",
|
|
4193
|
-
step.status === "upcoming" ? "text-
|
|
4246
|
+
step.status === "upcoming" ? "text-muted-foreground" : "text-foreground"
|
|
4194
4247
|
),
|
|
4195
4248
|
children: step.name
|
|
4196
4249
|
}
|
|
4197
4250
|
),
|
|
4198
|
-
step.description && /* @__PURE__ */ jsx("span", { className: "caption text-
|
|
4251
|
+
step.description && /* @__PURE__ */ jsx("span", { className: "caption text-muted-foreground", children: step.description })
|
|
4199
4252
|
] })
|
|
4200
4253
|
]
|
|
4201
4254
|
}
|
|
@@ -4206,7 +4259,7 @@ function CirclesSteps({ steps, className }) {
|
|
|
4206
4259
|
function BulletsSteps({ steps, className }) {
|
|
4207
4260
|
const currentIdx = steps.findIndex((s) => s.status === "current");
|
|
4208
4261
|
return /* @__PURE__ */ jsxs("nav", { className: cn("flex items-center gap-4", className), "aria-label": "Progress", children: [
|
|
4209
|
-
/* @__PURE__ */ jsxs("p", { className: "body font-medium text-
|
|
4262
|
+
/* @__PURE__ */ jsxs("p", { className: "body font-medium text-muted-foreground", children: [
|
|
4210
4263
|
"Step ",
|
|
4211
4264
|
currentIdx + 1,
|
|
4212
4265
|
" of ",
|
|
@@ -4222,24 +4275,24 @@ function BulletsSteps({ steps, className }) {
|
|
|
4222
4275
|
"span",
|
|
4223
4276
|
{
|
|
4224
4277
|
className: "block size-2.5 rounded-full bg-brand-primary hover:bg-brand-primary/80 transition-colors",
|
|
4225
|
-
|
|
4278
|
+
"aria-label": `${step.name}: completed`
|
|
4226
4279
|
}
|
|
4227
4280
|
) : step.status === "current" ? /* @__PURE__ */ jsxs(
|
|
4228
4281
|
"span",
|
|
4229
4282
|
{
|
|
4230
4283
|
className: "relative flex size-4 items-center justify-center",
|
|
4231
4284
|
"aria-current": "step",
|
|
4285
|
+
"aria-label": `${step.name}: current step`,
|
|
4232
4286
|
children: [
|
|
4233
4287
|
/* @__PURE__ */ jsx("span", { className: "absolute size-4 rounded-full bg-brand-primary/20" }),
|
|
4234
|
-
/* @__PURE__ */ jsx("span", { className: "relative size-2.5 rounded-full bg-brand-primary" })
|
|
4235
|
-
/* @__PURE__ */ jsx("span", { className: "sr-only", children: step.name })
|
|
4288
|
+
/* @__PURE__ */ jsx("span", { className: "relative size-2.5 rounded-full bg-brand-primary" })
|
|
4236
4289
|
]
|
|
4237
4290
|
}
|
|
4238
4291
|
) : /* @__PURE__ */ jsx(
|
|
4239
4292
|
"span",
|
|
4240
4293
|
{
|
|
4241
|
-
className: "block size-2.5 rounded-full bg-
|
|
4242
|
-
|
|
4294
|
+
className: "block size-2.5 rounded-full bg-muted hover:bg-muted transition-colors",
|
|
4295
|
+
"aria-label": `${step.name}: upcoming`
|
|
4243
4296
|
}
|
|
4244
4297
|
)
|
|
4245
4298
|
}
|
|
@@ -4251,7 +4304,7 @@ function ProgressSteps({ steps, className }) {
|
|
|
4251
4304
|
const currentIdx = steps.findIndex((s) => s.status === "current");
|
|
4252
4305
|
const progress = (completeCount + (currentIdx >= 0 ? 0.5 : 0)) / steps.length * 100;
|
|
4253
4306
|
return /* @__PURE__ */ jsxs("div", { className: cn("w-full", className), children: [
|
|
4254
|
-
/* @__PURE__ */ jsx("div", { className: "h-1.5 w-full overflow-hidden rounded-full bg-
|
|
4307
|
+
/* @__PURE__ */ jsx("div", { className: "h-1.5 w-full overflow-hidden rounded-full bg-muted", children: /* @__PURE__ */ jsx(
|
|
4255
4308
|
"div",
|
|
4256
4309
|
{
|
|
4257
4310
|
className: "h-full rounded-full bg-brand-primary transition-all duration-500",
|
|
@@ -4266,7 +4319,7 @@ function ProgressSteps({ steps, className }) {
|
|
|
4266
4319
|
className: cn(
|
|
4267
4320
|
"caption font-medium",
|
|
4268
4321
|
i === 0 ? "text-left" : isLast ? "text-right" : "text-center",
|
|
4269
|
-
step.status === "upcoming" ? "text-
|
|
4322
|
+
step.status === "upcoming" ? "text-muted-foreground" : "text-foreground"
|
|
4270
4323
|
),
|
|
4271
4324
|
children: step.name
|
|
4272
4325
|
},
|
|
@@ -4281,6 +4334,7 @@ function Steps({ steps, variant = "circles", className }) {
|
|
|
4281
4334
|
if (variant === "progress") return /* @__PURE__ */ jsx(ProgressSteps, { steps, ...classNameProp });
|
|
4282
4335
|
return /* @__PURE__ */ jsx(CirclesSteps, { steps, ...classNameProp });
|
|
4283
4336
|
}
|
|
4337
|
+
Steps.displayName = "Steps";
|
|
4284
4338
|
var SwitchRoot = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4285
4339
|
Switch.Root,
|
|
4286
4340
|
{
|
|
@@ -4290,7 +4344,7 @@ var SwitchRoot = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
4290
4344
|
"border-2 border-transparent transition-colors",
|
|
4291
4345
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
4292
4346
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
4293
|
-
"data-[state=unchecked]:bg-
|
|
4347
|
+
"data-[state=unchecked]:bg-muted data-[state=checked]:bg-brand-primary",
|
|
4294
4348
|
className
|
|
4295
4349
|
),
|
|
4296
4350
|
...props,
|
|
@@ -4298,7 +4352,7 @@ var SwitchRoot = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
4298
4352
|
Switch.Thumb,
|
|
4299
4353
|
{
|
|
4300
4354
|
className: cn(
|
|
4301
|
-
"pointer-events-none block size-4 rounded-full bg-
|
|
4355
|
+
"pointer-events-none block size-4 rounded-full bg-card shadow-natural",
|
|
4302
4356
|
"transition-transform data-[state=unchecked]:translate-x-0 data-[state=checked]:translate-x-4"
|
|
4303
4357
|
)
|
|
4304
4358
|
}
|
|
@@ -4312,7 +4366,7 @@ var TabsList = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
4312
4366
|
Tabs.List,
|
|
4313
4367
|
{
|
|
4314
4368
|
ref,
|
|
4315
|
-
className: cn("inline-flex items-center gap-1 border-b border-
|
|
4369
|
+
className: cn("inline-flex items-center gap-1 border-b border-border w-full", className),
|
|
4316
4370
|
...props
|
|
4317
4371
|
}
|
|
4318
4372
|
));
|
|
@@ -4322,7 +4376,7 @@ var TabsTrigger = React15.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
4322
4376
|
{
|
|
4323
4377
|
ref,
|
|
4324
4378
|
className: cn(
|
|
4325
|
-
"px-0 pb-2.5 body font-medium text-
|
|
4379
|
+
"px-0 pb-2.5 body font-medium text-muted-foreground",
|
|
4326
4380
|
"border-b-2 border-transparent -mb-px",
|
|
4327
4381
|
"transition-colors cursor-pointer",
|
|
4328
4382
|
"data-[state=active]:text-brand-primary data-[state=active]:border-brand-primary",
|
|
@@ -4342,11 +4396,11 @@ function Textarea({ className, ...props }) {
|
|
|
4342
4396
|
{
|
|
4343
4397
|
"data-slot": "textarea",
|
|
4344
4398
|
className: cn(
|
|
4345
|
-
"flex min-h-[80px] w-full rounded-md border border-
|
|
4346
|
-
"body text-
|
|
4399
|
+
"flex min-h-[80px] w-full rounded-md border border-border bg-card px-3 py-2",
|
|
4400
|
+
"body text-foreground placeholder:text-muted-foreground",
|
|
4347
4401
|
"resize-none transition-colors duration-150",
|
|
4348
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
4349
|
-
"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-
|
|
4402
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/20 focus-visible:border-border",
|
|
4403
|
+
"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted",
|
|
4350
4404
|
className
|
|
4351
4405
|
),
|
|
4352
4406
|
...props
|
|
@@ -4366,19 +4420,19 @@ var toggleVariants = cva(
|
|
|
4366
4420
|
variants: {
|
|
4367
4421
|
variant: {
|
|
4368
4422
|
default: [
|
|
4369
|
-
"bg-transparent text-
|
|
4370
|
-
"hover:bg-
|
|
4371
|
-
"data-[state=on]:bg-
|
|
4423
|
+
"bg-transparent text-muted-foreground",
|
|
4424
|
+
"hover:bg-muted hover:text-foreground",
|
|
4425
|
+
"data-[state=on]:bg-muted data-[state=on]:text-foreground"
|
|
4372
4426
|
],
|
|
4373
4427
|
outline: [
|
|
4374
|
-
"border border-
|
|
4375
|
-
"hover:bg-
|
|
4376
|
-
"data-[state=on]:bg-
|
|
4428
|
+
"border border-border bg-card text-muted-foreground shadow-natural",
|
|
4429
|
+
"hover:bg-muted hover:text-foreground",
|
|
4430
|
+
"data-[state=on]:bg-muted data-[state=on]:text-foreground data-[state=on]:border-border"
|
|
4377
4431
|
],
|
|
4378
4432
|
brand: [
|
|
4379
|
-
"bg-transparent text-
|
|
4380
|
-
"hover:bg-
|
|
4381
|
-
"data-[state=on]:bg-brand-primary data-[state=on]:text-
|
|
4433
|
+
"bg-transparent text-muted-foreground",
|
|
4434
|
+
"hover:bg-muted hover:text-foreground",
|
|
4435
|
+
"data-[state=on]:bg-brand-primary data-[state=on]:text-background"
|
|
4382
4436
|
]
|
|
4383
4437
|
},
|
|
4384
4438
|
size: {
|