@assure-one/design-system 1.31.0 → 1.33.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/README.md +61 -6
- package/codemods/0.2.0-radix-migration.mjs +315 -0
- package/codemods/README.md +365 -0
- package/codemods/lib/css-selectors.mjs +33 -0
- package/codemods/lib/css-values.mjs +223 -0
- package/codemods/lib/ds-stylesheet.mjs +168 -0
- package/codemods/lib/environment.mjs +72 -0
- package/codemods/lib/files.mjs +100 -0
- package/codemods/lib/forms.mjs +253 -0
- package/codemods/lib/jsx.mjs +0 -0
- package/codemods/lib/ledger.mjs +84 -0
- package/codemods/lib/registry.mjs +32 -0
- package/codemods/lib/report.mjs +119 -0
- package/codemods/lib/runner.mjs +164 -0
- package/codemods/run.mjs +161 -0
- package/codemods/transforms/cm-14-hidden-mirrors.mjs +275 -0
- package/codemods/transforms/cm-15-dom-selectors.mjs +573 -0
- package/codemods/transforms/cm-16-globals-css.mjs +487 -0
- package/codemods/transforms/cm-20-select-sentinels.mjs +442 -0
- package/dist/css/base.css +60 -0
- package/dist/css/components.css +7 -0
- package/dist/css/legacy-aliases.css +665 -0
- package/dist/css/shadcn.css +155 -0
- package/dist/css/tailwind.css +296 -0
- package/dist/css/tokens.css +630 -0
- package/dist/index.d.ts +807 -27
- package/dist/index.js +2038 -683
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/system-BDU18fVg.d.ts +559 -0
- package/dist/testing/index.cjs +458 -0
- package/dist/testing/index.d.cts +253 -0
- package/dist/testing/index.d.ts +253 -0
- package/dist/testing/index.js +452 -0
- package/dist/testing/setup.cjs +123 -0
- package/dist/testing/setup.js +121 -0
- package/dist/testing/style-stub.cjs +7 -0
- package/dist/testing/style-stub.js +5 -0
- package/dist/tokens/index.d.ts +50 -439
- package/dist/tokens/index.js +557 -50
- package/dist/tokens/index.js.map +1 -1
- package/package.json +74 -5
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as React39 from 'react';
|
|
3
|
-
import { forwardRef, useId, useRef, useState, useEffect, useCallback, useImperativeHandle, useMemo, createContext, Fragment as Fragment$1, useContext } from 'react';
|
|
3
|
+
import { forwardRef, useId, useRef, useState, useEffect, useCallback, useImperativeHandle, useMemo, createContext, Fragment as Fragment$1, useSyncExternalStore, useContext } from 'react';
|
|
4
4
|
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
5
5
|
import { clsx } from 'clsx';
|
|
6
|
-
import {
|
|
6
|
+
import { extendTailwindMerge } from 'tailwind-merge';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
9
9
|
import { cva } from 'class-variance-authority';
|
|
@@ -11,13 +11,13 @@ import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
|
|
|
11
11
|
import { Slot } from '@radix-ui/react-slot';
|
|
12
12
|
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
13
13
|
import { DayPicker } from 'react-day-picker';
|
|
14
|
-
import
|
|
14
|
+
import { parse, isValid, format, startOfMonth, startOfYear, subYears, endOfMonth, endOfYear, addYears } from 'date-fns';
|
|
15
15
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
16
|
+
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
16
17
|
import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
|
|
17
18
|
import { Command } from 'cmdk';
|
|
18
19
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
19
20
|
import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
|
|
20
|
-
import { parse, isValid, format } from 'date-fns';
|
|
21
21
|
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
22
22
|
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
23
23
|
import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
|
|
@@ -42,52 +42,52 @@ import * as VisuallyHiddenPrimitive from '@radix-ui/react-visually-hidden';
|
|
|
42
42
|
// src/tokens/reference.ts
|
|
43
43
|
var colors = {
|
|
44
44
|
/* Surfaces */
|
|
45
|
-
bg: "#
|
|
46
|
-
bg2: "#
|
|
47
|
-
bg3: "#
|
|
48
|
-
surface: "#
|
|
49
|
-
surface2: "#
|
|
45
|
+
bg: "#ffffff",
|
|
46
|
+
bg2: "#f1f3f8",
|
|
47
|
+
bg3: "#e7eaf1",
|
|
48
|
+
surface: "#ffffff",
|
|
49
|
+
surface2: "#f7f8fc",
|
|
50
50
|
/* Foreground */
|
|
51
|
-
fg: "#
|
|
52
|
-
fg2: "#
|
|
53
|
-
fg3: "#
|
|
54
|
-
fg4: "#
|
|
55
|
-
fg5: "#
|
|
51
|
+
fg: "#0a0a0a",
|
|
52
|
+
fg2: "#38383b",
|
|
53
|
+
fg3: "#5f5f64",
|
|
54
|
+
fg4: "#6b6b70",
|
|
55
|
+
fg5: "#9a9aa0",
|
|
56
56
|
/* Rules */
|
|
57
|
-
rule: "#
|
|
58
|
-
ruleSoft: "#
|
|
59
|
-
ruleStrong: "#
|
|
57
|
+
rule: "#e4e7ef",
|
|
58
|
+
ruleSoft: "#eef0f5",
|
|
59
|
+
ruleStrong: "#d3d8e3",
|
|
60
60
|
/* Accent (cyan) */
|
|
61
|
-
accent: "#
|
|
62
|
-
accent2: "#
|
|
63
|
-
accentTint: "#
|
|
64
|
-
accentHover: "#
|
|
65
|
-
accentActive: "#
|
|
61
|
+
accent: "#6c42f8",
|
|
62
|
+
accent2: "#5127e8",
|
|
63
|
+
accentTint: "#efeaff",
|
|
64
|
+
accentHover: "#5e35f2",
|
|
65
|
+
accentActive: "#5127e8",
|
|
66
66
|
/* Pro (purple) */
|
|
67
|
-
proBg: "#
|
|
68
|
-
proBgHover: "#
|
|
69
|
-
proBgActive: "#
|
|
70
|
-
proFg: "#
|
|
71
|
-
proHover: "#
|
|
72
|
-
proActive: "#
|
|
73
|
-
proDisabled: "#
|
|
74
|
-
proLine: "#
|
|
67
|
+
proBg: "#f4f1ff",
|
|
68
|
+
proBgHover: "#eee9ff",
|
|
69
|
+
proBgActive: "#e4ddff",
|
|
70
|
+
proFg: "#6c42f8",
|
|
71
|
+
proHover: "#5e35f2",
|
|
72
|
+
proActive: "#5127e8",
|
|
73
|
+
proDisabled: "#b7a7f3",
|
|
74
|
+
proLine: "#7b5bd8",
|
|
75
75
|
/* Disabled */
|
|
76
|
-
fgDisabled: "#
|
|
77
|
-
bgDisabled: "#
|
|
76
|
+
fgDisabled: "#a7a7ac",
|
|
77
|
+
bgDisabled: "#f3f3f1",
|
|
78
78
|
/* Status */
|
|
79
|
-
successFg: "#
|
|
80
|
-
successBg: "#
|
|
81
|
-
successLine: "#
|
|
82
|
-
warningFg: "#
|
|
83
|
-
warningBg: "#
|
|
84
|
-
warningLine: "#
|
|
85
|
-
dangerFg: "#
|
|
86
|
-
dangerBg: "#
|
|
87
|
-
dangerLine: "#
|
|
79
|
+
successFg: "#1f7a3d",
|
|
80
|
+
successBg: "#eaf6ee",
|
|
81
|
+
successLine: "#c5e5cf",
|
|
82
|
+
warningFg: "#8a4606",
|
|
83
|
+
warningBg: "#fff3e5",
|
|
84
|
+
warningLine: "#f5d5a8",
|
|
85
|
+
dangerFg: "#c43838",
|
|
86
|
+
dangerBg: "#fbeaea",
|
|
87
|
+
dangerLine: "#ecc5c5",
|
|
88
88
|
/* On-brand */
|
|
89
|
-
fgOnAccent: "#
|
|
90
|
-
fgOnPro: "#
|
|
89
|
+
fgOnAccent: "#ffffff",
|
|
90
|
+
fgOnPro: "#ffffff"
|
|
91
91
|
};
|
|
92
92
|
var typography = {
|
|
93
93
|
family: {
|
|
@@ -113,17 +113,17 @@ var radii = {
|
|
|
113
113
|
full: "9999px"
|
|
114
114
|
};
|
|
115
115
|
var shadows = {
|
|
116
|
-
quiet: "0 1px 2px rgba(
|
|
117
|
-
card: "0
|
|
118
|
-
pop: "0
|
|
119
|
-
focusRing: "0 0 0 2px
|
|
116
|
+
quiet: "0 1px 2px rgba(16, 20, 36, 0.05)",
|
|
117
|
+
card: "0 1px 2px rgba(16, 20, 36, 0.04), 0 4px 12px -4px rgba(16, 20, 36, 0.08)",
|
|
118
|
+
pop: "0 0 0 1px rgba(16, 20, 36, 0.03), 0 2px 4px -1px rgba(16, 20, 36, 0.06), 0 12px 28px -6px rgba(16, 20, 36, 0.14)",
|
|
119
|
+
focusRing: "0 0 0 2px #ffffff, 0 0 0 4px #6c42f8"
|
|
120
120
|
};
|
|
121
121
|
var overlays = {
|
|
122
122
|
hover: "rgba(10, 10, 10, 0.03)",
|
|
123
123
|
active: "rgba(10, 10, 10, 0.05)"
|
|
124
124
|
};
|
|
125
125
|
var layout = {
|
|
126
|
-
shellSidebarWidth: "
|
|
126
|
+
shellSidebarWidth: "200px",
|
|
127
127
|
shellHeaderHeight: "56px",
|
|
128
128
|
contentPad: "32px"
|
|
129
129
|
};
|
|
@@ -144,10 +144,10 @@ var spacing = {
|
|
|
144
144
|
180: "180px"
|
|
145
145
|
};
|
|
146
146
|
var surfaces = {
|
|
147
|
-
bg: "#
|
|
148
|
-
bg2: "#
|
|
149
|
-
surface: "#
|
|
150
|
-
surface2: "#
|
|
147
|
+
bg: "#ffffff",
|
|
148
|
+
bg2: "#f1f3f8",
|
|
149
|
+
surface: "#ffffff",
|
|
150
|
+
surface2: "#f7f8fc"
|
|
151
151
|
};
|
|
152
152
|
var motion = {
|
|
153
153
|
ease: {
|
|
@@ -163,6 +163,28 @@ var motion = {
|
|
|
163
163
|
slow: "400ms"
|
|
164
164
|
}
|
|
165
165
|
};
|
|
166
|
+
var iconSizes = {
|
|
167
|
+
xs: "12px",
|
|
168
|
+
sm: "14px",
|
|
169
|
+
md: "16px",
|
|
170
|
+
lg: "20px"
|
|
171
|
+
};
|
|
172
|
+
var zIndex = {
|
|
173
|
+
base: 0,
|
|
174
|
+
sticky: 100,
|
|
175
|
+
overlay: 200,
|
|
176
|
+
modal: 300,
|
|
177
|
+
popover: 400,
|
|
178
|
+
toast: 500,
|
|
179
|
+
tooltip: 600
|
|
180
|
+
};
|
|
181
|
+
var breakpoints = {
|
|
182
|
+
sm: "40rem",
|
|
183
|
+
md: "48rem",
|
|
184
|
+
lg: "64rem",
|
|
185
|
+
xl: "80rem",
|
|
186
|
+
"2xl": "96rem"
|
|
187
|
+
};
|
|
166
188
|
var reference = {
|
|
167
189
|
colors,
|
|
168
190
|
typography,
|
|
@@ -172,7 +194,10 @@ var reference = {
|
|
|
172
194
|
layout,
|
|
173
195
|
motion,
|
|
174
196
|
spacing,
|
|
175
|
-
surfaces
|
|
197
|
+
surfaces,
|
|
198
|
+
iconSizes,
|
|
199
|
+
zIndex,
|
|
200
|
+
breakpoints
|
|
176
201
|
};
|
|
177
202
|
|
|
178
203
|
// src/tokens/system.ts
|
|
@@ -370,6 +395,54 @@ var systemTokens = {
|
|
|
370
395
|
}
|
|
371
396
|
}
|
|
372
397
|
},
|
|
398
|
+
/**
|
|
399
|
+
* Control sizing (amendment A1, W2-03). One outer height per size name, with
|
|
400
|
+
* the padding, gap, label size and glyph size derived from it.
|
|
401
|
+
*
|
|
402
|
+
* **Nothing reads these yet** and the numbers are gated on decision D5
|
|
403
|
+
* (implementation plan §3) — what each control renders *today* is in
|
|
404
|
+
* `docs/design-system/control-sizes.md`, and W2-05 is the task that unifies
|
|
405
|
+
* them. Referencing the scale here is also what keeps the custom properties
|
|
406
|
+
* in the published stylesheet, so `[data-ds-density="compact"]` has something
|
|
407
|
+
* to re-point.
|
|
408
|
+
*/
|
|
409
|
+
control: {
|
|
410
|
+
height: {
|
|
411
|
+
xs: "var(--control-height-xs)",
|
|
412
|
+
sm: "var(--control-height-sm)",
|
|
413
|
+
md: "var(--control-height-md)",
|
|
414
|
+
lg: "var(--control-height-lg)",
|
|
415
|
+
xl: "var(--control-height-xl)"
|
|
416
|
+
},
|
|
417
|
+
paddingX: {
|
|
418
|
+
xs: "var(--control-padding-x-xs)",
|
|
419
|
+
sm: "var(--control-padding-x-sm)",
|
|
420
|
+
md: "var(--control-padding-x-md)",
|
|
421
|
+
lg: "var(--control-padding-x-lg)",
|
|
422
|
+
xl: "var(--control-padding-x-xl)"
|
|
423
|
+
},
|
|
424
|
+
gap: {
|
|
425
|
+
xs: "var(--control-gap-xs)",
|
|
426
|
+
sm: "var(--control-gap-sm)",
|
|
427
|
+
md: "var(--control-gap-md)",
|
|
428
|
+
lg: "var(--control-gap-lg)",
|
|
429
|
+
xl: "var(--control-gap-xl)"
|
|
430
|
+
},
|
|
431
|
+
fontSize: {
|
|
432
|
+
xs: "var(--control-font-size-xs)",
|
|
433
|
+
sm: "var(--control-font-size-sm)",
|
|
434
|
+
md: "var(--control-font-size-md)",
|
|
435
|
+
lg: "var(--control-font-size-lg)",
|
|
436
|
+
xl: "var(--control-font-size-xl)"
|
|
437
|
+
},
|
|
438
|
+
icon: {
|
|
439
|
+
xs: "var(--control-icon-xs)",
|
|
440
|
+
sm: "var(--control-icon-sm)",
|
|
441
|
+
md: "var(--control-icon-md)",
|
|
442
|
+
lg: "var(--control-icon-lg)",
|
|
443
|
+
xl: "var(--control-icon-xl)"
|
|
444
|
+
}
|
|
445
|
+
},
|
|
373
446
|
layout: {
|
|
374
447
|
shellSidebarWidth: "var(--shell-sidebar-w)",
|
|
375
448
|
shellSidebarRailWidth: "var(--shell-sidebar-w-rail)",
|
|
@@ -386,6 +459,35 @@ var systemTokens = {
|
|
|
386
459
|
tooltip: "var(--z-tooltip)"
|
|
387
460
|
}
|
|
388
461
|
};
|
|
462
|
+
var split = (values) => values.split(" ");
|
|
463
|
+
var DS_RADIUS = split(
|
|
464
|
+
"badges btn buttons card cards general icon input inputs pill control surface surface-sm badge"
|
|
465
|
+
);
|
|
466
|
+
var DS_SHADOW = split("card focus focus-ring focus-ring-field pop quiet subtle flat raised floating overlay");
|
|
467
|
+
var DS_EASE = split("out-quart");
|
|
468
|
+
var DS_FONT = split("body display");
|
|
469
|
+
var DS_TEXT = split(
|
|
470
|
+
"display title-page title-section title-sub body body-sm label helper caption micro overline code"
|
|
471
|
+
);
|
|
472
|
+
var DS_ANIMATE = split("accordion-down accordion-up collapsible-down collapsible-up pulse-soft");
|
|
473
|
+
var isDsShadowVar = (value) => /^\[var\(--shadow-[a-z0-9-]*\)\]$/.test(value);
|
|
474
|
+
var dsMergeConfig = {
|
|
475
|
+
extend: {
|
|
476
|
+
theme: {
|
|
477
|
+
radius: DS_RADIUS,
|
|
478
|
+
shadow: DS_SHADOW,
|
|
479
|
+
ease: DS_EASE,
|
|
480
|
+
font: DS_FONT,
|
|
481
|
+
text: DS_TEXT,
|
|
482
|
+
animate: DS_ANIMATE
|
|
483
|
+
},
|
|
484
|
+
classGroups: {
|
|
485
|
+
shadow: [{ shadow: [isDsShadowVar] }]
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
};
|
|
489
|
+
var extendMerge = extendTailwindMerge;
|
|
490
|
+
var twMerge = extendMerge(dsMergeConfig);
|
|
389
491
|
function cn(...inputs) {
|
|
390
492
|
return twMerge(clsx(inputs));
|
|
391
493
|
}
|
|
@@ -2454,6 +2556,261 @@ var AccordionContent = React39.forwardRef(function AccordionContent2({ children,
|
|
|
2454
2556
|
);
|
|
2455
2557
|
});
|
|
2456
2558
|
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
|
|
2559
|
+
|
|
2560
|
+
// src/foundation/anatomy/define.ts
|
|
2561
|
+
var ROOT_PART = "root";
|
|
2562
|
+
var NAME_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
|
|
2563
|
+
var registry = /* @__PURE__ */ new Map();
|
|
2564
|
+
function assertName(value, what) {
|
|
2565
|
+
if (!NAME_PATTERN.test(value)) {
|
|
2566
|
+
throw new TypeError(
|
|
2567
|
+
`anatomy: ${what} must be lower-case kebab-case, received ${JSON.stringify(value)}`
|
|
2568
|
+
);
|
|
2569
|
+
}
|
|
2570
|
+
}
|
|
2571
|
+
function defineAnatomy(name, parts) {
|
|
2572
|
+
assertName(name, "component name");
|
|
2573
|
+
if (parts.length === 0) {
|
|
2574
|
+
throw new TypeError(`anatomy: ${name} must declare at least one part`);
|
|
2575
|
+
}
|
|
2576
|
+
const seen = /* @__PURE__ */ new Set();
|
|
2577
|
+
for (const part of parts) {
|
|
2578
|
+
assertName(part, `part name of ${name}`);
|
|
2579
|
+
if (seen.has(part)) {
|
|
2580
|
+
throw new TypeError(`anatomy: ${name} declares the part ${JSON.stringify(part)} twice`);
|
|
2581
|
+
}
|
|
2582
|
+
seen.add(part);
|
|
2583
|
+
}
|
|
2584
|
+
if (registry.has(name)) {
|
|
2585
|
+
throw new TypeError(`anatomy: ${name} is already registered`);
|
|
2586
|
+
}
|
|
2587
|
+
const attr = (part) => part === ROOT_PART ? name : `${name}-${String(part)}`;
|
|
2588
|
+
const anatomy = {
|
|
2589
|
+
name,
|
|
2590
|
+
parts: [...parts],
|
|
2591
|
+
attrs: parts.map((part) => attr(part)),
|
|
2592
|
+
attr,
|
|
2593
|
+
has: (part) => seen.has(part)
|
|
2594
|
+
};
|
|
2595
|
+
registry.set(name, anatomy);
|
|
2596
|
+
return anatomy;
|
|
2597
|
+
}
|
|
2598
|
+
|
|
2599
|
+
// src/foundation/anatomy/slots.ts
|
|
2600
|
+
defineAnatomy("agreement-viewer", ["root"]);
|
|
2601
|
+
defineAnatomy("message-composer", [
|
|
2602
|
+
"root",
|
|
2603
|
+
"header",
|
|
2604
|
+
"chips",
|
|
2605
|
+
"editor",
|
|
2606
|
+
"below-editor",
|
|
2607
|
+
"footer"
|
|
2608
|
+
]);
|
|
2609
|
+
var codeAnatomy = defineAnatomy("code", ["root", "content"]);
|
|
2610
|
+
var kbdAnatomy = defineAnatomy("kbd", ["root"]);
|
|
2611
|
+
var buttonAnatomy = defineAnatomy("button", ["root", "icon-start", "icon-end", "spinner"]);
|
|
2612
|
+
var linkButtonAnatomy = defineAnatomy("link-button", ["root", "icon-start", "icon-end"]);
|
|
2613
|
+
var badgeAnatomy = defineAnatomy("badge", ["root", "dot", "icon"]);
|
|
2614
|
+
var inputAnatomy = defineAnatomy("input", [
|
|
2615
|
+
"root",
|
|
2616
|
+
"label",
|
|
2617
|
+
"icon-start",
|
|
2618
|
+
"icon-end",
|
|
2619
|
+
"password-toggle",
|
|
2620
|
+
"error"
|
|
2621
|
+
]);
|
|
2622
|
+
var textareaAnatomy = defineAnatomy("textarea", ["root", "label", "error", "count"]);
|
|
2623
|
+
var searchInputAnatomy = defineAnatomy("search-input", [
|
|
2624
|
+
"root",
|
|
2625
|
+
"control",
|
|
2626
|
+
"icon",
|
|
2627
|
+
"clear"
|
|
2628
|
+
]);
|
|
2629
|
+
var selectAnatomy = defineAnatomy("select", [
|
|
2630
|
+
"trigger",
|
|
2631
|
+
"icon",
|
|
2632
|
+
"content",
|
|
2633
|
+
"viewport",
|
|
2634
|
+
"item",
|
|
2635
|
+
"item-indicator",
|
|
2636
|
+
"label",
|
|
2637
|
+
"separator",
|
|
2638
|
+
"scroll-up-button",
|
|
2639
|
+
"scroll-down-button"
|
|
2640
|
+
]);
|
|
2641
|
+
var checkboxAnatomy = defineAnatomy("checkbox", ["root", "indicator", "label"]);
|
|
2642
|
+
var radioGroupAnatomy = defineAnatomy("radio-group", [
|
|
2643
|
+
"root",
|
|
2644
|
+
"item",
|
|
2645
|
+
"indicator",
|
|
2646
|
+
"label"
|
|
2647
|
+
]);
|
|
2648
|
+
var switchAnatomy = defineAnatomy("switch", ["root", "thumb", "label"]);
|
|
2649
|
+
var labelAnatomy = defineAnatomy("label", ["root", "required"]);
|
|
2650
|
+
var fileUploadAnatomy = defineAnatomy("file-upload", [
|
|
2651
|
+
"root",
|
|
2652
|
+
"dropzone",
|
|
2653
|
+
"input",
|
|
2654
|
+
"error"
|
|
2655
|
+
]);
|
|
2656
|
+
var dialogAnatomy = defineAnatomy("dialog", [
|
|
2657
|
+
"overlay",
|
|
2658
|
+
"content",
|
|
2659
|
+
"header",
|
|
2660
|
+
"title",
|
|
2661
|
+
"description",
|
|
2662
|
+
"footer",
|
|
2663
|
+
"close"
|
|
2664
|
+
]);
|
|
2665
|
+
var alertDialogAnatomy = defineAnatomy("alert-dialog", [
|
|
2666
|
+
"overlay",
|
|
2667
|
+
"content",
|
|
2668
|
+
"header",
|
|
2669
|
+
"title",
|
|
2670
|
+
"description",
|
|
2671
|
+
"footer",
|
|
2672
|
+
"action",
|
|
2673
|
+
"cancel"
|
|
2674
|
+
]);
|
|
2675
|
+
var sheetAnatomy = defineAnatomy("sheet", [
|
|
2676
|
+
"overlay",
|
|
2677
|
+
"content",
|
|
2678
|
+
"header",
|
|
2679
|
+
"title",
|
|
2680
|
+
"description",
|
|
2681
|
+
"footer",
|
|
2682
|
+
"close"
|
|
2683
|
+
]);
|
|
2684
|
+
var sideDrawerAnatomy = defineAnatomy("side-drawer", [
|
|
2685
|
+
"overlay",
|
|
2686
|
+
"root",
|
|
2687
|
+
"header",
|
|
2688
|
+
"heading",
|
|
2689
|
+
"subtitle",
|
|
2690
|
+
"close",
|
|
2691
|
+
"body",
|
|
2692
|
+
"footer"
|
|
2693
|
+
]);
|
|
2694
|
+
var popoverAnatomy = defineAnatomy("popover", ["content"]);
|
|
2695
|
+
var dropdownMenuAnatomy = defineAnatomy("dropdown-menu", [
|
|
2696
|
+
"content",
|
|
2697
|
+
"item",
|
|
2698
|
+
"checkbox-item",
|
|
2699
|
+
"radio-item",
|
|
2700
|
+
"item-indicator",
|
|
2701
|
+
"label",
|
|
2702
|
+
"separator",
|
|
2703
|
+
"shortcut",
|
|
2704
|
+
"sub-trigger",
|
|
2705
|
+
"sub-content"
|
|
2706
|
+
]);
|
|
2707
|
+
var contextMenuAnatomy = defineAnatomy("context-menu", [
|
|
2708
|
+
"content",
|
|
2709
|
+
"item",
|
|
2710
|
+
"checkbox-item",
|
|
2711
|
+
"radio-item",
|
|
2712
|
+
"item-indicator",
|
|
2713
|
+
"label",
|
|
2714
|
+
"separator",
|
|
2715
|
+
"shortcut",
|
|
2716
|
+
"sub-trigger",
|
|
2717
|
+
"sub-content"
|
|
2718
|
+
]);
|
|
2719
|
+
var tooltipAnatomy = defineAnatomy("tooltip", ["content"]);
|
|
2720
|
+
var toastAnatomy = defineAnatomy("toast", [
|
|
2721
|
+
"region",
|
|
2722
|
+
"root",
|
|
2723
|
+
"icon",
|
|
2724
|
+
"title",
|
|
2725
|
+
"description",
|
|
2726
|
+
"action",
|
|
2727
|
+
"close"
|
|
2728
|
+
]);
|
|
2729
|
+
var tableAnatomy = defineAnatomy("table", [
|
|
2730
|
+
"root",
|
|
2731
|
+
"wrapper",
|
|
2732
|
+
"header",
|
|
2733
|
+
"body",
|
|
2734
|
+
"footer",
|
|
2735
|
+
"row",
|
|
2736
|
+
"head",
|
|
2737
|
+
"cell",
|
|
2738
|
+
"caption"
|
|
2739
|
+
]);
|
|
2740
|
+
var dataTableAnatomy = defineAnatomy("data-table", [
|
|
2741
|
+
"root",
|
|
2742
|
+
"toolbar",
|
|
2743
|
+
"spacer",
|
|
2744
|
+
"results-count",
|
|
2745
|
+
"header",
|
|
2746
|
+
"body",
|
|
2747
|
+
"row",
|
|
2748
|
+
"head",
|
|
2749
|
+
"head-button",
|
|
2750
|
+
"head-indicator",
|
|
2751
|
+
"cell",
|
|
2752
|
+
"checkbox-cell"
|
|
2753
|
+
]);
|
|
2754
|
+
var paginationAnatomy = defineAnatomy("pagination", [
|
|
2755
|
+
"root",
|
|
2756
|
+
"label",
|
|
2757
|
+
"pages",
|
|
2758
|
+
"previous",
|
|
2759
|
+
"next",
|
|
2760
|
+
"page",
|
|
2761
|
+
"ellipsis"
|
|
2762
|
+
]);
|
|
2763
|
+
var shellAnatomy = defineAnatomy("shell", ["root", "main", "content"]);
|
|
2764
|
+
var sidebarAnatomy = defineAnatomy("sidebar", [
|
|
2765
|
+
"root",
|
|
2766
|
+
"trigger",
|
|
2767
|
+
"pin",
|
|
2768
|
+
"brand",
|
|
2769
|
+
"brand-text",
|
|
2770
|
+
"section",
|
|
2771
|
+
"section-header",
|
|
2772
|
+
"section-label",
|
|
2773
|
+
"link",
|
|
2774
|
+
"link-label",
|
|
2775
|
+
"link-action",
|
|
2776
|
+
"link-badge",
|
|
2777
|
+
"group",
|
|
2778
|
+
"group-link",
|
|
2779
|
+
"group-trigger",
|
|
2780
|
+
"group-content",
|
|
2781
|
+
"footer",
|
|
2782
|
+
"user",
|
|
2783
|
+
"user-name",
|
|
2784
|
+
"user-subtitle"
|
|
2785
|
+
]);
|
|
2786
|
+
var sidebarBrandSwitcherAnatomy = defineAnatomy("sidebar-brand-switcher", [
|
|
2787
|
+
"root",
|
|
2788
|
+
"trigger",
|
|
2789
|
+
"icon"
|
|
2790
|
+
]);
|
|
2791
|
+
var textAnatomy = defineAnatomy("text", ["root"]);
|
|
2792
|
+
var headingAnatomy = defineAnatomy("heading", ["root"]);
|
|
2793
|
+
var stackAnatomy = defineAnatomy("stack", ["root"]);
|
|
2794
|
+
var inlineAnatomy = defineAnatomy("inline", ["root"]);
|
|
2795
|
+
var surfaceAnatomy = defineAnatomy("surface", ["root"]);
|
|
2796
|
+
|
|
2797
|
+
// src/foundation/anatomy/slot.ts
|
|
2798
|
+
function slot(anatomy, part) {
|
|
2799
|
+
return { "data-slot": anatomy.attr(part) };
|
|
2800
|
+
}
|
|
2801
|
+
var BOOLEAN_STATES = ["disabled", "invalid", "loading", "selected"];
|
|
2802
|
+
var VALUE_STATES = ["state", "size", "variant", "intent", "orientation"];
|
|
2803
|
+
function stateAttributes(input) {
|
|
2804
|
+
const attributes = {};
|
|
2805
|
+
for (const key of BOOLEAN_STATES) {
|
|
2806
|
+
if (input[key]) attributes[`data-${key}`] = "";
|
|
2807
|
+
}
|
|
2808
|
+
for (const key of VALUE_STATES) {
|
|
2809
|
+
const value = input[key];
|
|
2810
|
+
if (value !== void 0) attributes[`data-${key}`] = value;
|
|
2811
|
+
}
|
|
2812
|
+
return attributes;
|
|
2813
|
+
}
|
|
2457
2814
|
var AlertDialog = AlertDialogPrimitive.Root;
|
|
2458
2815
|
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
2459
2816
|
var AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
@@ -2461,6 +2818,7 @@ var AlertDialogOverlay = React39.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2461
2818
|
AlertDialogPrimitive.Overlay,
|
|
2462
2819
|
{
|
|
2463
2820
|
ref,
|
|
2821
|
+
...slot(alertDialogAnatomy, "overlay"),
|
|
2464
2822
|
className: cn(
|
|
2465
2823
|
"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]",
|
|
2466
2824
|
"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]",
|
|
@@ -2478,10 +2836,11 @@ var AlertDialogContent = React39.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2478
2836
|
AlertDialogPrimitive.Content,
|
|
2479
2837
|
{
|
|
2480
2838
|
ref,
|
|
2839
|
+
...slot(alertDialogAnatomy, "content"),
|
|
2481
2840
|
className: cn(
|
|
2482
2841
|
"fixed top-1/2 left-1/2 z-[var(--z-modal)] w-full max-w-lg",
|
|
2483
2842
|
"scrollbar-thin max-h-[calc(100vh-6rem)] overflow-y-auto",
|
|
2484
|
-
"rounded-card border-rule bg-surface shadow-
|
|
2843
|
+
"rounded-card border-rule bg-surface shadow-overlay border p-6",
|
|
2485
2844
|
"font-body text-fg",
|
|
2486
2845
|
"transition-[opacity,transform] duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]",
|
|
2487
2846
|
"data-[state=closed]:-translate-x-1/2 data-[state=closed]:-translate-y-[48%] data-[state=closed]:scale-95 data-[state=closed]:opacity-0",
|
|
@@ -2494,11 +2853,19 @@ var AlertDialogContent = React39.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2494
2853
|
)
|
|
2495
2854
|
] }));
|
|
2496
2855
|
AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
|
|
2497
|
-
var AlertDialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
2856
|
+
var AlertDialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
2857
|
+
"div",
|
|
2858
|
+
{
|
|
2859
|
+
...slot(alertDialogAnatomy, "header"),
|
|
2860
|
+
className: cn("mb-4 flex flex-col gap-1.5", className),
|
|
2861
|
+
...props
|
|
2862
|
+
}
|
|
2863
|
+
);
|
|
2498
2864
|
AlertDialogHeader.displayName = "AlertDialogHeader";
|
|
2499
2865
|
var AlertDialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
2500
2866
|
"div",
|
|
2501
2867
|
{
|
|
2868
|
+
...slot(alertDialogAnatomy, "footer"),
|
|
2502
2869
|
className: cn(
|
|
2503
2870
|
"mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-end",
|
|
2504
2871
|
className
|
|
@@ -2511,6 +2878,7 @@ var AlertDialogTitle = React39.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
2511
2878
|
AlertDialogPrimitive.Title,
|
|
2512
2879
|
{
|
|
2513
2880
|
ref,
|
|
2881
|
+
...slot(alertDialogAnatomy, "title"),
|
|
2514
2882
|
className: cn(
|
|
2515
2883
|
"font-display text-fg text-base leading-tight font-medium tracking-tight",
|
|
2516
2884
|
className
|
|
@@ -2523,6 +2891,7 @@ var AlertDialogDescription = React39.forwardRef(({ className, ...props }, ref) =
|
|
|
2523
2891
|
AlertDialogPrimitive.Description,
|
|
2524
2892
|
{
|
|
2525
2893
|
ref,
|
|
2894
|
+
...slot(alertDialogAnatomy, "description"),
|
|
2526
2895
|
className: cn("text-fg-3 text-sm", className),
|
|
2527
2896
|
...props
|
|
2528
2897
|
}
|
|
@@ -2532,6 +2901,7 @@ var AlertDialogAction = React39.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2532
2901
|
AlertDialogPrimitive.Action,
|
|
2533
2902
|
{
|
|
2534
2903
|
ref,
|
|
2904
|
+
...slot(alertDialogAnatomy, "action"),
|
|
2535
2905
|
className: cn(
|
|
2536
2906
|
"rounded-btn inline-flex h-10 items-center justify-center px-4 text-sm font-medium whitespace-nowrap",
|
|
2537
2907
|
"bg-destructive text-destructive-foreground transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
@@ -2548,6 +2918,7 @@ var AlertDialogCancel = React39.forwardRef(({ className, children, ...props }, r
|
|
|
2548
2918
|
AlertDialogPrimitive.Cancel,
|
|
2549
2919
|
{
|
|
2550
2920
|
ref,
|
|
2921
|
+
...slot(alertDialogAnatomy, "cancel"),
|
|
2551
2922
|
className: cn(
|
|
2552
2923
|
"rounded-btn border-rule-strong bg-surface inline-flex h-10 items-center justify-center border px-4 text-sm font-medium whitespace-nowrap",
|
|
2553
2924
|
"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
@@ -2857,8 +3228,27 @@ var Button = forwardRef(function Button2({
|
|
|
2857
3228
|
...props
|
|
2858
3229
|
}, ref) {
|
|
2859
3230
|
const Comp = asChild ? Slot : "button";
|
|
3231
|
+
const resolvedVariant = variant ?? "primary";
|
|
3232
|
+
const resolvedSize = size ?? "md";
|
|
3233
|
+
const state = stateAttributes({
|
|
3234
|
+
variant: resolvedVariant,
|
|
3235
|
+
size: resolvedSize,
|
|
3236
|
+
// `asChild` drops `disabled`/`loading` (Slot renders the child's own
|
|
3237
|
+
// element), so the state attribute is not claimed there either.
|
|
3238
|
+
disabled: asChild ? void 0 : disabled || loading
|
|
3239
|
+
});
|
|
2860
3240
|
if (asChild) {
|
|
2861
|
-
return /* @__PURE__ */ jsx(
|
|
3241
|
+
return /* @__PURE__ */ jsx(
|
|
3242
|
+
Comp,
|
|
3243
|
+
{
|
|
3244
|
+
ref,
|
|
3245
|
+
...slot(buttonAnatomy, "root"),
|
|
3246
|
+
...state,
|
|
3247
|
+
className: cn(buttonVariants({ variant, size }), className),
|
|
3248
|
+
...props,
|
|
3249
|
+
children
|
|
3250
|
+
}
|
|
3251
|
+
);
|
|
2862
3252
|
}
|
|
2863
3253
|
return /* @__PURE__ */ jsxs(
|
|
2864
3254
|
Comp,
|
|
@@ -2867,12 +3257,30 @@ var Button = forwardRef(function Button2({
|
|
|
2867
3257
|
disabled: disabled || loading,
|
|
2868
3258
|
"aria-busy": loading || void 0,
|
|
2869
3259
|
"data-loading": loading || void 0,
|
|
3260
|
+
...slot(buttonAnatomy, "root"),
|
|
3261
|
+
...state,
|
|
2870
3262
|
className: cn(buttonVariants({ variant, size }), className),
|
|
2871
3263
|
...props,
|
|
2872
3264
|
children: [
|
|
2873
|
-
loading ? /* @__PURE__ */ jsx(Spinner, { size: "sm" }) : iconLeft && /* @__PURE__ */ jsx(
|
|
3265
|
+
loading ? /* @__PURE__ */ jsx(Spinner, { size: "sm", ...slot(buttonAnatomy, "spinner") }) : iconLeft && /* @__PURE__ */ jsx(
|
|
3266
|
+
"span",
|
|
3267
|
+
{
|
|
3268
|
+
...slot(buttonAnatomy, "icon-start"),
|
|
3269
|
+
className: "inline-flex shrink-0",
|
|
3270
|
+
"aria-hidden": "true",
|
|
3271
|
+
children: iconLeft
|
|
3272
|
+
}
|
|
3273
|
+
),
|
|
2874
3274
|
children,
|
|
2875
|
-
iconRight && !loading && /* @__PURE__ */ jsx(
|
|
3275
|
+
iconRight && !loading && /* @__PURE__ */ jsx(
|
|
3276
|
+
"span",
|
|
3277
|
+
{
|
|
3278
|
+
...slot(buttonAnatomy, "icon-end"),
|
|
3279
|
+
className: "inline-flex shrink-0",
|
|
3280
|
+
"aria-hidden": "true",
|
|
3281
|
+
children: iconRight
|
|
3282
|
+
}
|
|
3283
|
+
)
|
|
2876
3284
|
]
|
|
2877
3285
|
}
|
|
2878
3286
|
);
|
|
@@ -3184,11 +3592,36 @@ var badgeVariants = cva(
|
|
|
3184
3592
|
}
|
|
3185
3593
|
);
|
|
3186
3594
|
var Badge = forwardRef(function Badge2({ variant, size, dot, icon, children, className, ...props }, ref) {
|
|
3187
|
-
return /* @__PURE__ */ jsxs(
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3595
|
+
return /* @__PURE__ */ jsxs(
|
|
3596
|
+
"span",
|
|
3597
|
+
{
|
|
3598
|
+
ref,
|
|
3599
|
+
...slot(badgeAnatomy, "root"),
|
|
3600
|
+
...stateAttributes({ variant: variant ?? "default", size: size ?? "sm" }),
|
|
3601
|
+
className: cn(badgeVariants({ variant, size }), className),
|
|
3602
|
+
...props,
|
|
3603
|
+
children: [
|
|
3604
|
+
dot && /* @__PURE__ */ jsx(
|
|
3605
|
+
"span",
|
|
3606
|
+
{
|
|
3607
|
+
...slot(badgeAnatomy, "dot"),
|
|
3608
|
+
className: "size-1.5 rounded-full bg-current",
|
|
3609
|
+
"aria-hidden": "true"
|
|
3610
|
+
}
|
|
3611
|
+
),
|
|
3612
|
+
icon && /* @__PURE__ */ jsx(
|
|
3613
|
+
"span",
|
|
3614
|
+
{
|
|
3615
|
+
...slot(badgeAnatomy, "icon"),
|
|
3616
|
+
className: "inline-flex size-3.5 shrink-0",
|
|
3617
|
+
"aria-hidden": "true",
|
|
3618
|
+
children: icon
|
|
3619
|
+
}
|
|
3620
|
+
),
|
|
3621
|
+
children
|
|
3622
|
+
]
|
|
3623
|
+
}
|
|
3624
|
+
);
|
|
3192
3625
|
});
|
|
3193
3626
|
Badge.displayName = "Badge";
|
|
3194
3627
|
var Blockquote = forwardRef(function Blockquote2({ children, author, role: authorRole, className, ...props }, ref) {
|
|
@@ -3332,304 +3765,86 @@ var BreadcrumbSeparator = forwardRef(
|
|
|
3332
3765
|
}
|
|
3333
3766
|
);
|
|
3334
3767
|
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
3335
|
-
var
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
const
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
|
|
3356
|
-
(
|
|
3357
|
-
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
modClasses[key] = cn("relative", DOT_BASE, HIGHLIGHT_COLORS[color]);
|
|
3364
|
-
}
|
|
3365
|
-
return { modifiers: mods, modifiersClassNames: modClasses };
|
|
3366
|
-
}, [highlights]);
|
|
3367
|
-
const disabledMatcher = React39.useMemo(() => {
|
|
3368
|
-
if (!minDate && !maxDate) return void 0;
|
|
3369
|
-
if (minDate && maxDate) return [{ before: minDate }, { after: maxDate }];
|
|
3370
|
-
if (minDate) return { before: minDate };
|
|
3371
|
-
return { after: maxDate };
|
|
3372
|
-
}, [minDate, maxDate]);
|
|
3373
|
-
return /* @__PURE__ */ jsx(
|
|
3374
|
-
DayPicker,
|
|
3768
|
+
var SelectRoot = SelectPrimitive.Root;
|
|
3769
|
+
var SelectGroup = SelectPrimitive.Group;
|
|
3770
|
+
var SelectValue = SelectPrimitive.Value;
|
|
3771
|
+
function useTriggerOpen(node) {
|
|
3772
|
+
const [open, setOpen] = React39.useState(false);
|
|
3773
|
+
React39.useEffect(() => {
|
|
3774
|
+
if (!node) return;
|
|
3775
|
+
const sync = () => setOpen(node.getAttribute("data-state") === "open");
|
|
3776
|
+
sync();
|
|
3777
|
+
const observer = new MutationObserver(sync);
|
|
3778
|
+
observer.observe(node, { attributes: true, attributeFilter: ["data-state"] });
|
|
3779
|
+
return () => observer.disconnect();
|
|
3780
|
+
}, [node]);
|
|
3781
|
+
return open;
|
|
3782
|
+
}
|
|
3783
|
+
var SelectTrigger = React39.forwardRef(({ className, children, tabIndex, ...props }, ref) => {
|
|
3784
|
+
const [node, setNode] = React39.useState(null);
|
|
3785
|
+
const open = useTriggerOpen(node);
|
|
3786
|
+
const composedRef = React39.useCallback(
|
|
3787
|
+
(element) => {
|
|
3788
|
+
setNode(element);
|
|
3789
|
+
if (typeof ref === "function") ref(element);
|
|
3790
|
+
else if (ref) ref.current = element;
|
|
3791
|
+
},
|
|
3792
|
+
[ref]
|
|
3793
|
+
);
|
|
3794
|
+
return /* @__PURE__ */ jsxs(
|
|
3795
|
+
SelectPrimitive.Trigger,
|
|
3375
3796
|
{
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
|
|
3380
|
-
|
|
3381
|
-
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
weeks: "",
|
|
3405
|
-
week: "flex w-full mt-1",
|
|
3406
|
-
day: "flex-1 text-center relative p-0",
|
|
3407
|
-
day_button: cn(
|
|
3408
|
-
"inline-flex size-8 w-full items-center justify-center rounded-input font-mono tabular-nums text-[13px] text-fg",
|
|
3409
|
-
"transition-colors duration-[var(--duration-instant)] motion-reduce:transition-none",
|
|
3410
|
-
"hover:bg-bg-2",
|
|
3411
|
-
"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
3412
|
-
"disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-fg-disabled"
|
|
3413
|
-
),
|
|
3414
|
-
today: "[&_button]:font-semibold [&_button]:text-accent",
|
|
3415
|
-
selected: "[&_button]:bg-brand [&_button]:text-fg-on-brand [&_button]:hover:bg-brand-hover [&_button]:focus-visible:bg-brand",
|
|
3416
|
-
outside: "[&_button]:text-fg-4",
|
|
3417
|
-
disabled: "[&_button]:text-fg-disabled",
|
|
3418
|
-
hidden: "invisible",
|
|
3419
|
-
...classNames
|
|
3420
|
-
},
|
|
3421
|
-
...props
|
|
3797
|
+
ref: composedRef,
|
|
3798
|
+
tabIndex: open ? -1 : tabIndex,
|
|
3799
|
+
...slot(selectAnatomy, "trigger"),
|
|
3800
|
+
className: cn(
|
|
3801
|
+
"rounded-input border-rule-strong bg-surface font-body text-fg flex h-9 w-full items-center justify-between gap-2 border px-3 py-2 text-[13px]",
|
|
3802
|
+
"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
3803
|
+
"motion-reduce:transition-none",
|
|
3804
|
+
"placeholder:text-fg-4",
|
|
3805
|
+
"focus-visible:[border-color:var(--focus-ring-border)] focus-visible:[box-shadow:var(--shadow-focus-ring-field)] focus-visible:outline-none",
|
|
3806
|
+
"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed",
|
|
3807
|
+
"data-[placeholder]:text-fg-4",
|
|
3808
|
+
"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg",
|
|
3809
|
+
"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]",
|
|
3810
|
+
"[&>span]:line-clamp-1 [&>span]:text-left",
|
|
3811
|
+
className
|
|
3812
|
+
),
|
|
3813
|
+
...props,
|
|
3814
|
+
children: [
|
|
3815
|
+
children,
|
|
3816
|
+
/* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
3817
|
+
ChevronDownIcon,
|
|
3818
|
+
{
|
|
3819
|
+
...slot(selectAnatomy, "icon"),
|
|
3820
|
+
className: "text-fg-3 size-4 shrink-0 transition-transform duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] data-[state=open]:rotate-180 motion-reduce:transition-none",
|
|
3821
|
+
"aria-hidden": "true"
|
|
3822
|
+
}
|
|
3823
|
+
) })
|
|
3824
|
+
]
|
|
3422
3825
|
}
|
|
3423
3826
|
);
|
|
3424
|
-
}
|
|
3425
|
-
Calendar.displayName = "Calendar";
|
|
3426
|
-
var cardVariants = cva("rounded-card border border-rule bg-surface text-fg shadow-quiet", {
|
|
3427
|
-
variants: {
|
|
3428
|
-
variant: {
|
|
3429
|
-
default: "",
|
|
3430
|
-
interactive: "cursor-pointer transition-[border-color] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] hover:border-rule-strong motion-reduce:transition-none",
|
|
3431
|
-
flat: "border-0 bg-transparent shadow-none"
|
|
3432
|
-
}
|
|
3433
|
-
},
|
|
3434
|
-
defaultVariants: { variant: "default" }
|
|
3435
|
-
});
|
|
3436
|
-
var Card = forwardRef(function Card2({ className, variant, ...props }, ref) {
|
|
3437
|
-
return /* @__PURE__ */ jsx("div", { ref, className: cn(cardVariants({ variant }), className), ...props });
|
|
3438
3827
|
});
|
|
3439
|
-
|
|
3440
|
-
var
|
|
3441
|
-
|
|
3442
|
-
|
|
3443
|
-
|
|
3444
|
-
|
|
3445
|
-
|
|
3446
|
-
|
|
3447
|
-
|
|
3448
|
-
className
|
|
3449
|
-
),
|
|
3450
|
-
...props
|
|
3451
|
-
}
|
|
3452
|
-
);
|
|
3453
|
-
}
|
|
3454
|
-
);
|
|
3455
|
-
CardHeader.displayName = "CardHeader";
|
|
3456
|
-
var CardTitle = forwardRef(
|
|
3457
|
-
function CardTitle2({ className, children, ...props }, ref) {
|
|
3458
|
-
return /* @__PURE__ */ jsx(
|
|
3459
|
-
"h3",
|
|
3460
|
-
{
|
|
3461
|
-
ref,
|
|
3462
|
-
className: cn("text-fg text-base leading-tight font-medium", className),
|
|
3463
|
-
...props,
|
|
3464
|
-
children
|
|
3465
|
-
}
|
|
3466
|
-
);
|
|
3828
|
+
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
3829
|
+
var SelectScrollUpButton = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3830
|
+
SelectPrimitive.ScrollUpButton,
|
|
3831
|
+
{
|
|
3832
|
+
ref,
|
|
3833
|
+
...slot(selectAnatomy, "scroll-up-button"),
|
|
3834
|
+
className: cn("text-fg-3 flex cursor-default items-center justify-center py-1", className),
|
|
3835
|
+
...props,
|
|
3836
|
+
children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4", "aria-hidden": "true" })
|
|
3467
3837
|
}
|
|
3468
|
-
);
|
|
3469
|
-
|
|
3470
|
-
var
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
);
|
|
3479
|
-
CardContent.displayName = "CardContent";
|
|
3480
|
-
var CardFooter = forwardRef(
|
|
3481
|
-
function CardFooter2({ className, ...props }, ref) {
|
|
3482
|
-
return /* @__PURE__ */ jsx(
|
|
3483
|
-
"div",
|
|
3484
|
-
{
|
|
3485
|
-
ref,
|
|
3486
|
-
className: cn("border-rule flex items-center gap-2 border-t p-6", className),
|
|
3487
|
-
...props
|
|
3488
|
-
}
|
|
3489
|
-
);
|
|
3490
|
-
}
|
|
3491
|
-
);
|
|
3492
|
-
CardFooter.displayName = "CardFooter";
|
|
3493
|
-
var CardAction = forwardRef(
|
|
3494
|
-
function CardAction2({ className, ...props }, ref) {
|
|
3495
|
-
return /* @__PURE__ */ jsx("div", { ref, className: cn("col-start-2 row-start-1 self-center", className), ...props });
|
|
3496
|
-
}
|
|
3497
|
-
);
|
|
3498
|
-
CardAction.displayName = "CardAction";
|
|
3499
|
-
var categoryTagVariants = cva(
|
|
3500
|
-
cn(
|
|
3501
|
-
"inline-flex shrink-0 items-center gap-1.5 rounded-full px-2.5 py-1",
|
|
3502
|
-
"text-xs font-bold tracking-tight"
|
|
3503
|
-
),
|
|
3504
|
-
{
|
|
3505
|
-
variants: {
|
|
3506
|
-
tone: {
|
|
3507
|
-
brand: "text-brand-pro bg-[color-mix(in_srgb,var(--color-brand-pro)_12%,transparent)]",
|
|
3508
|
-
audit: "text-brand-audit bg-[color-mix(in_srgb,var(--color-brand-audit)_12%,transparent)]",
|
|
3509
|
-
books: "text-brand-books bg-[color-mix(in_srgb,var(--color-brand-books)_12%,transparent)]",
|
|
3510
|
-
tax: "text-brand-tax bg-[color-mix(in_srgb,var(--color-brand-tax)_12%,transparent)]",
|
|
3511
|
-
neutral: "text-fg-3 bg-[color-mix(in_srgb,var(--color-fg-3)_12%,transparent)]"
|
|
3512
|
-
}
|
|
3513
|
-
},
|
|
3514
|
-
defaultVariants: { tone: "neutral" }
|
|
3515
|
-
}
|
|
3516
|
-
);
|
|
3517
|
-
var CategoryTag = forwardRef(function CategoryTag2({ label, icon, tone, className, ...props }, ref) {
|
|
3518
|
-
return /* @__PURE__ */ jsxs("span", { ref, className: cn(categoryTagVariants({ tone }), className), ...props, children: [
|
|
3519
|
-
icon && /* @__PURE__ */ jsx("span", { className: "inline-flex size-3.5 shrink-0", "aria-hidden": "true", children: icon }),
|
|
3520
|
-
label
|
|
3521
|
-
] });
|
|
3522
|
-
});
|
|
3523
|
-
CategoryTag.displayName = "CategoryTag";
|
|
3524
|
-
var CategoryDivider = forwardRef(
|
|
3525
|
-
function CategoryDivider2({ label, icon, tone, count, className, ...props }, ref) {
|
|
3526
|
-
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex items-center gap-3", className), ...props, children: [
|
|
3527
|
-
/* @__PURE__ */ jsx(CategoryTag, { label, icon, tone }),
|
|
3528
|
-
/* @__PURE__ */ jsx("span", { className: "bg-rule h-px flex-1", "aria-hidden": "true" }),
|
|
3529
|
-
count !== void 0 && /* @__PURE__ */ jsx("span", { className: "text-fg-3 bg-surface-2 border-rule inline-flex h-5 min-w-5 shrink-0 items-center justify-center rounded-full border px-1.5 text-[11px] font-bold", children: count })
|
|
3530
|
-
] });
|
|
3531
|
-
}
|
|
3532
|
-
);
|
|
3533
|
-
CategoryDivider.displayName = "CategoryDivider";
|
|
3534
|
-
var Checkbox = React39.forwardRef(function Checkbox2({
|
|
3535
|
-
label,
|
|
3536
|
-
indeterminate,
|
|
3537
|
-
checked,
|
|
3538
|
-
defaultChecked,
|
|
3539
|
-
shape = "square",
|
|
3540
|
-
className,
|
|
3541
|
-
id: providedId,
|
|
3542
|
-
...props
|
|
3543
|
-
}, ref) {
|
|
3544
|
-
const generatedId = React39.useId();
|
|
3545
|
-
const id = providedId ?? generatedId;
|
|
3546
|
-
const resolvedChecked = indeterminate ? "indeterminate" : checked;
|
|
3547
|
-
return /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2", children: [
|
|
3548
|
-
/* @__PURE__ */ jsx(
|
|
3549
|
-
CheckboxPrimitive.Root,
|
|
3550
|
-
{
|
|
3551
|
-
ref,
|
|
3552
|
-
id,
|
|
3553
|
-
checked: resolvedChecked,
|
|
3554
|
-
defaultChecked,
|
|
3555
|
-
className: cn(
|
|
3556
|
-
"peer border-rule-strong bg-surface text-brand flex size-4 shrink-0 items-center justify-center border",
|
|
3557
|
-
shape === "circle" ? "rounded-full" : "rounded-[4px]",
|
|
3558
|
-
microInteractions.selection,
|
|
3559
|
-
"hover:border-fg-4",
|
|
3560
|
-
"focus-visible:[border-color:var(--focus-ring-border)] focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
3561
|
-
"data-[state=checked]:border-brand data-[state=checked]:bg-brand-bg",
|
|
3562
|
-
"data-[state=indeterminate]:border-brand data-[state=indeterminate]:bg-brand-bg",
|
|
3563
|
-
"disabled:bg-bg-disabled disabled:border-rule disabled:text-fg-disabled disabled:cursor-not-allowed",
|
|
3564
|
-
"aria-[invalid=true]:border-danger-line",
|
|
3565
|
-
className
|
|
3566
|
-
),
|
|
3567
|
-
...props,
|
|
3568
|
-
children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: resolvedChecked === "indeterminate" ? /* @__PURE__ */ jsx(MinusIcon, { className: "size-3", strokeWidth: 3, "aria-hidden": "true" }) : shape === "circle" ? /* @__PURE__ */ jsx("span", { className: "size-1.5 rounded-full bg-current", "aria-hidden": "true" }) : /* @__PURE__ */ jsx(CheckIcon, { className: "size-3", strokeWidth: 3, "aria-hidden": "true" }) })
|
|
3569
|
-
}
|
|
3570
|
-
),
|
|
3571
|
-
label && /* @__PURE__ */ jsx(
|
|
3572
|
-
"label",
|
|
3573
|
-
{
|
|
3574
|
-
htmlFor: id,
|
|
3575
|
-
className: "text-fg peer-disabled:text-fg-disabled cursor-pointer text-[13px] leading-none select-none peer-disabled:cursor-not-allowed",
|
|
3576
|
-
children: label
|
|
3577
|
-
}
|
|
3578
|
-
)
|
|
3579
|
-
] });
|
|
3580
|
-
});
|
|
3581
|
-
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
3582
|
-
var SelectRoot = SelectPrimitive.Root;
|
|
3583
|
-
var SelectGroup = SelectPrimitive.Group;
|
|
3584
|
-
var SelectValue = SelectPrimitive.Value;
|
|
3585
|
-
var SelectTrigger = React39.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3586
|
-
SelectPrimitive.Trigger,
|
|
3587
|
-
{
|
|
3588
|
-
ref,
|
|
3589
|
-
className: cn(
|
|
3590
|
-
"rounded-input border-rule-strong bg-surface font-body text-fg flex h-9 w-full items-center justify-between gap-2 border px-3 py-2 text-[13px]",
|
|
3591
|
-
"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
3592
|
-
"motion-reduce:transition-none",
|
|
3593
|
-
"placeholder:text-fg-4",
|
|
3594
|
-
"focus-visible:[border-color:var(--focus-ring-border)] focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
3595
|
-
"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed",
|
|
3596
|
-
"data-[placeholder]:text-fg-4",
|
|
3597
|
-
"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg",
|
|
3598
|
-
"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]",
|
|
3599
|
-
"[&>span]:line-clamp-1 [&>span]:text-left",
|
|
3600
|
-
className
|
|
3601
|
-
),
|
|
3602
|
-
...props,
|
|
3603
|
-
children: [
|
|
3604
|
-
children,
|
|
3605
|
-
/* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
3606
|
-
ChevronDownIcon,
|
|
3607
|
-
{
|
|
3608
|
-
className: "text-fg-3 size-4 shrink-0 transition-transform duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] data-[state=open]:rotate-180 motion-reduce:transition-none",
|
|
3609
|
-
"aria-hidden": "true"
|
|
3610
|
-
}
|
|
3611
|
-
) })
|
|
3612
|
-
]
|
|
3613
|
-
}
|
|
3614
|
-
));
|
|
3615
|
-
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
3616
|
-
var SelectScrollUpButton = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3617
|
-
SelectPrimitive.ScrollUpButton,
|
|
3618
|
-
{
|
|
3619
|
-
ref,
|
|
3620
|
-
className: cn("text-fg-3 flex cursor-default items-center justify-center py-1", className),
|
|
3621
|
-
...props,
|
|
3622
|
-
children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4", "aria-hidden": "true" })
|
|
3623
|
-
}
|
|
3624
|
-
));
|
|
3625
|
-
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
3626
|
-
var SelectScrollDownButton = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3627
|
-
SelectPrimitive.ScrollDownButton,
|
|
3628
|
-
{
|
|
3629
|
-
ref,
|
|
3630
|
-
className: cn("text-fg-3 flex cursor-default items-center justify-center py-1", className),
|
|
3631
|
-
...props,
|
|
3632
|
-
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4", "aria-hidden": "true" })
|
|
3838
|
+
));
|
|
3839
|
+
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
3840
|
+
var SelectScrollDownButton = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3841
|
+
SelectPrimitive.ScrollDownButton,
|
|
3842
|
+
{
|
|
3843
|
+
ref,
|
|
3844
|
+
...slot(selectAnatomy, "scroll-down-button"),
|
|
3845
|
+
className: cn("text-fg-3 flex cursor-default items-center justify-center py-1", className),
|
|
3846
|
+
...props,
|
|
3847
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4", "aria-hidden": "true" })
|
|
3633
3848
|
}
|
|
3634
3849
|
));
|
|
3635
3850
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
@@ -3638,6 +3853,7 @@ var SelectContent = React39.forwardRef(({ className, children, position = "poppe
|
|
|
3638
3853
|
{
|
|
3639
3854
|
ref,
|
|
3640
3855
|
position,
|
|
3856
|
+
...slot(selectAnatomy, "content"),
|
|
3641
3857
|
className: cn(
|
|
3642
3858
|
"rounded-card border-rule bg-surface text-fg shadow-pop relative z-[var(--z-dropdown)] max-h-(--radix-select-content-available-height) min-w-[8rem] overflow-hidden border",
|
|
3643
3859
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
@@ -3655,6 +3871,7 @@ var SelectContent = React39.forwardRef(({ className, children, position = "poppe
|
|
|
3655
3871
|
/* @__PURE__ */ jsx(
|
|
3656
3872
|
SelectPrimitive.Viewport,
|
|
3657
3873
|
{
|
|
3874
|
+
...slot(selectAnatomy, "viewport"),
|
|
3658
3875
|
className: cn(
|
|
3659
3876
|
"p-1",
|
|
3660
3877
|
position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)"
|
|
@@ -3671,6 +3888,7 @@ var SelectLabel = React39.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
3671
3888
|
SelectPrimitive.Label,
|
|
3672
3889
|
{
|
|
3673
3890
|
ref,
|
|
3891
|
+
...slot(selectAnatomy, "label"),
|
|
3674
3892
|
className: cn(
|
|
3675
3893
|
"text-fg-3 px-2 py-1.5 font-mono text-[11px] tracking-wider uppercase",
|
|
3676
3894
|
className
|
|
@@ -3683,6 +3901,7 @@ var SelectItem = React39.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
3683
3901
|
SelectPrimitive.Item,
|
|
3684
3902
|
{
|
|
3685
3903
|
ref,
|
|
3904
|
+
...slot(selectAnatomy, "item"),
|
|
3686
3905
|
className: cn(
|
|
3687
3906
|
"rounded-pill relative flex w-full cursor-default items-center gap-2 py-1.5 pr-8 pl-2 text-[13px] outline-none select-none",
|
|
3688
3907
|
"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
@@ -3695,7 +3914,7 @@ var SelectItem = React39.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
3695
3914
|
...props,
|
|
3696
3915
|
children: [
|
|
3697
3916
|
/* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children }),
|
|
3698
|
-
/* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5", "aria-hidden": "true" }) }) })
|
|
3917
|
+
/* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { ...slot(selectAnatomy, "item-indicator"), children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5", "aria-hidden": "true" }) }) })
|
|
3699
3918
|
]
|
|
3700
3919
|
}
|
|
3701
3920
|
));
|
|
@@ -3704,6 +3923,7 @@ var SelectSeparator = React39.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
3704
3923
|
SelectPrimitive.Separator,
|
|
3705
3924
|
{
|
|
3706
3925
|
ref,
|
|
3926
|
+
...slot(selectAnatomy, "separator"),
|
|
3707
3927
|
className: cn("bg-rule -mx-1 my-1 h-px", className),
|
|
3708
3928
|
...props
|
|
3709
3929
|
}
|
|
@@ -3758,6 +3978,350 @@ function Select({
|
|
|
3758
3978
|
);
|
|
3759
3979
|
}
|
|
3760
3980
|
Select.displayName = "Select";
|
|
3981
|
+
var DEFAULT_YEARS_BACK = 100;
|
|
3982
|
+
var DEFAULT_YEARS_FORWARD = 20;
|
|
3983
|
+
function CalendarDropdown({
|
|
3984
|
+
options = [],
|
|
3985
|
+
value,
|
|
3986
|
+
onChange,
|
|
3987
|
+
disabled,
|
|
3988
|
+
className,
|
|
3989
|
+
"aria-label": ariaLabel
|
|
3990
|
+
}) {
|
|
3991
|
+
const current = value === void 0 || value === null ? void 0 : String(value);
|
|
3992
|
+
const selected = options.find((option) => String(option.value) === current);
|
|
3993
|
+
return /* @__PURE__ */ jsxs(
|
|
3994
|
+
SelectRoot,
|
|
3995
|
+
{
|
|
3996
|
+
value: current,
|
|
3997
|
+
disabled,
|
|
3998
|
+
onValueChange: (next) => {
|
|
3999
|
+
onChange?.({ target: { value: next } });
|
|
4000
|
+
},
|
|
4001
|
+
children: [
|
|
4002
|
+
/* @__PURE__ */ jsx(
|
|
4003
|
+
SelectTrigger,
|
|
4004
|
+
{
|
|
4005
|
+
"aria-label": ariaLabel,
|
|
4006
|
+
className: cn(
|
|
4007
|
+
"h-7 w-auto min-w-0 gap-1 border-transparent bg-transparent px-1.5 py-0",
|
|
4008
|
+
"font-display font-medium",
|
|
4009
|
+
"hover:bg-bg-2",
|
|
4010
|
+
"[&>svg]:size-3.5",
|
|
4011
|
+
className
|
|
4012
|
+
),
|
|
4013
|
+
children: /* @__PURE__ */ jsx(SelectValue, { children: selected?.label })
|
|
4014
|
+
}
|
|
4015
|
+
),
|
|
4016
|
+
/* @__PURE__ */ jsx(SelectContent, { align: "center", className: "max-h-64 min-w-[6rem]", children: options.map((option) => /* @__PURE__ */ jsx(SelectItem, { value: String(option.value), disabled: option.disabled, children: option.label }, option.value)) })
|
|
4017
|
+
]
|
|
4018
|
+
}
|
|
4019
|
+
);
|
|
4020
|
+
}
|
|
4021
|
+
function CalendarChevron({
|
|
4022
|
+
orientation,
|
|
4023
|
+
className
|
|
4024
|
+
}) {
|
|
4025
|
+
const Icon3 = orientation === "right" ? ChevronRightIcon : ChevronLeftIcon;
|
|
4026
|
+
return /* @__PURE__ */ jsx(Icon3, { className: cn("text-fg-3 size-4", className), "aria-hidden": "true" });
|
|
4027
|
+
}
|
|
4028
|
+
var CALENDAR_CAPTION_COMPONENTS = {
|
|
4029
|
+
Chevron: CalendarChevron,
|
|
4030
|
+
Dropdown: CalendarDropdown
|
|
4031
|
+
};
|
|
4032
|
+
var NAV_BUTTON = "absolute top-0 inline-flex size-7 items-center justify-center rounded-input text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none hover:bg-bg-2 hover:text-fg focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)] disabled:cursor-not-allowed disabled:text-fg-disabled disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:text-fg-disabled aria-disabled:pointer-events-none";
|
|
4033
|
+
var CALENDAR_CAPTION_CLASSNAMES = {
|
|
4034
|
+
month: "relative space-y-3",
|
|
4035
|
+
// px-7 keeps the caption clear of the two absolutely-pinned size-7 chevrons.
|
|
4036
|
+
// Font size is applied by each calendar (they own their type scale).
|
|
4037
|
+
month_caption: "flex h-7 items-center justify-center px-7 font-display font-medium text-fg",
|
|
4038
|
+
caption_label: "tabular-nums",
|
|
4039
|
+
// No root-level <nav> with navLayout="around"; the buttons render inline.
|
|
4040
|
+
nav: "contents",
|
|
4041
|
+
button_previous: cn("left-0", NAV_BUTTON),
|
|
4042
|
+
button_next: cn("right-0", NAV_BUTTON),
|
|
4043
|
+
dropdowns: "flex items-center justify-center gap-1",
|
|
4044
|
+
dropdown_root: "relative",
|
|
4045
|
+
months_dropdown: "",
|
|
4046
|
+
years_dropdown: "font-mono tabular-nums"
|
|
4047
|
+
};
|
|
4048
|
+
function resolveCalendarNavRange({
|
|
4049
|
+
minDate,
|
|
4050
|
+
maxDate,
|
|
4051
|
+
selected,
|
|
4052
|
+
today = /* @__PURE__ */ new Date()
|
|
4053
|
+
}) {
|
|
4054
|
+
let startMonth = minDate ? startOfMonth(minDate) : startOfYear(subYears(today, DEFAULT_YEARS_BACK));
|
|
4055
|
+
let endMonth = maxDate ? endOfMonth(maxDate) : endOfYear(addYears(today, DEFAULT_YEARS_FORWARD));
|
|
4056
|
+
const picks = (Array.isArray(selected) ? selected : [selected]).filter(
|
|
4057
|
+
(d) => d instanceof Date && !Number.isNaN(d.getTime())
|
|
4058
|
+
);
|
|
4059
|
+
for (const pick of picks) {
|
|
4060
|
+
if (pick < startMonth) startMonth = startOfMonth(pick);
|
|
4061
|
+
if (pick > endMonth) endMonth = endOfMonth(pick);
|
|
4062
|
+
}
|
|
4063
|
+
return { startMonth, endMonth };
|
|
4064
|
+
}
|
|
4065
|
+
var HIGHLIGHT_COLORS = {
|
|
4066
|
+
primary: "after:bg-brand",
|
|
4067
|
+
success: "after:bg-success-fg",
|
|
4068
|
+
warning: "after:bg-warning-fg",
|
|
4069
|
+
destructive: "after:bg-danger-fg"
|
|
4070
|
+
};
|
|
4071
|
+
var DOT_BASE = "after:content-[''] after:absolute after:bottom-1 after:left-1/2 after:size-1 after:-translate-x-1/2 after:rounded-full";
|
|
4072
|
+
function Calendar({
|
|
4073
|
+
selected,
|
|
4074
|
+
onSelect,
|
|
4075
|
+
highlights = [],
|
|
4076
|
+
minDate,
|
|
4077
|
+
maxDate,
|
|
4078
|
+
className,
|
|
4079
|
+
classNames,
|
|
4080
|
+
captionLayout = "dropdown",
|
|
4081
|
+
navLayout = "around",
|
|
4082
|
+
startMonth,
|
|
4083
|
+
endMonth,
|
|
4084
|
+
components,
|
|
4085
|
+
...props
|
|
4086
|
+
}) {
|
|
4087
|
+
const { modifiers, modifiersClassNames } = React39.useMemo(() => {
|
|
4088
|
+
const buckets = {};
|
|
4089
|
+
for (const h of highlights) {
|
|
4090
|
+
const key = h.color ?? "primary";
|
|
4091
|
+
(buckets[key] ??= []).push(h.date);
|
|
4092
|
+
}
|
|
4093
|
+
const mods = {};
|
|
4094
|
+
const modClasses = {};
|
|
4095
|
+
for (const [color, dates] of Object.entries(buckets)) {
|
|
4096
|
+
const key = `assure-highlight-${color}`;
|
|
4097
|
+
mods[key] = dates;
|
|
4098
|
+
modClasses[key] = cn("relative", DOT_BASE, HIGHLIGHT_COLORS[color]);
|
|
4099
|
+
}
|
|
4100
|
+
return { modifiers: mods, modifiersClassNames: modClasses };
|
|
4101
|
+
}, [highlights]);
|
|
4102
|
+
const disabledMatcher = React39.useMemo(() => {
|
|
4103
|
+
if (!minDate && !maxDate) return void 0;
|
|
4104
|
+
if (minDate && maxDate) return [{ before: minDate }, { after: maxDate }];
|
|
4105
|
+
if (minDate) return { before: minDate };
|
|
4106
|
+
return { after: maxDate };
|
|
4107
|
+
}, [minDate, maxDate]);
|
|
4108
|
+
const navRange = React39.useMemo(
|
|
4109
|
+
() => captionLayout === "label" ? void 0 : resolveCalendarNavRange({ minDate, maxDate, selected }),
|
|
4110
|
+
[captionLayout, minDate, maxDate, selected]
|
|
4111
|
+
);
|
|
4112
|
+
return /* @__PURE__ */ jsx(
|
|
4113
|
+
DayPicker,
|
|
4114
|
+
{
|
|
4115
|
+
mode: "single",
|
|
4116
|
+
selected: selected ?? void 0,
|
|
4117
|
+
onSelect: (d) => {
|
|
4118
|
+
if (d) onSelect?.(d);
|
|
4119
|
+
},
|
|
4120
|
+
disabled: disabledMatcher,
|
|
4121
|
+
modifiers,
|
|
4122
|
+
modifiersClassNames,
|
|
4123
|
+
showOutsideDays: true,
|
|
4124
|
+
captionLayout,
|
|
4125
|
+
navLayout,
|
|
4126
|
+
startMonth: startMonth ?? navRange?.startMonth,
|
|
4127
|
+
endMonth: endMonth ?? navRange?.endMonth,
|
|
4128
|
+
components: { ...CALENDAR_CAPTION_COMPONENTS, ...components },
|
|
4129
|
+
className: cn("font-body text-fg select-none", className),
|
|
4130
|
+
classNames: {
|
|
4131
|
+
root: "p-3 min-w-[280px]",
|
|
4132
|
+
months: "flex flex-col gap-4",
|
|
4133
|
+
...CALENDAR_CAPTION_CLASSNAMES,
|
|
4134
|
+
month_caption: cn(CALENDAR_CAPTION_CLASSNAMES.month_caption, "text-[13px]"),
|
|
4135
|
+
month_grid: "w-full border-collapse",
|
|
4136
|
+
weekdays: "flex",
|
|
4137
|
+
weekday: "flex-1 text-center text-[11px] font-medium uppercase tracking-wide text-fg-4 pb-1",
|
|
4138
|
+
weeks: "",
|
|
4139
|
+
week: "flex w-full mt-1",
|
|
4140
|
+
day: "flex-1 text-center relative p-0",
|
|
4141
|
+
day_button: cn(
|
|
4142
|
+
"inline-flex size-8 w-full items-center justify-center rounded-input font-mono tabular-nums text-[13px] text-fg",
|
|
4143
|
+
"transition-colors duration-[var(--duration-instant)] motion-reduce:transition-none",
|
|
4144
|
+
"hover:bg-bg-2",
|
|
4145
|
+
"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
4146
|
+
"disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-fg-disabled"
|
|
4147
|
+
),
|
|
4148
|
+
today: "[&_button]:font-semibold [&_button]:text-accent",
|
|
4149
|
+
selected: "[&_button]:bg-brand [&_button]:text-fg-on-brand [&_button]:hover:bg-brand-hover [&_button]:focus-visible:bg-brand",
|
|
4150
|
+
outside: "[&_button]:text-fg-4",
|
|
4151
|
+
disabled: "[&_button]:text-fg-disabled",
|
|
4152
|
+
hidden: "invisible",
|
|
4153
|
+
...classNames
|
|
4154
|
+
},
|
|
4155
|
+
...props
|
|
4156
|
+
}
|
|
4157
|
+
);
|
|
4158
|
+
}
|
|
4159
|
+
Calendar.displayName = "Calendar";
|
|
4160
|
+
var cardVariants = cva("rounded-card border border-rule bg-surface text-fg shadow-quiet", {
|
|
4161
|
+
variants: {
|
|
4162
|
+
variant: {
|
|
4163
|
+
default: "",
|
|
4164
|
+
interactive: "cursor-pointer transition-[border-color] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] hover:border-rule-strong motion-reduce:transition-none",
|
|
4165
|
+
flat: "border-0 bg-transparent shadow-none"
|
|
4166
|
+
}
|
|
4167
|
+
},
|
|
4168
|
+
defaultVariants: { variant: "default" }
|
|
4169
|
+
});
|
|
4170
|
+
var Card = forwardRef(function Card2({ className, variant, ...props }, ref) {
|
|
4171
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn(cardVariants({ variant }), className), ...props });
|
|
4172
|
+
});
|
|
4173
|
+
Card.displayName = "Card";
|
|
4174
|
+
var CardHeader = forwardRef(
|
|
4175
|
+
function CardHeader2({ className, ...props }, ref) {
|
|
4176
|
+
return /* @__PURE__ */ jsx(
|
|
4177
|
+
"div",
|
|
4178
|
+
{
|
|
4179
|
+
ref,
|
|
4180
|
+
className: cn(
|
|
4181
|
+
"grid auto-cols-fr grid-cols-[1fr_auto] items-start gap-1.5 p-6 [.border-b]:pb-4",
|
|
4182
|
+
className
|
|
4183
|
+
),
|
|
4184
|
+
...props
|
|
4185
|
+
}
|
|
4186
|
+
);
|
|
4187
|
+
}
|
|
4188
|
+
);
|
|
4189
|
+
CardHeader.displayName = "CardHeader";
|
|
4190
|
+
var CardTitle = forwardRef(
|
|
4191
|
+
function CardTitle2({ className, children, ...props }, ref) {
|
|
4192
|
+
return /* @__PURE__ */ jsx(
|
|
4193
|
+
"h3",
|
|
4194
|
+
{
|
|
4195
|
+
ref,
|
|
4196
|
+
className: cn("text-fg text-base leading-tight font-medium", className),
|
|
4197
|
+
...props,
|
|
4198
|
+
children
|
|
4199
|
+
}
|
|
4200
|
+
);
|
|
4201
|
+
}
|
|
4202
|
+
);
|
|
4203
|
+
CardTitle.displayName = "CardTitle";
|
|
4204
|
+
var CardDescription = forwardRef(function CardDescription2({ className, ...props }, ref) {
|
|
4205
|
+
return /* @__PURE__ */ jsx("p", { ref, className: cn("text-fg-3 text-sm", className), ...props });
|
|
4206
|
+
});
|
|
4207
|
+
CardDescription.displayName = "CardDescription";
|
|
4208
|
+
var CardContent = forwardRef(
|
|
4209
|
+
function CardContent2({ className, ...props }, ref) {
|
|
4210
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props });
|
|
4211
|
+
}
|
|
4212
|
+
);
|
|
4213
|
+
CardContent.displayName = "CardContent";
|
|
4214
|
+
var CardFooter = forwardRef(
|
|
4215
|
+
function CardFooter2({ className, ...props }, ref) {
|
|
4216
|
+
return /* @__PURE__ */ jsx(
|
|
4217
|
+
"div",
|
|
4218
|
+
{
|
|
4219
|
+
ref,
|
|
4220
|
+
className: cn("border-rule flex items-center gap-2 border-t p-6", className),
|
|
4221
|
+
...props
|
|
4222
|
+
}
|
|
4223
|
+
);
|
|
4224
|
+
}
|
|
4225
|
+
);
|
|
4226
|
+
CardFooter.displayName = "CardFooter";
|
|
4227
|
+
var CardAction = forwardRef(
|
|
4228
|
+
function CardAction2({ className, ...props }, ref) {
|
|
4229
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn("col-start-2 row-start-1 self-center", className), ...props });
|
|
4230
|
+
}
|
|
4231
|
+
);
|
|
4232
|
+
CardAction.displayName = "CardAction";
|
|
4233
|
+
var categoryTagVariants = cva(
|
|
4234
|
+
cn(
|
|
4235
|
+
"inline-flex shrink-0 items-center gap-1.5 rounded-full px-2.5 py-1",
|
|
4236
|
+
"text-xs font-bold tracking-tight"
|
|
4237
|
+
),
|
|
4238
|
+
{
|
|
4239
|
+
variants: {
|
|
4240
|
+
tone: {
|
|
4241
|
+
brand: "text-brand-pro bg-[color-mix(in_srgb,var(--color-brand-pro)_12%,transparent)]",
|
|
4242
|
+
audit: "text-brand-audit bg-[color-mix(in_srgb,var(--color-brand-audit)_12%,transparent)]",
|
|
4243
|
+
books: "text-brand-books bg-[color-mix(in_srgb,var(--color-brand-books)_12%,transparent)]",
|
|
4244
|
+
tax: "text-brand-tax bg-[color-mix(in_srgb,var(--color-brand-tax)_12%,transparent)]",
|
|
4245
|
+
neutral: "text-fg-3 bg-[color-mix(in_srgb,var(--color-fg-3)_12%,transparent)]"
|
|
4246
|
+
}
|
|
4247
|
+
},
|
|
4248
|
+
defaultVariants: { tone: "neutral" }
|
|
4249
|
+
}
|
|
4250
|
+
);
|
|
4251
|
+
var CategoryTag = forwardRef(function CategoryTag2({ label, icon, tone, className, ...props }, ref) {
|
|
4252
|
+
return /* @__PURE__ */ jsxs("span", { ref, className: cn(categoryTagVariants({ tone }), className), ...props, children: [
|
|
4253
|
+
icon && /* @__PURE__ */ jsx("span", { className: "inline-flex size-3.5 shrink-0", "aria-hidden": "true", children: icon }),
|
|
4254
|
+
label
|
|
4255
|
+
] });
|
|
4256
|
+
});
|
|
4257
|
+
CategoryTag.displayName = "CategoryTag";
|
|
4258
|
+
var CategoryDivider = forwardRef(
|
|
4259
|
+
function CategoryDivider2({ label, icon, tone, count, className, ...props }, ref) {
|
|
4260
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex items-center gap-3", className), ...props, children: [
|
|
4261
|
+
/* @__PURE__ */ jsx(CategoryTag, { label, icon, tone }),
|
|
4262
|
+
/* @__PURE__ */ jsx("span", { className: "bg-rule h-px flex-1", "aria-hidden": "true" }),
|
|
4263
|
+
count !== void 0 && /* @__PURE__ */ jsx("span", { className: "text-fg-3 bg-surface-2 border-rule inline-flex h-5 min-w-5 shrink-0 items-center justify-center rounded-full border px-1.5 text-[11px] font-bold", children: count })
|
|
4264
|
+
] });
|
|
4265
|
+
}
|
|
4266
|
+
);
|
|
4267
|
+
CategoryDivider.displayName = "CategoryDivider";
|
|
4268
|
+
var Checkbox = React39.forwardRef(function Checkbox2({
|
|
4269
|
+
label,
|
|
4270
|
+
indeterminate,
|
|
4271
|
+
checked,
|
|
4272
|
+
defaultChecked,
|
|
4273
|
+
shape = "square",
|
|
4274
|
+
className,
|
|
4275
|
+
id: providedId,
|
|
4276
|
+
...props
|
|
4277
|
+
}, ref) {
|
|
4278
|
+
const generatedId = React39.useId();
|
|
4279
|
+
const id = providedId ?? generatedId;
|
|
4280
|
+
const resolvedChecked = indeterminate ? "indeterminate" : checked;
|
|
4281
|
+
return /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2", children: [
|
|
4282
|
+
/* @__PURE__ */ jsx(
|
|
4283
|
+
CheckboxPrimitive.Root,
|
|
4284
|
+
{
|
|
4285
|
+
ref,
|
|
4286
|
+
id,
|
|
4287
|
+
checked: resolvedChecked,
|
|
4288
|
+
defaultChecked,
|
|
4289
|
+
...slot(checkboxAnatomy, "root"),
|
|
4290
|
+
className: cn(
|
|
4291
|
+
"peer border-rule-strong bg-surface text-brand flex size-4 shrink-0 items-center justify-center border",
|
|
4292
|
+
shape === "circle" ? "rounded-full" : "rounded-[4px]",
|
|
4293
|
+
microInteractions.selection,
|
|
4294
|
+
"hover:border-fg-4",
|
|
4295
|
+
"focus-visible:[border-color:var(--focus-ring-border)] focus-visible:[box-shadow:var(--shadow-focus-ring-field)] focus-visible:outline-none",
|
|
4296
|
+
"data-[state=checked]:border-brand data-[state=checked]:bg-brand-bg",
|
|
4297
|
+
"data-[state=indeterminate]:border-brand data-[state=indeterminate]:bg-brand-bg",
|
|
4298
|
+
"disabled:bg-bg-disabled disabled:border-rule disabled:text-fg-disabled disabled:cursor-not-allowed",
|
|
4299
|
+
"aria-[invalid=true]:border-danger-line",
|
|
4300
|
+
className
|
|
4301
|
+
),
|
|
4302
|
+
...props,
|
|
4303
|
+
children: /* @__PURE__ */ jsx(
|
|
4304
|
+
CheckboxPrimitive.Indicator,
|
|
4305
|
+
{
|
|
4306
|
+
...slot(checkboxAnatomy, "indicator"),
|
|
4307
|
+
className: "flex items-center justify-center text-current",
|
|
4308
|
+
children: resolvedChecked === "indeterminate" ? /* @__PURE__ */ jsx(MinusIcon, { className: "size-3", strokeWidth: 3, "aria-hidden": "true" }) : shape === "circle" ? /* @__PURE__ */ jsx("span", { className: "size-1.5 rounded-full bg-current", "aria-hidden": "true" }) : /* @__PURE__ */ jsx(CheckIcon, { className: "size-3", strokeWidth: 3, "aria-hidden": "true" })
|
|
4309
|
+
}
|
|
4310
|
+
)
|
|
4311
|
+
}
|
|
4312
|
+
),
|
|
4313
|
+
label && /* @__PURE__ */ jsx(
|
|
4314
|
+
"label",
|
|
4315
|
+
{
|
|
4316
|
+
htmlFor: id,
|
|
4317
|
+
...slot(checkboxAnatomy, "label"),
|
|
4318
|
+
className: "text-fg peer-disabled:text-fg-disabled cursor-pointer text-[13px] leading-none select-none peer-disabled:cursor-not-allowed",
|
|
4319
|
+
children: label
|
|
4320
|
+
}
|
|
4321
|
+
)
|
|
4322
|
+
] });
|
|
4323
|
+
});
|
|
4324
|
+
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
3761
4325
|
function ClientSelect({
|
|
3762
4326
|
clients,
|
|
3763
4327
|
value,
|
|
@@ -3885,6 +4449,7 @@ var DialogOverlay = React39.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
3885
4449
|
DialogPrimitive.Overlay,
|
|
3886
4450
|
{
|
|
3887
4451
|
ref,
|
|
4452
|
+
...slot(dialogAnatomy, "overlay"),
|
|
3888
4453
|
className: cn(
|
|
3889
4454
|
"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]",
|
|
3890
4455
|
microInteractions.overlay,
|
|
@@ -3907,10 +4472,12 @@ var DialogContent = React39.forwardRef(({ size = "md", showCloseButton = true, c
|
|
|
3907
4472
|
DialogPrimitive.Content,
|
|
3908
4473
|
{
|
|
3909
4474
|
ref,
|
|
4475
|
+
...slot(dialogAnatomy, "content"),
|
|
4476
|
+
...stateAttributes({ size }),
|
|
3910
4477
|
className: cn(
|
|
3911
4478
|
"fixed top-1/2 left-1/2 z-[var(--z-modal)] w-full",
|
|
3912
4479
|
"scrollbar-thin max-h-[calc(100vh-6rem)] overflow-y-auto",
|
|
3913
|
-
"rounded-card border-rule bg-surface shadow-
|
|
4480
|
+
"rounded-card border-rule bg-surface shadow-overlay border p-6",
|
|
3914
4481
|
"font-body text-fg",
|
|
3915
4482
|
// motion: scale + fade keyed off data-state
|
|
3916
4483
|
microInteractions.overlay,
|
|
@@ -3925,6 +4492,7 @@ var DialogContent = React39.forwardRef(({ size = "md", showCloseButton = true, c
|
|
|
3925
4492
|
showCloseButton && /* @__PURE__ */ jsx(
|
|
3926
4493
|
DialogPrimitive.Close,
|
|
3927
4494
|
{
|
|
4495
|
+
...slot(dialogAnatomy, "close"),
|
|
3928
4496
|
className: cn(
|
|
3929
4497
|
"absolute top-4 right-4 inline-flex size-7 items-center justify-center",
|
|
3930
4498
|
"rounded-icon text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
@@ -3941,13 +4509,29 @@ var DialogContent = React39.forwardRef(({ size = "md", showCloseButton = true, c
|
|
|
3941
4509
|
)
|
|
3942
4510
|
] }));
|
|
3943
4511
|
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
3944
|
-
var DialogClose = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4512
|
+
var DialogClose = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4513
|
+
DialogPrimitive.Close,
|
|
4514
|
+
{
|
|
4515
|
+
ref,
|
|
4516
|
+
...slot(dialogAnatomy, "close"),
|
|
4517
|
+
className: cn(className),
|
|
4518
|
+
...props
|
|
4519
|
+
}
|
|
4520
|
+
));
|
|
3945
4521
|
DialogClose.displayName = "DialogClose";
|
|
3946
|
-
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
4522
|
+
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
4523
|
+
"div",
|
|
4524
|
+
{
|
|
4525
|
+
...slot(dialogAnatomy, "header"),
|
|
4526
|
+
className: cn("mb-4 flex flex-col gap-1.5 pr-8", className),
|
|
4527
|
+
...props
|
|
4528
|
+
}
|
|
4529
|
+
);
|
|
3947
4530
|
DialogHeader.displayName = "DialogHeader";
|
|
3948
4531
|
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
3949
4532
|
"div",
|
|
3950
4533
|
{
|
|
4534
|
+
...slot(dialogAnatomy, "footer"),
|
|
3951
4535
|
className: cn(
|
|
3952
4536
|
"mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-end",
|
|
3953
4537
|
className
|
|
@@ -3960,6 +4544,7 @@ var DialogTitle = React39.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
3960
4544
|
DialogPrimitive.Title,
|
|
3961
4545
|
{
|
|
3962
4546
|
ref,
|
|
4547
|
+
...slot(dialogAnatomy, "title"),
|
|
3963
4548
|
className: cn(
|
|
3964
4549
|
"font-display text-fg text-base leading-tight font-medium tracking-tight",
|
|
3965
4550
|
className
|
|
@@ -3972,16 +4557,73 @@ var DialogDescription = React39.forwardRef(({ className, ...props }, ref) => /*
|
|
|
3972
4557
|
DialogPrimitive.Description,
|
|
3973
4558
|
{
|
|
3974
4559
|
ref,
|
|
4560
|
+
...slot(dialogAnatomy, "description"),
|
|
3975
4561
|
className: cn("text-fg-3 text-sm", className),
|
|
3976
4562
|
...props
|
|
3977
4563
|
}
|
|
3978
4564
|
));
|
|
3979
4565
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
3980
|
-
var
|
|
3981
|
-
|
|
3982
|
-
|
|
3983
|
-
|
|
3984
|
-
);
|
|
4566
|
+
var APPLE = /Mac|iPhone|iPad|iPod/;
|
|
4567
|
+
function detectPlatform(nav) {
|
|
4568
|
+
if (!nav) return "other";
|
|
4569
|
+
const hinted = nav.userAgentData?.platform;
|
|
4570
|
+
if (hinted && /^(macOS|iOS|iPadOS)$/i.test(hinted)) return "apple";
|
|
4571
|
+
if (hinted && hinted.length > 0) return "other";
|
|
4572
|
+
const platform = nav.platform ?? "";
|
|
4573
|
+
if (APPLE.test(platform)) return "apple";
|
|
4574
|
+
const userAgent = nav.userAgent ?? "";
|
|
4575
|
+
return APPLE.test(userAgent) ? "apple" : "other";
|
|
4576
|
+
}
|
|
4577
|
+
var detected;
|
|
4578
|
+
var subscribe = () => () => {
|
|
4579
|
+
};
|
|
4580
|
+
function usePlatform({ serverValue = "other" } = {}) {
|
|
4581
|
+
const getSnapshot = () => {
|
|
4582
|
+
if (typeof navigator === "undefined") return serverValue;
|
|
4583
|
+
detected ??= detectPlatform(navigator);
|
|
4584
|
+
return detected;
|
|
4585
|
+
};
|
|
4586
|
+
const getServerSnapshot = () => serverValue;
|
|
4587
|
+
return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
4588
|
+
}
|
|
4589
|
+
var GLYPHS = {
|
|
4590
|
+
mod: { apple: "\u2318", other: "Ctrl" },
|
|
4591
|
+
alt: { apple: "\u2325", other: "Alt" },
|
|
4592
|
+
shift: { apple: "\u21E7", other: "Shift" },
|
|
4593
|
+
ctrl: { apple: "\u2303", other: "Ctrl" }
|
|
4594
|
+
};
|
|
4595
|
+
function kbdGlyphText(glyph, platform) {
|
|
4596
|
+
return GLYPHS[glyph][platform];
|
|
4597
|
+
}
|
|
4598
|
+
var VARIANT_CLASS = {
|
|
4599
|
+
keycap: cn(
|
|
4600
|
+
"inline-flex items-center justify-center min-w-[18px] h-[18px] px-[5px]",
|
|
4601
|
+
"font-mono text-[10.5px] text-fg-3 bg-bg-2 border border-rule rounded-icon",
|
|
4602
|
+
"[border-bottom-width:1.5px]"
|
|
4603
|
+
),
|
|
4604
|
+
flat: cn(
|
|
4605
|
+
"rounded-icon inline-flex h-5 min-w-5 items-center justify-center px-1.5",
|
|
4606
|
+
"border-rule bg-bg-2 text-fg-3 border font-mono text-[10.5px]"
|
|
4607
|
+
)
|
|
4608
|
+
};
|
|
4609
|
+
var Kbd = forwardRef(function Kbd2({ variant = "keycap", glyph, className, children, ...props }, ref) {
|
|
4610
|
+
const platform = usePlatform();
|
|
4611
|
+
return /* @__PURE__ */ jsxs(
|
|
4612
|
+
"kbd",
|
|
4613
|
+
{
|
|
4614
|
+
ref,
|
|
4615
|
+
...slot(kbdAnatomy, "root"),
|
|
4616
|
+
...stateAttributes({ variant }),
|
|
4617
|
+
className: cn(VARIANT_CLASS[variant], className),
|
|
4618
|
+
...props,
|
|
4619
|
+
children: [
|
|
4620
|
+
glyph ? kbdGlyphText(glyph, platform) : null,
|
|
4621
|
+
children
|
|
4622
|
+
]
|
|
4623
|
+
}
|
|
4624
|
+
);
|
|
4625
|
+
});
|
|
4626
|
+
Kbd.displayName = "Kbd";
|
|
3985
4627
|
function groupItems(items) {
|
|
3986
4628
|
const groups = /* @__PURE__ */ new Map();
|
|
3987
4629
|
for (const item of items) {
|
|
@@ -4027,7 +4669,7 @@ function CommandPalette({
|
|
|
4027
4669
|
"aria-label": "Command palette",
|
|
4028
4670
|
className: cn(
|
|
4029
4671
|
"fixed top-[20vh] left-1/2 z-[var(--z-modal)] w-full max-w-xl -translate-x-1/2",
|
|
4030
|
-
"rounded-card border-rule bg-surface shadow-
|
|
4672
|
+
"rounded-card border-rule bg-surface shadow-overlay overflow-hidden border",
|
|
4031
4673
|
"font-body text-fg",
|
|
4032
4674
|
"transition-[opacity,transform] duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]",
|
|
4033
4675
|
"data-[state=closed]:-translate-x-1/2 data-[state=closed]:scale-95 data-[state=closed]:opacity-0",
|
|
@@ -4115,7 +4757,7 @@ function CommandPalette({
|
|
|
4115
4757
|
/* @__PURE__ */ jsx("div", { className: "text-fg text-sm font-medium", children: item.label }),
|
|
4116
4758
|
item.description && /* @__PURE__ */ jsx("div", { className: "text-fg-3 line-clamp-1 text-xs", children: item.description })
|
|
4117
4759
|
] }),
|
|
4118
|
-
item.shortcut && /* @__PURE__ */ jsx(
|
|
4760
|
+
item.shortcut && /* @__PURE__ */ jsx(Kbd, { className: "hidden shrink-0 sm:inline-flex", children: item.shortcut })
|
|
4119
4761
|
]
|
|
4120
4762
|
},
|
|
4121
4763
|
item.id
|
|
@@ -4128,15 +4770,15 @@ function CommandPalette({
|
|
|
4128
4770
|
),
|
|
4129
4771
|
/* @__PURE__ */ jsxs("div", { className: "border-rule bg-bg-2/40 text-fg-3 flex flex-wrap items-center gap-4 border-t px-4 py-2.5", children: [
|
|
4130
4772
|
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5", children: [
|
|
4131
|
-
/* @__PURE__ */ jsx(
|
|
4773
|
+
/* @__PURE__ */ jsx(Kbd, { children: "\u2191\u2193" }),
|
|
4132
4774
|
"Navigate"
|
|
4133
4775
|
] }),
|
|
4134
4776
|
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5", children: [
|
|
4135
|
-
/* @__PURE__ */ jsx(
|
|
4777
|
+
/* @__PURE__ */ jsx(Kbd, { children: "\u21B5" }),
|
|
4136
4778
|
"Select"
|
|
4137
4779
|
] }),
|
|
4138
4780
|
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5", children: [
|
|
4139
|
-
/* @__PURE__ */ jsx(
|
|
4781
|
+
/* @__PURE__ */ jsx(Kbd, { children: "esc" }),
|
|
4140
4782
|
"Close"
|
|
4141
4783
|
] })
|
|
4142
4784
|
] })
|
|
@@ -4229,6 +4871,7 @@ var ContextMenuSubTrigger = React39.forwardRef(({ className, inset, children, ..
|
|
|
4229
4871
|
ContextMenuPrimitive.SubTrigger,
|
|
4230
4872
|
{
|
|
4231
4873
|
ref,
|
|
4874
|
+
...slot(contextMenuAnatomy, "sub-trigger"),
|
|
4232
4875
|
className: cn(
|
|
4233
4876
|
"rounded-pill flex cursor-default items-center gap-2 px-2 py-1.5 text-sm outline-none select-none",
|
|
4234
4877
|
"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
@@ -4256,6 +4899,7 @@ var ContextMenuSubContent = React39.forwardRef(({ className, ...props }, ref) =>
|
|
|
4256
4899
|
ContextMenuPrimitive.SubContent,
|
|
4257
4900
|
{
|
|
4258
4901
|
ref,
|
|
4902
|
+
...slot(contextMenuAnatomy, "sub-content"),
|
|
4259
4903
|
className: cn(
|
|
4260
4904
|
"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[8rem] overflow-hidden border p-1",
|
|
4261
4905
|
"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
@@ -4273,6 +4917,7 @@ var ContextMenuContent = React39.forwardRef(({ className, ...props }, ref) => /*
|
|
|
4273
4917
|
ContextMenuPrimitive.Content,
|
|
4274
4918
|
{
|
|
4275
4919
|
ref,
|
|
4920
|
+
...slot(contextMenuAnatomy, "content"),
|
|
4276
4921
|
className: cn(
|
|
4277
4922
|
"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[10rem] overflow-hidden border p-1",
|
|
4278
4923
|
"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
@@ -4289,6 +4934,7 @@ var ContextMenuItem = React39.forwardRef(({ className, destructive, inset, ...pr
|
|
|
4289
4934
|
ContextMenuPrimitive.Item,
|
|
4290
4935
|
{
|
|
4291
4936
|
ref,
|
|
4937
|
+
...slot(contextMenuAnatomy, "item"),
|
|
4292
4938
|
className: cn(
|
|
4293
4939
|
"rounded-pill relative flex cursor-default items-center gap-2 px-2 py-1.5 text-sm outline-none select-none",
|
|
4294
4940
|
"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
@@ -4307,6 +4953,7 @@ var ContextMenuCheckboxItem = React39.forwardRef(({ className, children, checked
|
|
|
4307
4953
|
ContextMenuPrimitive.CheckboxItem,
|
|
4308
4954
|
{
|
|
4309
4955
|
ref,
|
|
4956
|
+
...slot(contextMenuAnatomy, "checkbox-item"),
|
|
4310
4957
|
checked,
|
|
4311
4958
|
className: cn(
|
|
4312
4959
|
"rounded-pill relative flex cursor-default items-center gap-2 py-1.5 pr-2 pl-8 text-sm outline-none select-none",
|
|
@@ -4317,7 +4964,7 @@ var ContextMenuCheckboxItem = React39.forwardRef(({ className, children, checked
|
|
|
4317
4964
|
),
|
|
4318
4965
|
...props,
|
|
4319
4966
|
children: [
|
|
4320
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5", "aria-hidden": "true" }) }) }),
|
|
4967
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { ...slot(contextMenuAnatomy, "item-indicator"), children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5", "aria-hidden": "true" }) }) }),
|
|
4321
4968
|
children
|
|
4322
4969
|
]
|
|
4323
4970
|
}
|
|
@@ -4327,6 +4974,7 @@ var ContextMenuRadioItem = React39.forwardRef(({ className, children, ...props }
|
|
|
4327
4974
|
ContextMenuPrimitive.RadioItem,
|
|
4328
4975
|
{
|
|
4329
4976
|
ref,
|
|
4977
|
+
...slot(contextMenuAnatomy, "radio-item"),
|
|
4330
4978
|
className: cn(
|
|
4331
4979
|
"rounded-pill relative flex cursor-default items-center gap-2 py-1.5 pr-2 pl-8 text-sm outline-none select-none",
|
|
4332
4980
|
"text-fg-2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
@@ -4336,7 +4984,7 @@ var ContextMenuRadioItem = React39.forwardRef(({ className, children, ...props }
|
|
|
4336
4984
|
),
|
|
4337
4985
|
...props,
|
|
4338
4986
|
children: [
|
|
4339
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current", "aria-hidden": "true" }) }) }),
|
|
4987
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { ...slot(contextMenuAnatomy, "item-indicator"), children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current", "aria-hidden": "true" }) }) }),
|
|
4340
4988
|
children
|
|
4341
4989
|
]
|
|
4342
4990
|
}
|
|
@@ -4346,6 +4994,7 @@ var ContextMenuLabel = React39.forwardRef(({ className, inset, ...props }, ref)
|
|
|
4346
4994
|
ContextMenuPrimitive.Label,
|
|
4347
4995
|
{
|
|
4348
4996
|
ref,
|
|
4997
|
+
...slot(contextMenuAnatomy, "label"),
|
|
4349
4998
|
className: cn(
|
|
4350
4999
|
"text-fg-3 px-2 py-1.5 font-mono text-[11px] tracking-wider uppercase",
|
|
4351
5000
|
inset && "pl-8",
|
|
@@ -4359,6 +5008,7 @@ var ContextMenuSeparator = React39.forwardRef(({ className, ...props }, ref) =>
|
|
|
4359
5008
|
ContextMenuPrimitive.Separator,
|
|
4360
5009
|
{
|
|
4361
5010
|
ref,
|
|
5011
|
+
...slot(contextMenuAnatomy, "separator"),
|
|
4362
5012
|
className: cn("bg-rule -mx-1 my-1 h-px", className),
|
|
4363
5013
|
...props
|
|
4364
5014
|
}
|
|
@@ -4457,6 +5107,7 @@ var PopoverContent = React39.forwardRef(({ className, align = "center", side = "
|
|
|
4457
5107
|
align,
|
|
4458
5108
|
side,
|
|
4459
5109
|
sideOffset,
|
|
5110
|
+
...slot(popoverAnatomy, "content"),
|
|
4460
5111
|
className: cn(
|
|
4461
5112
|
"rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] w-72 border p-4 outline-none",
|
|
4462
5113
|
microInteractions.overlay,
|
|
@@ -4574,7 +5225,9 @@ var DatePicker = forwardRef(function DatePicker2({
|
|
|
4574
5225
|
"aria-label": ariaLabel,
|
|
4575
5226
|
picker = "day",
|
|
4576
5227
|
formatLabel,
|
|
4577
|
-
iconPosition = "right"
|
|
5228
|
+
iconPosition = "right",
|
|
5229
|
+
captionLayout = "dropdown",
|
|
5230
|
+
inputClassName
|
|
4578
5231
|
}, ref) {
|
|
4579
5232
|
const isYearMode = picker === "year";
|
|
4580
5233
|
const hasCustomYearLabel = isYearMode && !!formatLabel;
|
|
@@ -4691,11 +5344,12 @@ var DatePicker = forwardRef(function DatePicker2({
|
|
|
4691
5344
|
"motion-reduce:transition-none",
|
|
4692
5345
|
"placeholder:font-body placeholder:text-fg-4",
|
|
4693
5346
|
"focus-visible:[border-color:var(--focus-ring-border)] focus-visible:outline-none",
|
|
4694
|
-
"focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
5347
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring-field)]",
|
|
4695
5348
|
"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed",
|
|
4696
5349
|
"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg",
|
|
4697
5350
|
"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]",
|
|
4698
|
-
hasCustomYearLabel && "cursor-pointer"
|
|
5351
|
+
hasCustomYearLabel && "cursor-pointer",
|
|
5352
|
+
inputClassName
|
|
4699
5353
|
)
|
|
4700
5354
|
}
|
|
4701
5355
|
),
|
|
@@ -4744,6 +5398,7 @@ var DatePicker = forwardRef(function DatePicker2({
|
|
|
4744
5398
|
minDate,
|
|
4745
5399
|
maxDate,
|
|
4746
5400
|
defaultMonth: selectedDate ?? minDate ?? void 0,
|
|
5401
|
+
captionLayout,
|
|
4747
5402
|
autoFocus: true
|
|
4748
5403
|
}
|
|
4749
5404
|
)
|
|
@@ -4772,7 +5427,8 @@ var DateRangePicker = forwardRef(
|
|
|
4772
5427
|
min,
|
|
4773
5428
|
max,
|
|
4774
5429
|
iconPosition = "right",
|
|
4775
|
-
"aria-label": ariaLabel
|
|
5430
|
+
"aria-label": ariaLabel,
|
|
5431
|
+
captionLayout = "dropdown"
|
|
4776
5432
|
}, ref) {
|
|
4777
5433
|
const generatedId = useId();
|
|
4778
5434
|
const id = providedId ?? generatedId;
|
|
@@ -4831,6 +5487,14 @@ var DateRangePicker = forwardRef(
|
|
|
4831
5487
|
to: isoToDate(current.to ?? "")
|
|
4832
5488
|
};
|
|
4833
5489
|
const selectedRange = draftRange ?? committedRange;
|
|
5490
|
+
const navRange = useMemo(
|
|
5491
|
+
() => captionLayout === "label" ? void 0 : resolveCalendarNavRange({
|
|
5492
|
+
minDate,
|
|
5493
|
+
maxDate,
|
|
5494
|
+
selected: [selectedRange.from, selectedRange.to]
|
|
5495
|
+
}),
|
|
5496
|
+
[captionLayout, minDate, maxDate, selectedRange.from, selectedRange.to]
|
|
5497
|
+
);
|
|
4834
5498
|
const disabledMatcher = (() => {
|
|
4835
5499
|
if (!minDate && !maxDate) return void 0;
|
|
4836
5500
|
if (minDate && maxDate) return [{ before: minDate }, { after: maxDate }];
|
|
@@ -4873,7 +5537,7 @@ var DateRangePicker = forwardRef(
|
|
|
4873
5537
|
"motion-reduce:transition-none",
|
|
4874
5538
|
"hover:bg-bg-2",
|
|
4875
5539
|
"focus-visible:[border-color:var(--focus-ring-border)] focus-visible:outline-none",
|
|
4876
|
-
"focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
5540
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring-field)]",
|
|
4877
5541
|
"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed disabled:hover:bg-bg-disabled",
|
|
4878
5542
|
"data-[invalid=true]:border-danger-line data-[invalid=true]:focus-visible:border-danger-fg",
|
|
4879
5543
|
"data-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]"
|
|
@@ -4907,38 +5571,25 @@ var DateRangePicker = forwardRef(
|
|
|
4907
5571
|
mode: "range",
|
|
4908
5572
|
numberOfMonths: 2,
|
|
4909
5573
|
navLayout: "around",
|
|
5574
|
+
captionLayout,
|
|
5575
|
+
startMonth: navRange?.startMonth,
|
|
5576
|
+
endMonth: navRange?.endMonth,
|
|
4910
5577
|
selected: selectedRange.from ? { from: selectedRange.from, to: selectedRange.to } : void 0,
|
|
4911
5578
|
onSelect: handleCalendarSelect,
|
|
4912
5579
|
disabled: disabledMatcher,
|
|
4913
5580
|
showOutsideDays: true,
|
|
4914
5581
|
autoFocus: true,
|
|
4915
5582
|
defaultMonth: selectedRange.from ?? minDate ?? void 0,
|
|
4916
|
-
components:
|
|
4917
|
-
Chevron: ({ orientation, className: chevClass }) => {
|
|
4918
|
-
const Icon3 = orientation === "right" ? ChevronRightIcon : ChevronLeftIcon;
|
|
4919
|
-
return /* @__PURE__ */ jsx(Icon3, { className: cn("text-fg-3 size-4", chevClass), "aria-hidden": "true" });
|
|
4920
|
-
}
|
|
4921
|
-
},
|
|
5583
|
+
components: CALENDAR_CAPTION_COMPONENTS,
|
|
4922
5584
|
className: "font-body text-fg select-none",
|
|
4923
5585
|
classNames: {
|
|
4924
5586
|
root: "p-3",
|
|
4925
5587
|
months: "flex flex-col gap-6 sm:flex-row sm:gap-4",
|
|
4926
|
-
|
|
4927
|
-
//
|
|
4928
|
-
//
|
|
4929
|
-
|
|
4930
|
-
|
|
4931
|
-
// absolute positioning gymnastics.
|
|
4932
|
-
month_caption: "flex h-7 items-center justify-center font-display text-[13px] font-medium text-fg",
|
|
4933
|
-
caption_label: "tabular-nums",
|
|
4934
|
-
nav: "contents",
|
|
4935
|
-
// navLayout="around" renders Prev as a sibling BEFORE the
|
|
4936
|
-
// left month's caption, and Next as a sibling AFTER the
|
|
4937
|
-
// right month's caption. Absolute-position each so they
|
|
4938
|
-
// sit at their own month's top corners without disturbing
|
|
4939
|
-
// the centered caption row.
|
|
4940
|
-
button_previous: "absolute left-0 top-0 z-10 inline-flex size-7 items-center justify-center rounded-input text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none hover:bg-bg-2 hover:text-fg focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)] disabled:cursor-not-allowed disabled:text-fg-disabled disabled:pointer-events-none",
|
|
4941
|
-
button_next: "absolute right-0 top-0 z-10 inline-flex size-7 items-center justify-center rounded-input text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none hover:bg-bg-2 hover:text-fg focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)] disabled:cursor-not-allowed disabled:text-fg-disabled disabled:pointer-events-none",
|
|
5588
|
+
...CALENDAR_CAPTION_CLASSNAMES,
|
|
5589
|
+
// Two side-by-side months; each keeps the shared relative
|
|
5590
|
+
// caption/nav contract and a fixed width.
|
|
5591
|
+
month: cn(CALENDAR_CAPTION_CLASSNAMES.month, "w-[16rem] flex-none"),
|
|
5592
|
+
month_caption: cn(CALENDAR_CAPTION_CLASSNAMES.month_caption, "text-[13px]"),
|
|
4942
5593
|
month_grid: "w-full border-collapse",
|
|
4943
5594
|
weekdays: "flex",
|
|
4944
5595
|
weekday: "flex-1 text-center text-[11px] font-medium uppercase tracking-wide text-fg-4 pb-1",
|
|
@@ -5201,6 +5852,7 @@ var DropdownMenuSubTrigger = React39.forwardRef(({ className, inset, children, .
|
|
|
5201
5852
|
DropdownMenuPrimitive.SubTrigger,
|
|
5202
5853
|
{
|
|
5203
5854
|
ref,
|
|
5855
|
+
...slot(dropdownMenuAnatomy, "sub-trigger"),
|
|
5204
5856
|
className: cn(
|
|
5205
5857
|
"rounded-pill flex cursor-default items-center gap-2 px-2 py-1.5 text-sm outline-none select-none",
|
|
5206
5858
|
"text-menu-item-fg transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
@@ -5228,6 +5880,7 @@ var DropdownMenuSubContent = React39.forwardRef(({ className, ...props }, ref) =
|
|
|
5228
5880
|
DropdownMenuPrimitive.SubContent,
|
|
5229
5881
|
{
|
|
5230
5882
|
ref,
|
|
5883
|
+
...slot(dropdownMenuAnatomy, "sub-content"),
|
|
5231
5884
|
className: cn(
|
|
5232
5885
|
"rounded-card border-menu-border bg-menu-bg text-menu-fg shadow-pop z-[var(--z-dropdown)] min-w-[8rem] overflow-hidden border p-1",
|
|
5233
5886
|
"transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
@@ -5245,6 +5898,7 @@ var DropdownMenuContent = React39.forwardRef(({ className, sideOffset = 6, align
|
|
|
5245
5898
|
DropdownMenuPrimitive.Content,
|
|
5246
5899
|
{
|
|
5247
5900
|
ref,
|
|
5901
|
+
...slot(dropdownMenuAnatomy, "content"),
|
|
5248
5902
|
sideOffset,
|
|
5249
5903
|
align,
|
|
5250
5904
|
className: cn(
|
|
@@ -5263,6 +5917,7 @@ var DropdownMenuItem = React39.forwardRef(({ className, destructive, inset, ...p
|
|
|
5263
5917
|
DropdownMenuPrimitive.Item,
|
|
5264
5918
|
{
|
|
5265
5919
|
ref,
|
|
5920
|
+
...slot(dropdownMenuAnatomy, "item"),
|
|
5266
5921
|
className: cn(
|
|
5267
5922
|
"rounded-pill relative flex cursor-default items-center gap-2 px-2 py-1.5 text-sm outline-none select-none",
|
|
5268
5923
|
"text-menu-item-fg transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
@@ -5281,6 +5936,7 @@ var DropdownMenuCheckboxItem = React39.forwardRef(({ className, children, checke
|
|
|
5281
5936
|
DropdownMenuPrimitive.CheckboxItem,
|
|
5282
5937
|
{
|
|
5283
5938
|
ref,
|
|
5939
|
+
...slot(dropdownMenuAnatomy, "checkbox-item"),
|
|
5284
5940
|
checked,
|
|
5285
5941
|
className: cn(
|
|
5286
5942
|
"rounded-pill relative flex cursor-default items-center gap-2 py-1.5 pr-2 pl-8 text-sm outline-none select-none",
|
|
@@ -5291,7 +5947,7 @@ var DropdownMenuCheckboxItem = React39.forwardRef(({ className, children, checke
|
|
|
5291
5947
|
),
|
|
5292
5948
|
...props,
|
|
5293
5949
|
children: [
|
|
5294
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5", "aria-hidden": "true" }) }) }),
|
|
5950
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { ...slot(dropdownMenuAnatomy, "item-indicator"), children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5", "aria-hidden": "true" }) }) }),
|
|
5295
5951
|
children
|
|
5296
5952
|
]
|
|
5297
5953
|
}
|
|
@@ -5301,6 +5957,7 @@ var DropdownMenuRadioItem = React39.forwardRef(({ className, children, ...props
|
|
|
5301
5957
|
DropdownMenuPrimitive.RadioItem,
|
|
5302
5958
|
{
|
|
5303
5959
|
ref,
|
|
5960
|
+
...slot(dropdownMenuAnatomy, "radio-item"),
|
|
5304
5961
|
className: cn(
|
|
5305
5962
|
"rounded-pill relative flex cursor-default items-center gap-2 py-1.5 pr-2 pl-8 text-sm outline-none select-none",
|
|
5306
5963
|
"text-menu-item-fg transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
@@ -5310,7 +5967,7 @@ var DropdownMenuRadioItem = React39.forwardRef(({ className, children, ...props
|
|
|
5310
5967
|
),
|
|
5311
5968
|
...props,
|
|
5312
5969
|
children: [
|
|
5313
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current", "aria-hidden": "true" }) }) }),
|
|
5970
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { ...slot(dropdownMenuAnatomy, "item-indicator"), children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current", "aria-hidden": "true" }) }) }),
|
|
5314
5971
|
children
|
|
5315
5972
|
]
|
|
5316
5973
|
}
|
|
@@ -5320,6 +5977,7 @@ var DropdownMenuLabel = React39.forwardRef(({ className, inset, ...props }, ref)
|
|
|
5320
5977
|
DropdownMenuPrimitive.Label,
|
|
5321
5978
|
{
|
|
5322
5979
|
ref,
|
|
5980
|
+
...slot(dropdownMenuAnatomy, "label"),
|
|
5323
5981
|
className: cn(
|
|
5324
5982
|
"text-menu-label-fg px-2 py-1.5 font-mono text-[11px] tracking-wider uppercase",
|
|
5325
5983
|
inset && "pl-8",
|
|
@@ -5333,6 +5991,7 @@ var DropdownMenuSeparator = React39.forwardRef(({ className, ...props }, ref) =>
|
|
|
5333
5991
|
DropdownMenuPrimitive.Separator,
|
|
5334
5992
|
{
|
|
5335
5993
|
ref,
|
|
5994
|
+
...slot(dropdownMenuAnatomy, "separator"),
|
|
5336
5995
|
className: cn("bg-menu-border -mx-1 my-1 h-px", className),
|
|
5337
5996
|
...props
|
|
5338
5997
|
}
|
|
@@ -5341,6 +6000,7 @@ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
|
|
|
5341
6000
|
var DropdownMenuShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
5342
6001
|
"span",
|
|
5343
6002
|
{
|
|
6003
|
+
...slot(dropdownMenuAnatomy, "shortcut"),
|
|
5344
6004
|
className: cn("text-menu-shortcut-fg ml-auto font-mono text-[11px] tracking-wider", className),
|
|
5345
6005
|
...props
|
|
5346
6006
|
}
|
|
@@ -5424,6 +6084,7 @@ function FileUpload({
|
|
|
5424
6084
|
const inputId = useId();
|
|
5425
6085
|
const [isDragOver, setIsDragOver] = useState(false);
|
|
5426
6086
|
const [error, setError] = useState(null);
|
|
6087
|
+
const wrapperOwnsFocus = props.tabIndex !== void 0 || props.role !== void 0;
|
|
5427
6088
|
const validateFiles = useCallback(
|
|
5428
6089
|
(files) => {
|
|
5429
6090
|
setError(null);
|
|
@@ -5457,81 +6118,108 @@ function FileUpload({
|
|
|
5457
6118
|
function handleDrop(e) {
|
|
5458
6119
|
e.preventDefault();
|
|
5459
6120
|
setIsDragOver(false);
|
|
5460
|
-
if (disabled) return;
|
|
5461
|
-
handleFiles(e.dataTransfer.files);
|
|
5462
|
-
}
|
|
5463
|
-
return /* @__PURE__ */ jsxs(
|
|
5464
|
-
|
|
5465
|
-
|
|
5466
|
-
|
|
5467
|
-
|
|
5468
|
-
|
|
5469
|
-
|
|
5470
|
-
|
|
5471
|
-
|
|
5472
|
-
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
|
|
5476
|
-
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5485
|
-
|
|
5486
|
-
|
|
5487
|
-
|
|
5488
|
-
|
|
5489
|
-
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
|
|
5493
|
-
|
|
5494
|
-
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
if (e.target.files) handleFiles(e.target.files);
|
|
5498
|
-
e.target.value = "";
|
|
5499
|
-
},
|
|
5500
|
-
className: "fixed -top-[9999px] -left-[9999px] opacity-0",
|
|
5501
|
-
disabled,
|
|
5502
|
-
tabIndex: -1
|
|
5503
|
-
}
|
|
5504
|
-
),
|
|
5505
|
-
children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5506
|
-
/* @__PURE__ */ jsx(
|
|
5507
|
-
"div",
|
|
5508
|
-
{
|
|
5509
|
-
className: cn(
|
|
5510
|
-
"rounded-icon flex size-10 items-center justify-center transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
5511
|
-
isDragOver ? "bg-brand text-fg-on-brand" : "bg-brand-bg text-brand"
|
|
5512
|
-
),
|
|
5513
|
-
"aria-hidden": "true",
|
|
5514
|
-
children: /* @__PURE__ */ jsx(UploadIcon, { className: "size-5" })
|
|
5515
|
-
}
|
|
6121
|
+
if (disabled) return;
|
|
6122
|
+
handleFiles(e.dataTransfer.files);
|
|
6123
|
+
}
|
|
6124
|
+
return /* @__PURE__ */ jsxs(
|
|
6125
|
+
"div",
|
|
6126
|
+
{
|
|
6127
|
+
...slot(fileUploadAnatomy, "root"),
|
|
6128
|
+
...stateAttributes({ disabled, invalid: !!error }),
|
|
6129
|
+
className: cn("w-full", className),
|
|
6130
|
+
...props,
|
|
6131
|
+
children: [
|
|
6132
|
+
/* @__PURE__ */ jsxs(
|
|
6133
|
+
"label",
|
|
6134
|
+
{
|
|
6135
|
+
htmlFor: inputId,
|
|
6136
|
+
...slot(fileUploadAnatomy, "dropzone"),
|
|
6137
|
+
...stateAttributes({ disabled, state: isDragOver ? "drag-over" : void 0 }),
|
|
6138
|
+
onDragOver: (e) => {
|
|
6139
|
+
e.preventDefault();
|
|
6140
|
+
if (!disabled) setIsDragOver(true);
|
|
6141
|
+
},
|
|
6142
|
+
onDragLeave: () => setIsDragOver(false),
|
|
6143
|
+
onDrop: handleDrop,
|
|
6144
|
+
className: cn(
|
|
6145
|
+
"flex flex-col items-center justify-center gap-2",
|
|
6146
|
+
"rounded-card border-rule-strong bg-surface border border-dashed",
|
|
6147
|
+
"font-body p-8 text-center",
|
|
6148
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
6149
|
+
"motion-reduce:transition-none",
|
|
6150
|
+
// Hover (when not disabled)
|
|
6151
|
+
!disabled && "hover:border-brand-line hover:bg-brand-bg/40",
|
|
6152
|
+
// Drag-over → Pro purple highlight
|
|
6153
|
+
isDragOver && "border-brand-line bg-brand-bg",
|
|
6154
|
+
disabled && "border-rule bg-bg-disabled text-fg-disabled cursor-not-allowed",
|
|
6155
|
+
!disabled && "cursor-pointer",
|
|
6156
|
+
// Keyboard focus lands on the (visually hidden) file input.
|
|
6157
|
+
"has-[input:focus-visible]:[box-shadow:var(--shadow-focus-ring)]"
|
|
5516
6158
|
),
|
|
5517
|
-
|
|
5518
|
-
/* @__PURE__ */ jsx(
|
|
5519
|
-
|
|
5520
|
-
|
|
5521
|
-
|
|
5522
|
-
|
|
5523
|
-
|
|
5524
|
-
|
|
5525
|
-
|
|
5526
|
-
|
|
5527
|
-
|
|
5528
|
-
|
|
5529
|
-
|
|
5530
|
-
|
|
5531
|
-
|
|
5532
|
-
|
|
5533
|
-
|
|
5534
|
-
|
|
6159
|
+
children: [
|
|
6160
|
+
/* @__PURE__ */ jsx(
|
|
6161
|
+
"input",
|
|
6162
|
+
{
|
|
6163
|
+
ref: inputRef,
|
|
6164
|
+
id: inputId,
|
|
6165
|
+
type: "file",
|
|
6166
|
+
...slot(fileUploadAnatomy, "input"),
|
|
6167
|
+
accept,
|
|
6168
|
+
multiple,
|
|
6169
|
+
onChange: (e) => {
|
|
6170
|
+
if (e.target.files) handleFiles(e.target.files);
|
|
6171
|
+
e.target.value = "";
|
|
6172
|
+
},
|
|
6173
|
+
className: "fixed -top-[9999px] -left-[9999px] opacity-0",
|
|
6174
|
+
onKeyDown: (e) => {
|
|
6175
|
+
if (e.key !== "Enter" && e.key !== " ") return;
|
|
6176
|
+
e.preventDefault();
|
|
6177
|
+
e.currentTarget.click();
|
|
6178
|
+
},
|
|
6179
|
+
disabled,
|
|
6180
|
+
tabIndex: wrapperOwnsFocus ? -1 : void 0
|
|
6181
|
+
}
|
|
6182
|
+
),
|
|
6183
|
+
children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6184
|
+
/* @__PURE__ */ jsx(
|
|
6185
|
+
"div",
|
|
6186
|
+
{
|
|
6187
|
+
className: cn(
|
|
6188
|
+
"rounded-icon flex size-10 items-center justify-center transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
6189
|
+
isDragOver ? "bg-brand text-fg-on-brand" : "bg-brand-bg text-brand"
|
|
6190
|
+
),
|
|
6191
|
+
"aria-hidden": "true",
|
|
6192
|
+
children: /* @__PURE__ */ jsx(UploadIcon, { className: "size-5" })
|
|
6193
|
+
}
|
|
6194
|
+
),
|
|
6195
|
+
/* @__PURE__ */ jsxs("div", { className: "text-fg-3 text-sm", children: [
|
|
6196
|
+
/* @__PURE__ */ jsx("span", { className: "text-fg font-medium", children: "Click to upload" }),
|
|
6197
|
+
" or drag and drop"
|
|
6198
|
+
] }),
|
|
6199
|
+
accept && /* @__PURE__ */ jsxs("p", { className: "text-fg-4 font-mono text-[10.5px]", children: [
|
|
6200
|
+
"Accepted: ",
|
|
6201
|
+
accept
|
|
6202
|
+
] }),
|
|
6203
|
+
maxSize && /* @__PURE__ */ jsxs("p", { className: "text-fg-4 font-mono text-[10.5px]", children: [
|
|
6204
|
+
"Max size: ",
|
|
6205
|
+
formatBytes(maxSize)
|
|
6206
|
+
] })
|
|
6207
|
+
] })
|
|
6208
|
+
]
|
|
6209
|
+
}
|
|
6210
|
+
),
|
|
6211
|
+
error && /* @__PURE__ */ jsx(
|
|
6212
|
+
"p",
|
|
6213
|
+
{
|
|
6214
|
+
role: "alert",
|
|
6215
|
+
...slot(fileUploadAnatomy, "error"),
|
|
6216
|
+
className: "text-danger-fg mt-2 text-sm",
|
|
6217
|
+
children: error
|
|
6218
|
+
}
|
|
6219
|
+
)
|
|
6220
|
+
]
|
|
6221
|
+
}
|
|
6222
|
+
);
|
|
5535
6223
|
}
|
|
5536
6224
|
function formatBytes(bytes) {
|
|
5537
6225
|
if (bytes < 1024) return `${bytes} B`;
|
|
@@ -5641,7 +6329,7 @@ var inputVariants = cva(
|
|
|
5641
6329
|
microInteractions.control,
|
|
5642
6330
|
"placeholder:text-fg-4",
|
|
5643
6331
|
"focus-visible:outline-none focus-visible:[border-color:var(--focus-ring-border)]",
|
|
5644
|
-
"focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
6332
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring-field)]",
|
|
5645
6333
|
"disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled",
|
|
5646
6334
|
"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg",
|
|
5647
6335
|
"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]",
|
|
@@ -5688,6 +6376,7 @@ var Input = forwardRef(function Input2({
|
|
|
5688
6376
|
className,
|
|
5689
6377
|
id: providedId,
|
|
5690
6378
|
placeholder,
|
|
6379
|
+
onWheel,
|
|
5691
6380
|
...props
|
|
5692
6381
|
}, ref) {
|
|
5693
6382
|
const generatedId = useId();
|
|
@@ -5698,12 +6387,25 @@ var Input = forwardRef(function Input2({
|
|
|
5698
6387
|
const inputType = isPassword && showPassword ? "text" : type;
|
|
5699
6388
|
const isFloating = !!floatingLabel && !!label;
|
|
5700
6389
|
const resolvedPlaceholder = isFloating ? placeholder ?? " " : placeholder;
|
|
6390
|
+
const handleWheel = inputType === "number" ? (event) => {
|
|
6391
|
+
onWheel?.(event);
|
|
6392
|
+
if (!event.defaultPrevented) event.currentTarget.blur();
|
|
6393
|
+
} : onWheel;
|
|
5701
6394
|
return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
|
|
5702
|
-
label && !isFloating && /* @__PURE__ */ jsx(
|
|
6395
|
+
label && !isFloating && /* @__PURE__ */ jsx(
|
|
6396
|
+
"label",
|
|
6397
|
+
{
|
|
6398
|
+
htmlFor: id,
|
|
6399
|
+
...slot(inputAnatomy, "label"),
|
|
6400
|
+
className: "text-fg mb-1.5 block text-[13px] leading-none font-medium",
|
|
6401
|
+
children: label
|
|
6402
|
+
}
|
|
6403
|
+
),
|
|
5703
6404
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
5704
6405
|
prefixIcon && /* @__PURE__ */ jsx(
|
|
5705
6406
|
"span",
|
|
5706
6407
|
{
|
|
6408
|
+
...slot(inputAnatomy, "icon-start"),
|
|
5707
6409
|
className: "text-fg-4 pointer-events-none absolute top-1/2 left-3 -translate-y-1/2 [&>svg]:size-4",
|
|
5708
6410
|
"aria-hidden": "true",
|
|
5709
6411
|
children: prefixIcon
|
|
@@ -5718,13 +6420,21 @@ var Input = forwardRef(function Input2({
|
|
|
5718
6420
|
placeholder: resolvedPlaceholder,
|
|
5719
6421
|
"aria-invalid": !!error || void 0,
|
|
5720
6422
|
"aria-describedby": error ? errorId : void 0,
|
|
6423
|
+
...slot(inputAnatomy, "root"),
|
|
6424
|
+
...stateAttributes({
|
|
6425
|
+
variant: variant ?? "default",
|
|
6426
|
+
size: inputSize ?? "md",
|
|
6427
|
+
disabled: props.disabled,
|
|
6428
|
+
invalid: !!error
|
|
6429
|
+
}),
|
|
5721
6430
|
className: cn(
|
|
5722
6431
|
inputVariants({ variant, inputSize }),
|
|
5723
6432
|
prefixIcon && "pl-9",
|
|
5724
6433
|
(suffixIcon || isPassword) && "pr-9",
|
|
5725
|
-
isFloating && "peer placeholder:text-
|
|
6434
|
+
isFloating && "peer focus:placeholder:text-fg-4 placeholder:text-transparent",
|
|
5726
6435
|
className
|
|
5727
6436
|
),
|
|
6437
|
+
onWheel: handleWheel,
|
|
5728
6438
|
...props
|
|
5729
6439
|
}
|
|
5730
6440
|
),
|
|
@@ -5734,6 +6444,7 @@ var Input = forwardRef(function Input2({
|
|
|
5734
6444
|
"label",
|
|
5735
6445
|
{
|
|
5736
6446
|
htmlFor: id,
|
|
6447
|
+
...slot(inputAnatomy, "label"),
|
|
5737
6448
|
className: cn(
|
|
5738
6449
|
"pointer-events-none absolute left-3 origin-left px-1 leading-none",
|
|
5739
6450
|
"bg-surface text-fg-4",
|
|
@@ -5759,6 +6470,7 @@ var Input = forwardRef(function Input2({
|
|
|
5759
6470
|
{
|
|
5760
6471
|
type: "button",
|
|
5761
6472
|
onClick: () => setShowPassword((prev) => !prev),
|
|
6473
|
+
...slot(inputAnatomy, "password-toggle"),
|
|
5762
6474
|
className: "text-fg-4 hover:text-fg absolute top-1/2 right-2.5 -translate-y-1/2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none motion-reduce:transition-none",
|
|
5763
6475
|
"aria-label": showPassword ? "Hide password" : "Show password",
|
|
5764
6476
|
children: showPassword ? /* @__PURE__ */ jsx(EyeOffIcon, { className: "size-4", "aria-hidden": "true" }) : /* @__PURE__ */ jsx(EyeIcon, { className: "size-4", "aria-hidden": "true" })
|
|
@@ -5767,13 +6479,23 @@ var Input = forwardRef(function Input2({
|
|
|
5767
6479
|
suffixIcon && !isPassword && /* @__PURE__ */ jsx(
|
|
5768
6480
|
"span",
|
|
5769
6481
|
{
|
|
6482
|
+
...slot(inputAnatomy, "icon-end"),
|
|
5770
6483
|
className: "text-fg-4 pointer-events-none absolute top-1/2 right-3 -translate-y-1/2 [&>svg]:size-4",
|
|
5771
6484
|
"aria-hidden": "true",
|
|
5772
6485
|
children: suffixIcon
|
|
5773
6486
|
}
|
|
5774
6487
|
)
|
|
5775
6488
|
] }),
|
|
5776
|
-
error && /* @__PURE__ */ jsx(
|
|
6489
|
+
error && /* @__PURE__ */ jsx(
|
|
6490
|
+
"p",
|
|
6491
|
+
{
|
|
6492
|
+
id: errorId,
|
|
6493
|
+
role: "alert",
|
|
6494
|
+
...slot(inputAnatomy, "error"),
|
|
6495
|
+
className: "text-danger-fg mt-1.5 text-xs",
|
|
6496
|
+
children: error
|
|
6497
|
+
}
|
|
6498
|
+
)
|
|
5777
6499
|
] });
|
|
5778
6500
|
});
|
|
5779
6501
|
Input.displayName = "Input";
|
|
@@ -5787,7 +6509,7 @@ var GENERAL_SECTION = {
|
|
|
5787
6509
|
{ keys: ["Esc"], description: "Close / go back" }
|
|
5788
6510
|
]
|
|
5789
6511
|
};
|
|
5790
|
-
var
|
|
6512
|
+
var kbdClass = cn(
|
|
5791
6513
|
"inline-flex items-center justify-center min-w-[18px] h-[18px] px-[5px]",
|
|
5792
6514
|
"font-mono text-[10.5px] text-fg-3 bg-bg-2 border border-rule rounded-icon",
|
|
5793
6515
|
"[border-bottom-width:1.5px]"
|
|
@@ -5837,7 +6559,7 @@ function KeyboardShortcutsDialog({
|
|
|
5837
6559
|
/* @__PURE__ */ jsx("span", { className: "text-fg text-sm", children: shortcut.description }),
|
|
5838
6560
|
/* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: shortcut.keys.map((key, i) => /* @__PURE__ */ jsxs(React39.Fragment, { children: [
|
|
5839
6561
|
i > 0 && /* @__PURE__ */ jsx("span", { className: "text-fg-4 mx-0.5 text-[11px]", children: "then" }),
|
|
5840
|
-
/* @__PURE__ */ jsx("kbd", { className:
|
|
6562
|
+
/* @__PURE__ */ jsx("kbd", { className: kbdClass, children: key })
|
|
5841
6563
|
] }, i)) })
|
|
5842
6564
|
]
|
|
5843
6565
|
},
|
|
@@ -5846,7 +6568,7 @@ function KeyboardShortcutsDialog({
|
|
|
5846
6568
|
] }, section.title)) }) }),
|
|
5847
6569
|
/* @__PURE__ */ jsx("div", { className: "border-rule bg-bg-2/40 border-t px-5 py-3", children: /* @__PURE__ */ jsxs("p", { className: "text-fg-3 text-[11px]", children: [
|
|
5848
6570
|
"Press ",
|
|
5849
|
-
/* @__PURE__ */ jsx("kbd", { className:
|
|
6571
|
+
/* @__PURE__ */ jsx("kbd", { className: kbdClass, children: hotkey ?? "?" }),
|
|
5850
6572
|
" anytime to toggle this dialog"
|
|
5851
6573
|
] }) })
|
|
5852
6574
|
] }) });
|
|
@@ -5856,10 +6578,27 @@ var labelVariants = cva(
|
|
|
5856
6578
|
);
|
|
5857
6579
|
var Label4 = React39.forwardRef(
|
|
5858
6580
|
function Label5({ children, required, className, ...props }, ref) {
|
|
5859
|
-
return /* @__PURE__ */ jsxs(
|
|
5860
|
-
|
|
5861
|
-
|
|
5862
|
-
|
|
6581
|
+
return /* @__PURE__ */ jsxs(
|
|
6582
|
+
LabelPrimitive.Root,
|
|
6583
|
+
{
|
|
6584
|
+
ref,
|
|
6585
|
+
...slot(labelAnatomy, "root"),
|
|
6586
|
+
className: cn(labelVariants(), className),
|
|
6587
|
+
...props,
|
|
6588
|
+
children: [
|
|
6589
|
+
children,
|
|
6590
|
+
required && /* @__PURE__ */ jsx(
|
|
6591
|
+
"span",
|
|
6592
|
+
{
|
|
6593
|
+
...slot(labelAnatomy, "required"),
|
|
6594
|
+
className: "text-danger-fg ml-0.5",
|
|
6595
|
+
"aria-hidden": "true",
|
|
6596
|
+
children: "*"
|
|
6597
|
+
}
|
|
6598
|
+
)
|
|
6599
|
+
]
|
|
6600
|
+
}
|
|
6601
|
+
);
|
|
5863
6602
|
}
|
|
5864
6603
|
);
|
|
5865
6604
|
Label4.displayName = LabelPrimitive.Root.displayName;
|
|
@@ -5877,10 +6616,27 @@ var LinkButton = forwardRef(function LinkButton2({
|
|
|
5877
6616
|
...props
|
|
5878
6617
|
}, ref) {
|
|
5879
6618
|
const classes = cn(buttonVariants({ variant, size }), className);
|
|
6619
|
+
const root = { ...slot(linkButtonAnatomy, "root"), ...stateAttributes({ variant, size }) };
|
|
5880
6620
|
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5881
|
-
iconLeft && /* @__PURE__ */ jsx(
|
|
6621
|
+
iconLeft && /* @__PURE__ */ jsx(
|
|
6622
|
+
"span",
|
|
6623
|
+
{
|
|
6624
|
+
...slot(linkButtonAnatomy, "icon-start"),
|
|
6625
|
+
className: "inline-flex shrink-0",
|
|
6626
|
+
"aria-hidden": "true",
|
|
6627
|
+
children: iconLeft
|
|
6628
|
+
}
|
|
6629
|
+
),
|
|
5882
6630
|
children,
|
|
5883
|
-
iconRight && /* @__PURE__ */ jsx(
|
|
6631
|
+
iconRight && /* @__PURE__ */ jsx(
|
|
6632
|
+
"span",
|
|
6633
|
+
{
|
|
6634
|
+
...slot(linkButtonAnatomy, "icon-end"),
|
|
6635
|
+
className: "inline-flex shrink-0",
|
|
6636
|
+
"aria-hidden": "true",
|
|
6637
|
+
children: iconRight
|
|
6638
|
+
}
|
|
6639
|
+
)
|
|
5884
6640
|
] });
|
|
5885
6641
|
if (external) {
|
|
5886
6642
|
const safeRel = rel ?? (target === "_blank" ? "noopener noreferrer" : void 0);
|
|
@@ -5889,6 +6645,7 @@ var LinkButton = forwardRef(function LinkButton2({
|
|
|
5889
6645
|
{
|
|
5890
6646
|
ref,
|
|
5891
6647
|
href,
|
|
6648
|
+
...root,
|
|
5892
6649
|
className: classes,
|
|
5893
6650
|
target,
|
|
5894
6651
|
rel: safeRel,
|
|
@@ -5897,7 +6654,7 @@ var LinkButton = forwardRef(function LinkButton2({
|
|
|
5897
6654
|
}
|
|
5898
6655
|
);
|
|
5899
6656
|
}
|
|
5900
|
-
return /* @__PURE__ */ jsx(Link, { ref, href, className: classes, target, rel, ...props, children: content });
|
|
6657
|
+
return /* @__PURE__ */ jsx(Link, { ref, href, ...root, className: classes, target, rel, ...props, children: content });
|
|
5901
6658
|
});
|
|
5902
6659
|
LinkButton.displayName = "LinkButton";
|
|
5903
6660
|
var Skeleton = forwardRef(function Skeleton2({ className, ...props }, ref) {
|
|
@@ -5963,6 +6720,19 @@ var LoadingRows = forwardRef(function LoadingRows2({
|
|
|
5963
6720
|
);
|
|
5964
6721
|
});
|
|
5965
6722
|
LoadingRows.displayName = "LoadingRows";
|
|
6723
|
+
|
|
6724
|
+
// src/lib/asset-base.ts
|
|
6725
|
+
var basePath = "/";
|
|
6726
|
+
function setAssetBasePath(base) {
|
|
6727
|
+
const trimmed = (base ?? "").replace(/\/+$/, "");
|
|
6728
|
+
basePath = trimmed === "" ? "/" : `${trimmed.startsWith("/") ? "" : "/"}${trimmed}/`;
|
|
6729
|
+
}
|
|
6730
|
+
function getAssetBasePath() {
|
|
6731
|
+
return basePath;
|
|
6732
|
+
}
|
|
6733
|
+
function assetPath(path) {
|
|
6734
|
+
return `${basePath}${path.replace(/^\/+/, "")}`;
|
|
6735
|
+
}
|
|
5966
6736
|
var sizeStyles = {
|
|
5967
6737
|
sm: { icon: 20, text: "text-sm", gap: "gap-2", assetHeight: 24 },
|
|
5968
6738
|
md: { icon: 24, text: "text-[17px]", gap: "gap-2.5", assetHeight: 30 },
|
|
@@ -6014,7 +6784,7 @@ function Logo({
|
|
|
6014
6784
|
asset && showText ? /* @__PURE__ */ jsx(
|
|
6015
6785
|
Image2,
|
|
6016
6786
|
{
|
|
6017
|
-
src: asset.src,
|
|
6787
|
+
src: assetPath(asset.src),
|
|
6018
6788
|
alt: "",
|
|
6019
6789
|
width: asset.width,
|
|
6020
6790
|
height: asset.height,
|
|
@@ -6025,7 +6795,7 @@ function Logo({
|
|
|
6025
6795
|
) : markAsset ? /* @__PURE__ */ jsx(
|
|
6026
6796
|
Image2,
|
|
6027
6797
|
{
|
|
6028
|
-
src: markAsset.src,
|
|
6798
|
+
src: assetPath(markAsset.src),
|
|
6029
6799
|
alt: "",
|
|
6030
6800
|
width: markAsset.width,
|
|
6031
6801
|
height: markAsset.height,
|
|
@@ -6400,7 +7170,7 @@ function OTPInput({
|
|
|
6400
7170
|
"has-[:disabled]:[&_[aria-hidden=true]]:border-rule",
|
|
6401
7171
|
"has-[:disabled]:[&_[aria-hidden=true]]:text-fg-disabled"
|
|
6402
7172
|
),
|
|
6403
|
-
render: ({ slots }) => /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2.5", role: "group", "aria-label": "One-time password", children: slots.map((
|
|
7173
|
+
render: ({ slots }) => /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2.5", role: "group", "aria-label": "One-time password", children: slots.map((slot2, idx) => /* @__PURE__ */ jsx(OTPSlot, { ...slot2, hasError: !!error }, idx)) })
|
|
6404
7174
|
}
|
|
6405
7175
|
),
|
|
6406
7176
|
error && /* @__PURE__ */ jsx("p", { id: errorId, role: "alert", className: "text-danger-fg text-center text-xs", children: error })
|
|
@@ -6417,7 +7187,7 @@ function OTPSlot({ isActive, char, hasFakeCaret, hasError }) {
|
|
|
6417
7187
|
"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]",
|
|
6418
7188
|
"sm:h-14 sm:w-12 sm:text-xl",
|
|
6419
7189
|
"border-rule-strong",
|
|
6420
|
-
isActive && "[border-color:var(--focus-ring-border)] z-10 [box-shadow:var(--shadow-focus-ring)]",
|
|
7190
|
+
isActive && "[border-color:var(--focus-ring-border)] z-10 [box-shadow:var(--shadow-focus-ring-field)]",
|
|
6421
7191
|
hasError && "border-danger-line",
|
|
6422
7192
|
hasError && isActive && "border-danger-fg [box-shadow:0_0_0_2px_var(--color-danger-bg)]"
|
|
6423
7193
|
),
|
|
@@ -6454,7 +7224,7 @@ function getPageNumbers(current, total, siblings) {
|
|
|
6454
7224
|
}
|
|
6455
7225
|
return [1, "ellipsis", ...range(leftSibling, rightSibling), "ellipsis", total];
|
|
6456
7226
|
}
|
|
6457
|
-
var
|
|
7227
|
+
var NAV_BUTTON2 = cn(
|
|
6458
7228
|
"inline-flex size-7 items-center justify-center rounded-btn text-fg-3",
|
|
6459
7229
|
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
6460
7230
|
"hover:bg-bg-2 hover:text-fg",
|
|
@@ -6492,18 +7262,28 @@ var Pagination = forwardRef(function Pagination2({
|
|
|
6492
7262
|
{
|
|
6493
7263
|
ref,
|
|
6494
7264
|
"aria-label": `Pagination, page ${currentPage} of ${totalPages}`,
|
|
7265
|
+
...slot(paginationAnatomy, "root"),
|
|
6495
7266
|
className: cn("flex items-center justify-between gap-4", className),
|
|
6496
7267
|
...props,
|
|
6497
7268
|
children: [
|
|
6498
|
-
/* @__PURE__ */ jsx(
|
|
6499
|
-
|
|
7269
|
+
/* @__PURE__ */ jsx(
|
|
7270
|
+
"span",
|
|
7271
|
+
{
|
|
7272
|
+
...slot(paginationAnatomy, "label"),
|
|
7273
|
+
className: "text-fg-4 shrink-0 font-mono text-[11px] tracking-[0.02em] tabular-nums",
|
|
7274
|
+
children: contextLabel
|
|
7275
|
+
}
|
|
7276
|
+
),
|
|
7277
|
+
/* @__PURE__ */ jsxs("div", { ...slot(paginationAnatomy, "pages"), className: "flex items-center gap-0.5", children: [
|
|
6500
7278
|
/* @__PURE__ */ jsx(
|
|
6501
7279
|
"button",
|
|
6502
7280
|
{
|
|
6503
7281
|
type: "button",
|
|
6504
7282
|
onClick: () => onPageChange(currentPage - 1),
|
|
6505
7283
|
disabled: currentPage <= 1,
|
|
6506
|
-
|
|
7284
|
+
...slot(paginationAnatomy, "previous"),
|
|
7285
|
+
...stateAttributes({ disabled: currentPage <= 1 }),
|
|
7286
|
+
className: NAV_BUTTON2,
|
|
6507
7287
|
"aria-label": "Previous page",
|
|
6508
7288
|
children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "size-3.5", "aria-hidden": "true" })
|
|
6509
7289
|
}
|
|
@@ -6512,6 +7292,7 @@ var Pagination = forwardRef(function Pagination2({
|
|
|
6512
7292
|
(page, i) => page === "ellipsis" ? /* @__PURE__ */ jsx(
|
|
6513
7293
|
"span",
|
|
6514
7294
|
{
|
|
7295
|
+
...slot(paginationAnatomy, "ellipsis"),
|
|
6515
7296
|
className: "text-fg-5 flex h-7 w-5 items-center justify-center select-none",
|
|
6516
7297
|
"aria-hidden": "true",
|
|
6517
7298
|
children: /* @__PURE__ */ jsx(MoreHorizontalIcon, { className: "size-3.5" })
|
|
@@ -6523,6 +7304,8 @@ var Pagination = forwardRef(function Pagination2({
|
|
|
6523
7304
|
type: "button",
|
|
6524
7305
|
onClick: () => onPageChange(page),
|
|
6525
7306
|
"aria-current": page === currentPage ? "page" : void 0,
|
|
7307
|
+
...slot(paginationAnatomy, "page"),
|
|
7308
|
+
...stateAttributes({ selected: page === currentPage }),
|
|
6526
7309
|
className: cn(
|
|
6527
7310
|
PAGE_BUTTON_BASE,
|
|
6528
7311
|
page === currentPage ? "bg-accent-tint text-accent-2 border border-[color:var(--color-accent-tint)]" : "text-fg-3 hover:bg-bg-2 hover:text-fg"
|
|
@@ -6538,7 +7321,9 @@ var Pagination = forwardRef(function Pagination2({
|
|
|
6538
7321
|
type: "button",
|
|
6539
7322
|
onClick: () => onPageChange(currentPage + 1),
|
|
6540
7323
|
disabled: currentPage >= totalPages,
|
|
6541
|
-
|
|
7324
|
+
...slot(paginationAnatomy, "next"),
|
|
7325
|
+
...stateAttributes({ disabled: currentPage >= totalPages }),
|
|
7326
|
+
className: NAV_BUTTON2,
|
|
6542
7327
|
"aria-label": "Next page",
|
|
6543
7328
|
children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5", "aria-hidden": "true" })
|
|
6544
7329
|
}
|
|
@@ -7342,7 +8127,15 @@ var ProgressRing = forwardRef(function ProgressRing2({ value, max = 100, size =
|
|
|
7342
8127
|
});
|
|
7343
8128
|
ProgressRing.displayName = "ProgressRing";
|
|
7344
8129
|
var RadioGroup3 = React39.forwardRef(function RadioGroup4({ className, ...props }, ref) {
|
|
7345
|
-
return /* @__PURE__ */ jsx(
|
|
8130
|
+
return /* @__PURE__ */ jsx(
|
|
8131
|
+
RadioGroupPrimitive.Root,
|
|
8132
|
+
{
|
|
8133
|
+
ref,
|
|
8134
|
+
...slot(radioGroupAnatomy, "root"),
|
|
8135
|
+
className: cn("grid gap-2", className),
|
|
8136
|
+
...props
|
|
8137
|
+
}
|
|
8138
|
+
);
|
|
7346
8139
|
});
|
|
7347
8140
|
RadioGroup3.displayName = RadioGroupPrimitive.Root.displayName;
|
|
7348
8141
|
var RadioGroupItem = React39.forwardRef(function RadioGroupItem2({ className, label, id: providedId, ...props }, ref) {
|
|
@@ -7353,18 +8146,26 @@ var RadioGroupItem = React39.forwardRef(function RadioGroupItem2({ className, la
|
|
|
7353
8146
|
{
|
|
7354
8147
|
ref,
|
|
7355
8148
|
id,
|
|
8149
|
+
...slot(radioGroupAnatomy, "item"),
|
|
7356
8150
|
className: cn(
|
|
7357
8151
|
"peer border-rule-strong bg-surface text-brand aspect-square size-4 shrink-0 rounded-full border",
|
|
7358
8152
|
microInteractions.selection,
|
|
7359
8153
|
"hover:border-fg-4",
|
|
7360
|
-
"focus-visible:[border-color:var(--focus-ring-border)] focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
8154
|
+
"focus-visible:[border-color:var(--focus-ring-border)] focus-visible:[box-shadow:var(--shadow-focus-ring-field)] focus-visible:outline-none",
|
|
7361
8155
|
"data-[state=checked]:border-brand",
|
|
7362
8156
|
"disabled:bg-bg-disabled disabled:border-rule disabled:cursor-not-allowed",
|
|
7363
8157
|
"aria-[invalid=true]:border-danger-line",
|
|
7364
8158
|
className
|
|
7365
8159
|
),
|
|
7366
8160
|
...props,
|
|
7367
|
-
children: /* @__PURE__ */ jsx(
|
|
8161
|
+
children: /* @__PURE__ */ jsx(
|
|
8162
|
+
RadioGroupPrimitive.Indicator,
|
|
8163
|
+
{
|
|
8164
|
+
...slot(radioGroupAnatomy, "indicator"),
|
|
8165
|
+
className: "flex items-center justify-center",
|
|
8166
|
+
children: /* @__PURE__ */ jsx(CircleIcon, { className: "fill-brand text-brand size-2", "aria-hidden": "true" })
|
|
8167
|
+
}
|
|
8168
|
+
)
|
|
7368
8169
|
}
|
|
7369
8170
|
);
|
|
7370
8171
|
if (!label) return root;
|
|
@@ -7374,6 +8175,7 @@ var RadioGroupItem = React39.forwardRef(function RadioGroupItem2({ className, la
|
|
|
7374
8175
|
"label",
|
|
7375
8176
|
{
|
|
7376
8177
|
htmlFor: id,
|
|
8178
|
+
...slot(radioGroupAnatomy, "label"),
|
|
7377
8179
|
className: "text-fg peer-disabled:text-fg-disabled cursor-pointer text-[13px] leading-none select-none peer-disabled:cursor-not-allowed",
|
|
7378
8180
|
children: label
|
|
7379
8181
|
}
|
|
@@ -7441,6 +8243,7 @@ var SheetOverlay = React39.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
7441
8243
|
DialogPrimitive.Overlay,
|
|
7442
8244
|
{
|
|
7443
8245
|
ref,
|
|
8246
|
+
...slot(sheetAnatomy, "overlay"),
|
|
7444
8247
|
className: cn(
|
|
7445
8248
|
"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]",
|
|
7446
8249
|
"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]",
|
|
@@ -7454,7 +8257,7 @@ var SheetOverlay = React39.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
7454
8257
|
SheetOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
7455
8258
|
var sheetVariants = cva(
|
|
7456
8259
|
cn(
|
|
7457
|
-
"fixed z-[var(--z-modal)] flex flex-col gap-4 bg-surface text-fg shadow-
|
|
8260
|
+
"fixed z-[var(--z-modal)] flex flex-col gap-4 bg-surface text-fg shadow-overlay",
|
|
7458
8261
|
"transition ease-in-out duration-[var(--duration-normal)] ease-[var(--ease-out-quart)]",
|
|
7459
8262
|
"motion-reduce:transition-none"
|
|
7460
8263
|
),
|
|
@@ -7502,6 +8305,8 @@ var SheetContent = React39.forwardRef(
|
|
|
7502
8305
|
DialogPrimitive.Content,
|
|
7503
8306
|
{
|
|
7504
8307
|
ref,
|
|
8308
|
+
...slot(sheetAnatomy, "content"),
|
|
8309
|
+
...stateAttributes({ size: width }),
|
|
7505
8310
|
className: cn(sheetVariants({ side: resolvedSide }), widthClass, className),
|
|
7506
8311
|
style: widthStyle,
|
|
7507
8312
|
...props,
|
|
@@ -7510,6 +8315,7 @@ var SheetContent = React39.forwardRef(
|
|
|
7510
8315
|
showCloseButton && /* @__PURE__ */ jsx(
|
|
7511
8316
|
DialogPrimitive.Close,
|
|
7512
8317
|
{
|
|
8318
|
+
...slot(sheetAnatomy, "close"),
|
|
7513
8319
|
className: cn(
|
|
7514
8320
|
"absolute top-4 right-4 inline-flex size-7 items-center justify-center",
|
|
7515
8321
|
"rounded-icon text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
@@ -7528,11 +8334,19 @@ var SheetContent = React39.forwardRef(
|
|
|
7528
8334
|
}
|
|
7529
8335
|
);
|
|
7530
8336
|
SheetContent.displayName = DialogPrimitive.Content.displayName;
|
|
7531
|
-
var SheetHeader = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
8337
|
+
var SheetHeader = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
8338
|
+
"div",
|
|
8339
|
+
{
|
|
8340
|
+
...slot(sheetAnatomy, "header"),
|
|
8341
|
+
className: cn("flex flex-col gap-1.5 p-6 pr-12 pb-0", className),
|
|
8342
|
+
...props
|
|
8343
|
+
}
|
|
8344
|
+
);
|
|
7532
8345
|
SheetHeader.displayName = "SheetHeader";
|
|
7533
8346
|
var SheetFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
7534
8347
|
"div",
|
|
7535
8348
|
{
|
|
8349
|
+
...slot(sheetAnatomy, "footer"),
|
|
7536
8350
|
className: cn(
|
|
7537
8351
|
"border-rule mt-auto flex flex-col-reverse gap-2 border-t p-6 sm:flex-row sm:items-center sm:justify-end",
|
|
7538
8352
|
className
|
|
@@ -7545,6 +8359,7 @@ var SheetTitle = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
7545
8359
|
DialogPrimitive.Title,
|
|
7546
8360
|
{
|
|
7547
8361
|
ref,
|
|
8362
|
+
...slot(sheetAnatomy, "title"),
|
|
7548
8363
|
className: cn(
|
|
7549
8364
|
"font-display text-fg text-base leading-tight font-medium tracking-tight",
|
|
7550
8365
|
className
|
|
@@ -7553,7 +8368,15 @@ var SheetTitle = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
7553
8368
|
}
|
|
7554
8369
|
));
|
|
7555
8370
|
SheetTitle.displayName = DialogPrimitive.Title.displayName;
|
|
7556
|
-
var SheetDescription = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
8371
|
+
var SheetDescription = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
8372
|
+
DialogPrimitive.Description,
|
|
8373
|
+
{
|
|
8374
|
+
ref,
|
|
8375
|
+
...slot(sheetAnatomy, "description"),
|
|
8376
|
+
className: cn("text-fg-3 text-sm", className),
|
|
8377
|
+
...props
|
|
8378
|
+
}
|
|
8379
|
+
));
|
|
7557
8380
|
SheetDescription.displayName = DialogPrimitive.Description.displayName;
|
|
7558
8381
|
var MOBILE_QUERY = "(max-width: 639.98px)";
|
|
7559
8382
|
function useIsMobile() {
|
|
@@ -7707,7 +8530,7 @@ var searchInputVariants = cva(
|
|
|
7707
8530
|
microInteractions.control,
|
|
7708
8531
|
"placeholder:text-fg-4",
|
|
7709
8532
|
"focus-visible:outline-none focus-visible:[border-color:var(--focus-ring-border)]",
|
|
7710
|
-
"focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
8533
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring-field)]",
|
|
7711
8534
|
"disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled",
|
|
7712
8535
|
// Hide the native search-cancel button — we render our own clear button.
|
|
7713
8536
|
"[&::-webkit-search-cancel-button]:appearance-none",
|
|
@@ -7759,48 +8582,59 @@ var SearchInput = React39.forwardRef(
|
|
|
7759
8582
|
const iconLeftClass = isCompact ? "left-2.5" : "left-3";
|
|
7760
8583
|
const iconRightClass = isCompact ? "right-2" : isComfortable ? "right-3" : "right-2.5";
|
|
7761
8584
|
const iconSizeClass = isCompact ? "size-3.5" : "size-4";
|
|
7762
|
-
return /* @__PURE__ */ jsxs(
|
|
7763
|
-
|
|
7764
|
-
|
|
7765
|
-
|
|
7766
|
-
|
|
7767
|
-
|
|
7768
|
-
|
|
7769
|
-
|
|
8585
|
+
return /* @__PURE__ */ jsxs(
|
|
8586
|
+
"div",
|
|
8587
|
+
{
|
|
8588
|
+
...slot(searchInputAnatomy, "root"),
|
|
8589
|
+
...stateAttributes({ size: sz, disabled }),
|
|
8590
|
+
className: cn("relative w-full", className),
|
|
8591
|
+
children: [
|
|
8592
|
+
/* @__PURE__ */ jsx(
|
|
8593
|
+
SearchIcon,
|
|
8594
|
+
{
|
|
8595
|
+
...slot(searchInputAnatomy, "icon"),
|
|
8596
|
+
className: cn(
|
|
8597
|
+
"text-fg-4 pointer-events-none absolute top-1/2 -translate-y-1/2",
|
|
8598
|
+
iconLeftClass,
|
|
8599
|
+
iconSizeClass
|
|
8600
|
+
),
|
|
8601
|
+
"aria-hidden": "true"
|
|
8602
|
+
}
|
|
7770
8603
|
),
|
|
7771
|
-
|
|
7772
|
-
|
|
7773
|
-
|
|
7774
|
-
|
|
7775
|
-
|
|
7776
|
-
|
|
7777
|
-
|
|
7778
|
-
|
|
7779
|
-
|
|
7780
|
-
|
|
7781
|
-
|
|
7782
|
-
|
|
7783
|
-
|
|
7784
|
-
...props
|
|
7785
|
-
}
|
|
7786
|
-
),
|
|
7787
|
-
value && !disabled && /* @__PURE__ */ jsx(
|
|
7788
|
-
"button",
|
|
7789
|
-
{
|
|
7790
|
-
type: "button",
|
|
7791
|
-
onClick: () => onValueChange(""),
|
|
7792
|
-
className: cn(
|
|
7793
|
-
"rounded-pill text-fg-4 absolute top-1/2 -translate-y-1/2 p-0.5",
|
|
7794
|
-
microInteractions.control,
|
|
7795
|
-
"hover:text-fg",
|
|
7796
|
-
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
7797
|
-
iconRightClass
|
|
8604
|
+
/* @__PURE__ */ jsx(
|
|
8605
|
+
"input",
|
|
8606
|
+
{
|
|
8607
|
+
ref,
|
|
8608
|
+
type: "search",
|
|
8609
|
+
value,
|
|
8610
|
+
onChange: (e) => onValueChange(e.target.value),
|
|
8611
|
+
placeholder,
|
|
8612
|
+
disabled,
|
|
8613
|
+
...slot(searchInputAnatomy, "control"),
|
|
8614
|
+
className: cn(searchInputVariants({ inputSize })),
|
|
8615
|
+
...props
|
|
8616
|
+
}
|
|
7798
8617
|
),
|
|
7799
|
-
|
|
7800
|
-
|
|
7801
|
-
|
|
7802
|
-
|
|
7803
|
-
|
|
8618
|
+
value && !disabled && /* @__PURE__ */ jsx(
|
|
8619
|
+
"button",
|
|
8620
|
+
{
|
|
8621
|
+
type: "button",
|
|
8622
|
+
onClick: () => onValueChange(""),
|
|
8623
|
+
...slot(searchInputAnatomy, "clear"),
|
|
8624
|
+
className: cn(
|
|
8625
|
+
"rounded-pill text-fg-4 absolute top-1/2 -translate-y-1/2 p-0.5",
|
|
8626
|
+
microInteractions.control,
|
|
8627
|
+
"hover:text-fg",
|
|
8628
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
8629
|
+
iconRightClass
|
|
8630
|
+
),
|
|
8631
|
+
"aria-label": "Clear search",
|
|
8632
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: iconSizeClass, "aria-hidden": "true" })
|
|
8633
|
+
}
|
|
8634
|
+
)
|
|
8635
|
+
]
|
|
8636
|
+
}
|
|
8637
|
+
);
|
|
7804
8638
|
}
|
|
7805
8639
|
);
|
|
7806
8640
|
SearchInput.displayName = "SearchInput";
|
|
@@ -7908,20 +8742,39 @@ function SearchSelect({
|
|
|
7908
8742
|
}
|
|
7909
8743
|
}, [onCreate, trimmedSearch]);
|
|
7910
8744
|
const inputRef = React39.useRef(null);
|
|
8745
|
+
const listRef = React39.useRef(null);
|
|
7911
8746
|
const listboxId = React39.useId();
|
|
7912
|
-
const
|
|
7913
|
-
inputRef.current
|
|
7914
|
-
|
|
7915
|
-
|
|
7916
|
-
|
|
8747
|
+
const syncInputRelationships = React39.useCallback(() => {
|
|
8748
|
+
const input = inputRef.current;
|
|
8749
|
+
if (!input) return;
|
|
8750
|
+
input.removeAttribute("aria-labelledby");
|
|
8751
|
+
input.removeAttribute("aria-activedescendant");
|
|
8752
|
+
const controls = listRef.current?.id || listboxId;
|
|
8753
|
+
if (controls && input.ownerDocument.getElementById(controls)) {
|
|
8754
|
+
input.setAttribute("aria-controls", controls);
|
|
8755
|
+
} else {
|
|
8756
|
+
input.removeAttribute("aria-controls");
|
|
8757
|
+
}
|
|
7917
8758
|
}, [listboxId]);
|
|
8759
|
+
const setInputRef = React39.useCallback(
|
|
8760
|
+
(node) => {
|
|
8761
|
+
inputRef.current = node;
|
|
8762
|
+
syncInputRelationships();
|
|
8763
|
+
},
|
|
8764
|
+
[syncInputRelationships]
|
|
8765
|
+
);
|
|
8766
|
+
const setListRef = React39.useCallback(
|
|
8767
|
+
(node) => {
|
|
8768
|
+
listRef.current = node;
|
|
8769
|
+
syncInputRelationships();
|
|
8770
|
+
},
|
|
8771
|
+
[syncInputRelationships]
|
|
8772
|
+
);
|
|
7918
8773
|
const singleValue = closeOnSelect ? selected[0] ?? null : null;
|
|
7919
8774
|
const showValue = singleValue !== null && !open;
|
|
7920
8775
|
const popoverOpen = open && !disabled;
|
|
7921
8776
|
React39.useEffect(() => {
|
|
7922
|
-
|
|
7923
|
-
inputRef.current?.setAttribute("aria-controls", listboxId);
|
|
7924
|
-
inputRef.current?.removeAttribute("aria-activedescendant");
|
|
8777
|
+
syncInputRelationships();
|
|
7925
8778
|
});
|
|
7926
8779
|
React39.useEffect(() => {
|
|
7927
8780
|
if (open && closeOnSelect) {
|
|
@@ -8082,7 +8935,6 @@ function SearchSelect({
|
|
|
8082
8935
|
},
|
|
8083
8936
|
placeholder,
|
|
8084
8937
|
"aria-label": placeholder,
|
|
8085
|
-
"aria-controls": listboxId,
|
|
8086
8938
|
disabled,
|
|
8087
8939
|
className: cn(
|
|
8088
8940
|
"font-body text-fg flex-1 bg-transparent py-2 pr-3 pl-9 text-[13px] outline-none",
|
|
@@ -8131,7 +8983,7 @@ function SearchSelect({
|
|
|
8131
8983
|
/* @__PURE__ */ jsxs(
|
|
8132
8984
|
Command.List,
|
|
8133
8985
|
{
|
|
8134
|
-
|
|
8986
|
+
ref: setListRef,
|
|
8135
8987
|
className: cn(
|
|
8136
8988
|
// No top padding: a sticky group heading pins at top-0, so any
|
|
8137
8989
|
// top padding would leave a strip above it where the previous
|
|
@@ -8387,7 +9239,7 @@ var Separator4 = React39.forwardRef(function Separator5({ className, orientation
|
|
|
8387
9239
|
Separator4.displayName = SeparatorPrimitive.Root.displayName;
|
|
8388
9240
|
var sideDrawerVariants = cva(
|
|
8389
9241
|
cn(
|
|
8390
|
-
"fixed inset-y-0 z-[var(--z-modal)] flex h-full flex-col bg-surface text-fg shadow-
|
|
9242
|
+
"fixed inset-y-0 z-[var(--z-modal)] flex h-full flex-col bg-surface text-fg shadow-overlay",
|
|
8391
9243
|
"font-body",
|
|
8392
9244
|
"transition ease-in-out duration-[var(--duration-normal)] ease-[var(--ease-out-quart)]",
|
|
8393
9245
|
"motion-reduce:transition-none"
|
|
@@ -8435,6 +9287,7 @@ function SideDrawer({
|
|
|
8435
9287
|
/* @__PURE__ */ jsx(
|
|
8436
9288
|
DialogPrimitive.Overlay,
|
|
8437
9289
|
{
|
|
9290
|
+
...slot(sideDrawerAnatomy, "overlay"),
|
|
8438
9291
|
className: cn(
|
|
8439
9292
|
"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]",
|
|
8440
9293
|
"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]",
|
|
@@ -8446,6 +9299,8 @@ function SideDrawer({
|
|
|
8446
9299
|
/* @__PURE__ */ jsxs(
|
|
8447
9300
|
DialogPrimitive.Content,
|
|
8448
9301
|
{
|
|
9302
|
+
...slot(sideDrawerAnatomy, "root"),
|
|
9303
|
+
...stateAttributes({ size: width }),
|
|
8449
9304
|
className: cn(sideDrawerVariants({ side, width })),
|
|
8450
9305
|
"aria-describedby": void 0,
|
|
8451
9306
|
children: [
|
|
@@ -8459,35 +9314,58 @@ function SideDrawer({
|
|
|
8459
9314
|
);
|
|
8460
9315
|
}
|
|
8461
9316
|
function SideDrawerHeader({ title, subtitle, onClose, className }) {
|
|
8462
|
-
return /* @__PURE__ */ jsx(
|
|
8463
|
-
|
|
8464
|
-
|
|
8465
|
-
|
|
8466
|
-
|
|
8467
|
-
|
|
8468
|
-
|
|
8469
|
-
|
|
8470
|
-
|
|
8471
|
-
|
|
8472
|
-
|
|
8473
|
-
|
|
8474
|
-
|
|
8475
|
-
|
|
8476
|
-
|
|
8477
|
-
|
|
8478
|
-
|
|
8479
|
-
|
|
8480
|
-
|
|
8481
|
-
|
|
8482
|
-
|
|
9317
|
+
return /* @__PURE__ */ jsx(
|
|
9318
|
+
"div",
|
|
9319
|
+
{
|
|
9320
|
+
...slot(sideDrawerAnatomy, "header"),
|
|
9321
|
+
className: cn("border-rule bg-surface shrink-0 border-b px-6 py-4", className),
|
|
9322
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
9323
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
9324
|
+
/* @__PURE__ */ jsx(
|
|
9325
|
+
"h2",
|
|
9326
|
+
{
|
|
9327
|
+
...slot(sideDrawerAnatomy, "heading"),
|
|
9328
|
+
className: "font-display text-fg line-clamp-1 text-base leading-tight font-medium tracking-tight",
|
|
9329
|
+
children: title
|
|
9330
|
+
}
|
|
9331
|
+
),
|
|
9332
|
+
subtitle && /* @__PURE__ */ jsx("p", { ...slot(sideDrawerAnatomy, "subtitle"), className: "text-fg-3 mt-1 text-sm", children: subtitle })
|
|
9333
|
+
] }),
|
|
9334
|
+
onClose && /* @__PURE__ */ jsx(
|
|
9335
|
+
"button",
|
|
9336
|
+
{
|
|
9337
|
+
type: "button",
|
|
9338
|
+
onClick: onClose,
|
|
9339
|
+
...slot(sideDrawerAnatomy, "close"),
|
|
9340
|
+
className: cn(
|
|
9341
|
+
"inline-flex size-7 shrink-0 items-center justify-center",
|
|
9342
|
+
"rounded-icon text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
9343
|
+
"hover:bg-overlay-hover hover:text-fg",
|
|
9344
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none"
|
|
9345
|
+
),
|
|
9346
|
+
"aria-label": "Close",
|
|
9347
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "size-4", "aria-hidden": "true" })
|
|
9348
|
+
}
|
|
9349
|
+
)
|
|
9350
|
+
] })
|
|
9351
|
+
}
|
|
9352
|
+
);
|
|
8483
9353
|
}
|
|
8484
9354
|
function SideDrawerBody({ children, className }) {
|
|
8485
|
-
return /* @__PURE__ */ jsx(
|
|
9355
|
+
return /* @__PURE__ */ jsx(
|
|
9356
|
+
"div",
|
|
9357
|
+
{
|
|
9358
|
+
...slot(sideDrawerAnatomy, "body"),
|
|
9359
|
+
className: cn("scrollbar-thin flex-1 overflow-y-auto px-6 py-4", className),
|
|
9360
|
+
children
|
|
9361
|
+
}
|
|
9362
|
+
);
|
|
8486
9363
|
}
|
|
8487
9364
|
function SideDrawerFooter({ children, className }) {
|
|
8488
9365
|
return /* @__PURE__ */ jsx(
|
|
8489
9366
|
"div",
|
|
8490
9367
|
{
|
|
9368
|
+
...slot(sideDrawerAnatomy, "footer"),
|
|
8491
9369
|
className: cn(
|
|
8492
9370
|
"border-rule bg-surface shrink-0 border-t px-6 py-4",
|
|
8493
9371
|
"flex items-center justify-end gap-3",
|
|
@@ -9485,9 +10363,17 @@ var Switch = React39.forwardRef(
|
|
|
9485
10363
|
{
|
|
9486
10364
|
ref,
|
|
9487
10365
|
id,
|
|
10366
|
+
...slot(switchAnatomy, "root"),
|
|
10367
|
+
...stateAttributes({ size: size ?? "md" }),
|
|
9488
10368
|
className: cn(switchVariants({ size }), className),
|
|
9489
10369
|
...props,
|
|
9490
|
-
children: /* @__PURE__ */ jsx(
|
|
10370
|
+
children: /* @__PURE__ */ jsx(
|
|
10371
|
+
SwitchPrimitive.Thumb,
|
|
10372
|
+
{
|
|
10373
|
+
...slot(switchAnatomy, "thumb"),
|
|
10374
|
+
className: cn(switchThumbVariants({ size }))
|
|
10375
|
+
}
|
|
10376
|
+
)
|
|
9491
10377
|
}
|
|
9492
10378
|
);
|
|
9493
10379
|
if (!label) return root;
|
|
@@ -9497,6 +10383,7 @@ var Switch = React39.forwardRef(
|
|
|
9497
10383
|
"label",
|
|
9498
10384
|
{
|
|
9499
10385
|
htmlFor: id,
|
|
10386
|
+
...slot(switchAnatomy, "label"),
|
|
9500
10387
|
className: "text-fg peer-disabled:text-fg-disabled cursor-pointer text-[13px] leading-none select-none peer-disabled:cursor-not-allowed",
|
|
9501
10388
|
children: label
|
|
9502
10389
|
}
|
|
@@ -9509,6 +10396,7 @@ var Table = forwardRef(function Table2({ className, wrapperClassName, ...props }
|
|
|
9509
10396
|
return /* @__PURE__ */ jsx(
|
|
9510
10397
|
"div",
|
|
9511
10398
|
{
|
|
10399
|
+
...slot(tableAnatomy, "wrapper"),
|
|
9512
10400
|
className: cn(
|
|
9513
10401
|
"rounded-card border-rule-strong bg-surface w-full overflow-x-auto border shadow-quiet",
|
|
9514
10402
|
wrapperClassName
|
|
@@ -9517,6 +10405,7 @@ var Table = forwardRef(function Table2({ className, wrapperClassName, ...props }
|
|
|
9517
10405
|
"table",
|
|
9518
10406
|
{
|
|
9519
10407
|
ref,
|
|
10408
|
+
...slot(tableAnatomy, "root"),
|
|
9520
10409
|
className: cn("w-full caption-bottom border-collapse text-sm", className),
|
|
9521
10410
|
...props
|
|
9522
10411
|
}
|
|
@@ -9527,12 +10416,28 @@ var Table = forwardRef(function Table2({ className, wrapperClassName, ...props }
|
|
|
9527
10416
|
Table.displayName = "Table";
|
|
9528
10417
|
var TableHeader = forwardRef(
|
|
9529
10418
|
function TableHeader2({ className, ...props }, ref) {
|
|
9530
|
-
return /* @__PURE__ */ jsx(
|
|
10419
|
+
return /* @__PURE__ */ jsx(
|
|
10420
|
+
"thead",
|
|
10421
|
+
{
|
|
10422
|
+
ref,
|
|
10423
|
+
...slot(tableAnatomy, "header"),
|
|
10424
|
+
className: cn("[&_tr]:border-rule [&_tr]:border-b", className),
|
|
10425
|
+
...props
|
|
10426
|
+
}
|
|
10427
|
+
);
|
|
9531
10428
|
}
|
|
9532
10429
|
);
|
|
9533
10430
|
TableHeader.displayName = "TableHeader";
|
|
9534
10431
|
var TableBody = forwardRef(function TableBody2({ className, ...props }, ref) {
|
|
9535
|
-
return /* @__PURE__ */ jsx(
|
|
10432
|
+
return /* @__PURE__ */ jsx(
|
|
10433
|
+
"tbody",
|
|
10434
|
+
{
|
|
10435
|
+
ref,
|
|
10436
|
+
...slot(tableAnatomy, "body"),
|
|
10437
|
+
className: cn("[&_tr:last-child]:border-0", className),
|
|
10438
|
+
...props
|
|
10439
|
+
}
|
|
10440
|
+
);
|
|
9536
10441
|
});
|
|
9537
10442
|
TableBody.displayName = "TableBody";
|
|
9538
10443
|
var TableFooter = forwardRef(
|
|
@@ -9541,6 +10446,7 @@ var TableFooter = forwardRef(
|
|
|
9541
10446
|
"tfoot",
|
|
9542
10447
|
{
|
|
9543
10448
|
ref,
|
|
10449
|
+
...slot(tableAnatomy, "footer"),
|
|
9544
10450
|
className: cn(
|
|
9545
10451
|
"border-rule bg-surface-2 border-t font-medium [&>tr]:last:border-b-0",
|
|
9546
10452
|
className
|
|
@@ -9556,6 +10462,7 @@ var TableRow = forwardRef(function TableRow2({ className, ...props }, ref) {
|
|
|
9556
10462
|
"tr",
|
|
9557
10463
|
{
|
|
9558
10464
|
ref,
|
|
10465
|
+
...slot(tableAnatomy, "row"),
|
|
9559
10466
|
className: cn(
|
|
9560
10467
|
"border-rule-soft border-b transition-colors duration-[var(--duration-instant)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
9561
10468
|
// G15 compound: selected wins over hover; selected+hover uses the
|
|
@@ -9574,6 +10481,7 @@ var TableHead = forwardRef(function TableHead2({ className, ...props }, ref) {
|
|
|
9574
10481
|
"th",
|
|
9575
10482
|
{
|
|
9576
10483
|
ref,
|
|
10484
|
+
...slot(tableAnatomy, "head"),
|
|
9577
10485
|
className: cn(
|
|
9578
10486
|
// Sentence-case column labels in the body font (Plus Jakarta Sans),
|
|
9579
10487
|
// quiet gray — not mono uppercase eyebrows.
|
|
@@ -9594,6 +10502,7 @@ var TableCell = forwardRef(function TableCell2({ className, ...props }, ref) {
|
|
|
9594
10502
|
"td",
|
|
9595
10503
|
{
|
|
9596
10504
|
ref,
|
|
10505
|
+
...slot(tableAnatomy, "cell"),
|
|
9597
10506
|
className: cn(
|
|
9598
10507
|
// 13px, fg-2, soft 1px row divider, tabular nums; airier vertical
|
|
9599
10508
|
// rhythm (py-3) for the taller rows in the catalog layout.
|
|
@@ -9608,7 +10517,15 @@ var TableCell = forwardRef(function TableCell2({ className, ...props }, ref) {
|
|
|
9608
10517
|
TableCell.displayName = "TableCell";
|
|
9609
10518
|
var TableCaption = forwardRef(
|
|
9610
10519
|
function TableCaption2({ className, ...props }, ref) {
|
|
9611
|
-
return /* @__PURE__ */ jsx(
|
|
10520
|
+
return /* @__PURE__ */ jsx(
|
|
10521
|
+
"caption",
|
|
10522
|
+
{
|
|
10523
|
+
ref,
|
|
10524
|
+
...slot(tableAnatomy, "caption"),
|
|
10525
|
+
className: cn("text-fg-3 mt-3 text-sm", className),
|
|
10526
|
+
...props
|
|
10527
|
+
}
|
|
10528
|
+
);
|
|
9612
10529
|
}
|
|
9613
10530
|
);
|
|
9614
10531
|
TableCaption.displayName = "TableCaption";
|
|
@@ -9749,7 +10666,7 @@ var textareaVariants = cva(
|
|
|
9749
10666
|
"motion-reduce:transition-none",
|
|
9750
10667
|
"placeholder:text-fg-4",
|
|
9751
10668
|
"focus-visible:outline-none focus-visible:[border-color:var(--focus-ring-border)]",
|
|
9752
|
-
"focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
10669
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring-field)]",
|
|
9753
10670
|
"disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled",
|
|
9754
10671
|
"aria-[invalid=true]:border-danger-line aria-[invalid=true]:focus-visible:border-danger-fg",
|
|
9755
10672
|
"aria-[invalid=true]:focus-visible:[box-shadow:0_0_0_2px_var(--color-danger-bg)]"
|
|
@@ -9810,7 +10727,15 @@ var Textarea = forwardRef(function Textarea2({
|
|
|
9810
10727
|
}, [value, adjustHeight]);
|
|
9811
10728
|
const currentLength = typeof value === "string" ? value.length : typeof defaultValue === "string" ? defaultValue.length : 0;
|
|
9812
10729
|
return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
|
|
9813
|
-
label && /* @__PURE__ */ jsx(
|
|
10730
|
+
label && /* @__PURE__ */ jsx(
|
|
10731
|
+
"label",
|
|
10732
|
+
{
|
|
10733
|
+
htmlFor: id,
|
|
10734
|
+
...slot(textareaAnatomy, "label"),
|
|
10735
|
+
className: "text-fg mb-1.5 block text-[13px] leading-none font-medium",
|
|
10736
|
+
children: label
|
|
10737
|
+
}
|
|
10738
|
+
),
|
|
9814
10739
|
/* @__PURE__ */ jsx(
|
|
9815
10740
|
"textarea",
|
|
9816
10741
|
{
|
|
@@ -9821,6 +10746,13 @@ var Textarea = forwardRef(function Textarea2({
|
|
|
9821
10746
|
maxLength,
|
|
9822
10747
|
"aria-invalid": !!error || void 0,
|
|
9823
10748
|
"aria-describedby": error ? errorId : void 0,
|
|
10749
|
+
...slot(textareaAnatomy, "root"),
|
|
10750
|
+
...stateAttributes({
|
|
10751
|
+
variant: variant ?? "default",
|
|
10752
|
+
size: inputSize ?? "md",
|
|
10753
|
+
disabled: props.disabled,
|
|
10754
|
+
invalid: !!error
|
|
10755
|
+
}),
|
|
9824
10756
|
onChange: (e) => {
|
|
9825
10757
|
onChange?.(e);
|
|
9826
10758
|
adjustHeight();
|
|
@@ -9834,12 +10766,28 @@ var Textarea = forwardRef(function Textarea2({
|
|
|
9834
10766
|
}
|
|
9835
10767
|
),
|
|
9836
10768
|
(error || showCount && maxLength) && /* @__PURE__ */ jsxs("div", { className: "mt-1.5 flex items-center justify-between gap-2", children: [
|
|
9837
|
-
error ? /* @__PURE__ */ jsx(
|
|
9838
|
-
|
|
9839
|
-
|
|
9840
|
-
|
|
9841
|
-
|
|
9842
|
-
|
|
10769
|
+
error ? /* @__PURE__ */ jsx(
|
|
10770
|
+
"p",
|
|
10771
|
+
{
|
|
10772
|
+
id: errorId,
|
|
10773
|
+
role: "alert",
|
|
10774
|
+
...slot(textareaAnatomy, "error"),
|
|
10775
|
+
className: "text-danger-fg text-xs",
|
|
10776
|
+
children: error
|
|
10777
|
+
}
|
|
10778
|
+
) : /* @__PURE__ */ jsx("span", {}),
|
|
10779
|
+
showCount && maxLength && /* @__PURE__ */ jsxs(
|
|
10780
|
+
"span",
|
|
10781
|
+
{
|
|
10782
|
+
...slot(textareaAnatomy, "count"),
|
|
10783
|
+
className: "text-fg-4 ml-auto font-mono text-[11px]",
|
|
10784
|
+
children: [
|
|
10785
|
+
currentLength,
|
|
10786
|
+
"/",
|
|
10787
|
+
maxLength
|
|
10788
|
+
]
|
|
10789
|
+
}
|
|
10790
|
+
)
|
|
9843
10791
|
] })
|
|
9844
10792
|
] });
|
|
9845
10793
|
});
|
|
@@ -9912,6 +10860,7 @@ function ToastProvider({ children }) {
|
|
|
9912
10860
|
/* @__PURE__ */ jsx(
|
|
9913
10861
|
"div",
|
|
9914
10862
|
{
|
|
10863
|
+
...slot(toastAnatomy, "region"),
|
|
9915
10864
|
className: "pointer-events-none fixed top-4 right-4 z-[var(--z-toast)] flex flex-col gap-2",
|
|
9916
10865
|
role: "region",
|
|
9917
10866
|
"aria-live": "polite",
|
|
@@ -10035,6 +10984,8 @@ function ToastItem({ toast, onDismiss }) {
|
|
|
10035
10984
|
role: hasContent ? "group" : isError ? "alert" : "status",
|
|
10036
10985
|
"aria-atomic": hasContent ? void 0 : true,
|
|
10037
10986
|
"data-state": exiting ? "closed" : "open",
|
|
10987
|
+
...slot(toastAnatomy, "root"),
|
|
10988
|
+
...stateAttributes({ variant: toast.variant ?? "default" }),
|
|
10038
10989
|
onPointerEnter: () => setPaused(true),
|
|
10039
10990
|
onPointerLeave: () => {
|
|
10040
10991
|
if (!dragRef.current) setPaused(false);
|
|
@@ -10071,6 +11022,7 @@ function ToastItem({ toast, onDismiss }) {
|
|
|
10071
11022
|
/* @__PURE__ */ jsx(
|
|
10072
11023
|
"span",
|
|
10073
11024
|
{
|
|
11025
|
+
...slot(toastAnatomy, "icon"),
|
|
10074
11026
|
className: cn(
|
|
10075
11027
|
// Same-hue inset ring gives the tinted chip a crafted edge instead
|
|
10076
11028
|
// of a flat fill — definition without a heavy border.
|
|
@@ -10088,8 +11040,22 @@ function ToastItem({ toast, onDismiss }) {
|
|
|
10088
11040
|
}
|
|
10089
11041
|
),
|
|
10090
11042
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
10091
|
-
toast.title && /* @__PURE__ */ jsx(
|
|
10092
|
-
|
|
11043
|
+
toast.title && /* @__PURE__ */ jsx(
|
|
11044
|
+
"p",
|
|
11045
|
+
{
|
|
11046
|
+
...slot(toastAnatomy, "title"),
|
|
11047
|
+
className: "text-fg text-sm leading-tight font-semibold",
|
|
11048
|
+
children: toast.title
|
|
11049
|
+
}
|
|
11050
|
+
),
|
|
11051
|
+
toast.description && /* @__PURE__ */ jsx(
|
|
11052
|
+
"p",
|
|
11053
|
+
{
|
|
11054
|
+
...slot(toastAnatomy, "description"),
|
|
11055
|
+
className: "text-fg-3 mt-0.5 text-sm leading-snug",
|
|
11056
|
+
children: toast.description
|
|
11057
|
+
}
|
|
11058
|
+
),
|
|
10093
11059
|
toast.action && /* @__PURE__ */ jsx(
|
|
10094
11060
|
"button",
|
|
10095
11061
|
{
|
|
@@ -10098,6 +11064,7 @@ function ToastItem({ toast, onDismiss }) {
|
|
|
10098
11064
|
toast.action?.onClick();
|
|
10099
11065
|
close();
|
|
10100
11066
|
},
|
|
11067
|
+
...slot(toastAnatomy, "action"),
|
|
10101
11068
|
className: cn(
|
|
10102
11069
|
"text-brand mt-2 text-sm font-semibold",
|
|
10103
11070
|
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] hover:underline motion-reduce:transition-none",
|
|
@@ -10112,6 +11079,7 @@ function ToastItem({ toast, onDismiss }) {
|
|
|
10112
11079
|
{
|
|
10113
11080
|
type: "button",
|
|
10114
11081
|
onClick: close,
|
|
11082
|
+
...slot(toastAnatomy, "close"),
|
|
10115
11083
|
className: cn(
|
|
10116
11084
|
// size-7 click target with a -m-1 offset so the glyph keeps its
|
|
10117
11085
|
// top-right optical position while the hit area (and ring) grow.
|
|
@@ -10221,6 +11189,43 @@ var ToggleGroupItem = React39.forwardRef(function ToggleGroupItem2({ className,
|
|
|
10221
11189
|
);
|
|
10222
11190
|
});
|
|
10223
11191
|
ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
11192
|
+
var INLINE_CLASS = cn(
|
|
11193
|
+
"rounded-icon border-rule bg-bg-2 text-fg border px-1 py-px",
|
|
11194
|
+
"font-mono text-code"
|
|
11195
|
+
);
|
|
11196
|
+
var BLOCK_CLASS = cn(
|
|
11197
|
+
"rounded-btn border-rule bg-bg-2 text-fg block overflow-x-auto border px-3 py-2.5",
|
|
11198
|
+
"scrollbar-thin font-mono text-code",
|
|
11199
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none"
|
|
11200
|
+
);
|
|
11201
|
+
var Code = forwardRef(function Code2({ variant = "inline", className, children, ...props }, ref) {
|
|
11202
|
+
if (variant === "block") {
|
|
11203
|
+
return /* @__PURE__ */ jsx(
|
|
11204
|
+
"pre",
|
|
11205
|
+
{
|
|
11206
|
+
ref,
|
|
11207
|
+
tabIndex: 0,
|
|
11208
|
+
...slot(codeAnatomy, "root"),
|
|
11209
|
+
...stateAttributes({ variant }),
|
|
11210
|
+
className: cn(BLOCK_CLASS, className),
|
|
11211
|
+
...props,
|
|
11212
|
+
children: /* @__PURE__ */ jsx("code", { ...slot(codeAnatomy, "content"), children })
|
|
11213
|
+
}
|
|
11214
|
+
);
|
|
11215
|
+
}
|
|
11216
|
+
return /* @__PURE__ */ jsx(
|
|
11217
|
+
"code",
|
|
11218
|
+
{
|
|
11219
|
+
ref,
|
|
11220
|
+
...slot(codeAnatomy, "root"),
|
|
11221
|
+
...stateAttributes({ variant }),
|
|
11222
|
+
className: cn(INLINE_CLASS, className),
|
|
11223
|
+
...props,
|
|
11224
|
+
children
|
|
11225
|
+
}
|
|
11226
|
+
);
|
|
11227
|
+
});
|
|
11228
|
+
Code.displayName = "Code";
|
|
10224
11229
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
10225
11230
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
10226
11231
|
var TooltipPortal = TooltipPrimitive.Portal;
|
|
@@ -10234,6 +11239,7 @@ var TooltipContent = React39.forwardRef(({ className, sideOffset = 6, ...props }
|
|
|
10234
11239
|
{
|
|
10235
11240
|
ref,
|
|
10236
11241
|
sideOffset,
|
|
11242
|
+
...slot(tooltipAnatomy, "content"),
|
|
10237
11243
|
className: cn(
|
|
10238
11244
|
"rounded-input border-rule-strong bg-surface z-[var(--z-tooltip)] max-w-xs border px-2.5 py-1.5",
|
|
10239
11245
|
"font-body text-fg shadow-pop text-xs leading-tight",
|
|
@@ -10343,6 +11349,252 @@ function IntentBadge({ tone = "muted", icon, children, className, ...props }) {
|
|
|
10343
11349
|
);
|
|
10344
11350
|
}
|
|
10345
11351
|
IntentBadge.displayName = "IntentBadge";
|
|
11352
|
+
var SIZE_CLASS = {
|
|
11353
|
+
display: "text-display",
|
|
11354
|
+
"title-page": "text-title-page",
|
|
11355
|
+
"title-section": "text-title-section",
|
|
11356
|
+
"title-sub": "text-title-sub",
|
|
11357
|
+
body: "text-body",
|
|
11358
|
+
"body-sm": "text-body-sm",
|
|
11359
|
+
label: "text-label",
|
|
11360
|
+
helper: "text-helper",
|
|
11361
|
+
caption: "text-caption",
|
|
11362
|
+
micro: "text-micro",
|
|
11363
|
+
overline: "text-overline uppercase",
|
|
11364
|
+
code: "text-code font-mono"
|
|
11365
|
+
};
|
|
11366
|
+
var COLOR_CLASS = {
|
|
11367
|
+
default: "text-fg",
|
|
11368
|
+
secondary: "text-fg-2",
|
|
11369
|
+
muted: "text-fg-3",
|
|
11370
|
+
subtle: "text-fg-4",
|
|
11371
|
+
inverse: "text-bg",
|
|
11372
|
+
danger: "text-danger-fg",
|
|
11373
|
+
success: "text-success-fg",
|
|
11374
|
+
warning: "text-warning-fg",
|
|
11375
|
+
brand: "text-brand"
|
|
11376
|
+
};
|
|
11377
|
+
var WEIGHT_CLASS = {
|
|
11378
|
+
regular: "font-normal",
|
|
11379
|
+
medium: "font-medium",
|
|
11380
|
+
semibold: "font-semibold",
|
|
11381
|
+
bold: "font-bold"
|
|
11382
|
+
};
|
|
11383
|
+
var Text = forwardRef(function Text2({ size = "body", color, weight, numeric, truncate, asChild, className, ...props }, ref) {
|
|
11384
|
+
const Comp = asChild ? Slot : "span";
|
|
11385
|
+
return /* @__PURE__ */ jsx(
|
|
11386
|
+
Comp,
|
|
11387
|
+
{
|
|
11388
|
+
ref,
|
|
11389
|
+
...slot(textAnatomy, "root"),
|
|
11390
|
+
className: cn(
|
|
11391
|
+
SIZE_CLASS[size],
|
|
11392
|
+
color && COLOR_CLASS[color],
|
|
11393
|
+
weight && WEIGHT_CLASS[weight],
|
|
11394
|
+
numeric && "numeric",
|
|
11395
|
+
truncate && "truncate",
|
|
11396
|
+
className
|
|
11397
|
+
),
|
|
11398
|
+
...props
|
|
11399
|
+
}
|
|
11400
|
+
);
|
|
11401
|
+
});
|
|
11402
|
+
Text.displayName = "Text";
|
|
11403
|
+
var DEFAULT_SIZE = {
|
|
11404
|
+
1: "title-page",
|
|
11405
|
+
2: "title-section",
|
|
11406
|
+
3: "title-sub",
|
|
11407
|
+
4: "title-sub",
|
|
11408
|
+
5: "title-sub",
|
|
11409
|
+
6: "title-sub"
|
|
11410
|
+
};
|
|
11411
|
+
var SIZE_CLASS2 = {
|
|
11412
|
+
display: "text-display",
|
|
11413
|
+
"title-page": "text-title-page",
|
|
11414
|
+
"title-section": "text-title-section",
|
|
11415
|
+
"title-sub": "text-title-sub"
|
|
11416
|
+
};
|
|
11417
|
+
var Heading = forwardRef(function Heading2({ level, size, className, ...props }, ref) {
|
|
11418
|
+
const Tag = `h${level}`;
|
|
11419
|
+
return /* @__PURE__ */ jsx(
|
|
11420
|
+
Tag,
|
|
11421
|
+
{
|
|
11422
|
+
ref,
|
|
11423
|
+
...slot(headingAnatomy, "root"),
|
|
11424
|
+
className: cn("font-display text-fg", SIZE_CLASS2[size ?? DEFAULT_SIZE[level]], className),
|
|
11425
|
+
...props
|
|
11426
|
+
}
|
|
11427
|
+
);
|
|
11428
|
+
});
|
|
11429
|
+
Heading.displayName = "Heading";
|
|
11430
|
+
|
|
11431
|
+
// src/primitives/layout/responsive.ts
|
|
11432
|
+
var GAP = {
|
|
11433
|
+
base: {
|
|
11434
|
+
none: "gap-0",
|
|
11435
|
+
xs: "gap-(--stack-gap-xs)",
|
|
11436
|
+
sm: "gap-(--stack-gap-sm)",
|
|
11437
|
+
md: "gap-(--stack-gap-md)",
|
|
11438
|
+
lg: "gap-(--stack-gap-lg)",
|
|
11439
|
+
xl: "gap-(--stack-gap-xl)"
|
|
11440
|
+
},
|
|
11441
|
+
sm: {
|
|
11442
|
+
none: "sm:gap-0",
|
|
11443
|
+
xs: "sm:gap-(--stack-gap-xs)",
|
|
11444
|
+
sm: "sm:gap-(--stack-gap-sm)",
|
|
11445
|
+
md: "sm:gap-(--stack-gap-md)",
|
|
11446
|
+
lg: "sm:gap-(--stack-gap-lg)",
|
|
11447
|
+
xl: "sm:gap-(--stack-gap-xl)"
|
|
11448
|
+
},
|
|
11449
|
+
md: {
|
|
11450
|
+
none: "md:gap-0",
|
|
11451
|
+
xs: "md:gap-(--stack-gap-xs)",
|
|
11452
|
+
sm: "md:gap-(--stack-gap-sm)",
|
|
11453
|
+
md: "md:gap-(--stack-gap-md)",
|
|
11454
|
+
lg: "md:gap-(--stack-gap-lg)",
|
|
11455
|
+
xl: "md:gap-(--stack-gap-xl)"
|
|
11456
|
+
},
|
|
11457
|
+
lg: {
|
|
11458
|
+
none: "lg:gap-0",
|
|
11459
|
+
xs: "lg:gap-(--stack-gap-xs)",
|
|
11460
|
+
sm: "lg:gap-(--stack-gap-sm)",
|
|
11461
|
+
md: "lg:gap-(--stack-gap-md)",
|
|
11462
|
+
lg: "lg:gap-(--stack-gap-lg)",
|
|
11463
|
+
xl: "lg:gap-(--stack-gap-xl)"
|
|
11464
|
+
}
|
|
11465
|
+
};
|
|
11466
|
+
var ALIGN = {
|
|
11467
|
+
start: "items-start",
|
|
11468
|
+
center: "items-center",
|
|
11469
|
+
end: "items-end",
|
|
11470
|
+
stretch: "items-stretch",
|
|
11471
|
+
baseline: "items-baseline"
|
|
11472
|
+
};
|
|
11473
|
+
var JUSTIFY = {
|
|
11474
|
+
start: "justify-start",
|
|
11475
|
+
center: "justify-center",
|
|
11476
|
+
end: "justify-end",
|
|
11477
|
+
between: "justify-between",
|
|
11478
|
+
around: "justify-around",
|
|
11479
|
+
evenly: "justify-evenly"
|
|
11480
|
+
};
|
|
11481
|
+
var BREAKPOINTS = ["sm", "md", "lg"];
|
|
11482
|
+
function responsiveClasses(value, fallback, table) {
|
|
11483
|
+
if (value === void 0 || typeof value === "string") {
|
|
11484
|
+
return [table.base[value ?? fallback]];
|
|
11485
|
+
}
|
|
11486
|
+
const classes = [table.base[value.base ?? fallback]];
|
|
11487
|
+
for (const breakpoint of BREAKPOINTS) {
|
|
11488
|
+
const step = value[breakpoint];
|
|
11489
|
+
if (step !== void 0) classes.push(table[breakpoint][step]);
|
|
11490
|
+
}
|
|
11491
|
+
return classes;
|
|
11492
|
+
}
|
|
11493
|
+
function gapClasses(gap, fallback) {
|
|
11494
|
+
return responsiveClasses(gap, fallback, GAP);
|
|
11495
|
+
}
|
|
11496
|
+
function alignClass(align) {
|
|
11497
|
+
return align === void 0 ? void 0 : ALIGN[align];
|
|
11498
|
+
}
|
|
11499
|
+
function justifyClass(justify) {
|
|
11500
|
+
return justify === void 0 ? void 0 : JUSTIFY[justify];
|
|
11501
|
+
}
|
|
11502
|
+
function wrapClass(wrap) {
|
|
11503
|
+
return wrap === void 0 ? void 0 : wrap ? "flex-wrap" : "flex-nowrap";
|
|
11504
|
+
}
|
|
11505
|
+
var DIRECTION = {
|
|
11506
|
+
base: { column: "flex-col", row: "flex-row" },
|
|
11507
|
+
sm: { column: "sm:flex-col", row: "sm:flex-row" },
|
|
11508
|
+
md: { column: "md:flex-col", row: "md:flex-row" },
|
|
11509
|
+
lg: { column: "lg:flex-col", row: "lg:flex-row" }
|
|
11510
|
+
};
|
|
11511
|
+
var BREAKPOINTS2 = ["sm", "md", "lg"];
|
|
11512
|
+
function directionClasses(direction) {
|
|
11513
|
+
if (direction === void 0 || typeof direction === "string") {
|
|
11514
|
+
return [DIRECTION.base[direction ?? "column"]];
|
|
11515
|
+
}
|
|
11516
|
+
const classes = [DIRECTION.base[direction.base ?? "column"]];
|
|
11517
|
+
for (const breakpoint of BREAKPOINTS2) {
|
|
11518
|
+
const value = direction[breakpoint];
|
|
11519
|
+
if (value !== void 0) classes.push(DIRECTION[breakpoint][value]);
|
|
11520
|
+
}
|
|
11521
|
+
return classes;
|
|
11522
|
+
}
|
|
11523
|
+
var Stack = forwardRef(function Stack2({ direction, gap, align, justify, wrap, className, ...props }, ref) {
|
|
11524
|
+
return /* @__PURE__ */ jsx(
|
|
11525
|
+
"div",
|
|
11526
|
+
{
|
|
11527
|
+
ref,
|
|
11528
|
+
...slot(stackAnatomy, "root"),
|
|
11529
|
+
className: cn(
|
|
11530
|
+
"flex",
|
|
11531
|
+
directionClasses(direction),
|
|
11532
|
+
gapClasses(gap, "md"),
|
|
11533
|
+
alignClass(align),
|
|
11534
|
+
justifyClass(justify),
|
|
11535
|
+
wrapClass(wrap),
|
|
11536
|
+
className
|
|
11537
|
+
),
|
|
11538
|
+
...props
|
|
11539
|
+
}
|
|
11540
|
+
);
|
|
11541
|
+
});
|
|
11542
|
+
Stack.displayName = "Stack";
|
|
11543
|
+
var Inline = forwardRef(function Inline2({ gap, align = "center", justify, wrap = true, className, ...props }, ref) {
|
|
11544
|
+
return /* @__PURE__ */ jsx(
|
|
11545
|
+
"div",
|
|
11546
|
+
{
|
|
11547
|
+
ref,
|
|
11548
|
+
...slot(inlineAnatomy, "root"),
|
|
11549
|
+
className: cn(
|
|
11550
|
+
"flex flex-row",
|
|
11551
|
+
gapClasses(gap, "md"),
|
|
11552
|
+
alignClass(align),
|
|
11553
|
+
justifyClass(justify),
|
|
11554
|
+
wrapClass(wrap),
|
|
11555
|
+
className
|
|
11556
|
+
),
|
|
11557
|
+
...props
|
|
11558
|
+
}
|
|
11559
|
+
);
|
|
11560
|
+
});
|
|
11561
|
+
Inline.displayName = "Inline";
|
|
11562
|
+
var PADDING = {
|
|
11563
|
+
none: "p-0",
|
|
11564
|
+
sm: "p-(--surface-pad-sm)",
|
|
11565
|
+
md: "p-(--surface-pad-md)",
|
|
11566
|
+
lg: "p-(--surface-pad-lg)"
|
|
11567
|
+
};
|
|
11568
|
+
var RADIUS = {
|
|
11569
|
+
none: "rounded-none",
|
|
11570
|
+
"surface-sm": "rounded-surface-sm",
|
|
11571
|
+
surface: "rounded-surface"
|
|
11572
|
+
};
|
|
11573
|
+
var ELEVATION = {
|
|
11574
|
+
none: void 0,
|
|
11575
|
+
flat: "shadow-flat",
|
|
11576
|
+
raised: "shadow-raised",
|
|
11577
|
+
floating: "shadow-floating",
|
|
11578
|
+
overlay: "shadow-overlay"
|
|
11579
|
+
};
|
|
11580
|
+
var Surface = forwardRef(function Surface2({ padding = "sm", radius = "surface", elevation = "none", className, ...props }, ref) {
|
|
11581
|
+
return /* @__PURE__ */ jsx(
|
|
11582
|
+
"div",
|
|
11583
|
+
{
|
|
11584
|
+
ref,
|
|
11585
|
+
...slot(surfaceAnatomy, "root"),
|
|
11586
|
+
className: cn(
|
|
11587
|
+
"border-rule bg-surface border",
|
|
11588
|
+
PADDING[padding],
|
|
11589
|
+
RADIUS[radius],
|
|
11590
|
+
ELEVATION[elevation],
|
|
11591
|
+
className
|
|
11592
|
+
),
|
|
11593
|
+
...props
|
|
11594
|
+
}
|
|
11595
|
+
);
|
|
11596
|
+
});
|
|
11597
|
+
Surface.displayName = "Surface";
|
|
10346
11598
|
var ICON_BTN = cn(
|
|
10347
11599
|
"inline-flex size-9 shrink-0 items-center justify-center rounded-[9px]",
|
|
10348
11600
|
"border-rule-strong bg-surface text-fg-3 border",
|
|
@@ -13784,7 +15036,15 @@ var NewMenu = forwardRef(function NewMenu2({ actions, groups, triggerLabel = "Ne
|
|
|
13784
15036
|
});
|
|
13785
15037
|
NewMenu.displayName = "NewMenu";
|
|
13786
15038
|
var Shell = forwardRef(function Shell2({ className, ...props }, ref) {
|
|
13787
|
-
return /* @__PURE__ */ jsx(
|
|
15039
|
+
return /* @__PURE__ */ jsx(
|
|
15040
|
+
"div",
|
|
15041
|
+
{
|
|
15042
|
+
ref,
|
|
15043
|
+
...slot(shellAnatomy, "root"),
|
|
15044
|
+
className: cn("bg-bg flex h-dvh w-full", className),
|
|
15045
|
+
...props
|
|
15046
|
+
}
|
|
15047
|
+
);
|
|
13788
15048
|
});
|
|
13789
15049
|
Shell.displayName = "Shell";
|
|
13790
15050
|
var Main = forwardRef(function Main2({ className, ...props }, ref) {
|
|
@@ -13792,6 +15052,7 @@ var Main = forwardRef(function Main2({ className, ...props }, ref) {
|
|
|
13792
15052
|
"main",
|
|
13793
15053
|
{
|
|
13794
15054
|
ref,
|
|
15055
|
+
...slot(shellAnatomy, "main"),
|
|
13795
15056
|
className: cn("flex min-w-0 flex-1 flex-col overflow-hidden", className),
|
|
13796
15057
|
...props
|
|
13797
15058
|
}
|
|
@@ -13811,6 +15072,7 @@ var Content16 = forwardRef(function Content17({ padTop, padBottom, className, st
|
|
|
13811
15072
|
role: "region",
|
|
13812
15073
|
"aria-label": "Page content",
|
|
13813
15074
|
tabIndex: 0,
|
|
15075
|
+
...slot(shellAnatomy, "content"),
|
|
13814
15076
|
className: cn("flex-1 overflow-y-auto p-[var(--content-pad)]", className),
|
|
13815
15077
|
style: paddingStyle,
|
|
13816
15078
|
...props
|
|
@@ -13994,6 +15256,7 @@ var Sidebar = React39.forwardRef(function Sidebar2({
|
|
|
13994
15256
|
"data-labels": labelsHidden ? "hide" : "show",
|
|
13995
15257
|
"data-collapsible": collapsible ? "true" : void 0,
|
|
13996
15258
|
"data-variant": variant,
|
|
15259
|
+
...slot(sidebarAnatomy, "root"),
|
|
13997
15260
|
onMouseEnter: handleEnter,
|
|
13998
15261
|
onMouseLeave: handleLeave,
|
|
13999
15262
|
style: { width: effectiveWidth, ...style },
|
|
@@ -14053,6 +15316,7 @@ var SidebarTrigger = React39.forwardRef(
|
|
|
14053
15316
|
onClick?.(e);
|
|
14054
15317
|
if (!e.defaultPrevented) toggle();
|
|
14055
15318
|
},
|
|
15319
|
+
...slot(sidebarAnatomy, "trigger"),
|
|
14056
15320
|
className: cn(
|
|
14057
15321
|
"inline-flex size-7 shrink-0 items-center justify-center rounded-md",
|
|
14058
15322
|
"text-fg-3 hover:bg-bg-3 hover:text-fg",
|
|
@@ -14099,6 +15363,8 @@ var SidebarPinButton = React39.forwardRef(
|
|
|
14099
15363
|
onClick?.(e);
|
|
14100
15364
|
if (!e.defaultPrevented) setState(isPinned ? "rail" : "expanded");
|
|
14101
15365
|
},
|
|
15366
|
+
...slot(sidebarAnatomy, "pin"),
|
|
15367
|
+
...stateAttributes({ selected: isPinned }),
|
|
14102
15368
|
className: cn(
|
|
14103
15369
|
"inline-flex size-7 shrink-0 items-center justify-center rounded-md",
|
|
14104
15370
|
"text-fg-4 hover:bg-bg-3 hover:text-fg aria-pressed:text-fg",
|
|
@@ -14155,6 +15421,7 @@ var SidebarBrand = React39.forwardRef(
|
|
|
14155
15421
|
"div",
|
|
14156
15422
|
{
|
|
14157
15423
|
ref,
|
|
15424
|
+
...slot(sidebarAnatomy, "brand"),
|
|
14158
15425
|
className: cn(
|
|
14159
15426
|
"flex min-w-0 items-center gap-2 px-2.5 pt-1 pb-4",
|
|
14160
15427
|
className
|
|
@@ -14172,6 +15439,7 @@ var SidebarBrandText = React39.forwardRef(
|
|
|
14172
15439
|
{
|
|
14173
15440
|
ref,
|
|
14174
15441
|
"aria-hidden": "false",
|
|
15442
|
+
...slot(sidebarAnatomy, "brand-text"),
|
|
14175
15443
|
className: cn(
|
|
14176
15444
|
// line-clamp-1 (not `truncate`) so multi-word wordmarks clip at a
|
|
14177
15445
|
// word boundary instead of mid-word when the rail is narrow.
|
|
@@ -14209,6 +15477,7 @@ var SidebarSection = React39.forwardRef(
|
|
|
14209
15477
|
ref,
|
|
14210
15478
|
role: ariaLabel ? "group" : void 0,
|
|
14211
15479
|
"aria-label": ariaLabel,
|
|
15480
|
+
...slot(sidebarAnatomy, "section"),
|
|
14212
15481
|
className: cn(
|
|
14213
15482
|
"mb-4",
|
|
14214
15483
|
// In rail, the visible section labels disappear and the only
|
|
@@ -14223,6 +15492,7 @@ var SidebarSection = React39.forwardRef(
|
|
|
14223
15492
|
label != null && /* @__PURE__ */ jsx(
|
|
14224
15493
|
"div",
|
|
14225
15494
|
{
|
|
15495
|
+
...slot(sidebarAnatomy, "section-header"),
|
|
14226
15496
|
className: cn(
|
|
14227
15497
|
"mb-1 flex items-center justify-between px-2.5 py-1",
|
|
14228
15498
|
"transition-opacity duration-[var(--motion-duration-spatial)] ease-[var(--motion-ease-move)] motion-reduce:transition-none",
|
|
@@ -14232,6 +15502,7 @@ var SidebarSection = React39.forwardRef(
|
|
|
14232
15502
|
children: /* @__PURE__ */ jsx(
|
|
14233
15503
|
"span",
|
|
14234
15504
|
{
|
|
15505
|
+
...slot(sidebarAnatomy, "section-label"),
|
|
14235
15506
|
className: cn(
|
|
14236
15507
|
"font-mono text-[11px] tracking-[0.14em] uppercase",
|
|
14237
15508
|
tone === "muted" ? "text-fg-3" : "text-brand"
|
|
@@ -14273,6 +15544,7 @@ var SidebarLink = React39.forwardRef(
|
|
|
14273
15544
|
"data-active": active ? "true" : void 0,
|
|
14274
15545
|
"aria-current": active ? "page" : void 0,
|
|
14275
15546
|
"aria-label": accessibleLabel,
|
|
15547
|
+
...slot(sidebarAnatomy, "link"),
|
|
14276
15548
|
className: cn(
|
|
14277
15549
|
"group/link relative mb-px flex items-center gap-2.5 rounded-md px-2.5 py-1.5",
|
|
14278
15550
|
"text-fg-2 text-[13px] font-normal no-underline",
|
|
@@ -14312,6 +15584,7 @@ var SidebarLink = React39.forwardRef(
|
|
|
14312
15584
|
/* @__PURE__ */ jsx(
|
|
14313
15585
|
"span",
|
|
14314
15586
|
{
|
|
15587
|
+
...slot(sidebarAnatomy, "link-label"),
|
|
14315
15588
|
className: cn(
|
|
14316
15589
|
// Flex row so a trailing <SidebarLinkBadge> (ml-auto) aligns
|
|
14317
15590
|
// to the right edge with a gap from the label, instead of
|
|
@@ -14343,6 +15616,7 @@ var SidebarLinkLabel = React39.forwardRef(
|
|
|
14343
15616
|
"span",
|
|
14344
15617
|
{
|
|
14345
15618
|
ref,
|
|
15619
|
+
...slot(sidebarAnatomy, "link-label"),
|
|
14346
15620
|
className: cn(
|
|
14347
15621
|
// line-clamp-1 (not `truncate`) so multi-word labels clip at a
|
|
14348
15622
|
// word boundary; collapses cleanly with the rail-mode max-width
|
|
@@ -14368,6 +15642,7 @@ var SidebarLinkAction = React39.forwardRef(
|
|
|
14368
15642
|
"span",
|
|
14369
15643
|
{
|
|
14370
15644
|
ref,
|
|
15645
|
+
...slot(sidebarAnatomy, "link-action"),
|
|
14371
15646
|
className: cn(
|
|
14372
15647
|
"transition-opacity duration-[var(--motion-duration-spatial)] ease-[var(--motion-ease-move)] motion-reduce:transition-none",
|
|
14373
15648
|
"opacity-100",
|
|
@@ -14396,7 +15671,15 @@ var sidebarLinkBadgeVariants = cva(
|
|
|
14396
15671
|
);
|
|
14397
15672
|
var SidebarLinkBadge = React39.forwardRef(
|
|
14398
15673
|
function SidebarLinkBadge2({ tone, className, ...props }, ref) {
|
|
14399
|
-
return /* @__PURE__ */ jsx(
|
|
15674
|
+
return /* @__PURE__ */ jsx(
|
|
15675
|
+
"span",
|
|
15676
|
+
{
|
|
15677
|
+
ref,
|
|
15678
|
+
...slot(sidebarAnatomy, "link-badge"),
|
|
15679
|
+
className: cn(sidebarLinkBadgeVariants({ tone }), className),
|
|
15680
|
+
...props
|
|
15681
|
+
}
|
|
15682
|
+
);
|
|
14400
15683
|
}
|
|
14401
15684
|
);
|
|
14402
15685
|
SidebarLinkBadge.displayName = "SidebarLinkBadge";
|
|
@@ -14467,6 +15750,7 @@ var SidebarLinkGroup = React39.forwardRef(
|
|
|
14467
15750
|
const labelSpan = /* @__PURE__ */ jsx(
|
|
14468
15751
|
"span",
|
|
14469
15752
|
{
|
|
15753
|
+
...slot(sidebarAnatomy, "link-label"),
|
|
14470
15754
|
className: cn(
|
|
14471
15755
|
// line-clamp-1 (not `truncate`) so multi-word labels clip at a
|
|
14472
15756
|
// word boundary; collapses cleanly with the rail-mode max-width
|
|
@@ -14479,60 +15763,73 @@ var SidebarLinkGroup = React39.forwardRef(
|
|
|
14479
15763
|
children: label
|
|
14480
15764
|
}
|
|
14481
15765
|
);
|
|
14482
|
-
return /* @__PURE__ */ jsx(
|
|
14483
|
-
|
|
14484
|
-
|
|
14485
|
-
|
|
14486
|
-
|
|
14487
|
-
|
|
14488
|
-
|
|
14489
|
-
|
|
14490
|
-
|
|
14491
|
-
|
|
14492
|
-
|
|
14493
|
-
|
|
14494
|
-
|
|
14495
|
-
|
|
14496
|
-
|
|
14497
|
-
|
|
14498
|
-
|
|
14499
|
-
|
|
14500
|
-
|
|
14501
|
-
|
|
14502
|
-
|
|
14503
|
-
|
|
14504
|
-
|
|
14505
|
-
|
|
14506
|
-
|
|
14507
|
-
className: cn(
|
|
14508
|
-
"ml-px inline-flex size-7 shrink-0 items-center justify-center rounded-md",
|
|
14509
|
-
"text-fg-4 hover:bg-bg-3 hover:text-fg-2",
|
|
14510
|
-
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
14511
|
-
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
14512
|
-
"[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:transition-transform [&_svg]:duration-[var(--duration-fast)] [&_svg]:ease-[var(--ease-out-quart)] motion-reduce:[&_svg]:transition-none",
|
|
14513
|
-
// Hide in rail — content tree is hidden too, so the
|
|
14514
|
-
// affordance has nothing to control.
|
|
14515
|
-
"group-data-[labels=hide]/sidebar:hidden"
|
|
15766
|
+
return /* @__PURE__ */ jsx(
|
|
15767
|
+
"div",
|
|
15768
|
+
{
|
|
15769
|
+
ref,
|
|
15770
|
+
...slot(sidebarAnatomy, "group"),
|
|
15771
|
+
...stateAttributes({ state: open ? "open" : "closed" }),
|
|
15772
|
+
className: cn("mb-px", className),
|
|
15773
|
+
...props,
|
|
15774
|
+
children: /* @__PURE__ */ jsxs(Collapsible, { open, onOpenChange: setOpen, children: [
|
|
15775
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-stretch", children: [
|
|
15776
|
+
/* @__PURE__ */ jsxs(
|
|
15777
|
+
"a",
|
|
15778
|
+
{
|
|
15779
|
+
href,
|
|
15780
|
+
"data-active": active ? "true" : void 0,
|
|
15781
|
+
"aria-current": active ? "page" : void 0,
|
|
15782
|
+
"aria-label": getTextContent(label) || void 0,
|
|
15783
|
+
onClick: handleBodyClick,
|
|
15784
|
+
...slot(sidebarAnatomy, "group-link"),
|
|
15785
|
+
className: bodyClassName,
|
|
15786
|
+
children: [
|
|
15787
|
+
icon,
|
|
15788
|
+
labelSpan
|
|
15789
|
+
]
|
|
15790
|
+
}
|
|
14516
15791
|
),
|
|
14517
|
-
|
|
14518
|
-
|
|
14519
|
-
|
|
14520
|
-
|
|
14521
|
-
|
|
14522
|
-
|
|
14523
|
-
|
|
14524
|
-
|
|
14525
|
-
|
|
14526
|
-
|
|
14527
|
-
|
|
14528
|
-
|
|
14529
|
-
|
|
14530
|
-
|
|
14531
|
-
|
|
14532
|
-
|
|
14533
|
-
|
|
14534
|
-
|
|
14535
|
-
|
|
15792
|
+
/* @__PURE__ */ jsx(
|
|
15793
|
+
"button",
|
|
15794
|
+
{
|
|
15795
|
+
type: "button",
|
|
15796
|
+
"aria-expanded": open,
|
|
15797
|
+
"aria-controls": contentId,
|
|
15798
|
+
"aria-label": open ? "Collapse section" : "Expand section",
|
|
15799
|
+
onClick: handleChevronClick,
|
|
15800
|
+
...slot(sidebarAnatomy, "group-trigger"),
|
|
15801
|
+
className: cn(
|
|
15802
|
+
"ml-px inline-flex size-7 shrink-0 items-center justify-center rounded-md",
|
|
15803
|
+
"text-fg-4 hover:bg-bg-3 hover:text-fg-2",
|
|
15804
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
15805
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
15806
|
+
"[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:transition-transform [&_svg]:duration-[var(--duration-fast)] [&_svg]:ease-[var(--ease-out-quart)] motion-reduce:[&_svg]:transition-none",
|
|
15807
|
+
// Hide in rail — content tree is hidden too, so the
|
|
15808
|
+
// affordance has nothing to control.
|
|
15809
|
+
"group-data-[labels=hide]/sidebar:hidden"
|
|
15810
|
+
),
|
|
15811
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: open ? "" : "-rotate-90" })
|
|
15812
|
+
}
|
|
15813
|
+
)
|
|
15814
|
+
] }),
|
|
15815
|
+
/* @__PURE__ */ jsx(
|
|
15816
|
+
CollapsibleContent,
|
|
15817
|
+
{
|
|
15818
|
+
id: contentId,
|
|
15819
|
+
...slot(sidebarAnatomy, "group-content"),
|
|
15820
|
+
className: cn(
|
|
15821
|
+
// Indent column + connecting rule. Children render as
|
|
15822
|
+
// standard <SidebarLink>s and keep their own active-rail
|
|
15823
|
+
// indicator, which lands flush at the indented column's
|
|
15824
|
+
// left edge.
|
|
15825
|
+
"group-data-[labels=hide]/sidebar:hidden"
|
|
15826
|
+
),
|
|
15827
|
+
children: /* @__PURE__ */ jsx("div", { className: "border-rule mt-px ml-[18px] border-l pl-2", children })
|
|
15828
|
+
}
|
|
15829
|
+
)
|
|
15830
|
+
] })
|
|
15831
|
+
}
|
|
15832
|
+
);
|
|
14536
15833
|
}
|
|
14537
15834
|
);
|
|
14538
15835
|
SidebarLinkGroup.displayName = "SidebarLinkGroup";
|
|
@@ -14542,6 +15839,7 @@ var SidebarFooter = React39.forwardRef(
|
|
|
14542
15839
|
"div",
|
|
14543
15840
|
{
|
|
14544
15841
|
ref,
|
|
15842
|
+
...slot(sidebarAnatomy, "footer"),
|
|
14545
15843
|
className: cn(
|
|
14546
15844
|
"border-rule mt-auto flex items-center gap-2.5 border-t px-2 pt-2.5 pb-1",
|
|
14547
15845
|
"text-fg-3 text-xs",
|
|
@@ -14554,24 +15852,47 @@ var SidebarFooter = React39.forwardRef(
|
|
|
14554
15852
|
);
|
|
14555
15853
|
SidebarFooter.displayName = "SidebarFooter";
|
|
14556
15854
|
var SidebarUser = React39.forwardRef(function SidebarUser2({ name, subtitle, avatarSrc, className, ...props }, ref) {
|
|
14557
|
-
return /* @__PURE__ */ jsxs(
|
|
14558
|
-
|
|
14559
|
-
|
|
14560
|
-
|
|
14561
|
-
|
|
14562
|
-
|
|
14563
|
-
|
|
14564
|
-
|
|
14565
|
-
|
|
14566
|
-
|
|
14567
|
-
|
|
14568
|
-
|
|
14569
|
-
|
|
14570
|
-
|
|
14571
|
-
|
|
14572
|
-
|
|
14573
|
-
|
|
14574
|
-
|
|
15855
|
+
return /* @__PURE__ */ jsxs(
|
|
15856
|
+
"div",
|
|
15857
|
+
{
|
|
15858
|
+
ref,
|
|
15859
|
+
...slot(sidebarAnatomy, "user"),
|
|
15860
|
+
className: cn("flex min-w-0 items-center gap-2.5", className),
|
|
15861
|
+
...props,
|
|
15862
|
+
children: [
|
|
15863
|
+
/* @__PURE__ */ jsx(Avatar, { size: "sm", variant: "branded", name, src: avatarSrc ?? void 0 }),
|
|
15864
|
+
/* @__PURE__ */ jsxs(
|
|
15865
|
+
"div",
|
|
15866
|
+
{
|
|
15867
|
+
className: cn(
|
|
15868
|
+
"min-w-0 leading-tight",
|
|
15869
|
+
"transition-[opacity,max-width] duration-[var(--motion-duration-spatial)] ease-[var(--motion-ease-move)] motion-reduce:transition-none",
|
|
15870
|
+
"max-w-full opacity-100",
|
|
15871
|
+
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
|
|
15872
|
+
),
|
|
15873
|
+
children: [
|
|
15874
|
+
/* @__PURE__ */ jsx(
|
|
15875
|
+
"div",
|
|
15876
|
+
{
|
|
15877
|
+
...slot(sidebarAnatomy, "user-name"),
|
|
15878
|
+
className: "text-fg line-clamp-1 text-[13px] font-medium",
|
|
15879
|
+
children: name
|
|
15880
|
+
}
|
|
15881
|
+
),
|
|
15882
|
+
subtitle != null && /* @__PURE__ */ jsx(
|
|
15883
|
+
"div",
|
|
15884
|
+
{
|
|
15885
|
+
...slot(sidebarAnatomy, "user-subtitle"),
|
|
15886
|
+
className: "text-fg-4 line-clamp-1 font-mono text-[10.5px]",
|
|
15887
|
+
children: subtitle
|
|
15888
|
+
}
|
|
15889
|
+
)
|
|
15890
|
+
]
|
|
15891
|
+
}
|
|
15892
|
+
)
|
|
15893
|
+
]
|
|
15894
|
+
}
|
|
15895
|
+
);
|
|
14575
15896
|
});
|
|
14576
15897
|
SidebarUser.displayName = "SidebarUser";
|
|
14577
15898
|
var SidebarBrandSwitcher = React39.forwardRef(
|
|
@@ -14608,6 +15929,7 @@ var SidebarBrandSwitcher = React39.forwardRef(
|
|
|
14608
15929
|
"div",
|
|
14609
15930
|
{
|
|
14610
15931
|
ref,
|
|
15932
|
+
...slot(sidebarBrandSwitcherAnatomy, "root"),
|
|
14611
15933
|
className: cn("flex min-w-0 items-center gap-2 px-2.5 pt-1 pb-4", className),
|
|
14612
15934
|
children: [
|
|
14613
15935
|
/* @__PURE__ */ jsxs(DropdownMenu, { open, onOpenChange: setOpen, children: [
|
|
@@ -14615,6 +15937,7 @@ var SidebarBrandSwitcher = React39.forwardRef(
|
|
|
14615
15937
|
DropdownMenuTrigger,
|
|
14616
15938
|
{
|
|
14617
15939
|
"aria-label": triggerLabel,
|
|
15940
|
+
...slot(sidebarBrandSwitcherAnatomy, "trigger"),
|
|
14618
15941
|
className: cn(
|
|
14619
15942
|
// Negative left margin pulls the trigger's hover-bg toward
|
|
14620
15943
|
// the column edge while the inner padding holds the brand
|
|
@@ -14632,6 +15955,7 @@ var SidebarBrandSwitcher = React39.forwardRef(
|
|
|
14632
15955
|
/* @__PURE__ */ jsx(
|
|
14633
15956
|
ChevronDownIcon,
|
|
14634
15957
|
{
|
|
15958
|
+
...slot(sidebarBrandSwitcherAnatomy, "icon"),
|
|
14635
15959
|
className: cn(
|
|
14636
15960
|
"ml-auto size-3.5 shrink-0 text-fg-4",
|
|
14637
15961
|
"transition-transform duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
@@ -15186,6 +16510,7 @@ var DataTable = forwardRef(function DataTable2({ withToolbar, className, childre
|
|
|
15186
16510
|
{
|
|
15187
16511
|
ref,
|
|
15188
16512
|
"data-with-toolbar": withToolbar ? "true" : void 0,
|
|
16513
|
+
...slot(dataTableAnatomy, "root"),
|
|
15189
16514
|
className: cn(
|
|
15190
16515
|
// Outer frame on the whole component: a single visible border +
|
|
15191
16516
|
// quiet shadow wrapping the toolbar (if any) and the table as one
|
|
@@ -15207,6 +16532,7 @@ var DataTableToolbar = forwardRef(
|
|
|
15207
16532
|
"div",
|
|
15208
16533
|
{
|
|
15209
16534
|
ref,
|
|
16535
|
+
...slot(dataTableAnatomy, "toolbar"),
|
|
15210
16536
|
className: cn(
|
|
15211
16537
|
"flex items-center gap-2 px-3 py-2.5",
|
|
15212
16538
|
"border-rule bg-surface border-b",
|
|
@@ -15237,7 +16563,16 @@ var DataTableSearch = forwardRef(
|
|
|
15237
16563
|
DataTableSearch.displayName = "DataTableSearch";
|
|
15238
16564
|
var DataTableSpacer = forwardRef(
|
|
15239
16565
|
function DataTableSpacer2({ className, ...props }, ref) {
|
|
15240
|
-
return /* @__PURE__ */ jsx(
|
|
16566
|
+
return /* @__PURE__ */ jsx(
|
|
16567
|
+
"span",
|
|
16568
|
+
{
|
|
16569
|
+
ref,
|
|
16570
|
+
"aria-hidden": "true",
|
|
16571
|
+
...slot(dataTableAnatomy, "spacer"),
|
|
16572
|
+
className: cn("flex-1", className),
|
|
16573
|
+
...props
|
|
16574
|
+
}
|
|
16575
|
+
);
|
|
15241
16576
|
}
|
|
15242
16577
|
);
|
|
15243
16578
|
DataTableSpacer.displayName = "DataTableSpacer";
|
|
@@ -15247,6 +16582,7 @@ var DataTableResultsCount = forwardRef(
|
|
|
15247
16582
|
"span",
|
|
15248
16583
|
{
|
|
15249
16584
|
ref,
|
|
16585
|
+
...slot(dataTableAnatomy, "results-count"),
|
|
15250
16586
|
className: cn(
|
|
15251
16587
|
"text-fg-4 mr-1 shrink-0 font-sans text-[11px] whitespace-nowrap tabular-nums",
|
|
15252
16588
|
className
|
|
@@ -15264,13 +16600,29 @@ var DataTableResultsCount = forwardRef(
|
|
|
15264
16600
|
DataTableResultsCount.displayName = "DataTableResultsCount";
|
|
15265
16601
|
var DataTableHead = forwardRef(
|
|
15266
16602
|
function DataTableHead2({ className, ...props }, ref) {
|
|
15267
|
-
return /* @__PURE__ */ jsx(
|
|
16603
|
+
return /* @__PURE__ */ jsx(
|
|
16604
|
+
"thead",
|
|
16605
|
+
{
|
|
16606
|
+
ref,
|
|
16607
|
+
...slot(dataTableAnatomy, "header"),
|
|
16608
|
+
className: cn("[&_tr]:border-rule [&_tr]:border-b", className),
|
|
16609
|
+
...props
|
|
16610
|
+
}
|
|
16611
|
+
);
|
|
15268
16612
|
}
|
|
15269
16613
|
);
|
|
15270
16614
|
DataTableHead.displayName = "DataTableHead";
|
|
15271
16615
|
var DataTableBody = forwardRef(
|
|
15272
16616
|
function DataTableBody2({ className, ...props }, ref) {
|
|
15273
|
-
return /* @__PURE__ */ jsx(
|
|
16617
|
+
return /* @__PURE__ */ jsx(
|
|
16618
|
+
"tbody",
|
|
16619
|
+
{
|
|
16620
|
+
ref,
|
|
16621
|
+
...slot(dataTableAnatomy, "body"),
|
|
16622
|
+
className: cn("[&_tr:last-child]:border-0", className),
|
|
16623
|
+
...props
|
|
16624
|
+
}
|
|
16625
|
+
);
|
|
15274
16626
|
}
|
|
15275
16627
|
);
|
|
15276
16628
|
DataTableBody.displayName = "DataTableBody";
|
|
@@ -15281,6 +16633,7 @@ var DataTableRow = forwardRef(
|
|
|
15281
16633
|
{
|
|
15282
16634
|
ref,
|
|
15283
16635
|
"data-state": selected ? "selected" : void 0,
|
|
16636
|
+
...slot(dataTableAnatomy, "row"),
|
|
15284
16637
|
className: cn(
|
|
15285
16638
|
"border-rule-soft border-b",
|
|
15286
16639
|
microInteractions.selection,
|
|
@@ -15321,6 +16674,7 @@ var DataTableHeader = forwardRef(
|
|
|
15321
16674
|
"span",
|
|
15322
16675
|
{
|
|
15323
16676
|
"aria-hidden": "true",
|
|
16677
|
+
...slot(dataTableAnatomy, "head-indicator"),
|
|
15324
16678
|
className: cn(
|
|
15325
16679
|
"text-fg-5 ml-1 inline-flex shrink-0 items-center justify-center",
|
|
15326
16680
|
currentSort && "text-fg-3"
|
|
@@ -15335,6 +16689,8 @@ var DataTableHeader = forwardRef(
|
|
|
15335
16689
|
ref,
|
|
15336
16690
|
scope: "col",
|
|
15337
16691
|
"aria-sort": ariaSort,
|
|
16692
|
+
...slot(dataTableAnatomy, "head"),
|
|
16693
|
+
...stateAttributes({ state: currentSort ?? void 0 }),
|
|
15338
16694
|
className: cn(
|
|
15339
16695
|
"h-11 px-4 py-2.5 text-left align-middle whitespace-nowrap",
|
|
15340
16696
|
"font-sans text-[14px] font-medium tracking-normal normal-case",
|
|
@@ -15349,6 +16705,7 @@ var DataTableHeader = forwardRef(
|
|
|
15349
16705
|
{
|
|
15350
16706
|
type: "button",
|
|
15351
16707
|
onClick: handleClick,
|
|
16708
|
+
...slot(dataTableAnatomy, "head-button"),
|
|
15352
16709
|
className: cn(
|
|
15353
16710
|
"-mx-1 -my-1 inline-flex items-center gap-1 rounded-[4px] px-1 py-1",
|
|
15354
16711
|
"font-sans text-[14px] font-medium tracking-normal normal-case",
|
|
@@ -15374,6 +16731,7 @@ var DataTableCell = forwardRef(
|
|
|
15374
16731
|
"td",
|
|
15375
16732
|
{
|
|
15376
16733
|
ref,
|
|
16734
|
+
...slot(dataTableAnatomy, "cell"),
|
|
15377
16735
|
className: cn(
|
|
15378
16736
|
cellBase,
|
|
15379
16737
|
"text-fg-2 text-[13px]",
|
|
@@ -15392,6 +16750,8 @@ var DataTableCellName = forwardRef(
|
|
|
15392
16750
|
"td",
|
|
15393
16751
|
{
|
|
15394
16752
|
ref,
|
|
16753
|
+
...slot(dataTableAnatomy, "cell"),
|
|
16754
|
+
...stateAttributes({ variant: "name" }),
|
|
15395
16755
|
className: cn(cellBase, "font-display text-fg text-[13px] font-medium", className),
|
|
15396
16756
|
...props
|
|
15397
16757
|
}
|
|
@@ -15405,6 +16765,8 @@ var DataTableCellMono = forwardRef(
|
|
|
15405
16765
|
"td",
|
|
15406
16766
|
{
|
|
15407
16767
|
ref,
|
|
16768
|
+
...slot(dataTableAnatomy, "cell"),
|
|
16769
|
+
...stateAttributes({ variant: "mono" }),
|
|
15408
16770
|
className: cn(cellBase, "font-sans text-fg-2 text-[13px] tabular-nums", className),
|
|
15409
16771
|
style,
|
|
15410
16772
|
...props
|
|
@@ -15419,6 +16781,8 @@ var DataTableCellId = forwardRef(
|
|
|
15419
16781
|
"td",
|
|
15420
16782
|
{
|
|
15421
16783
|
ref,
|
|
16784
|
+
...slot(dataTableAnatomy, "cell"),
|
|
16785
|
+
...stateAttributes({ variant: "id" }),
|
|
15422
16786
|
className: cn(cellBase, "font-sans text-fg-4 text-xs tabular-nums", className),
|
|
15423
16787
|
style,
|
|
15424
16788
|
...props
|
|
@@ -15444,6 +16808,8 @@ var DataTableCellDue = forwardRef(
|
|
|
15444
16808
|
{
|
|
15445
16809
|
ref,
|
|
15446
16810
|
"data-due-state": ariaState,
|
|
16811
|
+
...slot(dataTableAnatomy, "cell"),
|
|
16812
|
+
...stateAttributes({ variant: "due" }),
|
|
15447
16813
|
className: cn(cellBase, "font-sans text-[13px] tabular-nums", tone, className),
|
|
15448
16814
|
style,
|
|
15449
16815
|
...props,
|
|
@@ -15469,6 +16835,7 @@ var DataTableCheckbox = forwardRef(
|
|
|
15469
16835
|
Cell,
|
|
15470
16836
|
{
|
|
15471
16837
|
ref,
|
|
16838
|
+
...slot(dataTableAnatomy, "checkbox-cell"),
|
|
15472
16839
|
className: cn(
|
|
15473
16840
|
"w-8 px-4 py-3 pr-0 align-middle",
|
|
15474
16841
|
asHeader && "bg-surface-2 border-rule h-11 border-b",
|
|
@@ -18012,20 +19379,8 @@ var Eyebrow = forwardRef(function Eyebrow2({ numeric, className, children, ...pr
|
|
|
18012
19379
|
return /* @__PURE__ */ jsx("div", { ref, className: cn(numeric ? "eyebrow-num" : "eyebrow", className), ...props, children });
|
|
18013
19380
|
});
|
|
18014
19381
|
Eyebrow.displayName = "Eyebrow";
|
|
18015
|
-
var KbdHint = forwardRef(function KbdHint2(
|
|
18016
|
-
return /* @__PURE__ */ jsx(
|
|
18017
|
-
"kbd",
|
|
18018
|
-
{
|
|
18019
|
-
ref,
|
|
18020
|
-
className: cn(
|
|
18021
|
-
"rounded-icon inline-flex h-5 min-w-5 items-center justify-center px-1.5",
|
|
18022
|
-
"border-rule bg-bg-2 text-fg-3 border font-mono text-[10.5px]",
|
|
18023
|
-
className
|
|
18024
|
-
),
|
|
18025
|
-
...props,
|
|
18026
|
-
children
|
|
18027
|
-
}
|
|
18028
|
-
);
|
|
19382
|
+
var KbdHint = forwardRef(function KbdHint2(props, ref) {
|
|
19383
|
+
return /* @__PURE__ */ jsx(Kbd, { ref, variant: "flat", ...props });
|
|
18029
19384
|
});
|
|
18030
19385
|
KbdHint.displayName = "KbdHint";
|
|
18031
19386
|
function SuggestionPills({
|
|
@@ -18899,6 +20254,6 @@ var BrandScope = forwardRef(function BrandScope2({ product, children, ...props }
|
|
|
18899
20254
|
});
|
|
18900
20255
|
BrandScope.displayName = "BrandScope";
|
|
18901
20256
|
|
|
18902
|
-
export { AIReceiptPanel, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, AgreementPaneHeading, AgreementViewer, AiDraftCard, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, AreaChart, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, Assignee, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, AtSignIcon, AttachmentChip, AttentionItem, Avatar, BRAND_PRODUCTS, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, BottomNav, BrandScope, BrandScopeProvider, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, BulkActionBar, BulkActionBarAction, BulkActionBarSeparator, Button, COUNTRY_CODES, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CategoryDivider, CategoryTag, ChannelTabs, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientRailGroupHeader, ClientRailItem, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content16 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CountryFlag, CountrySelect, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, Dash, DashGrid, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DataTableView, DatePicker, DateRangePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DisplayMenu, DocumentChecklist, DocumentDetailActions, DocumentDetailBody, DocumentDetailHeader, DocumentDetailMetaRow, DocumentDetailPanel, DocumentDetailRequester, DocumentDetailTitle, DocumentFileCard, DocumentFileLine, DocumentFileRow, DocumentIcon, DocumentList, DocumentListSection, DocumentRequestCard, DocumentRequestDetail, DocumentRequestField, DocumentRequestUpload, DocumentRow, DocumentSourceFilter, DocumentSourceTag, DocumentsWorkspaceLayout, DollarSignIcon, DonutChart, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmailMessageCard, EmptyState, EngagementCard, EngagementTimeline, EngagementTimelineStep, ExtractIcon, EyeIcon, EyeOffIcon, Eyebrow, FileChip, FileIcon, FileReturnIcon, FileTextIcon, FileTypeBadge, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FolderTree, FolderUpIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, Grid, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, IconTile, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, IntentBadge, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LandmarkIcon, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MasterDetailLayout, MenuIcon, MessageBubble, MessageBubbleAction, MessageBubbleTombstone, MessageCircleIcon, MessageCircleWarningIcon, MessageComposer, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MissingDocumentsPanel, MoneyCell, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, NewMenu, NotificationFilter, NotificationItem, NotificationList, NotificationPanel, NotificationPanelFooter, NotificationPanelHeader, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PauseIcon, PdfPreview, PenSignIcon, PenToolIcon, PencilIcon, PhoneCountryInput, PhoneIcon, PhoneInput, PlayIcon, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, PriorityIcon, ProgressBar, ProgressRing, ProposalAddOn, ProposalBillingTerms, ProposalConsentGate, ProposalCustomPage, ProposalNote, ProposalPackageCard, ProposalPaymentCapture, ProposalPricingSummary, ProposalServiceRow, ProposalSignatureBlock, ProposalSignerList, QuestionnairePanel, Questions, RadioGroup3 as RadioGroup, RadioGroupItem, RankedBars, ReceiptIcon, ReplyIcon, ResponsiveDialog, RotateCcwIcon, RouteTransition, SERVICE_TONES, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, SegmentedProgress, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectableKpiCard, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandSwitcher, SidebarBrandSwitcherTile, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarPinButton, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, SignatureEditor, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, Spinner, SpreadsheetPreview, StackedBarChart, StagePill, StarIcon, StarRating, Stat, StatusDot, StatusIcon, StatusPill, Stepper, StickyActionBar, StickyStack, StickyStackLayer, StickyStackSectionHeader, StickyStackSticky, StopIcon, StrikethroughIcon, SubmitButton, SuggestionPills, SuiteProgress, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TagsCell, TeamIcon, TeamMemberSelect, Textarea, TimeLogger, TimeLoggerActions, TimeLoggerBillable, TimeLoggerContextRow, TimeLoggerEntry, TimeLoggerEntryList, TimeLoggerField, TimeLoggerFooter, TimeLoggerHeader, TimeLoggerNotes, TimeLoggerTimer, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, YEAR_DISPLAY_PLACEHOLDER, ZoomInIcon, ZoomOutIcon, alertVariants, applyMask, applyYearMask, attachmentChipVariants, badgeVariants, brandLabel, brandScope, buttonVariants, cardVariants, cn, colors, dateToIso, displayToIso, fileTypeBadgeVariants, fileTypeFromName, filterChipVariants, formatClock, formatCurrency, formatDuration, getFlagEmoji, iconTileVariants, inputVariants, isoToDate, isoToDisplay, isoToYear, labelVariants, parseDuration, parsePhoneForEditing, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, serviceToneLabel, serviceToneStyle, shadows, sidebarLinkBadgeVariants, spacing, spinnerVariants, starRatingVariants, statusDotVariants, suiteProgressFillVariants, surfaces, systemTokens, textareaVariants, typography, useBrandScope, useSidebarPeekLock, useSidebarState, useStopwatch, useToast, yearToIso };
|
|
20257
|
+
export { AIReceiptPanel, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, AgreementPaneHeading, AgreementViewer, AiDraftCard, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, AreaChart, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, Assignee, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, AtSignIcon, AttachmentChip, AttentionItem, Avatar, BRAND_PRODUCTS, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, BottomNav, BrandScope, BrandScopeProvider, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, BulkActionBar, BulkActionBarAction, BulkActionBarSeparator, Button, COUNTRY_CODES, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CategoryDivider, CategoryTag, ChannelTabs, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientRailGroupHeader, ClientRailItem, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Code, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content16 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CountryFlag, CountrySelect, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, Dash, DashGrid, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DataTableView, DatePicker, DateRangePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DisplayMenu, DocumentChecklist, DocumentDetailActions, DocumentDetailBody, DocumentDetailHeader, DocumentDetailMetaRow, DocumentDetailPanel, DocumentDetailRequester, DocumentDetailTitle, DocumentFileCard, DocumentFileLine, DocumentFileRow, DocumentIcon, DocumentList, DocumentListSection, DocumentRequestCard, DocumentRequestDetail, DocumentRequestField, DocumentRequestUpload, DocumentRow, DocumentSourceFilter, DocumentSourceTag, DocumentsWorkspaceLayout, DollarSignIcon, DonutChart, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmailMessageCard, EmptyState, EngagementCard, EngagementTimeline, EngagementTimelineStep, ExtractIcon, EyeIcon, EyeOffIcon, Eyebrow, FileChip, FileIcon, FileReturnIcon, FileTextIcon, FileTypeBadge, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FolderTree, FolderUpIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, Grid, Heading, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, IconTile, InboxIcon, InfoCircleSolidIcon, InfoIcon, Inline, Input, IntentBadge, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, Kbd, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LandmarkIcon, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MasterDetailLayout, MenuIcon, MessageBubble, MessageBubbleAction, MessageBubbleTombstone, MessageCircleIcon, MessageCircleWarningIcon, MessageComposer, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MissingDocumentsPanel, MoneyCell, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, NewMenu, NotificationFilter, NotificationItem, NotificationList, NotificationPanel, NotificationPanelFooter, NotificationPanelHeader, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PauseIcon, PdfPreview, PenSignIcon, PenToolIcon, PencilIcon, PhoneCountryInput, PhoneIcon, PhoneInput, PlayIcon, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, PriorityIcon, ProgressBar, ProgressRing, ProposalAddOn, ProposalBillingTerms, ProposalConsentGate, ProposalCustomPage, ProposalNote, ProposalPackageCard, ProposalPaymentCapture, ProposalPricingSummary, ProposalServiceRow, ProposalSignatureBlock, ProposalSignerList, QuestionnairePanel, Questions, RadioGroup3 as RadioGroup, RadioGroupItem, RankedBars, ReceiptIcon, ReplyIcon, ResponsiveDialog, RotateCcwIcon, RouteTransition, SERVICE_TONES, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, SegmentedProgress, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectableKpiCard, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandSwitcher, SidebarBrandSwitcherTile, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarPinButton, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, SignatureEditor, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, Spinner, SpreadsheetPreview, Stack, StackedBarChart, StagePill, StarIcon, StarRating, Stat, StatusDot, StatusIcon, StatusPill, Stepper, StickyActionBar, StickyStack, StickyStackLayer, StickyStackSectionHeader, StickyStackSticky, StopIcon, StrikethroughIcon, SubmitButton, SuggestionPills, SuiteProgress, SunIcon, Surface, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TagsCell, TeamIcon, TeamMemberSelect, Text, Textarea, TimeLogger, TimeLoggerActions, TimeLoggerBillable, TimeLoggerContextRow, TimeLoggerEntry, TimeLoggerEntryList, TimeLoggerField, TimeLoggerFooter, TimeLoggerHeader, TimeLoggerNotes, TimeLoggerTimer, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, YEAR_DISPLAY_PLACEHOLDER, ZoomInIcon, ZoomOutIcon, alertVariants, applyMask, applyYearMask, assetPath, attachmentChipVariants, badgeVariants, brandLabel, brandScope, buttonVariants, cardVariants, cn, colors, dateToIso, displayToIso, fileTypeBadgeVariants, fileTypeFromName, filterChipVariants, formatClock, formatCurrency, formatDuration, getAssetBasePath, getFlagEmoji, iconTileVariants, inputVariants, isoToDate, isoToDisplay, isoToYear, labelVariants, parseDuration, parsePhoneForEditing, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, serviceToneLabel, serviceToneStyle, setAssetBasePath, shadows, sidebarLinkBadgeVariants, spacing, spinnerVariants, starRatingVariants, statusDotVariants, suiteProgressFillVariants, surfaces, systemTokens, textareaVariants, typography, useBrandScope, useSidebarPeekLock, useSidebarState, useStopwatch, useToast, yearToIso };
|
|
18903
20258
|
//# sourceMappingURL=index.js.map
|
|
18904
20259
|
//# sourceMappingURL=index.js.map
|