@nebutra/ui 0.2.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animate-in-BlvjVh2S.d.ts +250 -0
- package/dist/{canonical-Drca5UMj.d.ts → canonical-DEhT4VfS.d.ts} +83 -369
- package/dist/card-DunB1gKE.d.ts +105 -0
- package/dist/chat/index.d.ts +1 -0
- package/dist/chat/index.js +3 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/components/index.d.ts +90 -126
- package/dist/components/index.js +433 -182
- package/dist/components/index.js.map +1 -1
- package/dist/editorial/index.d.ts +404 -0
- package/dist/editorial/index.js +942 -0
- package/dist/editorial/index.js.map +1 -0
- package/dist/empty-state-bmfHCOuN.d.ts +86 -0
- package/dist/hooks/index.d.ts +18 -1
- package/dist/hooks/index.js +120 -5
- package/dist/hooks/index.js.map +1 -1
- package/dist/icons/index.d.ts +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/layout/index.d.ts +17 -58
- package/dist/layout/index.js +368 -127
- package/dist/layout/index.js.map +1 -1
- package/dist/layouts/index.d.ts +1 -1
- package/dist/layouts/index.js +93 -28
- package/dist/layouts/index.js.map +1 -1
- package/dist/patterns/index.d.ts +39 -46
- package/dist/patterns/index.js +534 -323
- package/dist/patterns/index.js.map +1 -1
- package/dist/primitives/canonical.d.ts +5 -2
- package/dist/primitives/canonical.js +598 -288
- package/dist/primitives/canonical.js.map +1 -1
- package/dist/primitives/index.d.ts +165 -63
- package/dist/primitives/index.js +1251 -983
- package/dist/primitives/index.js.map +1 -1
- package/dist/tailwind.preset.d.ts +32 -32
- package/dist/tailwind.preset.js +24 -20
- package/dist/tailwind.preset.js.map +1 -1
- package/dist/theme/index.d.ts +1 -110
- package/dist/typography/fonts.css +8 -16
- package/dist/typography/index.d.ts +29 -45
- package/dist/typography/index.js +26 -14
- package/dist/typography/index.js.map +1 -1
- package/dist/utils/auth-surfaces.d.ts +33 -0
- package/dist/utils/auth-surfaces.js +9 -0
- package/dist/utils/auth-surfaces.js.map +1 -0
- package/dist/utils/index.d.ts +20 -16
- package/dist/utils/index.js +99 -20
- package/dist/utils/index.js.map +1 -1
- package/package.json +25 -11
- package/src/typography/fonts.css +8 -16
- package/dist/styles/brand-override.css +0 -61
- package/src/styles/brand-override.css +0 -61
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Accordion as Accordion$1 } from '@base-ui/react/accordion';
|
|
3
3
|
import { ChevronUpDown, Check, ChevronRight, ChevronDown, MagnifyingGlass, Plus, Cross, MoreHorizontal, Status, Copy, Information, Warning, External, LoaderCircle, EyeOff, Eye, Minus, LockClosed, CheckCircle, MoreVertical, DeviceDesktop, Sun, Moon, Hash, Code, Link, FolderOpen, FolderClosed, File, ChevronLeft, ChevronUp, FileText } from '@nebutra/icons';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
|
-
import {
|
|
5
|
+
import { extendTailwindMerge } from 'tailwind-merge';
|
|
6
6
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
7
|
import { cva } from 'class-variance-authority';
|
|
8
8
|
import { AlertDialog as AlertDialog$1 } from '@base-ui/react/alert-dialog';
|
|
@@ -10,6 +10,7 @@ import * as React24 from 'react';
|
|
|
10
10
|
import React24__default, { createContext, useId, useRef, useState, useMemo, use, useCallback, useEffect, Children, isValidElement, cloneElement } from 'react';
|
|
11
11
|
import { colors, brandSpring, flow, emerge } from '@nebutra/brand';
|
|
12
12
|
export { brandSpring } from '@nebutra/brand';
|
|
13
|
+
import { tokenColor, fontStack } from '@nebutra/tokens/values';
|
|
13
14
|
import { useReducedMotion, LazyMotion, domAnimation, AnimatePresence, motion, m } from 'framer-motion';
|
|
14
15
|
import { Avatar as Avatar$1 } from '@base-ui/react/avatar';
|
|
15
16
|
import { Prism } from 'react-syntax-highlighter';
|
|
@@ -36,6 +37,80 @@ import { Tabs as Tabs$1 } from '@base-ui/react/tabs';
|
|
|
36
37
|
import { useTheme } from '@nebutra/tokens';
|
|
37
38
|
|
|
38
39
|
// src/primitives/accordion.tsx
|
|
40
|
+
|
|
41
|
+
// src/utils/tw-merge-theme.generated.ts
|
|
42
|
+
var TW_MERGE_THEME = {
|
|
43
|
+
breakpoint: ["3xl", "shell", "tight", "xs"],
|
|
44
|
+
container: ["content", "text", "wide"],
|
|
45
|
+
ease: ["brand", "in", "in-out", "out", "spring"],
|
|
46
|
+
font: ["cn", "display", "heading", "mono", "sans"],
|
|
47
|
+
leading: ["display", "heading"],
|
|
48
|
+
radius: ["2xl", "3xl", "button", "card", "full", "lg", "md", "none", "panel", "sm", "xl", "xs"],
|
|
49
|
+
shadow: [
|
|
50
|
+
"2xl",
|
|
51
|
+
"ambient-glow",
|
|
52
|
+
"ambient-lg",
|
|
53
|
+
"ambient-md",
|
|
54
|
+
"ambient-sm",
|
|
55
|
+
"brand",
|
|
56
|
+
"brand-lg",
|
|
57
|
+
"glass-lg",
|
|
58
|
+
"glass-md",
|
|
59
|
+
"glass-sm",
|
|
60
|
+
"glow-accent",
|
|
61
|
+
"glow-accent-lg",
|
|
62
|
+
"glow-accent-sm",
|
|
63
|
+
"glow-primary",
|
|
64
|
+
"lg",
|
|
65
|
+
"md",
|
|
66
|
+
"sheen",
|
|
67
|
+
"sm",
|
|
68
|
+
"xl",
|
|
69
|
+
"xs"
|
|
70
|
+
],
|
|
71
|
+
text: [
|
|
72
|
+
"2xl",
|
|
73
|
+
"2xs",
|
|
74
|
+
"3xl",
|
|
75
|
+
"4xl",
|
|
76
|
+
"5xl",
|
|
77
|
+
"6xl",
|
|
78
|
+
"7xl",
|
|
79
|
+
"8xl",
|
|
80
|
+
"9xl",
|
|
81
|
+
"base",
|
|
82
|
+
"body",
|
|
83
|
+
"display",
|
|
84
|
+
"label",
|
|
85
|
+
"lg",
|
|
86
|
+
"meta",
|
|
87
|
+
"sm",
|
|
88
|
+
"ui",
|
|
89
|
+
"xl",
|
|
90
|
+
"xs"
|
|
91
|
+
],
|
|
92
|
+
tracking: ["display", "heading", "label", "tight"]
|
|
93
|
+
};
|
|
94
|
+
var TW_MERGE_CLASS_GROUPS = {
|
|
95
|
+
duration: [{ duration: ["cinematic", "flow", "micro", "reveal"] }]
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// src/utils/cn.ts
|
|
99
|
+
var twMerge = extendTailwindMerge({
|
|
100
|
+
extend: {
|
|
101
|
+
theme: Object.fromEntries(
|
|
102
|
+
Object.entries(TW_MERGE_THEME).map(([key, values]) => [key, [...values]])
|
|
103
|
+
),
|
|
104
|
+
classGroups: Object.fromEntries(
|
|
105
|
+
Object.entries(TW_MERGE_CLASS_GROUPS).map(([key, groups]) => [
|
|
106
|
+
key,
|
|
107
|
+
groups.map(
|
|
108
|
+
(group) => Object.fromEntries(Object.entries(group).map(([k, v]) => [k, [...v]]))
|
|
109
|
+
)
|
|
110
|
+
])
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
});
|
|
39
114
|
function cn(...inputs) {
|
|
40
115
|
return twMerge(clsx(inputs));
|
|
41
116
|
}
|
|
@@ -48,17 +123,17 @@ function asPlainStyle(style) {
|
|
|
48
123
|
function withHtmlProps(Component) {
|
|
49
124
|
return Component;
|
|
50
125
|
}
|
|
51
|
-
var
|
|
52
|
-
var
|
|
53
|
-
var
|
|
54
|
-
var
|
|
126
|
+
var AccordionItemBase = withHtmlProps(Accordion$1.Item);
|
|
127
|
+
var AccordionHeaderBase = withHtmlProps(Accordion$1.Header);
|
|
128
|
+
var AccordionTriggerBase = withHtmlProps(Accordion$1.Trigger);
|
|
129
|
+
var AccordionPanelBase = withHtmlProps(Accordion$1.Panel);
|
|
55
130
|
var Accordion = Accordion$1.Root;
|
|
56
131
|
var AccordionItem = ({
|
|
57
132
|
className,
|
|
58
133
|
ref,
|
|
59
134
|
...props
|
|
60
135
|
}) => /* @__PURE__ */ jsx(
|
|
61
|
-
|
|
136
|
+
AccordionItemBase,
|
|
62
137
|
{
|
|
63
138
|
ref,
|
|
64
139
|
className: cn("border-b border-border/70 last:border-b-0", className),
|
|
@@ -72,8 +147,8 @@ var AccordionTrigger = ({
|
|
|
72
147
|
size = "default",
|
|
73
148
|
ref,
|
|
74
149
|
...props
|
|
75
|
-
}) => /* @__PURE__ */ jsx(
|
|
76
|
-
|
|
150
|
+
}) => /* @__PURE__ */ jsx(AccordionHeaderBase, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
151
|
+
AccordionTriggerBase,
|
|
77
152
|
{
|
|
78
153
|
ref,
|
|
79
154
|
className: cn(
|
|
@@ -105,11 +180,11 @@ var AccordionContent = ({
|
|
|
105
180
|
ref,
|
|
106
181
|
...props
|
|
107
182
|
}) => /* @__PURE__ */ jsx(
|
|
108
|
-
|
|
183
|
+
AccordionPanelBase,
|
|
109
184
|
{
|
|
110
185
|
ref,
|
|
111
186
|
...keepMounted ? { keepMounted: true } : {},
|
|
112
|
-
className: "text-sm leading-relaxed data-[
|
|
187
|
+
className: "text-sm leading-relaxed h-[var(--accordion-panel-height,auto)] data-[starting-style]:h-0 data-[ending-style]:h-0 overflow-hidden text-muted-foreground transition-[height,opacity] duration-flow ease-out",
|
|
113
188
|
...props,
|
|
114
189
|
children: /* @__PURE__ */ jsx("div", { className: cn(size === "small" ? "pb-2.5 pt-0" : "pb-4 pt-0", className), children })
|
|
115
190
|
}
|
|
@@ -195,7 +270,7 @@ var alertVariants = cva("flex items-stretch w-full gap-2 group-[.toaster]:w-(--w
|
|
|
195
270
|
{
|
|
196
271
|
variant: "destructive",
|
|
197
272
|
appearance: "outline",
|
|
198
|
-
className: "border border-border bg-background text-destructive [&_[data-slot=alert-close]]:text-foreground"
|
|
273
|
+
className: "border border-border bg-background text-destructive-strong [&_[data-slot=alert-close]]:text-foreground"
|
|
199
274
|
},
|
|
200
275
|
{
|
|
201
276
|
variant: "success",
|
|
@@ -265,7 +340,7 @@ var alertVariants = cva("flex items-stretch w-full gap-2 group-[.toaster]:w-(--w
|
|
|
265
340
|
{
|
|
266
341
|
variant: "mono",
|
|
267
342
|
icon: "destructive",
|
|
268
|
-
className: "[&_[data-slot=alert-icon]]:text-destructive"
|
|
343
|
+
className: "[&_[data-slot=alert-icon]]:text-destructive-strong"
|
|
269
344
|
},
|
|
270
345
|
{
|
|
271
346
|
variant: "mono",
|
|
@@ -287,6 +362,7 @@ function Alert({
|
|
|
287
362
|
appearance,
|
|
288
363
|
close = false,
|
|
289
364
|
onClose,
|
|
365
|
+
closeLabel = "Dismiss",
|
|
290
366
|
children,
|
|
291
367
|
...props
|
|
292
368
|
}) {
|
|
@@ -304,7 +380,7 @@ function Alert({
|
|
|
304
380
|
{
|
|
305
381
|
type: "button",
|
|
306
382
|
onClick: onClose,
|
|
307
|
-
"aria-label":
|
|
383
|
+
"aria-label": closeLabel,
|
|
308
384
|
"data-slot": "alert-close",
|
|
309
385
|
className: cn(
|
|
310
386
|
"group shrink-0 size-4 inline-flex items-center justify-center rounded-[var(--radius-sm)]",
|
|
@@ -348,7 +424,7 @@ function AlertContent({ className, ...props }) {
|
|
|
348
424
|
);
|
|
349
425
|
}
|
|
350
426
|
({
|
|
351
|
-
// Nebutra Blue (云毓蓝) — technology & trust
|
|
427
|
+
// Nebutra Blue (云毓蓝) — technology & trust
|
|
352
428
|
blue50: colors.primary[50],
|
|
353
429
|
blue100: colors.primary[100],
|
|
354
430
|
blue200: colors.primary[200],
|
|
@@ -361,7 +437,7 @@ function AlertContent({ className, ...props }) {
|
|
|
361
437
|
blue800: colors.primary[800],
|
|
362
438
|
blue900: colors.primary[900],
|
|
363
439
|
blue950: colors.primary[950],
|
|
364
|
-
// Nebutra Cyan (云毓青) — data flow & intelligence
|
|
440
|
+
// Nebutra Cyan (云毓青) — data flow & intelligence
|
|
365
441
|
cyan50: colors.accent[50],
|
|
366
442
|
cyan100: colors.accent[100],
|
|
367
443
|
cyan200: colors.accent[200],
|
|
@@ -386,6 +462,13 @@ function AlertContent({ className, ...props }) {
|
|
|
386
462
|
neutral800: colors.neutral[800],
|
|
387
463
|
neutral900: colors.neutral[900],
|
|
388
464
|
neutral950: colors.neutral[950],
|
|
465
|
+
// deepest — used as dark background
|
|
466
|
+
// Semantic raw colors — VI §Color Specifications. The 500s are the status
|
|
467
|
+
// tokens; the 600 hover steps have no token of their own.
|
|
468
|
+
// NOTE: info = brand blue, not sky/teal
|
|
469
|
+
red500: tokenColor("--status-danger"),
|
|
470
|
+
green500: tokenColor("--status-success"),
|
|
471
|
+
amber500: tokenColor("--status-warning"),
|
|
389
472
|
white: colors.white,
|
|
390
473
|
black: colors.black
|
|
391
474
|
});
|
|
@@ -441,6 +524,18 @@ var primitiveFontWeight = {
|
|
|
441
524
|
normal: 400,
|
|
442
525
|
medium: 500,
|
|
443
526
|
semibold: 600};
|
|
527
|
+
({
|
|
528
|
+
/** Default body/UI stack — Geist with CJK falling through to MiSans */
|
|
529
|
+
sans: fontStack("--font-sans"),
|
|
530
|
+
/** CJK-locale stack (same order as sans, minus Latin-only system faces) */
|
|
531
|
+
cnSans: fontStack("--font-cn"),
|
|
532
|
+
/** Display / hero headlines */
|
|
533
|
+
display: fontStack("--font-display"),
|
|
534
|
+
/** Headings */
|
|
535
|
+
heading: fontStack("--font-heading"),
|
|
536
|
+
/** Code / monospace */
|
|
537
|
+
mono: fontStack("--font-mono")
|
|
538
|
+
});
|
|
444
539
|
var primitiveShadow = {
|
|
445
540
|
sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
|
|
446
541
|
md: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
|
|
@@ -458,7 +553,7 @@ var primitiveTransition = {
|
|
|
458
553
|
// hero entrance, big delight moments
|
|
459
554
|
},
|
|
460
555
|
easing: {
|
|
461
|
-
default: "ease-
|
|
556
|
+
default: "var(--ease-brand)",
|
|
462
557
|
inOut: "cubic-bezier(0.4, 0, 0.2, 1)"
|
|
463
558
|
}
|
|
464
559
|
};
|
|
@@ -472,8 +567,7 @@ var primitiveFocusRing = {
|
|
|
472
567
|
// src/tokens/shadows.ts
|
|
473
568
|
var shadowClasses = {
|
|
474
569
|
md: "shadow-md",
|
|
475
|
-
xl: "shadow-xl"
|
|
476
|
-
"2xl": "shadow-2xl"};
|
|
570
|
+
xl: "shadow-xl"};
|
|
477
571
|
|
|
478
572
|
// src/tokens/components/overlay.ts
|
|
479
573
|
var overlayFocusRingClassName = "outline-none";
|
|
@@ -492,71 +586,80 @@ var overlayTokens = {
|
|
|
492
586
|
}};
|
|
493
587
|
var overlayClassNames = {
|
|
494
588
|
focusRing: overlayFocusRingClassName,
|
|
495
|
-
backdrop:
|
|
589
|
+
backdrop: (
|
|
590
|
+
// allow-palette: dialog backdrop dims arbitrary app content behind it, must stay dark in both themes
|
|
591
|
+
"fixed inset-0 bg-black/40 transition-[opacity] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)] data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)] motion-reduce:transition-none"
|
|
592
|
+
),
|
|
496
593
|
modalSurface: [
|
|
497
594
|
"fixed left-1/2 top-1/2 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4",
|
|
498
|
-
"
|
|
595
|
+
"bg-background p-6 text-foreground",
|
|
499
596
|
"rounded-[var(--radius-xl)]",
|
|
500
|
-
|
|
597
|
+
"shadow-[0_0_0_1px_var(--edge-soft),var(--elevation-overlay)]",
|
|
501
598
|
"outline-none",
|
|
502
|
-
"transition-[opacity,transform
|
|
503
|
-
"data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0",
|
|
599
|
+
"transition-[opacity,transform] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
600
|
+
"data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)]",
|
|
504
601
|
"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none"
|
|
505
602
|
].join(" "),
|
|
506
603
|
menuSurface: [
|
|
507
|
-
"min-w-32 overflow-hidden rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-1 text-popover-foreground backdrop-blur-md",
|
|
604
|
+
"min-w-32 origin-[var(--transform-origin)] overflow-hidden rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-1 text-popover-foreground backdrop-blur-md",
|
|
508
605
|
shadowClasses.xl,
|
|
509
|
-
"outline-none transition-[opacity,transform
|
|
510
|
-
"data-[starting-style]:scale-
|
|
606
|
+
"outline-none transition-[opacity,transform] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
607
|
+
"data-[starting-style]:scale-[0.97] data-[starting-style]:opacity-0 data-ending-style:scale-[0.97] data-ending-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)]",
|
|
511
608
|
"motion-reduce:transition-none motion-reduce:data-[starting-style]:transform-none motion-reduce:data-[ending-style]:transform-none"
|
|
512
609
|
].join(" "),
|
|
513
610
|
selectSurface: [
|
|
514
|
-
"max-h-[var(--select-content-max-height)] min-w-[var(--select-content-min-width)] overflow-hidden",
|
|
611
|
+
"max-h-[var(--select-content-max-height)] min-w-[var(--select-content-min-width)] origin-[var(--transform-origin)] overflow-hidden",
|
|
515
612
|
"rounded-[var(--select-content-radius)] border border-border/70 bg-popover/95 text-popover-foreground backdrop-blur-md",
|
|
516
613
|
"shadow-[var(--select-content-shadow)] outline-none",
|
|
517
|
-
"transition-[opacity,transform
|
|
518
|
-
"data-starting-style:scale-
|
|
614
|
+
"transition-[opacity,transform] duration-[var(--select-duration)] ease-[var(--ease-brand)]",
|
|
615
|
+
"data-starting-style:scale-[0.97] data-starting-style:opacity-0 data-ending-style:scale-[0.97] data-ending-style:opacity-0",
|
|
519
616
|
"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none"
|
|
520
617
|
].join(" "),
|
|
521
618
|
navigationMenuSurface: [
|
|
522
|
-
"min-w-32 overflow-hidden rounded-[var(--radius-xl)] border border-border/70 bg-popover/95 text-popover-foreground backdrop-blur-md",
|
|
619
|
+
"min-w-32 origin-[var(--transform-origin)] overflow-hidden rounded-[var(--radius-xl)] border border-border/70 bg-popover/95 text-popover-foreground backdrop-blur-md",
|
|
523
620
|
shadowClasses.xl,
|
|
524
|
-
"outline-none transition-[opacity,transform
|
|
525
|
-
"data-[starting-style]:scale-
|
|
621
|
+
"outline-none transition-[opacity,transform] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
622
|
+
"data-[starting-style]:scale-[0.97] data-[starting-style]:opacity-0 data-ending-style:scale-[0.97] data-ending-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)]",
|
|
526
623
|
"motion-reduce:transition-none motion-reduce:data-[starting-style]:transform-none motion-reduce:data-[ending-style]:transform-none"
|
|
527
624
|
].join(" "),
|
|
528
625
|
popoverSurface: [
|
|
529
|
-
"w-72 rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-4 text-popover-foreground backdrop-blur-md",
|
|
626
|
+
"w-72 origin-[var(--transform-origin)] rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-4 text-popover-foreground backdrop-blur-md",
|
|
530
627
|
shadowClasses.xl,
|
|
531
|
-
"outline-none transition-[opacity,transform
|
|
532
|
-
"data-[open]:opacity-100 data-[closed]:opacity-0 data-[closed]:scale-
|
|
628
|
+
"outline-none transition-[opacity,transform] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
629
|
+
"data-[open]:opacity-100 data-[closed]:opacity-0 data-[closed]:scale-[0.97] data-[open]:scale-100 data-[closed]:duration-[var(--motion-duration-micro)]",
|
|
533
630
|
"motion-reduce:transition-none motion-reduce:data-[closed]:transform-none motion-reduce:data-[open]:transform-none"
|
|
534
631
|
].join(" "),
|
|
535
632
|
tooltipSurface: [
|
|
536
|
-
"overflow-hidden rounded-[var(--radius-md)] border border-border/70 bg-popover/95 px-3 py-1.5 text-sm text-popover-foreground backdrop-blur-md",
|
|
633
|
+
"origin-[var(--transform-origin)] overflow-hidden rounded-[var(--radius-md)] border border-border/70 bg-popover/95 px-3 py-1.5 text-sm text-popover-foreground backdrop-blur-md",
|
|
537
634
|
shadowClasses.md,
|
|
538
|
-
"transition-[opacity,transform
|
|
539
|
-
"data-starting-style:scale-
|
|
635
|
+
"transition-[opacity,transform] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
636
|
+
"data-starting-style:scale-[0.97] data-starting-style:opacity-0 data-ending-style:scale-[0.97] data-ending-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)]",
|
|
637
|
+
"data-[instant]:duration-0",
|
|
540
638
|
"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none"
|
|
541
639
|
].join(" "),
|
|
542
640
|
sheetBackdrop: [
|
|
543
641
|
"fixed inset-0 bg-[var(--sheet-overlay-background)] backdrop-blur-[var(--sheet-overlay-blur)]",
|
|
544
|
-
"transition-[opacity
|
|
545
|
-
"data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none"
|
|
642
|
+
"transition-[opacity] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
643
|
+
"data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)] motion-reduce:transition-none"
|
|
546
644
|
].join(" "),
|
|
547
645
|
sheetSurface: [
|
|
548
646
|
"fixed flex flex-col overflow-hidden border border-border bg-[var(--sheet-background)] text-foreground shadow-[var(--sheet-shadow)]",
|
|
549
|
-
"outline-none transition-[opacity,transform
|
|
550
|
-
"data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none"
|
|
647
|
+
"outline-none transition-[opacity,transform] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
648
|
+
"data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)] motion-reduce:transition-none"
|
|
551
649
|
].join(" "),
|
|
552
|
-
closeButton: `absolute right-4 top-4 rounded-[var(--radius-sm)] opacity-70 ring-offset-background ${overlayFocusRingClassName} transition-opacity duration-[var(--motion-duration-micro)] ease-[var(--ease-
|
|
650
|
+
closeButton: `absolute right-4 top-4 rounded-[var(--radius-sm)] opacity-70 ring-offset-background ${overlayFocusRingClassName} transition-opacity duration-[var(--motion-duration-micro)] ease-[var(--ease-brand)] hover:opacity-100 disabled:pointer-events-none data-[open]:bg-accent data-[open]:text-muted-foreground motion-reduce:transition-none`
|
|
553
651
|
};
|
|
554
652
|
var buttonVariants = cva(
|
|
555
653
|
[
|
|
556
654
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap",
|
|
557
655
|
"rounded-[var(--btn-default-radius,var(--radius-md))]",
|
|
558
656
|
"text-[length:var(--control-font-size-md,0.875rem)] font-[number:var(--font-weight-medium,500)]",
|
|
559
|
-
|
|
657
|
+
// `transform` is in the property list on purpose: without it the
|
|
658
|
+
// active:scale-[0.97] press snapped instantly and the button felt dead
|
|
659
|
+
// under the finger. Duration/ease stay on the flow rail — motion
|
|
660
|
+
// governance pins them (primitives/__tests__/motion-governance.test.ts).
|
|
661
|
+
"transition-[color,background-color,border-color,box-shadow,transform] duration-flow ease-[var(--ease-brand)]",
|
|
662
|
+
"active:scale-[0.97] motion-reduce:active:scale-100 motion-reduce:transition-none",
|
|
560
663
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
561
664
|
"aria-busy:cursor-wait"
|
|
562
665
|
].join(" "),
|
|
@@ -565,7 +668,7 @@ var buttonVariants = cva(
|
|
|
565
668
|
variant: {
|
|
566
669
|
// Recipe-driven via packages/design/tokens/recipe.css (.btn-brand-default)
|
|
567
670
|
default: "btn-brand-default",
|
|
568
|
-
ink: "bg-
|
|
671
|
+
ink: "bg-neutral-12 text-neutral-1 ring-1 ring-inset ring-neutral-1/5 hover:bg-neutral-11 hover:-translate-y-px active:translate-y-0 transition-[transform,background-color] duration-micro",
|
|
569
672
|
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
570
673
|
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
|
571
674
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
@@ -822,13 +925,13 @@ var motionDurations = {
|
|
|
822
925
|
cinematic: 500
|
|
823
926
|
};
|
|
824
927
|
var easings = {
|
|
825
|
-
easeOut: [0,
|
|
928
|
+
easeOut: [0.16, 1, 0.3, 1],
|
|
826
929
|
easeInOut: [0.4, 0, 0.2, 1]};
|
|
827
930
|
var motionVariants = {
|
|
828
931
|
fadeInUp: {
|
|
829
|
-
initial: { opacity: 0,
|
|
830
|
-
animate: { opacity: 1,
|
|
831
|
-
exit: { opacity: 0,
|
|
932
|
+
initial: { opacity: 0, transform: "translateY(20px)" },
|
|
933
|
+
animate: { opacity: 1, transform: "translateY(0px)" },
|
|
934
|
+
exit: { opacity: 0, transform: "translateY(10px)" }
|
|
832
935
|
},
|
|
833
936
|
scaleIn: {
|
|
834
937
|
initial: { opacity: 0, scale: 0.95 },
|
|
@@ -838,15 +941,15 @@ var motionVariants = {
|
|
|
838
941
|
var staggerContainers = {
|
|
839
942
|
fast: {
|
|
840
943
|
initial: {},
|
|
841
|
-
animate: { transition: { staggerChildren: 0.
|
|
944
|
+
animate: { transition: { staggerChildren: 0.04, delayChildren: 0 } }
|
|
842
945
|
},
|
|
843
946
|
normal: {
|
|
844
947
|
initial: {},
|
|
845
|
-
animate: { transition: { staggerChildren: 0.
|
|
948
|
+
animate: { transition: { staggerChildren: 0.06, delayChildren: 0.04 } }
|
|
846
949
|
},
|
|
847
950
|
slow: {
|
|
848
951
|
initial: {},
|
|
849
|
-
animate: { transition: { staggerChildren: 0.
|
|
952
|
+
animate: { transition: { staggerChildren: 0.08, delayChildren: 0.05 } }
|
|
850
953
|
}
|
|
851
954
|
};
|
|
852
955
|
var viewportSettings = {
|
|
@@ -885,37 +988,37 @@ var PRESETS = {
|
|
|
885
988
|
* Pair with `AnimateSwap`.
|
|
886
989
|
*/
|
|
887
990
|
swap: {
|
|
888
|
-
initial: { opacity: 0,
|
|
889
|
-
animate: { opacity: 1,
|
|
890
|
-
exit: { opacity: 0,
|
|
991
|
+
initial: { opacity: 0, transform: "translateY(10px)", filter: "blur(4px)" },
|
|
992
|
+
animate: { opacity: 1, transform: "translateY(0px)", filter: "blur(0px)" },
|
|
993
|
+
exit: { opacity: 0, transform: "translateY(-10px)", filter: "blur(4px)" },
|
|
891
994
|
transition: { duration: motionDurations.reveal / 1e3 }
|
|
892
995
|
},
|
|
893
996
|
/** Off-canvas panel entering from the right edge (drawer, sheet). */
|
|
894
997
|
slideFromRight: {
|
|
895
|
-
initial: {
|
|
896
|
-
animate: {
|
|
897
|
-
exit: {
|
|
998
|
+
initial: { transform: "translateX(100%)" },
|
|
999
|
+
animate: { transform: "translateX(0%)" },
|
|
1000
|
+
exit: { transform: "translateX(100%)" },
|
|
898
1001
|
transition: brandSpring.default
|
|
899
1002
|
},
|
|
900
1003
|
/** Off-canvas panel entering from the left edge. */
|
|
901
1004
|
slideFromLeft: {
|
|
902
|
-
initial: {
|
|
903
|
-
animate: {
|
|
904
|
-
exit: {
|
|
1005
|
+
initial: { transform: "translateX(-100%)" },
|
|
1006
|
+
animate: { transform: "translateX(0%)" },
|
|
1007
|
+
exit: { transform: "translateX(-100%)" },
|
|
905
1008
|
transition: brandSpring.default
|
|
906
1009
|
},
|
|
907
1010
|
/** Off-canvas panel entering from the top edge (banner, command bar). */
|
|
908
1011
|
slideFromTop: {
|
|
909
|
-
initial: {
|
|
910
|
-
animate: {
|
|
911
|
-
exit: {
|
|
1012
|
+
initial: { transform: "translateY(-100%)" },
|
|
1013
|
+
animate: { transform: "translateY(0%)" },
|
|
1014
|
+
exit: { transform: "translateY(-100%)" },
|
|
912
1015
|
transition: brandSpring.default
|
|
913
1016
|
},
|
|
914
1017
|
/** Off-canvas panel entering from the bottom edge (mobile action sheet). */
|
|
915
1018
|
slideFromBottom: {
|
|
916
|
-
initial: {
|
|
917
|
-
animate: {
|
|
918
|
-
exit: {
|
|
1019
|
+
initial: { transform: "translateY(100%)" },
|
|
1020
|
+
animate: { transform: "translateY(0%)" },
|
|
1021
|
+
exit: { transform: "translateY(100%)" },
|
|
919
1022
|
transition: brandSpring.default
|
|
920
1023
|
}
|
|
921
1024
|
};
|
|
@@ -925,7 +1028,7 @@ function MotionDiv(props) {
|
|
|
925
1028
|
function AnimateIn(props) {
|
|
926
1029
|
const {
|
|
927
1030
|
children,
|
|
928
|
-
preset = "
|
|
1031
|
+
preset = "fade",
|
|
929
1032
|
delay = 0,
|
|
930
1033
|
duration,
|
|
931
1034
|
inView = false,
|
|
@@ -933,7 +1036,7 @@ function AnimateIn(props) {
|
|
|
933
1036
|
...rest
|
|
934
1037
|
} = props;
|
|
935
1038
|
const shouldReduce = useReducedMotion();
|
|
936
|
-
const base = PRESETS[preset] || PRESETS.
|
|
1039
|
+
const base = PRESETS[preset] || PRESETS.fade;
|
|
937
1040
|
const initial = shouldReduce ? { opacity: 0 } : base.initial;
|
|
938
1041
|
const animate2 = shouldReduce ? { opacity: 1 } : base.animate;
|
|
939
1042
|
const exit = shouldReduce ? { opacity: 0 } : "exit" in base ? base.exit : void 0;
|
|
@@ -1300,8 +1403,14 @@ var badgeVariants = cva(
|
|
|
1300
1403
|
"teal-subtle": "bg-info/10 text-info fill-current border-transparent",
|
|
1301
1404
|
inverted: "bg-foreground text-background fill-current",
|
|
1302
1405
|
// Special visual treatments (intentional product design, not brand hex)
|
|
1303
|
-
trial:
|
|
1304
|
-
|
|
1406
|
+
trial: (
|
|
1407
|
+
// allow-palette: the trial gradient is fixed and vivid in both themes, so its ink is fixed white
|
|
1408
|
+
"bg-gradient-to-br from-trial-start to-trial-end text-white fill-current"
|
|
1409
|
+
),
|
|
1410
|
+
turbo: (
|
|
1411
|
+
// allow-palette: the turbo gradient is fixed and vivid in both themes, so its ink is fixed white
|
|
1412
|
+
"bg-gradient-to-br from-turbo-start to-turbo-end text-white fill-current"
|
|
1413
|
+
),
|
|
1305
1414
|
pill: "bg-background text-foreground fill-foreground border-border hover:bg-muted/50 focus-visible:bg-muted/50",
|
|
1306
1415
|
beta: "border-transparent bg-muted text-muted-foreground",
|
|
1307
1416
|
new: "border-transparent bg-primary/10 text-primary",
|
|
@@ -1416,8 +1525,9 @@ var Slot = React24.forwardRef(
|
|
|
1416
1525
|
Slot.displayName = "Slot";
|
|
1417
1526
|
var Breadcrumb = ({
|
|
1418
1527
|
ref,
|
|
1528
|
+
"aria-label": ariaLabel = "breadcrumb",
|
|
1419
1529
|
...props
|
|
1420
|
-
}) => /* @__PURE__ */ jsx("nav", { ref, "aria-label":
|
|
1530
|
+
}) => /* @__PURE__ */ jsx("nav", { ref, "aria-label": ariaLabel, ...props });
|
|
1421
1531
|
Breadcrumb.displayName = "Breadcrumb";
|
|
1422
1532
|
var BreadcrumbList = ({
|
|
1423
1533
|
className,
|
|
@@ -1514,10 +1624,10 @@ function Spinner({ className }) {
|
|
|
1514
1624
|
}
|
|
1515
1625
|
);
|
|
1516
1626
|
}
|
|
1517
|
-
function getIconSizeClass(size,
|
|
1518
|
-
if (
|
|
1519
|
-
if (
|
|
1520
|
-
if (
|
|
1627
|
+
function getIconSizeClass(size, iconSize3) {
|
|
1628
|
+
if (iconSize3 === "sm") return "[&>svg]:size-3.5";
|
|
1629
|
+
if (iconSize3 === "md") return "[&>svg]:size-3.5";
|
|
1630
|
+
if (iconSize3 === "lg") return "[&>svg]:size-4";
|
|
1521
1631
|
switch (size) {
|
|
1522
1632
|
case "tiny":
|
|
1523
1633
|
return "[&>svg]:size-3";
|
|
@@ -1532,10 +1642,10 @@ function getIconSizeClass(size, iconSize2) {
|
|
|
1532
1642
|
return "[&>svg]:size-4";
|
|
1533
1643
|
}
|
|
1534
1644
|
}
|
|
1535
|
-
function getSpinnerSizeClass(size,
|
|
1536
|
-
if (
|
|
1537
|
-
if (
|
|
1538
|
-
if (
|
|
1645
|
+
function getSpinnerSizeClass(size, iconSize3) {
|
|
1646
|
+
if (iconSize3 === "sm") return "size-3.5";
|
|
1647
|
+
if (iconSize3 === "md") return "size-3.5";
|
|
1648
|
+
if (iconSize3 === "lg") return "size-4";
|
|
1539
1649
|
switch (size) {
|
|
1540
1650
|
case "tiny":
|
|
1541
1651
|
return "size-3";
|
|
@@ -1560,10 +1670,10 @@ function resolveShadowClass(shadow) {
|
|
|
1560
1670
|
const level = shadow === true ? "md" : shadow;
|
|
1561
1671
|
return SHADOW_CLASSES[level];
|
|
1562
1672
|
}
|
|
1563
|
-
function ButtonContent({ loading, prefix, suffix, size, iconSize:
|
|
1564
|
-
const iconSizeClass = getIconSizeClass(size,
|
|
1673
|
+
function ButtonContent({ loading, prefix, suffix, size, iconSize: iconSize3, children }) {
|
|
1674
|
+
const iconSizeClass = getIconSizeClass(size, iconSize3);
|
|
1565
1675
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1566
|
-
loading && /* @__PURE__ */ jsx(Spinner, { className: getSpinnerSizeClass(size,
|
|
1676
|
+
loading && /* @__PURE__ */ jsx(Spinner, { className: getSpinnerSizeClass(size, iconSize3) }),
|
|
1567
1677
|
prefix != null && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: cn("shrink-0", iconSizeClass), children: prefix }),
|
|
1568
1678
|
children,
|
|
1569
1679
|
suffix != null && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: cn("shrink-0", iconSizeClass), children: suffix })
|
|
@@ -1574,7 +1684,7 @@ var Button = ({
|
|
|
1574
1684
|
variant,
|
|
1575
1685
|
size,
|
|
1576
1686
|
shape,
|
|
1577
|
-
iconSize:
|
|
1687
|
+
iconSize: iconSize3,
|
|
1578
1688
|
asChild = false,
|
|
1579
1689
|
loading = false,
|
|
1580
1690
|
disabled,
|
|
@@ -1592,7 +1702,7 @@ var Button = ({
|
|
|
1592
1702
|
Comp,
|
|
1593
1703
|
{
|
|
1594
1704
|
ref,
|
|
1595
|
-
className: cn(buttonVariants({ variant, size, shape, iconSize:
|
|
1705
|
+
className: cn(buttonVariants({ variant, size, shape, iconSize: iconSize3 }), shadowClass, className),
|
|
1596
1706
|
disabled: isDisabled,
|
|
1597
1707
|
"aria-busy": loading || void 0,
|
|
1598
1708
|
...props,
|
|
@@ -1603,7 +1713,7 @@ var Button = ({
|
|
|
1603
1713
|
prefix,
|
|
1604
1714
|
suffix,
|
|
1605
1715
|
size,
|
|
1606
|
-
iconSize:
|
|
1716
|
+
iconSize: iconSize3,
|
|
1607
1717
|
children
|
|
1608
1718
|
}
|
|
1609
1719
|
)
|
|
@@ -1616,7 +1726,7 @@ var ButtonLink = ({
|
|
|
1616
1726
|
variant,
|
|
1617
1727
|
size,
|
|
1618
1728
|
shape,
|
|
1619
|
-
iconSize:
|
|
1729
|
+
iconSize: iconSize3,
|
|
1620
1730
|
prefix,
|
|
1621
1731
|
suffix,
|
|
1622
1732
|
shadow,
|
|
@@ -1636,7 +1746,7 @@ var ButtonLink = ({
|
|
|
1636
1746
|
{
|
|
1637
1747
|
ref,
|
|
1638
1748
|
className: cn(
|
|
1639
|
-
buttonVariants({ variant, size, shape, iconSize:
|
|
1749
|
+
buttonVariants({ variant, size, shape, iconSize: iconSize3 }),
|
|
1640
1750
|
shadowClass,
|
|
1641
1751
|
loading && "pointer-events-none opacity-50",
|
|
1642
1752
|
className
|
|
@@ -1650,7 +1760,7 @@ var ButtonLink = ({
|
|
|
1650
1760
|
prefix,
|
|
1651
1761
|
suffix,
|
|
1652
1762
|
size,
|
|
1653
|
-
iconSize:
|
|
1763
|
+
iconSize: iconSize3,
|
|
1654
1764
|
children
|
|
1655
1765
|
}
|
|
1656
1766
|
)
|
|
@@ -1658,68 +1768,119 @@ var ButtonLink = ({
|
|
|
1658
1768
|
);
|
|
1659
1769
|
};
|
|
1660
1770
|
ButtonLink.displayName = "ButtonLink";
|
|
1661
|
-
var
|
|
1771
|
+
var cardVariants = cva(
|
|
1772
|
+
"rounded-[var(--radius-card,var(--radius-lg))] text-card-foreground transition-[box-shadow,background-color] duration-micro",
|
|
1773
|
+
{
|
|
1774
|
+
variants: {
|
|
1775
|
+
variant: {
|
|
1776
|
+
default: "bg-card shadow-[var(--elevation-card)] ring-1 ring-[var(--edge-soft)]",
|
|
1777
|
+
elevated: "bg-card shadow-ambient-md ring-1 ring-[var(--edge-soft)]",
|
|
1778
|
+
outline: "bg-transparent ring-1 ring-border",
|
|
1779
|
+
ghost: "bg-transparent"
|
|
1780
|
+
},
|
|
1781
|
+
padding: {
|
|
1782
|
+
none: "",
|
|
1783
|
+
sm: "p-4",
|
|
1784
|
+
md: "p-6",
|
|
1785
|
+
lg: "p-8"
|
|
1786
|
+
},
|
|
1787
|
+
interactive: {
|
|
1788
|
+
true: "cursor-pointer hover:shadow-ambient-md",
|
|
1789
|
+
false: ""
|
|
1790
|
+
}
|
|
1791
|
+
},
|
|
1792
|
+
defaultVariants: { variant: "default", padding: "none", interactive: false }
|
|
1793
|
+
}
|
|
1794
|
+
);
|
|
1795
|
+
var CardPaddedContext = React24.createContext(false);
|
|
1796
|
+
var CardRoot = ({
|
|
1662
1797
|
className,
|
|
1798
|
+
variant,
|
|
1799
|
+
padding = "none",
|
|
1800
|
+
interactive,
|
|
1663
1801
|
ref,
|
|
1664
1802
|
...props
|
|
1665
|
-
}) => /* @__PURE__ */ jsx(
|
|
1803
|
+
}) => /* @__PURE__ */ jsx(CardPaddedContext.Provider, { value: padding !== "none", children: /* @__PURE__ */ jsx(
|
|
1666
1804
|
"div",
|
|
1667
1805
|
{
|
|
1668
1806
|
ref,
|
|
1669
|
-
className: cn(
|
|
1670
|
-
"rounded-[var(--radius-lg)] border border-border bg-card text-card-foreground shadow-sm",
|
|
1671
|
-
className
|
|
1672
|
-
),
|
|
1807
|
+
className: cn(cardVariants({ variant, padding, interactive }), className),
|
|
1673
1808
|
...props
|
|
1674
1809
|
}
|
|
1675
|
-
);
|
|
1676
|
-
|
|
1677
|
-
var CardHeader = ({
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1810
|
+
) });
|
|
1811
|
+
CardRoot.displayName = "Card";
|
|
1812
|
+
var CardHeader = ({ className, ref, ...props }) => {
|
|
1813
|
+
const padded = React24.use(CardPaddedContext);
|
|
1814
|
+
return /* @__PURE__ */ jsx(
|
|
1815
|
+
"div",
|
|
1816
|
+
{
|
|
1817
|
+
ref,
|
|
1818
|
+
className: cn("flex flex-col gap-1.5", !padded && "p-6", className),
|
|
1819
|
+
...props
|
|
1820
|
+
}
|
|
1821
|
+
);
|
|
1822
|
+
};
|
|
1682
1823
|
CardHeader.displayName = "CardHeader";
|
|
1683
|
-
var CardTitle = ({
|
|
1684
|
-
|
|
1685
|
-
children,
|
|
1686
|
-
ref,
|
|
1687
|
-
...props
|
|
1688
|
-
}) => /* @__PURE__ */ jsx(
|
|
1689
|
-
"h3",
|
|
1824
|
+
var CardTitle = ({ className, as: Tag = "h3", ref, ...props }) => /* @__PURE__ */ jsx(
|
|
1825
|
+
Tag,
|
|
1690
1826
|
{
|
|
1691
1827
|
ref,
|
|
1692
|
-
className: cn("text-
|
|
1693
|
-
...props
|
|
1694
|
-
children
|
|
1828
|
+
className: cn("text-lg font-semibold leading-tight tracking-tight text-foreground", className),
|
|
1829
|
+
...props
|
|
1695
1830
|
}
|
|
1696
1831
|
);
|
|
1697
1832
|
CardTitle.displayName = "CardTitle";
|
|
1698
|
-
var CardDescription = ({
|
|
1699
|
-
className,
|
|
1700
|
-
as: Tag = "p",
|
|
1833
|
+
var CardDescription = ({ className, as: Tag = "p", ref, ...props }) => React24.createElement(Tag, {
|
|
1701
1834
|
ref,
|
|
1835
|
+
className: cn("text-sm leading-relaxed text-muted-foreground", className),
|
|
1702
1836
|
...props
|
|
1703
|
-
})
|
|
1704
|
-
return React24.createElement(Tag, {
|
|
1705
|
-
ref,
|
|
1706
|
-
className: cn("text-sm text-muted-foreground", className),
|
|
1707
|
-
...props
|
|
1708
|
-
});
|
|
1709
|
-
};
|
|
1837
|
+
});
|
|
1710
1838
|
CardDescription.displayName = "CardDescription";
|
|
1711
|
-
var CardContent = ({
|
|
1712
|
-
|
|
1713
|
-
ref,
|
|
1714
|
-
|
|
1715
|
-
}) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props });
|
|
1839
|
+
var CardContent = ({ className, ref, ...props }) => {
|
|
1840
|
+
const padded = React24.use(CardPaddedContext);
|
|
1841
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn(padded ? "mt-4 first:mt-0" : "p-6 pt-0", className), ...props });
|
|
1842
|
+
};
|
|
1716
1843
|
CardContent.displayName = "CardContent";
|
|
1717
|
-
var CardFooter = ({
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1844
|
+
var CardFooter = ({ className, ref, ...props }) => {
|
|
1845
|
+
const padded = React24.use(CardPaddedContext);
|
|
1846
|
+
return /* @__PURE__ */ jsx(
|
|
1847
|
+
"div",
|
|
1848
|
+
{
|
|
1849
|
+
ref,
|
|
1850
|
+
className: cn(
|
|
1851
|
+
"flex items-center",
|
|
1852
|
+
padded ? "mt-6 border-t border-border/50 pt-4 first:mt-0" : "p-6 pt-0",
|
|
1853
|
+
className
|
|
1854
|
+
),
|
|
1855
|
+
...props
|
|
1856
|
+
}
|
|
1857
|
+
);
|
|
1858
|
+
};
|
|
1722
1859
|
CardFooter.displayName = "CardFooter";
|
|
1860
|
+
var iconSize = { sm: "size-8", md: "size-10", lg: "size-12" };
|
|
1861
|
+
var CardIcon = ({ className, size = "md", ref, ...props }) => /* @__PURE__ */ jsx(
|
|
1862
|
+
"div",
|
|
1863
|
+
{
|
|
1864
|
+
ref,
|
|
1865
|
+
className: cn(
|
|
1866
|
+
"flex shrink-0 items-center justify-center rounded-[var(--radius-lg)] bg-muted/50",
|
|
1867
|
+
iconSize[size],
|
|
1868
|
+
className
|
|
1869
|
+
),
|
|
1870
|
+
...props
|
|
1871
|
+
}
|
|
1872
|
+
);
|
|
1873
|
+
CardIcon.displayName = "CardIcon";
|
|
1874
|
+
var Card = Object.assign(CardRoot, {
|
|
1875
|
+
Header: CardHeader,
|
|
1876
|
+
Title: CardTitle,
|
|
1877
|
+
Description: CardDescription,
|
|
1878
|
+
Content: CardContent,
|
|
1879
|
+
Body: CardContent,
|
|
1880
|
+
Footer: CardFooter,
|
|
1881
|
+
Icon: CardIcon
|
|
1882
|
+
});
|
|
1883
|
+
var CardBody = CardContent;
|
|
1723
1884
|
var DEFAULT_STROKE_WIDTH = 1.6;
|
|
1724
1885
|
function CheckGlyph({
|
|
1725
1886
|
size = 16,
|
|
@@ -1780,35 +1941,36 @@ function IndeterminateGlyph({
|
|
|
1780
1941
|
}
|
|
1781
1942
|
);
|
|
1782
1943
|
}
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
} else {
|
|
1790
|
-
className += " bg-geist-gray-600 border-geist-gray-600 fill-geist-gray-600 stroke-geist-gray-100";
|
|
1791
|
-
}
|
|
1792
|
-
} else {
|
|
1793
|
-
if (!checked || indeterminate) {
|
|
1794
|
-
className += " bg-geist-background-100 border-geist-gray-700 group-hover:bg-geist-gray-200";
|
|
1795
|
-
className += indeterminate ? " stroke-geist-gray-700" : " fill-geist-background-100 stroke-geist-background-100 group-hover:stroke-geist-gray-200 group-hover:fill-geist-gray-200";
|
|
1796
|
-
} else {
|
|
1797
|
-
className += " bg-geist-gray-1000 border-geist-gray-1000 fill-geist-gray-1000 stroke-geist-gray-100";
|
|
1798
|
-
}
|
|
1799
|
-
}
|
|
1800
|
-
return className;
|
|
1944
|
+
|
|
1945
|
+
// src/primitives/form-control.ts
|
|
1946
|
+
var formControlFocusClassNames = {
|
|
1947
|
+
input: "outline-none focus:border-ring focus:ring-[length:var(--input-focus-ring-width)] focus:ring-ring/30",
|
|
1948
|
+
textarea: "outline-none focus:border-ring focus:ring-[length:var(--textarea-focus-ring-width)] focus:ring-ring/30",
|
|
1949
|
+
select: "outline-none focus:border-ring focus:ring-[length:var(--select-focus-ring-width)] focus:ring-ring/30"
|
|
1801
1950
|
};
|
|
1951
|
+
var formControlInvalidClassNames = {
|
|
1952
|
+
input: "aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20",
|
|
1953
|
+
textarea: "aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20",
|
|
1954
|
+
select: "aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20"
|
|
1955
|
+
};
|
|
1956
|
+
var controlFocusProxyClassName = "peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-[hsl(var(--ring))]";
|
|
1957
|
+
var boxClassName = (on) => cn(
|
|
1958
|
+
"relative inline-flex size-4 shrink-0 items-center justify-center rounded-[4px] border",
|
|
1959
|
+
"stroke-current fill-none transition-[background-color,border-color,color] duration-micro",
|
|
1960
|
+
on ? "border-primary bg-primary text-primary-foreground" : "border-[var(--control-border)] bg-background text-transparent group-hover:border-muted-foreground",
|
|
1961
|
+
"peer-disabled:opacity-50",
|
|
1962
|
+
controlFocusProxyClassName
|
|
1963
|
+
);
|
|
1802
1964
|
var Checkbox = ({
|
|
1803
1965
|
checked: controlledChecked,
|
|
1804
1966
|
defaultChecked = false,
|
|
1805
|
-
onChange,
|
|
1967
|
+
onChange: legacyOnChange,
|
|
1968
|
+
onCheckedChange: onChange = legacyOnChange,
|
|
1806
1969
|
disabled = false,
|
|
1807
1970
|
indeterminate = false,
|
|
1808
1971
|
children,
|
|
1809
1972
|
className,
|
|
1810
|
-
|
|
1811
|
-
name
|
|
1973
|
+
...inputProps
|
|
1812
1974
|
}) => {
|
|
1813
1975
|
const [internalChecked, setInternalChecked] = React24__default.useState(defaultChecked);
|
|
1814
1976
|
const isControlled = controlledChecked !== void 0;
|
|
@@ -1817,34 +1979,28 @@ var Checkbox = ({
|
|
|
1817
1979
|
"label",
|
|
1818
1980
|
{
|
|
1819
1981
|
className: cn(
|
|
1820
|
-
"flex items-center text-[13px] font-sans
|
|
1821
|
-
disabled ? "
|
|
1982
|
+
"group flex items-center text-[13px] font-sans",
|
|
1983
|
+
disabled ? "cursor-not-allowed text-muted-foreground" : "cursor-pointer text-foreground",
|
|
1822
1984
|
className
|
|
1823
1985
|
),
|
|
1824
1986
|
children: [
|
|
1825
1987
|
/* @__PURE__ */ jsx(
|
|
1826
1988
|
"input",
|
|
1827
1989
|
{
|
|
1828
|
-
|
|
1829
|
-
name,
|
|
1990
|
+
...inputProps,
|
|
1830
1991
|
disabled,
|
|
1831
1992
|
type: "checkbox",
|
|
1832
1993
|
checked,
|
|
1994
|
+
"aria-checked": indeterminate ? "mixed" : void 0,
|
|
1833
1995
|
onChange: (e) => {
|
|
1834
|
-
if (
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
}
|
|
1838
|
-
if (onChange) {
|
|
1839
|
-
onChange(e.target.checked);
|
|
1840
|
-
}
|
|
1841
|
-
}
|
|
1996
|
+
if (indeterminate) return;
|
|
1997
|
+
if (!isControlled) setInternalChecked(e.target.checked);
|
|
1998
|
+
onChange?.(e.target.checked);
|
|
1842
1999
|
},
|
|
1843
|
-
|
|
1844
|
-
className: "sr-only"
|
|
2000
|
+
className: "peer sr-only"
|
|
1845
2001
|
}
|
|
1846
2002
|
),
|
|
1847
|
-
/* @__PURE__ */ jsx("span", { className:
|
|
2003
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: boxClassName(checked || indeterminate), children: indeterminate ? /* @__PURE__ */ jsx(IndeterminateGlyph, {}) : /* @__PURE__ */ jsx(CheckGlyph, {}) }),
|
|
1848
2004
|
children && /* @__PURE__ */ jsx("span", { className: "ml-2", children })
|
|
1849
2005
|
]
|
|
1850
2006
|
}
|
|
@@ -2070,9 +2226,9 @@ var overlayPrimitiveClassNames = {
|
|
|
2070
2226
|
menuItemBaseClassName,
|
|
2071
2227
|
"min-h-8 gap-2",
|
|
2072
2228
|
menuHighlightedClassName,
|
|
2073
|
-
"data-[variant=destructive]:text-destructive",
|
|
2229
|
+
"data-[variant=destructive]:text-destructive-strong",
|
|
2074
2230
|
"data-[variant=destructive]:data-[highlighted]:bg-destructive/10",
|
|
2075
|
-
"data-[variant=destructive]:data-[highlighted]:text-destructive"
|
|
2231
|
+
"data-[variant=destructive]:data-[highlighted]:text-destructive-strong"
|
|
2076
2232
|
].join(" "),
|
|
2077
2233
|
menuItem: [menuItemBaseClassName, menuHighlightedClassName].join(" "),
|
|
2078
2234
|
menuSubTrigger: [
|
|
@@ -2196,7 +2352,7 @@ var DropdownMenuSubContent = ({
|
|
|
2196
2352
|
style,
|
|
2197
2353
|
ref,
|
|
2198
2354
|
...props
|
|
2199
|
-
}) => /* @__PURE__ */ jsx(Menu$1.Portal, { children: /* @__PURE__ */ jsx(Menu$1.Positioner, { children: /* @__PURE__ */ jsx(
|
|
2355
|
+
}) => /* @__PURE__ */ jsx(Menu$1.Portal, { children: /* @__PURE__ */ jsx(Menu$1.Positioner, { style: { zIndex: overlayZIndex.popover }, children: /* @__PURE__ */ jsx(
|
|
2200
2356
|
Menu$1.Popup,
|
|
2201
2357
|
{
|
|
2202
2358
|
ref,
|
|
@@ -2226,6 +2382,7 @@ var DropdownMenuContent = ({
|
|
|
2226
2382
|
align,
|
|
2227
2383
|
alignOffset,
|
|
2228
2384
|
side,
|
|
2385
|
+
style: { zIndex: overlayZIndex.popover },
|
|
2229
2386
|
children: /* @__PURE__ */ jsx(
|
|
2230
2387
|
Menu$1.Popup,
|
|
2231
2388
|
{
|
|
@@ -2526,7 +2683,8 @@ function CodeBlock(props) {
|
|
|
2526
2683
|
onLineReference,
|
|
2527
2684
|
languageIcons,
|
|
2528
2685
|
showLanguageIcon = true,
|
|
2529
|
-
"aria-label": ariaLabel
|
|
2686
|
+
"aria-label": ariaLabel,
|
|
2687
|
+
copyLabel = "Copy code"
|
|
2530
2688
|
} = props;
|
|
2531
2689
|
const resolvedHide = props.hideLineNumbers;
|
|
2532
2690
|
const resolvedShow = props.showLineNumbers;
|
|
@@ -2748,7 +2906,9 @@ function CodeBlock(props) {
|
|
|
2748
2906
|
/* @__PURE__ */ jsx(DropdownMenuContent, { align: "end", className: "max-h-60 overflow-y-auto", children: controlledSwitcher.options.map((opt) => /* @__PURE__ */ jsxs(
|
|
2749
2907
|
DropdownMenuItem,
|
|
2750
2908
|
{
|
|
2751
|
-
onClick: () => controlledSwitcher.onChange(
|
|
2909
|
+
onClick: () => (controlledSwitcher.onValueChange ?? controlledSwitcher.onChange)?.(
|
|
2910
|
+
opt.value
|
|
2911
|
+
),
|
|
2752
2912
|
className: cn(
|
|
2753
2913
|
"text-xs",
|
|
2754
2914
|
opt.value === controlledSwitcher.value && "bg-accent font-medium"
|
|
@@ -2820,7 +2980,7 @@ function CodeBlock(props) {
|
|
|
2820
2980
|
type: "button",
|
|
2821
2981
|
onClick: () => copyToClipboard(code),
|
|
2822
2982
|
className: "inline-flex h-8 w-8 items-center justify-center rounded-[var(--radius-md)] hover:bg-accent hover:text-accent-foreground",
|
|
2823
|
-
"aria-label":
|
|
2983
|
+
"aria-label": copyLabel,
|
|
2824
2984
|
children: copied ? /* @__PURE__ */ jsx(
|
|
2825
2985
|
motion.div,
|
|
2826
2986
|
{
|
|
@@ -2958,11 +3118,7 @@ var commandFrameClassName = cn(
|
|
|
2958
3118
|
"[&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-2.5",
|
|
2959
3119
|
"[&_[cmdk-item]_svg]:h-4 [&_[cmdk-item]_svg]:w-4"
|
|
2960
3120
|
);
|
|
2961
|
-
var commandInputWrapperClassName = cn(
|
|
2962
|
-
"flex items-center border-b border-border px-3",
|
|
2963
|
-
"transition-[border-color] duration-micro ease-out",
|
|
2964
|
-
"has-[:focus-visible]:border-ring/60"
|
|
2965
|
-
);
|
|
3121
|
+
var commandInputWrapperClassName = cn("flex items-center border-b border-border px-3");
|
|
2966
3122
|
var commandInputClassName = cn(
|
|
2967
3123
|
"flex h-11 w-full appearance-none border-0 bg-transparent py-3 text-sm text-foreground shadow-none outline-none",
|
|
2968
3124
|
"placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
@@ -3393,6 +3549,7 @@ function PopoverContent({
|
|
|
3393
3549
|
return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
3394
3550
|
Popover$1.Positioner,
|
|
3395
3551
|
{
|
|
3552
|
+
style: { zIndex: overlayZIndex.popover },
|
|
3396
3553
|
"data-slot": "popover-positioner",
|
|
3397
3554
|
sideOffset,
|
|
3398
3555
|
align,
|
|
@@ -3407,7 +3564,7 @@ function PopoverContent({
|
|
|
3407
3564
|
overlayPrimitiveClassNames.popoverSurface,
|
|
3408
3565
|
className
|
|
3409
3566
|
),
|
|
3410
|
-
style
|
|
3567
|
+
style,
|
|
3411
3568
|
...props,
|
|
3412
3569
|
children: [
|
|
3413
3570
|
children,
|
|
@@ -3483,7 +3640,11 @@ var comboboxSizeTokens = {
|
|
|
3483
3640
|
var comboboxTriggerVariants = cva(
|
|
3484
3641
|
[
|
|
3485
3642
|
"flex w-full items-center justify-between gap-2 whitespace-nowrap",
|
|
3486
|
-
|
|
3643
|
+
// --input-radius, not the generic md step: this trigger is a form control and
|
|
3644
|
+
// should round like Input and Select do. Reading the scale step meant it
|
|
3645
|
+
// tracked whatever a language did to medium surfaces instead of what it
|
|
3646
|
+
// decided for its fields.
|
|
3647
|
+
"h-[var(--combobox-trigger-height)] rounded-[var(--input-radius,var(--radius-md))] border border-input bg-background px-[var(--combobox-trigger-padding-x)]",
|
|
3487
3648
|
"text-[length:var(--combobox-font-size)] ring-offset-background",
|
|
3488
3649
|
"transition-colors duration-micro ease-out",
|
|
3489
3650
|
"placeholder:text-muted-foreground",
|
|
@@ -3595,7 +3756,8 @@ function toCssLength(value) {
|
|
|
3595
3756
|
function ComboboxRoot({
|
|
3596
3757
|
options,
|
|
3597
3758
|
value: controlledValue,
|
|
3598
|
-
onChange,
|
|
3759
|
+
onChange: legacyOnChange,
|
|
3760
|
+
onValueChange: onChange = legacyOnChange,
|
|
3599
3761
|
defaultValue = null,
|
|
3600
3762
|
disabled = false,
|
|
3601
3763
|
errored,
|
|
@@ -3793,6 +3955,7 @@ var ContextMenuContent = ({
|
|
|
3793
3955
|
}) => /* @__PURE__ */ jsx(ContextMenu$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
3794
3956
|
ContextMenu$1.Positioner,
|
|
3795
3957
|
{
|
|
3958
|
+
style: { zIndex: overlayZIndex.popover },
|
|
3796
3959
|
alignOffset,
|
|
3797
3960
|
align,
|
|
3798
3961
|
sideOffset,
|
|
@@ -4002,20 +4165,65 @@ var ContextMenu = Object.assign(ContextMenuRoot, {
|
|
|
4002
4165
|
SubTrigger: ContextMenuSubTrigger,
|
|
4003
4166
|
SubContent: ContextMenuSubContent
|
|
4004
4167
|
});
|
|
4005
|
-
|
|
4168
|
+
|
|
4169
|
+
// src/tokens/components/interaction.ts
|
|
4170
|
+
var interaction = {
|
|
4171
|
+
/**
|
|
4172
|
+
* Tooltips. The first one waits so a sweeping pointer does not strobe;
|
|
4173
|
+
* once one is open, its neighbours open instantly if the pointer arrives
|
|
4174
|
+
* within the skip window. Radix Tooltip defaults: delayDuration 700,
|
|
4175
|
+
* skipDelayDuration 300. Vercel/Kowalski: "delay the first tooltip only".
|
|
4176
|
+
*/
|
|
4177
|
+
tooltip: { delayMs: 700, skipWindowMs: 300 }};
|
|
4178
|
+
var DEFAULT_TOOLTIP_DELAY_MS = interaction.tooltip.delayMs;
|
|
4179
|
+
var SKIP_DELAY_WINDOW_MS = interaction.tooltip.skipWindowMs;
|
|
4180
|
+
var lastTooltipOpenAt = 0;
|
|
4181
|
+
var skipDelayListeners = /* @__PURE__ */ new Set();
|
|
4182
|
+
function markTooltipOpened() {
|
|
4183
|
+
lastTooltipOpenAt = Date.now();
|
|
4184
|
+
for (const listener of skipDelayListeners) listener();
|
|
4185
|
+
}
|
|
4186
|
+
function shouldSkipDelay() {
|
|
4187
|
+
return Date.now() - lastTooltipOpenAt < SKIP_DELAY_WINDOW_MS;
|
|
4188
|
+
}
|
|
4189
|
+
function useSkipDelay() {
|
|
4190
|
+
const [, tick] = React24.useReducer((count) => count + 1, 0);
|
|
4191
|
+
React24.useEffect(() => {
|
|
4192
|
+
skipDelayListeners.add(tick);
|
|
4193
|
+
return () => {
|
|
4194
|
+
skipDelayListeners.delete(tick);
|
|
4195
|
+
};
|
|
4196
|
+
}, []);
|
|
4197
|
+
return shouldSkipDelay();
|
|
4198
|
+
}
|
|
4199
|
+
var TooltipInstantContext = React24.createContext(false);
|
|
4006
4200
|
var TooltipProvider = ({
|
|
4007
4201
|
children,
|
|
4008
4202
|
delayDuration = DEFAULT_TOOLTIP_DELAY_MS
|
|
4009
4203
|
}) => {
|
|
4010
|
-
|
|
4204
|
+
const skipDelay = useSkipDelay();
|
|
4205
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Provider, { delay: skipDelay ? 0 : delayDuration, children });
|
|
4011
4206
|
};
|
|
4012
4207
|
var Tooltip = ({
|
|
4013
4208
|
delayDuration,
|
|
4014
4209
|
children,
|
|
4210
|
+
onOpenChange,
|
|
4015
4211
|
...props
|
|
4016
4212
|
}) => {
|
|
4017
|
-
const
|
|
4018
|
-
|
|
4213
|
+
const skipDelay = useSkipDelay();
|
|
4214
|
+
const instant = delayDuration == null && skipDelay;
|
|
4215
|
+
const delay = delayDuration ?? (instant ? 0 : DEFAULT_TOOLTIP_DELAY_MS);
|
|
4216
|
+
return /* @__PURE__ */ jsx(TooltipInstantContext.Provider, { value: instant, children: /* @__PURE__ */ jsx(Tooltip$1.Provider, { delay, children: /* @__PURE__ */ jsx(
|
|
4217
|
+
Tooltip$1.Root,
|
|
4218
|
+
{
|
|
4219
|
+
...props,
|
|
4220
|
+
onOpenChange: (open, eventDetails) => {
|
|
4221
|
+
if (open) markTooltipOpened();
|
|
4222
|
+
onOpenChange?.(open, eventDetails);
|
|
4223
|
+
},
|
|
4224
|
+
children
|
|
4225
|
+
}
|
|
4226
|
+
) }) });
|
|
4019
4227
|
};
|
|
4020
4228
|
var TooltipTrigger = ({
|
|
4021
4229
|
asChild,
|
|
@@ -4045,25 +4253,29 @@ var TooltipContent = ({
|
|
|
4045
4253
|
alignOffset = 0,
|
|
4046
4254
|
ref,
|
|
4047
4255
|
...props
|
|
4048
|
-
}) =>
|
|
4049
|
-
|
|
4050
|
-
{
|
|
4051
|
-
|
|
4052
|
-
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4256
|
+
}) => {
|
|
4257
|
+
const instant = React24.use(TooltipInstantContext);
|
|
4258
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
4259
|
+
Tooltip$1.Positioner,
|
|
4260
|
+
{
|
|
4261
|
+
side,
|
|
4262
|
+
align,
|
|
4263
|
+
sideOffset,
|
|
4264
|
+
alignOffset,
|
|
4265
|
+
style: { zIndex: overlayZIndex.tooltip },
|
|
4266
|
+
children: /* @__PURE__ */ jsx(
|
|
4267
|
+
Tooltip$1.Popup,
|
|
4268
|
+
{
|
|
4269
|
+
ref,
|
|
4270
|
+
className: cn(overlayClassNames.tooltipSurface, className),
|
|
4271
|
+
"data-instant": instant || void 0,
|
|
4272
|
+
style: { zIndex: overlayZIndex.tooltip, ...style },
|
|
4273
|
+
...props
|
|
4274
|
+
}
|
|
4275
|
+
)
|
|
4276
|
+
}
|
|
4277
|
+
) });
|
|
4278
|
+
};
|
|
4067
4279
|
TooltipContent.displayName = "TooltipContent";
|
|
4068
4280
|
var COPIED_TINT = "text-[hsl(var(--success-strong))]";
|
|
4069
4281
|
function CopiedAnnouncement({ copied, message }) {
|
|
@@ -4386,7 +4598,7 @@ var ContextCardTrigger = ({
|
|
|
4386
4598
|
align,
|
|
4387
4599
|
sideOffset,
|
|
4388
4600
|
alignOffset,
|
|
4389
|
-
|
|
4601
|
+
style: { zIndex: overlayZIndex.popover },
|
|
4390
4602
|
children: /* @__PURE__ */ jsx(
|
|
4391
4603
|
Popover$1.Popup,
|
|
4392
4604
|
{
|
|
@@ -4408,7 +4620,7 @@ var ContextCardTrigger = ({
|
|
|
4408
4620
|
"rounded-[var(--context-card-radius)] border border-border bg-popover",
|
|
4409
4621
|
"px-[var(--context-card-padding-x)] py-[var(--context-card-padding-y)]",
|
|
4410
4622
|
"text-[length:var(--context-card-body-size)] text-popover-foreground shadow-md outline-none",
|
|
4411
|
-
"transition-[opacity,transform
|
|
4623
|
+
"transition-[opacity,transform] duration-[var(--context-card-duration)] ease-[var(--context-card-easing)]",
|
|
4412
4624
|
"data-starting-style:opacity-0 data-ending-style:opacity-0 data-starting-style:scale-[0.98] data-ending-style:scale-[0.98]",
|
|
4413
4625
|
"motion-reduce:transition-none motion-reduce:data-starting-style:scale-100 motion-reduce:data-ending-style:scale-100",
|
|
4414
4626
|
"",
|
|
@@ -4655,6 +4867,70 @@ var emptyStateTokens = {
|
|
|
4655
4867
|
descriptionLineHeight: primitiveSpacing[6]
|
|
4656
4868
|
}
|
|
4657
4869
|
};
|
|
4870
|
+
var SIZE_MAP = {
|
|
4871
|
+
sm: { box: "h-8 w-8", halo: "h-16 w-16 -inset-4", glyph: "h-3.5 w-3.5" },
|
|
4872
|
+
md: { box: "h-10 w-10", halo: "h-20 w-20 -inset-5", glyph: "h-4 w-4" },
|
|
4873
|
+
lg: { box: "h-14 w-14", halo: "h-28 w-28 -inset-7", glyph: "h-5 w-5" },
|
|
4874
|
+
xl: { box: "h-20 w-20", halo: "h-40 w-40 -inset-10", glyph: "h-7 w-7" }
|
|
4875
|
+
};
|
|
4876
|
+
function BrandMark({
|
|
4877
|
+
children,
|
|
4878
|
+
variant = "gradient",
|
|
4879
|
+
size = "md",
|
|
4880
|
+
className,
|
|
4881
|
+
halo = false,
|
|
4882
|
+
ariaHidden = true
|
|
4883
|
+
}) {
|
|
4884
|
+
const sizes = SIZE_MAP[size];
|
|
4885
|
+
return /* @__PURE__ */ jsxs(
|
|
4886
|
+
"span",
|
|
4887
|
+
{
|
|
4888
|
+
"aria-hidden": ariaHidden,
|
|
4889
|
+
className: cn("relative inline-flex shrink-0 items-center justify-center", className),
|
|
4890
|
+
children: [
|
|
4891
|
+
halo && /* @__PURE__ */ jsx(
|
|
4892
|
+
"span",
|
|
4893
|
+
{
|
|
4894
|
+
"aria-hidden": "true",
|
|
4895
|
+
className: cn(
|
|
4896
|
+
"pointer-events-none absolute rounded-full bg-brand-mark opacity-30 blur-2xl",
|
|
4897
|
+
sizes.halo
|
|
4898
|
+
)
|
|
4899
|
+
}
|
|
4900
|
+
),
|
|
4901
|
+
/* @__PURE__ */ jsx(
|
|
4902
|
+
"span",
|
|
4903
|
+
{
|
|
4904
|
+
className: cn(
|
|
4905
|
+
"relative inline-flex items-center justify-center rounded-[var(--radius-2xl)]",
|
|
4906
|
+
sizes.box,
|
|
4907
|
+
variant === "gradient" && "bg-brand-mark text-brand-mark-foreground shadow-sm",
|
|
4908
|
+
variant === "soft" && "bg-brand-mark/10 text-brand-mark dark:bg-brand-mark/20",
|
|
4909
|
+
variant === "outline" && "border border-border bg-background text-foreground"
|
|
4910
|
+
),
|
|
4911
|
+
children: children ?? /* @__PURE__ */ jsx(DefaultGlyph, { className: sizes.glyph })
|
|
4912
|
+
}
|
|
4913
|
+
)
|
|
4914
|
+
]
|
|
4915
|
+
}
|
|
4916
|
+
);
|
|
4917
|
+
}
|
|
4918
|
+
function DefaultGlyph({ className }) {
|
|
4919
|
+
return /* @__PURE__ */ jsxs(
|
|
4920
|
+
"svg",
|
|
4921
|
+
{
|
|
4922
|
+
viewBox: "0 0 16 16",
|
|
4923
|
+
fill: "none",
|
|
4924
|
+
"aria-hidden": "true",
|
|
4925
|
+
className,
|
|
4926
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4927
|
+
children: [
|
|
4928
|
+
/* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "3", fill: "currentColor" }),
|
|
4929
|
+
/* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "6.5", stroke: "currentColor", strokeOpacity: "0.35" })
|
|
4930
|
+
]
|
|
4931
|
+
}
|
|
4932
|
+
);
|
|
4933
|
+
}
|
|
4658
4934
|
var variantClassName = {
|
|
4659
4935
|
"blank-slate": "border border-dashed border-border bg-background",
|
|
4660
4936
|
informational: "border border-border bg-card",
|
|
@@ -4673,7 +4949,7 @@ var iconToneClassName = {
|
|
|
4673
4949
|
"no-results": "text-muted-foreground",
|
|
4674
4950
|
cleared: "text-muted-foreground",
|
|
4675
4951
|
permission: "text-muted-foreground",
|
|
4676
|
-
error: "text-destructive"
|
|
4952
|
+
error: "text-destructive-strong"
|
|
4677
4953
|
};
|
|
4678
4954
|
var emptyStateCssVars = (size) => ({
|
|
4679
4955
|
"--empty-state-min-height": `${emptyStateTokens.root.minHeight[size]}px`,
|
|
@@ -4773,16 +5049,47 @@ var EmptyStateRoot = ({
|
|
|
4773
5049
|
);
|
|
4774
5050
|
};
|
|
4775
5051
|
EmptyStateRoot.displayName = "EmptyState.Root";
|
|
4776
|
-
var
|
|
5052
|
+
var toneVariant = {
|
|
5053
|
+
default: "blank-slate",
|
|
5054
|
+
branded: "informational",
|
|
5055
|
+
subtle: "guide"
|
|
5056
|
+
};
|
|
5057
|
+
function EmptyStateSimple({
|
|
5058
|
+
title,
|
|
5059
|
+
description,
|
|
5060
|
+
mascot,
|
|
5061
|
+
icon,
|
|
5062
|
+
action,
|
|
5063
|
+
secondaryAction,
|
|
5064
|
+
tone = "default",
|
|
5065
|
+
size = "md",
|
|
5066
|
+
className
|
|
5067
|
+
}) {
|
|
5068
|
+
const visual = mascot ?? icon ?? (tone === "branded" ? /* @__PURE__ */ jsx(BrandMark, { size: size === "lg" ? "lg" : "md" }) : null);
|
|
5069
|
+
return /* @__PURE__ */ jsx(
|
|
5070
|
+
EmptyStateRoot,
|
|
5071
|
+
{
|
|
5072
|
+
action,
|
|
5073
|
+
className: cn(tone === "subtle" && "border-0 bg-transparent", className),
|
|
5074
|
+
description,
|
|
5075
|
+
icon: visual ? /* @__PURE__ */ jsx(EmptyStateIcon, { icon: visual }) : void 0,
|
|
5076
|
+
link: secondaryAction,
|
|
5077
|
+
size,
|
|
5078
|
+
title,
|
|
5079
|
+
variant: toneVariant[tone]
|
|
5080
|
+
}
|
|
5081
|
+
);
|
|
5082
|
+
}
|
|
5083
|
+
var EmptyState = Object.assign(EmptyStateSimple, {
|
|
4777
5084
|
Root: EmptyStateRoot,
|
|
4778
5085
|
Icon: EmptyStateIcon
|
|
4779
|
-
};
|
|
5086
|
+
});
|
|
4780
5087
|
var textSize = {
|
|
4781
5088
|
small: "text-xs",
|
|
4782
5089
|
medium: "text-sm",
|
|
4783
5090
|
large: "text-base"
|
|
4784
5091
|
};
|
|
4785
|
-
var
|
|
5092
|
+
var iconSize2 = {
|
|
4786
5093
|
small: 12,
|
|
4787
5094
|
medium: 14,
|
|
4788
5095
|
large: 16
|
|
@@ -4818,9 +5125,13 @@ var ErrorMessage = ({
|
|
|
4818
5125
|
{
|
|
4819
5126
|
ref,
|
|
4820
5127
|
role: "alert",
|
|
4821
|
-
className: cn(
|
|
5128
|
+
className: cn(
|
|
5129
|
+
"inline-flex items-center gap-1.5 text-destructive-strong",
|
|
5130
|
+
textSize[sz],
|
|
5131
|
+
className
|
|
5132
|
+
),
|
|
4822
5133
|
children: [
|
|
4823
|
-
/* @__PURE__ */ jsx(Warning, { size:
|
|
5134
|
+
/* @__PURE__ */ jsx(Warning, { size: iconSize2[sz], "aria-hidden": "true", className: "shrink-0" }),
|
|
4824
5135
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
4825
5136
|
label && /* @__PURE__ */ jsxs("span", { className: "font-medium", children: [
|
|
4826
5137
|
label,
|
|
@@ -4892,12 +5203,12 @@ var ErrorSurface = ({
|
|
|
4892
5203
|
"span",
|
|
4893
5204
|
{
|
|
4894
5205
|
"aria-hidden": "true",
|
|
4895
|
-
className: "mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] border border-destructive/20 bg-background text-destructive",
|
|
5206
|
+
className: "mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] border border-destructive/20 bg-background text-destructive-strong",
|
|
4896
5207
|
children: /* @__PURE__ */ jsx(Warning, { size: surfaceIconSize[size] })
|
|
4897
5208
|
}
|
|
4898
5209
|
),
|
|
4899
5210
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
4900
|
-
label && showLabel ? /* @__PURE__ */ jsx("p", { className: "mb-1 text-xs font-medium uppercase tracking-normal text-destructive", children: label }) : null,
|
|
5211
|
+
label && showLabel ? /* @__PURE__ */ jsx("p", { className: "mb-1 text-xs font-medium uppercase tracking-normal text-destructive-strong", children: label }) : null,
|
|
4901
5212
|
resolvedTitle ? /* @__PURE__ */ jsx("p", { className: "font-semibold leading-6 text-foreground", children: resolvedTitle }) : null,
|
|
4902
5213
|
message ? /* @__PURE__ */ jsx("p", { className: cn("leading-5 text-muted-foreground", resolvedTitle && "mt-1"), children: message }) : null,
|
|
4903
5214
|
resolvedErrorId ? /* @__PURE__ */ jsxs("details", { className: "mt-3 text-xs text-muted-foreground", children: [
|
|
@@ -4946,10 +5257,10 @@ var Field = ({
|
|
|
4946
5257
|
...props
|
|
4947
5258
|
}) => {
|
|
4948
5259
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("grid gap-2", className), ...props, children: [
|
|
4949
|
-
/* @__PURE__ */ jsx(Label, { htmlFor, className: cn(error && "text-destructive"), children: label }),
|
|
5260
|
+
/* @__PURE__ */ jsx(Label, { htmlFor, className: cn(error && "text-destructive-strong"), children: label }),
|
|
4950
5261
|
children,
|
|
4951
5262
|
description && !error && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: description }),
|
|
4952
|
-
error && /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-destructive", children: error })
|
|
5263
|
+
error && /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-destructive-strong", children: error })
|
|
4953
5264
|
] });
|
|
4954
5265
|
};
|
|
4955
5266
|
Field.displayName = "Field";
|
|
@@ -4998,7 +5309,7 @@ var FormLabel = ({
|
|
|
4998
5309
|
Label,
|
|
4999
5310
|
{
|
|
5000
5311
|
ref,
|
|
5001
|
-
className: cn(error && "text-destructive", className),
|
|
5312
|
+
className: cn(error && "text-destructive-strong", className),
|
|
5002
5313
|
htmlFor: formItemId,
|
|
5003
5314
|
...props
|
|
5004
5315
|
}
|
|
@@ -5055,7 +5366,7 @@ var FormMessage = ({
|
|
|
5055
5366
|
{
|
|
5056
5367
|
ref,
|
|
5057
5368
|
id: formMessageId,
|
|
5058
|
-
className: cn("text-sm font-medium text-destructive", className),
|
|
5369
|
+
className: cn("text-sm font-medium text-destructive-strong", className),
|
|
5059
5370
|
...props,
|
|
5060
5371
|
children: body
|
|
5061
5372
|
}
|
|
@@ -5284,20 +5595,29 @@ var HoverCardContent = ({
|
|
|
5284
5595
|
style,
|
|
5285
5596
|
ref,
|
|
5286
5597
|
...props
|
|
5287
|
-
}) => /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
5288
|
-
Popover$1.
|
|
5598
|
+
}) => /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
5599
|
+
Popover$1.Positioner,
|
|
5289
5600
|
{
|
|
5290
|
-
|
|
5291
|
-
|
|
5292
|
-
|
|
5293
|
-
|
|
5294
|
-
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5298
|
-
|
|
5601
|
+
style: { zIndex: overlayZIndex.popover },
|
|
5602
|
+
side,
|
|
5603
|
+
align,
|
|
5604
|
+
sideOffset,
|
|
5605
|
+
children: /* @__PURE__ */ jsx(
|
|
5606
|
+
Popover$1.Popup,
|
|
5607
|
+
{
|
|
5608
|
+
ref,
|
|
5609
|
+
className: cn(
|
|
5610
|
+
overlayClassNames.popoverSurface,
|
|
5611
|
+
overlayPrimitiveClassNames.popoverSurface,
|
|
5612
|
+
"w-64",
|
|
5613
|
+
className
|
|
5614
|
+
),
|
|
5615
|
+
style: { zIndex: overlayZIndex.popover, ...style },
|
|
5616
|
+
...props
|
|
5617
|
+
}
|
|
5618
|
+
)
|
|
5299
5619
|
}
|
|
5300
|
-
) })
|
|
5620
|
+
) });
|
|
5301
5621
|
HoverCardContent.displayName = "HoverCardContent";
|
|
5302
5622
|
var HoverCardTrigger = ({
|
|
5303
5623
|
asChild,
|
|
@@ -5401,18 +5721,6 @@ var inputTokens = {
|
|
|
5401
5721
|
},
|
|
5402
5722
|
focusRingWidth: 3,
|
|
5403
5723
|
fieldGap: primitiveSpacing[2] - primitiveSpacing[1] / 2};
|
|
5404
|
-
|
|
5405
|
-
// src/primitives/form-control.ts
|
|
5406
|
-
var formControlFocusClassNames = {
|
|
5407
|
-
input: "outline-none focus:border-ring focus:ring-[length:var(--input-focus-ring-width)] focus:ring-ring/30",
|
|
5408
|
-
textarea: "outline-none focus:border-ring focus:ring-[length:var(--textarea-focus-ring-width)] focus:ring-ring/30",
|
|
5409
|
-
select: "outline-none focus:border-ring focus:ring-[length:var(--select-focus-ring-width)] focus:ring-ring/30"
|
|
5410
|
-
};
|
|
5411
|
-
var formControlInvalidClassNames = {
|
|
5412
|
-
input: "aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20",
|
|
5413
|
-
textarea: "aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20",
|
|
5414
|
-
select: "aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20"
|
|
5415
|
-
};
|
|
5416
5724
|
var inputVariants = cva(
|
|
5417
5725
|
[
|
|
5418
5726
|
"flex h-[var(--input-height)] w-full rounded-[var(--input-radius)]",
|
|
@@ -5459,7 +5767,7 @@ var inputVariants = cva(
|
|
|
5459
5767
|
* the ring surrounds the whole group rather than a box inside it.
|
|
5460
5768
|
*/
|
|
5461
5769
|
tone: {
|
|
5462
|
-
bordered: `border border-input bg-background
|
|
5770
|
+
bordered: `border border-input bg-background ${formControlFocusClassNames.input}`,
|
|
5463
5771
|
bare: "border-0 bg-transparent shadow-none"
|
|
5464
5772
|
}
|
|
5465
5773
|
},
|
|
@@ -5488,7 +5796,7 @@ var inputControlButtonVariants = cva(
|
|
|
5488
5796
|
[
|
|
5489
5797
|
"absolute right-[var(--input-control-inset)] top-1/2 flex size-[var(--input-control-size)] -translate-y-1/2 items-center justify-center",
|
|
5490
5798
|
"rounded-[var(--radius-sm)] text-muted-foreground transition-colors duration-micro ease-out",
|
|
5491
|
-
"hover:bg-accent hover:text-foreground",
|
|
5799
|
+
"hover:bg-accent hover:text-accent-foreground",
|
|
5492
5800
|
"focus-visible:outline-none",
|
|
5493
5801
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
5494
5802
|
"[&_svg]:size-[var(--input-control-icon-size)]"
|
|
@@ -5498,7 +5806,7 @@ var fieldMessageVariants = cva("text-xs", {
|
|
|
5498
5806
|
variants: {
|
|
5499
5807
|
tone: {
|
|
5500
5808
|
description: "text-muted-foreground",
|
|
5501
|
-
error: "font-medium text-destructive"
|
|
5809
|
+
error: "font-medium text-destructive-strong"
|
|
5502
5810
|
}
|
|
5503
5811
|
}
|
|
5504
5812
|
});
|
|
@@ -5565,6 +5873,7 @@ var Input = ({
|
|
|
5565
5873
|
revealable,
|
|
5566
5874
|
revealLabel = "Show password",
|
|
5567
5875
|
hideLabel = "Hide password",
|
|
5876
|
+
clearLabel = "Clear input",
|
|
5568
5877
|
clearOnEscape,
|
|
5569
5878
|
wrapperClassName,
|
|
5570
5879
|
fieldClassName,
|
|
@@ -5715,7 +6024,7 @@ var Input = ({
|
|
|
5715
6024
|
"button",
|
|
5716
6025
|
{
|
|
5717
6026
|
type: "button",
|
|
5718
|
-
"aria-label":
|
|
6027
|
+
"aria-label": clearLabel,
|
|
5719
6028
|
disabled,
|
|
5720
6029
|
className: inputControlButtonVariants(),
|
|
5721
6030
|
style: getInputStyle(size, void 0),
|
|
@@ -5787,8 +6096,11 @@ var InputOTP = ({
|
|
|
5787
6096
|
children,
|
|
5788
6097
|
render,
|
|
5789
6098
|
ref,
|
|
5790
|
-
|
|
6099
|
+
onValueChange,
|
|
6100
|
+
onChange: legacyOnChange,
|
|
6101
|
+
...rest
|
|
5791
6102
|
}) => {
|
|
6103
|
+
const props = { ...rest, onChange: onValueChange ?? legacyOnChange };
|
|
5792
6104
|
const otpProps = render ? { render, ...props } : { children, ...props };
|
|
5793
6105
|
return /* @__PURE__ */ jsx(
|
|
5794
6106
|
OTPInput,
|
|
@@ -6090,7 +6402,7 @@ var MenuItem = function MenuItem2({
|
|
|
6090
6402
|
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children }),
|
|
6091
6403
|
suffix && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "inline-flex shrink-0 [&_svg]:size-4", children: suffix })
|
|
6092
6404
|
] });
|
|
6093
|
-
const errorClass = type === "error" ? "text-destructive data-[highlighted]:bg-destructive/10 data-[highlighted]:text-destructive" : "";
|
|
6405
|
+
const errorClass = type === "error" ? "text-destructive-strong data-[highlighted]:bg-destructive/10 data-[highlighted]:text-destructive-strong" : "";
|
|
6094
6406
|
const passthrough = {};
|
|
6095
6407
|
if (onClick !== void 0) passthrough.onClick = onClick;
|
|
6096
6408
|
if (disabled !== void 0) passthrough.disabled = disabled;
|
|
@@ -6901,6 +7213,7 @@ var MultiSelectContent = ({
|
|
|
6901
7213
|
alignOffset = 0,
|
|
6902
7214
|
width = "md",
|
|
6903
7215
|
onKeyDown,
|
|
7216
|
+
"aria-label": ariaLabel = "Multi select options",
|
|
6904
7217
|
ref,
|
|
6905
7218
|
...props
|
|
6906
7219
|
}) => {
|
|
@@ -6916,7 +7229,7 @@ var MultiSelectContent = ({
|
|
|
6916
7229
|
{
|
|
6917
7230
|
align,
|
|
6918
7231
|
alignOffset,
|
|
6919
|
-
|
|
7232
|
+
style: { zIndex: overlayZIndex.popover },
|
|
6920
7233
|
side,
|
|
6921
7234
|
sideOffset,
|
|
6922
7235
|
children: /* @__PURE__ */ jsx(
|
|
@@ -6924,11 +7237,11 @@ var MultiSelectContent = ({
|
|
|
6924
7237
|
{
|
|
6925
7238
|
ref: composeRefs2(contentRef, ref),
|
|
6926
7239
|
role: "dialog",
|
|
6927
|
-
"aria-label":
|
|
7240
|
+
"aria-label": ariaLabel,
|
|
6928
7241
|
className: cn(
|
|
6929
7242
|
"z-50 max-h-[var(--multi-select-content-max-height)] w-[var(--multi-select-width)] overflow-y-auto",
|
|
6930
7243
|
"rounded-[var(--multi-select-content-radius)] border border-border bg-popover p-[var(--multi-select-content-padding)] text-popover-foreground shadow-md outline-none",
|
|
6931
|
-
"transition-[opacity,transform
|
|
7244
|
+
"transition-[opacity,transform] duration-[var(--multi-select-popover-duration)] ease-[var(--multi-select-easing)]",
|
|
6932
7245
|
"data-starting-style:translate-y-1 data-starting-style:opacity-0 data-ending-style:translate-y-1 data-ending-style:opacity-0",
|
|
6933
7246
|
"motion-reduce:transition-none motion-reduce:data-starting-style:translate-y-0 motion-reduce:data-ending-style:translate-y-0",
|
|
6934
7247
|
className
|
|
@@ -8355,16 +8668,16 @@ var Progress = function Progress2({
|
|
|
8355
8668
|
};
|
|
8356
8669
|
var variantMap = {
|
|
8357
8670
|
success: {
|
|
8358
|
-
container: "border-success/40 bg-success/10 text-success fill-success",
|
|
8359
|
-
cta: "text-success decoration-success/50 hover:text-success hover:decoration-success"
|
|
8671
|
+
container: "border-success/40 bg-success/10 text-success-strong fill-success-strong",
|
|
8672
|
+
cta: "text-success-strong decoration-success/50 hover:text-success-strong hover:decoration-success"
|
|
8360
8673
|
},
|
|
8361
8674
|
warning: {
|
|
8362
|
-
container: "border-warning/40 bg-warning/10 text-warning fill-warning",
|
|
8363
|
-
cta: "text-warning decoration-warning/50 hover:text-warning hover:decoration-warning"
|
|
8675
|
+
container: "border-warning/40 bg-warning/10 text-warning-strong fill-warning-strong",
|
|
8676
|
+
cta: "text-warning-strong decoration-warning/50 hover:text-warning-strong hover:decoration-warning"
|
|
8364
8677
|
},
|
|
8365
8678
|
error: {
|
|
8366
|
-
container: "border-destructive/40 bg-destructive/10 text-destructive fill-destructive",
|
|
8367
|
-
cta: "text-destructive decoration-destructive/50 hover:text-destructive hover:decoration-destructive"
|
|
8679
|
+
container: "border-destructive/40 bg-destructive/10 text-destructive-strong fill-destructive-strong",
|
|
8680
|
+
cta: "text-destructive-strong decoration-destructive/50 hover:text-destructive-strong hover:decoration-destructive"
|
|
8368
8681
|
},
|
|
8369
8682
|
info: {
|
|
8370
8683
|
container: "border-border bg-muted text-foreground fill-foreground",
|
|
@@ -8426,13 +8739,15 @@ var itemStyle = {
|
|
|
8426
8739
|
"--radio-motion-easing": radioTokens.motion.easing
|
|
8427
8740
|
};
|
|
8428
8741
|
var radioControlClassName = cn(
|
|
8429
|
-
"relative inline-flex shrink-0 items-center justify-center rounded-[var(--radius-full)] border-[length:var(--radio-border-width)] border-border bg-background text-foreground",
|
|
8742
|
+
"relative inline-flex shrink-0 items-center justify-center rounded-[var(--radius-full)] border-[length:var(--radio-border-width)] border-[var(--control-border)] bg-background text-foreground",
|
|
8430
8743
|
"size-[var(--radio-control-size)]",
|
|
8431
8744
|
"transition-[background-color,border-color,box-shadow] duration-[var(--radio-motion-duration)] ease-[var(--radio-motion-easing)]",
|
|
8432
|
-
"after:size-[var(--radio-dot-size)] after:scale-
|
|
8433
|
-
"
|
|
8434
|
-
|
|
8435
|
-
"peer-
|
|
8745
|
+
"after:size-[var(--radio-dot-size)] after:scale-95 after:rounded-[var(--radius-full)] after:bg-current after:opacity-0 after:transition-[opacity,transform] after:duration-[var(--radio-motion-duration)] after:ease-[var(--radio-motion-easing)] after:content-['']",
|
|
8746
|
+
// "On" is the action colour, as for checkbox / toggle / slider / choicebox —
|
|
8747
|
+
// it was --neutral-12, which only matched the House ink by coincidence.
|
|
8748
|
+
"peer-checked:border-primary peer-checked:text-primary peer-checked:after:scale-100 peer-checked:after:opacity-100",
|
|
8749
|
+
controlFocusProxyClassName,
|
|
8750
|
+
"peer-disabled:border-neutral-5 peer-disabled:bg-muted peer-disabled:text-neutral-8"
|
|
8436
8751
|
);
|
|
8437
8752
|
function useRadioGroupContext() {
|
|
8438
8753
|
return use(RadioGroupContext);
|
|
@@ -9091,7 +9406,7 @@ function NativeSelect({
|
|
|
9091
9406
|
style: { borderRadius: "var(--select-radius)" },
|
|
9092
9407
|
className: cn(
|
|
9093
9408
|
"h-[var(--select-height)] w-full appearance-none rounded-[var(--select-radius)] border font-sans",
|
|
9094
|
-
"bg-background text-[length:var(--select-font-size)] text-foreground
|
|
9409
|
+
"bg-background text-[length:var(--select-font-size)] text-foreground outline-none",
|
|
9095
9410
|
"transition-[background-color,border-color,box-shadow,color] duration-[var(--select-duration)] ease-[var(--select-easing)]",
|
|
9096
9411
|
formControlFocusClassNames.select,
|
|
9097
9412
|
"disabled:cursor-not-allowed disabled:bg-muted disabled:text-muted-foreground",
|
|
@@ -9275,7 +9590,7 @@ var SelectTrigger = ({
|
|
|
9275
9590
|
ref,
|
|
9276
9591
|
className: cn(
|
|
9277
9592
|
"flex h-[var(--select-height)] w-full items-center justify-between whitespace-nowrap rounded-[var(--select-radius)] border border-input bg-background",
|
|
9278
|
-
"px-[var(--select-padding-x)] text-[length:var(--select-font-size)] text-foreground
|
|
9593
|
+
"px-[var(--select-padding-x)] text-[length:var(--select-font-size)] text-foreground",
|
|
9279
9594
|
"transition-[background-color,border-color,box-shadow,color] duration-micro ease-out placeholder:text-muted-foreground",
|
|
9280
9595
|
formControlFocusClassNames.select,
|
|
9281
9596
|
"disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
|
|
@@ -9309,6 +9624,7 @@ var SelectContent = ({
|
|
|
9309
9624
|
}) => /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
9310
9625
|
Select$1.Positioner,
|
|
9311
9626
|
{
|
|
9627
|
+
style: { zIndex: overlayZIndex.popover },
|
|
9312
9628
|
alignItemWithTrigger: position === "item-aligned",
|
|
9313
9629
|
sideOffset: selectTokens.content.sideOffset,
|
|
9314
9630
|
children: /* @__PURE__ */ jsx(
|
|
@@ -9512,6 +9828,7 @@ var SheetContent = ({
|
|
|
9512
9828
|
noOverlay = false,
|
|
9513
9829
|
showClose,
|
|
9514
9830
|
close,
|
|
9831
|
+
closeLabel = "Close",
|
|
9515
9832
|
style,
|
|
9516
9833
|
ref,
|
|
9517
9834
|
...props
|
|
@@ -9533,7 +9850,7 @@ var SheetContent = ({
|
|
|
9533
9850
|
shouldRenderClose ? /* @__PURE__ */ jsxs(
|
|
9534
9851
|
SheetClose,
|
|
9535
9852
|
{
|
|
9536
|
-
"aria-label":
|
|
9853
|
+
"aria-label": closeLabel,
|
|
9537
9854
|
className: cn(
|
|
9538
9855
|
"absolute right-[var(--sheet-close-offset)] top-[var(--sheet-close-offset)] inline-flex size-[var(--sheet-close-size)] items-center justify-center rounded-[var(--sheet-close-radius)] text-muted-foreground",
|
|
9539
9856
|
"transition-[background-color,color,box-shadow] duration-[var(--motion-duration-micro)] ease-[var(--ease-out)] hover:bg-muted hover:text-foreground",
|
|
@@ -9542,7 +9859,7 @@ var SheetContent = ({
|
|
|
9542
9859
|
),
|
|
9543
9860
|
children: [
|
|
9544
9861
|
/* @__PURE__ */ jsx(Cross, { "aria-hidden": "true", className: "size-[var(--sheet-close-icon-size)]" }),
|
|
9545
|
-
/* @__PURE__ */ jsx("span", { className: "sr-only", children:
|
|
9862
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: closeLabel })
|
|
9546
9863
|
]
|
|
9547
9864
|
}
|
|
9548
9865
|
) : null
|
|
@@ -9699,13 +10016,7 @@ var ShowMore = ({
|
|
|
9699
10016
|
style: cssVars,
|
|
9700
10017
|
...props,
|
|
9701
10018
|
children: [
|
|
9702
|
-
!noBorder && /* @__PURE__ */ jsx(
|
|
9703
|
-
"div",
|
|
9704
|
-
{
|
|
9705
|
-
"aria-hidden": "true",
|
|
9706
|
-
className: cn("h-px flex-1 bg-[var(--neutral-7)]", dividerClassName)
|
|
9707
|
-
}
|
|
9708
|
-
),
|
|
10019
|
+
!noBorder && /* @__PURE__ */ jsx("div", { "aria-hidden": "true", className: cn("h-px flex-1 bg-neutral-7", dividerClassName) }),
|
|
9709
10020
|
/* @__PURE__ */ jsx("div", { className: "shrink-0 bg-background px-[var(--show-more-gap)]", children: /* @__PURE__ */ jsxs(
|
|
9710
10021
|
"button",
|
|
9711
10022
|
{
|
|
@@ -9739,13 +10050,7 @@ var ShowMore = ({
|
|
|
9739
10050
|
]
|
|
9740
10051
|
}
|
|
9741
10052
|
) }),
|
|
9742
|
-
!noBorder && /* @__PURE__ */ jsx(
|
|
9743
|
-
"div",
|
|
9744
|
-
{
|
|
9745
|
-
"aria-hidden": "true",
|
|
9746
|
-
className: cn("h-px flex-1 bg-[var(--neutral-7)]", dividerClassName)
|
|
9747
|
-
}
|
|
9748
|
-
)
|
|
10053
|
+
!noBorder && /* @__PURE__ */ jsx("div", { "aria-hidden": "true", className: cn("h-px flex-1 bg-neutral-7", dividerClassName) })
|
|
9749
10054
|
]
|
|
9750
10055
|
}
|
|
9751
10056
|
);
|
|
@@ -10520,6 +10825,7 @@ var SwitchControl = function SwitchControl2({
|
|
|
10520
10825
|
"inline-flex h-full w-full items-center justify-center gap-1.5 whitespace-nowrap rounded-[var(--switch-control-radius)] px-[var(--switch-control-padding-x)] font-medium text-[length:var(--switch-font-size)]",
|
|
10521
10826
|
"text-muted-foreground transition-[background-color,box-shadow,color] duration-[var(--switch-duration)] ease-[var(--switch-easing)]",
|
|
10522
10827
|
"peer-checked:bg-background peer-checked:text-foreground peer-checked:shadow-sm",
|
|
10828
|
+
controlFocusProxyClassName,
|
|
10523
10829
|
"",
|
|
10524
10830
|
"peer-disabled:pointer-events-none peer-disabled:text-muted-foreground/60",
|
|
10525
10831
|
"[&_svg]:size-[var(--switch-icon-size)]"
|
|
@@ -11030,7 +11336,7 @@ function TabsContent({ className, forceMount, keepMounted, variant, ...props })
|
|
|
11030
11336
|
);
|
|
11031
11337
|
}
|
|
11032
11338
|
var fieldMessageClassName = "text-xs text-muted-foreground";
|
|
11033
|
-
var fieldErrorClassName = "text-xs font-medium text-destructive";
|
|
11339
|
+
var fieldErrorClassName = "text-xs font-medium text-destructive-strong";
|
|
11034
11340
|
function getTextareaStyle(size, style) {
|
|
11035
11341
|
const token = textareaTokens.sizes[size];
|
|
11036
11342
|
return {
|
|
@@ -11065,6 +11371,7 @@ var Textarea = ({
|
|
|
11065
11371
|
description,
|
|
11066
11372
|
error,
|
|
11067
11373
|
fieldClassName,
|
|
11374
|
+
tone = "bordered",
|
|
11068
11375
|
id,
|
|
11069
11376
|
onChange,
|
|
11070
11377
|
onValueChange,
|
|
@@ -11090,10 +11397,10 @@ var Textarea = ({
|
|
|
11090
11397
|
"textarea",
|
|
11091
11398
|
{
|
|
11092
11399
|
className: cn(
|
|
11093
|
-
"flex min-h-[var(--textarea-min-height)] w-full resize-y rounded-[var(--textarea-radius)]
|
|
11094
|
-
"px-[var(--textarea-padding-x)] py-[var(--textarea-padding-y)] text-[length:var(--textarea-font-size)] text-foreground
|
|
11400
|
+
"flex min-h-[var(--textarea-min-height)] w-full resize-y rounded-[var(--textarea-radius)]",
|
|
11401
|
+
"px-[var(--textarea-padding-x)] py-[var(--textarea-padding-y)] text-[length:var(--textarea-font-size)] text-foreground",
|
|
11095
11402
|
"transition-[background-color,border-color,box-shadow,color] duration-micro ease-out placeholder:text-muted-foreground",
|
|
11096
|
-
formControlFocusClassNames.textarea,
|
|
11403
|
+
tone === "bordered" ? `border border-input bg-background ${formControlFocusClassNames.textarea}` : "border-0 bg-transparent shadow-none",
|
|
11097
11404
|
"disabled:cursor-not-allowed disabled:opacity-50 read-only:cursor-default read-only:bg-muted/70",
|
|
11098
11405
|
formControlInvalidClassNames.textarea,
|
|
11099
11406
|
className
|
|
@@ -11164,7 +11471,8 @@ function isThemeSwitcherValue(value) {
|
|
|
11164
11471
|
var ThemeSwitcher = ({
|
|
11165
11472
|
value,
|
|
11166
11473
|
defaultValue = "system",
|
|
11167
|
-
onChange,
|
|
11474
|
+
onChange: legacyOnChange,
|
|
11475
|
+
onValueChange: onChange = legacyOnChange,
|
|
11168
11476
|
disabled = false,
|
|
11169
11477
|
size = "medium",
|
|
11170
11478
|
name,
|
|
@@ -11312,7 +11620,8 @@ function playToggleSound(lastPlayedAt) {
|
|
|
11312
11620
|
var ThemeToggle = ({
|
|
11313
11621
|
value,
|
|
11314
11622
|
defaultValue,
|
|
11315
|
-
onChange,
|
|
11623
|
+
onChange: legacyOnChange,
|
|
11624
|
+
onValueChange: onChange = legacyOnChange,
|
|
11316
11625
|
size = "md",
|
|
11317
11626
|
sound = false,
|
|
11318
11627
|
applyToDocument = false,
|
|
@@ -11724,6 +12033,7 @@ var Toggle = ({
|
|
|
11724
12033
|
"aria-hidden": "true",
|
|
11725
12034
|
className: cn(
|
|
11726
12035
|
"relative inline-flex h-[var(--toggle-track-height)] w-[var(--toggle-track-width)] items-center rounded-[var(--toggle-radius)] border bg-[var(--toggle-track-off)] p-px",
|
|
12036
|
+
controlFocusProxyClassName,
|
|
11727
12037
|
"border-[var(--toggle-track-border)] transition-[background-color,border-color] duration-[var(--toggle-duration)] ease-[var(--toggle-easing)]",
|
|
11728
12038
|
"peer-checked:bg-[var(--toggle-track-on)]",
|
|
11729
12039
|
"peer-checked:[&>span]:translate-x-[var(--toggle-thumb-translate)] peer-checked:[&>span]:text-[var(--toggle-icon-on)]",
|
|
@@ -12264,6 +12574,6 @@ var TreeIcon = ({ icon, hasChildren = false, className, ...props }) => {
|
|
|
12264
12574
|
};
|
|
12265
12575
|
var TreeLabel = ({ className, ...props }) => /* @__PURE__ */ jsx("span", { className: cn("font flex-1 truncate text-sm", className), ...props });
|
|
12266
12576
|
|
|
12267
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertContent, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertIcon, AlertTitle, AlertToolbar, AnimateIn, AnimateInGroup, AnimateSwap, AnimatedThemeToggler, AspectRatio, Avatar, AvatarFallback, AvatarGroup, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonLink, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, CheckboxGroup, CodeBlock, Collapse, CollapseGroup, Combobox, ComboboxEmpty, ComboboxGroupSub, ComboboxInput, ComboboxList, ComboboxOptionItem, ComboboxRoot, ComboboxSeparator, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandResults, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRoot, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyCodeButton, CopyIdButton, CopyLinkButton, CopyMenuItem, CopyableField, Description, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuEmpty, DropdownMenuFilterInput, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateIcon, EmptyStateRoot, ErrorSurface as Error, ErrorMessage, Field, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Gauge, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Kbd, Label, LoadingDots, Menu, MenuButton, MenuContainer, MenuItem, MenuItemLocked, MenuLink, MenuSection, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, MultiSelectContent, MultiSelectRoot, MultiSelectRow, MultiSelectTrigger, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Note, Pagination, Popover, PopoverAnchor, PopoverContent, PopoverPositioner, PopoverTrigger, Progress, ProjectBanner, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, Scroller, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShowMore, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonText, Slider, Spinner2 as Spinner, SplitButton, SplitButtonMenuItem, Stack, StatusDot, Switch, Table, TableBody, TableCaption, TableCell, TableCol, TableColgroup, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeSwitcher, ThemeToggle, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TreeExpander, TreeIcon, TreeLabel, TreeLines, TreeNode, TreeNodeContent, TreeNodeTrigger, TreeProvider, TreeView, alertVariants, badgeVariants, buttonVariants, containerWidths, flexLayouts, gridLayouts, labelVariants, navigationMenuTriggerStyle, progressIndicatorVariants, progressVariants, tabsContentVariants, tabsListVariants, tabsTriggerVariants, toggleGroupItemVariants, toggleGroupVariants, useCopyToClipboard, useFormField, useToasts, zIndex };
|
|
12577
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertContent, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertIcon, AlertTitle, AlertToolbar, AnimateIn, AnimateInGroup, AnimateSwap, AnimatedThemeToggler, AspectRatio, Avatar, AvatarFallback, AvatarGroup, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonLink, Card, CardBody, CardContent, CardDescription, CardFooter, CardHeader, CardIcon, CardRoot, CardTitle, Checkbox, CheckboxGroup, CodeBlock, Collapse, CollapseGroup, Combobox, ComboboxEmpty, ComboboxGroupSub, ComboboxInput, ComboboxList, ComboboxOptionItem, ComboboxRoot, ComboboxSeparator, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandResults, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRoot, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyCodeButton, CopyIdButton, CopyLinkButton, CopyMenuItem, CopyableField, Description, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuEmpty, DropdownMenuFilterInput, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateIcon, EmptyStateRoot, ErrorSurface as Error, ErrorMessage, Field, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Gauge, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Kbd, Label, LoadingDots, Menu, MenuButton, MenuContainer, MenuItem, MenuItemLocked, MenuLink, MenuSection, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, MultiSelectContent, MultiSelectRoot, MultiSelectRow, MultiSelectTrigger, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Note, Pagination, Popover, PopoverAnchor, PopoverContent, PopoverPositioner, PopoverTrigger, Progress, ProjectBanner, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, Scroller, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShowMore, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonText, Slider, Spinner2 as Spinner, SplitButton, SplitButtonMenuItem, Stack, StatusDot, Switch, Table, TableBody, TableCaption, TableCell, TableCol, TableColgroup, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeSwitcher, ThemeToggle, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TreeExpander, TreeIcon, TreeLabel, TreeLines, TreeNode, TreeNodeContent, TreeNodeTrigger, TreeProvider, TreeView, alertVariants, badgeVariants, buttonVariants, cardVariants, containerWidths, flexLayouts, gridLayouts, labelVariants, navigationMenuTriggerStyle, progressIndicatorVariants, progressVariants, tabsContentVariants, tabsListVariants, tabsTriggerVariants, toggleGroupItemVariants, toggleGroupVariants, useCopyToClipboard, useFormField, useToasts, zIndex };
|
|
12268
12578
|
//# sourceMappingURL=canonical.js.map
|
|
12269
12579
|
//# sourceMappingURL=canonical.js.map
|