@assure-one/design-system 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +346 -9
- package/dist/index.js +1086 -496
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import * as
|
|
2
|
+
import * as React37 from 'react';
|
|
3
3
|
import { forwardRef, useId, useRef, useState, useEffect, useCallback, useImperativeHandle, useMemo, createContext, useContext } from 'react';
|
|
4
4
|
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
5
5
|
import { clsx } from 'clsx';
|
|
@@ -8,8 +8,8 @@ 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';
|
|
10
10
|
import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
|
|
11
|
-
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
12
11
|
import { Slot } from '@radix-ui/react-slot';
|
|
12
|
+
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
13
13
|
import { DayPicker } from 'react-day-picker';
|
|
14
14
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
15
15
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
@@ -529,6 +529,45 @@ function BuildingIcon({ size = 24, ...props }) {
|
|
|
529
529
|
}
|
|
530
530
|
) });
|
|
531
531
|
}
|
|
532
|
+
function LandmarkIcon({ size = 24, ...props }) {
|
|
533
|
+
return /* @__PURE__ */ jsx(Icon, { size, ...props, children: /* @__PURE__ */ jsx(
|
|
534
|
+
"path",
|
|
535
|
+
{
|
|
536
|
+
d: "M3 22h18M6 18v-7M10 18v-7M14 18v-7M18 18v-7M12 2 20 7 4 7Z",
|
|
537
|
+
stroke: "currentColor",
|
|
538
|
+
strokeWidth: "1.5",
|
|
539
|
+
strokeLinecap: "round",
|
|
540
|
+
strokeLinejoin: "round"
|
|
541
|
+
}
|
|
542
|
+
) });
|
|
543
|
+
}
|
|
544
|
+
function FolderUpIcon({ size = 24, ...props }) {
|
|
545
|
+
return /* @__PURE__ */ jsx(Icon, { size, ...props, children: /* @__PURE__ */ jsx(
|
|
546
|
+
"path",
|
|
547
|
+
{
|
|
548
|
+
d: "M20 20a2 2 0 002-2V8a2 2 0 00-2-2h-7.9a2 2 0 01-1.69-.9L9.6 3.9A2 2 0 007.93 3H4a2 2 0 00-2 2v13a2 2 0 002 2ZM12 10v6M9 13l3-3 3 3",
|
|
549
|
+
stroke: "currentColor",
|
|
550
|
+
strokeWidth: "1.5",
|
|
551
|
+
strokeLinecap: "round",
|
|
552
|
+
strokeLinejoin: "round"
|
|
553
|
+
}
|
|
554
|
+
) });
|
|
555
|
+
}
|
|
556
|
+
function PenToolIcon({ size = 24, ...props }) {
|
|
557
|
+
return /* @__PURE__ */ jsxs(Icon, { size, ...props, children: [
|
|
558
|
+
/* @__PURE__ */ jsx(
|
|
559
|
+
"path",
|
|
560
|
+
{
|
|
561
|
+
d: "M15.7 21.3a1 1 0 01-1.4 0l-1.6-1.6a1 1 0 010-1.4l5.6-5.6a1 1 0 011.4 0l1.6 1.6a1 1 0 010 1.4zM18 13l-1.4-6.9a1 1 0 00-.7-.8L3.2 2a1 1 0 00-1.2 1.2l3.3 12.7a1 1 0 00.8.7L13 18M2.3 2.3l7.3 7.3",
|
|
562
|
+
stroke: "currentColor",
|
|
563
|
+
strokeWidth: "1.5",
|
|
564
|
+
strokeLinecap: "round",
|
|
565
|
+
strokeLinejoin: "round"
|
|
566
|
+
}
|
|
567
|
+
),
|
|
568
|
+
/* @__PURE__ */ jsx("circle", { cx: "11", cy: "11", r: "2", stroke: "currentColor", strokeWidth: "1.5" })
|
|
569
|
+
] });
|
|
570
|
+
}
|
|
532
571
|
function MapPinIcon({ size = 24, ...props }) {
|
|
533
572
|
return /* @__PURE__ */ jsxs(Icon, { size, ...props, children: [
|
|
534
573
|
/* @__PURE__ */ jsx(
|
|
@@ -2246,7 +2285,7 @@ function PauseIcon({ size = 24, ...props }) {
|
|
|
2246
2285
|
function StopIcon({ size = 24, ...props }) {
|
|
2247
2286
|
return /* @__PURE__ */ jsx(Icon, { size, ...props, children: /* @__PURE__ */ jsx("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2", fill: "currentColor" }) });
|
|
2248
2287
|
}
|
|
2249
|
-
var Accordion =
|
|
2288
|
+
var Accordion = React37.forwardRef(function Accordion2({ className, ...props }, ref) {
|
|
2250
2289
|
return /* @__PURE__ */ jsx(
|
|
2251
2290
|
AccordionPrimitive.Root,
|
|
2252
2291
|
{
|
|
@@ -2257,11 +2296,11 @@ var Accordion = React36.forwardRef(function Accordion2({ className, ...props },
|
|
|
2257
2296
|
);
|
|
2258
2297
|
});
|
|
2259
2298
|
Accordion.displayName = AccordionPrimitive.Root.displayName;
|
|
2260
|
-
var AccordionItem =
|
|
2299
|
+
var AccordionItem = React37.forwardRef(function AccordionItem2({ className, ...props }, ref) {
|
|
2261
2300
|
return /* @__PURE__ */ jsx(AccordionPrimitive.Item, { ref, className: cn(className), ...props });
|
|
2262
2301
|
});
|
|
2263
2302
|
AccordionItem.displayName = AccordionPrimitive.Item.displayName;
|
|
2264
|
-
var AccordionTrigger =
|
|
2303
|
+
var AccordionTrigger = React37.forwardRef(function AccordionTrigger2({ children, className, ...props }, ref) {
|
|
2265
2304
|
return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
2266
2305
|
AccordionPrimitive.Trigger,
|
|
2267
2306
|
{
|
|
@@ -2290,7 +2329,7 @@ var AccordionTrigger = React36.forwardRef(function AccordionTrigger2({ children,
|
|
|
2290
2329
|
) });
|
|
2291
2330
|
});
|
|
2292
2331
|
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
|
2293
|
-
var AccordionContent =
|
|
2332
|
+
var AccordionContent = React37.forwardRef(function AccordionContent2({ children, className, ...props }, ref) {
|
|
2294
2333
|
return /* @__PURE__ */ jsx(
|
|
2295
2334
|
AccordionPrimitive.Content,
|
|
2296
2335
|
{
|
|
@@ -2310,7 +2349,7 @@ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
|
|
|
2310
2349
|
var AlertDialog = AlertDialogPrimitive.Root;
|
|
2311
2350
|
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
2312
2351
|
var AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
2313
|
-
var AlertDialogOverlay =
|
|
2352
|
+
var AlertDialogOverlay = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2314
2353
|
AlertDialogPrimitive.Overlay,
|
|
2315
2354
|
{
|
|
2316
2355
|
ref,
|
|
@@ -2325,7 +2364,7 @@ var AlertDialogOverlay = React36.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2325
2364
|
}
|
|
2326
2365
|
));
|
|
2327
2366
|
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
|
2328
|
-
var AlertDialogContent =
|
|
2367
|
+
var AlertDialogContent = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
|
|
2329
2368
|
/* @__PURE__ */ jsx(AlertDialogOverlay, {}),
|
|
2330
2369
|
/* @__PURE__ */ jsx(
|
|
2331
2370
|
AlertDialogPrimitive.Content,
|
|
@@ -2360,7 +2399,7 @@ var AlertDialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
2360
2399
|
}
|
|
2361
2400
|
);
|
|
2362
2401
|
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
2363
|
-
var AlertDialogTitle =
|
|
2402
|
+
var AlertDialogTitle = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2364
2403
|
AlertDialogPrimitive.Title,
|
|
2365
2404
|
{
|
|
2366
2405
|
ref,
|
|
@@ -2372,7 +2411,7 @@ var AlertDialogTitle = React36.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
2372
2411
|
}
|
|
2373
2412
|
));
|
|
2374
2413
|
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
|
2375
|
-
var AlertDialogDescription =
|
|
2414
|
+
var AlertDialogDescription = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2376
2415
|
AlertDialogPrimitive.Description,
|
|
2377
2416
|
{
|
|
2378
2417
|
ref,
|
|
@@ -2381,7 +2420,7 @@ var AlertDialogDescription = React36.forwardRef(({ className, ...props }, ref) =
|
|
|
2381
2420
|
}
|
|
2382
2421
|
));
|
|
2383
2422
|
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
|
2384
|
-
var AlertDialogAction =
|
|
2423
|
+
var AlertDialogAction = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2385
2424
|
AlertDialogPrimitive.Action,
|
|
2386
2425
|
{
|
|
2387
2426
|
ref,
|
|
@@ -2397,7 +2436,7 @@ var AlertDialogAction = React36.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2397
2436
|
}
|
|
2398
2437
|
));
|
|
2399
2438
|
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
|
2400
|
-
var AlertDialogCancel =
|
|
2439
|
+
var AlertDialogCancel = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2401
2440
|
AlertDialogPrimitive.Cancel,
|
|
2402
2441
|
{
|
|
2403
2442
|
ref,
|
|
@@ -2592,7 +2631,7 @@ var AreaChart = forwardRef(function AreaChart2({ data, height = 140, formatValue
|
|
|
2592
2631
|
] });
|
|
2593
2632
|
});
|
|
2594
2633
|
AreaChart.displayName = "AreaChart";
|
|
2595
|
-
var AspectRatio =
|
|
2634
|
+
var AspectRatio = React37.forwardRef(function AspectRatio2({ className, ratio = 16 / 9, ...props }, ref) {
|
|
2596
2635
|
return /* @__PURE__ */ jsx(
|
|
2597
2636
|
AspectRatioPrimitive.Root,
|
|
2598
2637
|
{
|
|
@@ -2604,6 +2643,292 @@ var AspectRatio = React36.forwardRef(function AspectRatio2({ className, ratio =
|
|
|
2604
2643
|
);
|
|
2605
2644
|
});
|
|
2606
2645
|
AspectRatio.displayName = AspectRatioPrimitive.Root.displayName;
|
|
2646
|
+
var spinnerVariants = cva(
|
|
2647
|
+
"inline-flex shrink-0 items-center justify-center [&_svg]:motion-reduce:animate-none",
|
|
2648
|
+
{
|
|
2649
|
+
variants: {
|
|
2650
|
+
size: {
|
|
2651
|
+
xs: "[&_svg]:size-3",
|
|
2652
|
+
sm: "[&_svg]:size-4",
|
|
2653
|
+
md: "[&_svg]:size-5",
|
|
2654
|
+
lg: "[&_svg]:size-6"
|
|
2655
|
+
},
|
|
2656
|
+
tone: {
|
|
2657
|
+
current: "text-current",
|
|
2658
|
+
muted: "text-fg-3",
|
|
2659
|
+
accent: "text-accent",
|
|
2660
|
+
success: "text-success-fg",
|
|
2661
|
+
warning: "text-warning-fg",
|
|
2662
|
+
destructive: "text-danger-fg"
|
|
2663
|
+
}
|
|
2664
|
+
},
|
|
2665
|
+
defaultVariants: {
|
|
2666
|
+
size: "md",
|
|
2667
|
+
tone: "current"
|
|
2668
|
+
}
|
|
2669
|
+
}
|
|
2670
|
+
);
|
|
2671
|
+
var Spinner = forwardRef(function Spinner2({ size, tone, label, className, ...props }, ref) {
|
|
2672
|
+
return /* @__PURE__ */ jsxs(
|
|
2673
|
+
"span",
|
|
2674
|
+
{
|
|
2675
|
+
ref,
|
|
2676
|
+
role: label ? "status" : void 0,
|
|
2677
|
+
"aria-live": label ? "polite" : void 0,
|
|
2678
|
+
className: cn(spinnerVariants({ size, tone }), className),
|
|
2679
|
+
...props,
|
|
2680
|
+
children: [
|
|
2681
|
+
/* @__PURE__ */ jsx(LoaderIcon, { className: "animate-spin", "aria-hidden": "true" }),
|
|
2682
|
+
label && /* @__PURE__ */ jsx("span", { className: "sr-only", children: label })
|
|
2683
|
+
]
|
|
2684
|
+
}
|
|
2685
|
+
);
|
|
2686
|
+
});
|
|
2687
|
+
Spinner.displayName = "Spinner";
|
|
2688
|
+
var buttonVariants = cva(
|
|
2689
|
+
cn(
|
|
2690
|
+
"inline-flex items-center justify-center rounded-btn font-medium whitespace-nowrap cursor-pointer",
|
|
2691
|
+
"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
2692
|
+
"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
2693
|
+
"disabled:pointer-events-none disabled:bg-bg-disabled disabled:text-fg-disabled",
|
|
2694
|
+
"motion-reduce:transition-none",
|
|
2695
|
+
"[&_svg]:size-4 [&_svg]:shrink-0"
|
|
2696
|
+
),
|
|
2697
|
+
{
|
|
2698
|
+
variants: {
|
|
2699
|
+
variant: {
|
|
2700
|
+
primary: "bg-pro-fg text-fg-on-pro hover:bg-pro-hover active:bg-pro-active",
|
|
2701
|
+
secondary: "bg-control-secondary-bg text-control-fg border border-control-border hover:bg-control-active-bg hover:border-control-border-strong",
|
|
2702
|
+
destructive: "bg-danger-fg text-fg-on-danger hover:bg-danger-fg-hover active:bg-danger-fg-active",
|
|
2703
|
+
success: "bg-success-fg text-fg-on-success hover:bg-success-fg-hover active:bg-success-fg-active",
|
|
2704
|
+
ghost: "bg-control-bg text-control-fg hover:bg-control-hover-bg hover:text-control-hover-fg",
|
|
2705
|
+
outline: "border border-control-border-strong bg-control-bg text-control-fg hover:bg-control-hover-bg hover:border-control-border-hover",
|
|
2706
|
+
link: "bg-transparent text-accent underline-offset-4 hover:underline p-0 h-auto",
|
|
2707
|
+
accent: "bg-accent text-fg-on-accent hover:bg-accent-hover active:bg-accent-active",
|
|
2708
|
+
dashed: "border-2 border-dashed border-control-border bg-control-bg text-control-muted-fg hover:border-control-border-hover hover:bg-control-hover-bg hover:text-control-hover-fg"
|
|
2709
|
+
},
|
|
2710
|
+
size: {
|
|
2711
|
+
sm: "h-8 px-3 text-[13px] gap-1.5",
|
|
2712
|
+
md: "h-10 px-4 text-sm gap-2",
|
|
2713
|
+
lg: "h-12 px-6 text-base gap-2",
|
|
2714
|
+
// Icon-only sizes. Hit target ≥ 24px (WCAG 2.5.5 floor).
|
|
2715
|
+
// `icon-xs` / `icon-sm` are for dense in-row action stacks where
|
|
2716
|
+
// `size="icon"` (40×40) would visually crowd the row.
|
|
2717
|
+
"icon-xs": "size-6 [&_svg]:size-3.5",
|
|
2718
|
+
"icon-sm": "size-7 [&_svg]:size-4",
|
|
2719
|
+
icon: "size-10"
|
|
2720
|
+
}
|
|
2721
|
+
},
|
|
2722
|
+
defaultVariants: {
|
|
2723
|
+
variant: "primary",
|
|
2724
|
+
size: "md"
|
|
2725
|
+
}
|
|
2726
|
+
}
|
|
2727
|
+
);
|
|
2728
|
+
var Button = forwardRef(function Button2({
|
|
2729
|
+
variant,
|
|
2730
|
+
size,
|
|
2731
|
+
asChild = false,
|
|
2732
|
+
loading,
|
|
2733
|
+
iconLeft,
|
|
2734
|
+
iconRight,
|
|
2735
|
+
disabled,
|
|
2736
|
+
children,
|
|
2737
|
+
className,
|
|
2738
|
+
...props
|
|
2739
|
+
}, ref) {
|
|
2740
|
+
const Comp = asChild ? Slot : "button";
|
|
2741
|
+
if (asChild) {
|
|
2742
|
+
return /* @__PURE__ */ jsx(Comp, { ref, className: cn(buttonVariants({ variant, size }), className), ...props, children });
|
|
2743
|
+
}
|
|
2744
|
+
return /* @__PURE__ */ jsxs(
|
|
2745
|
+
Comp,
|
|
2746
|
+
{
|
|
2747
|
+
ref,
|
|
2748
|
+
disabled: disabled || loading,
|
|
2749
|
+
className: cn(buttonVariants({ variant, size }), className),
|
|
2750
|
+
...props,
|
|
2751
|
+
children: [
|
|
2752
|
+
loading ? /* @__PURE__ */ jsx(Spinner, { size: "sm" }) : iconLeft && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0", "aria-hidden": "true", children: iconLeft }),
|
|
2753
|
+
children,
|
|
2754
|
+
iconRight && !loading && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0", "aria-hidden": "true", children: iconRight })
|
|
2755
|
+
]
|
|
2756
|
+
}
|
|
2757
|
+
);
|
|
2758
|
+
});
|
|
2759
|
+
Button.displayName = "Button";
|
|
2760
|
+
var fileTypeBadgeVariants = cva(
|
|
2761
|
+
cn(
|
|
2762
|
+
"inline-grid shrink-0 select-none place-items-center",
|
|
2763
|
+
"font-extrabold uppercase leading-none tracking-wide"
|
|
2764
|
+
),
|
|
2765
|
+
{
|
|
2766
|
+
variants: {
|
|
2767
|
+
size: {
|
|
2768
|
+
sm: "size-8 rounded-btn text-[9px]",
|
|
2769
|
+
md: "size-10 rounded-card text-[10px]"
|
|
2770
|
+
}
|
|
2771
|
+
},
|
|
2772
|
+
defaultVariants: {
|
|
2773
|
+
size: "md"
|
|
2774
|
+
}
|
|
2775
|
+
}
|
|
2776
|
+
);
|
|
2777
|
+
var toneStyles = {
|
|
2778
|
+
danger: "bg-danger-bg text-danger-fg",
|
|
2779
|
+
info: "bg-accent-tint text-accent",
|
|
2780
|
+
accent: "bg-accent-tint text-accent-2",
|
|
2781
|
+
success: "bg-success-bg text-success-fg",
|
|
2782
|
+
warning: "bg-warning-bg text-warning-fg",
|
|
2783
|
+
neutral: "bg-surface-3 text-fg-3"
|
|
2784
|
+
};
|
|
2785
|
+
var EXT_TO_TYPE = {
|
|
2786
|
+
pdf: "PDF",
|
|
2787
|
+
img: "IMG",
|
|
2788
|
+
image: "IMG",
|
|
2789
|
+
png: "IMG",
|
|
2790
|
+
jpg: "IMG",
|
|
2791
|
+
jpeg: "IMG",
|
|
2792
|
+
gif: "IMG",
|
|
2793
|
+
svg: "IMG",
|
|
2794
|
+
webp: "IMG",
|
|
2795
|
+
heic: "IMG",
|
|
2796
|
+
heif: "IMG",
|
|
2797
|
+
bmp: "IMG",
|
|
2798
|
+
tif: "IMG",
|
|
2799
|
+
tiff: "IMG",
|
|
2800
|
+
doc: "DOC",
|
|
2801
|
+
docx: "DOC",
|
|
2802
|
+
rtf: "DOC",
|
|
2803
|
+
txt: "DOC",
|
|
2804
|
+
odt: "DOC",
|
|
2805
|
+
pages: "DOC",
|
|
2806
|
+
xls: "XLS",
|
|
2807
|
+
xlsx: "XLS",
|
|
2808
|
+
ods: "XLS",
|
|
2809
|
+
numbers: "XLS",
|
|
2810
|
+
csv: "CSV",
|
|
2811
|
+
ppt: "PPT",
|
|
2812
|
+
pptx: "PPT",
|
|
2813
|
+
odp: "PPT",
|
|
2814
|
+
key: "PPT",
|
|
2815
|
+
zip: "ZIP",
|
|
2816
|
+
rar: "ZIP",
|
|
2817
|
+
"7z": "ZIP",
|
|
2818
|
+
tar: "ZIP",
|
|
2819
|
+
gz: "ZIP",
|
|
2820
|
+
gzip: "ZIP"
|
|
2821
|
+
};
|
|
2822
|
+
var TYPE_TO_TONE = {
|
|
2823
|
+
PDF: "danger",
|
|
2824
|
+
IMG: "info",
|
|
2825
|
+
DOC: "accent",
|
|
2826
|
+
XLS: "success",
|
|
2827
|
+
CSV: "success",
|
|
2828
|
+
PPT: "warning",
|
|
2829
|
+
ZIP: "neutral"
|
|
2830
|
+
};
|
|
2831
|
+
function normalizeFileType(input) {
|
|
2832
|
+
const key = input.trim().toLowerCase().replace(/^\.+/, "");
|
|
2833
|
+
if (!key) return "FILE";
|
|
2834
|
+
return EXT_TO_TYPE[key] ?? key.toUpperCase().slice(0, 3);
|
|
2835
|
+
}
|
|
2836
|
+
function fileTypeFromName(fileName) {
|
|
2837
|
+
const dot = fileName.lastIndexOf(".");
|
|
2838
|
+
const ext = dot >= 0 && dot < fileName.length - 1 ? fileName.slice(dot + 1) : "";
|
|
2839
|
+
return normalizeFileType(ext);
|
|
2840
|
+
}
|
|
2841
|
+
var FileTypeBadge = forwardRef(function FileTypeBadge2({ format: format2, type, fileName, tone = "auto", size, className, "aria-label": ariaLabel, ...props }, ref) {
|
|
2842
|
+
const raw = format2 ?? type ?? (fileName != null ? fileTypeFromName(fileName) : void 0) ?? "FILE";
|
|
2843
|
+
const code = normalizeFileType(raw);
|
|
2844
|
+
const resolvedTone = tone !== "auto" ? tone : TYPE_TO_TONE[code] ?? "neutral";
|
|
2845
|
+
return /* @__PURE__ */ jsx(
|
|
2846
|
+
"span",
|
|
2847
|
+
{
|
|
2848
|
+
ref,
|
|
2849
|
+
role: "img",
|
|
2850
|
+
"aria-label": ariaLabel ?? `${code} file`,
|
|
2851
|
+
className: cn(fileTypeBadgeVariants({ size }), toneStyles[resolvedTone], className),
|
|
2852
|
+
...props,
|
|
2853
|
+
children: code
|
|
2854
|
+
}
|
|
2855
|
+
);
|
|
2856
|
+
});
|
|
2857
|
+
FileTypeBadge.displayName = "FileTypeBadge";
|
|
2858
|
+
var attachmentChipVariants = cva(
|
|
2859
|
+
cn(
|
|
2860
|
+
"flex items-center gap-3 rounded-card border px-3 py-2.5 text-left",
|
|
2861
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none"
|
|
2862
|
+
),
|
|
2863
|
+
{
|
|
2864
|
+
variants: {
|
|
2865
|
+
variant: {
|
|
2866
|
+
default: "border-rule bg-surface hover:bg-bg-2",
|
|
2867
|
+
onAccent: "border-white/25 bg-white/15 hover:bg-white/25"
|
|
2868
|
+
}
|
|
2869
|
+
},
|
|
2870
|
+
defaultVariants: {
|
|
2871
|
+
variant: "default"
|
|
2872
|
+
}
|
|
2873
|
+
}
|
|
2874
|
+
);
|
|
2875
|
+
function deriveFileType(name) {
|
|
2876
|
+
const dot = name.lastIndexOf(".");
|
|
2877
|
+
if (dot === -1 || dot === name.length - 1) return "FILE";
|
|
2878
|
+
return name.slice(dot + 1).toUpperCase();
|
|
2879
|
+
}
|
|
2880
|
+
var AttachmentChip = forwardRef(
|
|
2881
|
+
function AttachmentChip2({ name, fileType, meta, onView, onDownload, href, variant, className, ...props }, ref) {
|
|
2882
|
+
const resolvedType = fileType ?? deriveFileType(name);
|
|
2883
|
+
const onAccent = variant === "onAccent";
|
|
2884
|
+
const actionClassName = onAccent ? "text-fg-on-pro hover:bg-white/20 hover:text-fg-on-pro" : void 0;
|
|
2885
|
+
const showView = Boolean(onView) || Boolean(href);
|
|
2886
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: cn(attachmentChipVariants({ variant }), className), ...props, children: [
|
|
2887
|
+
/* @__PURE__ */ jsx(FileTypeBadge, { format: resolvedType, size: "md", className: "shrink-0" }),
|
|
2888
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
2889
|
+
/* @__PURE__ */ jsx("p", { className: cn("truncate text-sm font-medium", onAccent ? "text-fg-on-pro" : "text-fg"), children: name }),
|
|
2890
|
+
meta && /* @__PURE__ */ jsx("p", { className: cn("truncate text-xs", onAccent ? "text-fg-on-pro/75" : "text-fg-3"), children: meta })
|
|
2891
|
+
] }),
|
|
2892
|
+
(showView || onDownload) && /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-0.5", children: [
|
|
2893
|
+
showView && (onView ? /* @__PURE__ */ jsx(
|
|
2894
|
+
Button,
|
|
2895
|
+
{
|
|
2896
|
+
type: "button",
|
|
2897
|
+
variant: "ghost",
|
|
2898
|
+
size: "icon-sm",
|
|
2899
|
+
"aria-label": `View ${name}`,
|
|
2900
|
+
onClick: onView,
|
|
2901
|
+
className: actionClassName,
|
|
2902
|
+
children: /* @__PURE__ */ jsx(EyeIcon, { size: 16 })
|
|
2903
|
+
}
|
|
2904
|
+
) : /* @__PURE__ */ jsx(
|
|
2905
|
+
Button,
|
|
2906
|
+
{
|
|
2907
|
+
asChild: true,
|
|
2908
|
+
variant: "ghost",
|
|
2909
|
+
size: "icon-sm",
|
|
2910
|
+
"aria-label": `View ${name}`,
|
|
2911
|
+
className: actionClassName,
|
|
2912
|
+
children: /* @__PURE__ */ jsx("a", { href, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ jsx(EyeIcon, { size: 16 }) })
|
|
2913
|
+
}
|
|
2914
|
+
)),
|
|
2915
|
+
onDownload && /* @__PURE__ */ jsx(
|
|
2916
|
+
Button,
|
|
2917
|
+
{
|
|
2918
|
+
type: "button",
|
|
2919
|
+
variant: "ghost",
|
|
2920
|
+
size: "icon-sm",
|
|
2921
|
+
"aria-label": `Download ${name}`,
|
|
2922
|
+
onClick: onDownload,
|
|
2923
|
+
className: actionClassName,
|
|
2924
|
+
children: /* @__PURE__ */ jsx(DownloadIcon, { size: 16 })
|
|
2925
|
+
}
|
|
2926
|
+
)
|
|
2927
|
+
] })
|
|
2928
|
+
] });
|
|
2929
|
+
}
|
|
2930
|
+
);
|
|
2931
|
+
AttachmentChip.displayName = "AttachmentChip";
|
|
2607
2932
|
var avatarVariants = cva(
|
|
2608
2933
|
cn(
|
|
2609
2934
|
"relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full",
|
|
@@ -2645,7 +2970,7 @@ var statusDotSizes = {
|
|
|
2645
2970
|
function getInitials(name) {
|
|
2646
2971
|
return name.split(" ").map((part) => part[0]).filter(Boolean).slice(0, 2).join("").toUpperCase();
|
|
2647
2972
|
}
|
|
2648
|
-
var Avatar =
|
|
2973
|
+
var Avatar = React37.forwardRef(
|
|
2649
2974
|
function Avatar2({ src, alt, name, size = "md", variant = "initials", status, className, ...props }, ref) {
|
|
2650
2975
|
const initials = name ? getInitials(name) : "?";
|
|
2651
2976
|
const resolvedSize = size ?? "md";
|
|
@@ -2869,142 +3194,28 @@ var BreadcrumbSeparator = forwardRef(
|
|
|
2869
3194
|
}
|
|
2870
3195
|
);
|
|
2871
3196
|
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
2872
|
-
var
|
|
2873
|
-
"
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
}
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
}
|
|
2895
|
-
}
|
|
2896
|
-
);
|
|
2897
|
-
var Spinner = forwardRef(function Spinner2({ size, tone, label, className, ...props }, ref) {
|
|
2898
|
-
return /* @__PURE__ */ jsxs(
|
|
2899
|
-
"span",
|
|
2900
|
-
{
|
|
2901
|
-
ref,
|
|
2902
|
-
role: label ? "status" : void 0,
|
|
2903
|
-
"aria-live": label ? "polite" : void 0,
|
|
2904
|
-
className: cn(spinnerVariants({ size, tone }), className),
|
|
2905
|
-
...props,
|
|
2906
|
-
children: [
|
|
2907
|
-
/* @__PURE__ */ jsx(LoaderIcon, { className: "animate-spin", "aria-hidden": "true" }),
|
|
2908
|
-
label && /* @__PURE__ */ jsx("span", { className: "sr-only", children: label })
|
|
2909
|
-
]
|
|
2910
|
-
}
|
|
2911
|
-
);
|
|
2912
|
-
});
|
|
2913
|
-
Spinner.displayName = "Spinner";
|
|
2914
|
-
var buttonVariants = cva(
|
|
2915
|
-
cn(
|
|
2916
|
-
"inline-flex items-center justify-center rounded-btn font-medium whitespace-nowrap cursor-pointer",
|
|
2917
|
-
"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
2918
|
-
"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
2919
|
-
"disabled:pointer-events-none disabled:bg-bg-disabled disabled:text-fg-disabled",
|
|
2920
|
-
"motion-reduce:transition-none",
|
|
2921
|
-
"[&_svg]:size-4 [&_svg]:shrink-0"
|
|
2922
|
-
),
|
|
2923
|
-
{
|
|
2924
|
-
variants: {
|
|
2925
|
-
variant: {
|
|
2926
|
-
primary: "bg-pro-fg text-fg-on-pro hover:bg-pro-hover active:bg-pro-active",
|
|
2927
|
-
secondary: "bg-control-secondary-bg text-control-fg border border-control-border hover:bg-control-active-bg hover:border-control-border-strong",
|
|
2928
|
-
destructive: "bg-danger-fg text-fg-on-danger hover:bg-danger-fg-hover active:bg-danger-fg-active",
|
|
2929
|
-
success: "bg-success-fg text-fg-on-success hover:bg-success-fg-hover active:bg-success-fg-active",
|
|
2930
|
-
ghost: "bg-control-bg text-control-fg hover:bg-control-hover-bg hover:text-control-hover-fg",
|
|
2931
|
-
outline: "border border-control-border-strong bg-control-bg text-control-fg hover:bg-control-hover-bg hover:border-control-border-hover",
|
|
2932
|
-
link: "bg-transparent text-accent underline-offset-4 hover:underline p-0 h-auto",
|
|
2933
|
-
accent: "bg-accent text-fg-on-accent hover:bg-accent-hover active:bg-accent-active",
|
|
2934
|
-
dashed: "border-2 border-dashed border-control-border bg-control-bg text-control-muted-fg hover:border-control-border-hover hover:bg-control-hover-bg hover:text-control-hover-fg"
|
|
2935
|
-
},
|
|
2936
|
-
size: {
|
|
2937
|
-
sm: "h-8 px-3 text-[13px] gap-1.5",
|
|
2938
|
-
md: "h-10 px-4 text-sm gap-2",
|
|
2939
|
-
lg: "h-12 px-6 text-base gap-2",
|
|
2940
|
-
// Icon-only sizes. Hit target ≥ 24px (WCAG 2.5.5 floor).
|
|
2941
|
-
// `icon-xs` / `icon-sm` are for dense in-row action stacks where
|
|
2942
|
-
// `size="icon"` (40×40) would visually crowd the row.
|
|
2943
|
-
"icon-xs": "size-6 [&_svg]:size-3.5",
|
|
2944
|
-
"icon-sm": "size-7 [&_svg]:size-4",
|
|
2945
|
-
icon: "size-10"
|
|
2946
|
-
}
|
|
2947
|
-
},
|
|
2948
|
-
defaultVariants: {
|
|
2949
|
-
variant: "primary",
|
|
2950
|
-
size: "md"
|
|
2951
|
-
}
|
|
2952
|
-
}
|
|
2953
|
-
);
|
|
2954
|
-
var Button = forwardRef(function Button2({
|
|
2955
|
-
variant,
|
|
2956
|
-
size,
|
|
2957
|
-
asChild = false,
|
|
2958
|
-
loading,
|
|
2959
|
-
iconLeft,
|
|
2960
|
-
iconRight,
|
|
2961
|
-
disabled,
|
|
2962
|
-
children,
|
|
2963
|
-
className,
|
|
2964
|
-
...props
|
|
2965
|
-
}, ref) {
|
|
2966
|
-
const Comp = asChild ? Slot : "button";
|
|
2967
|
-
if (asChild) {
|
|
2968
|
-
return /* @__PURE__ */ jsx(Comp, { ref, className: cn(buttonVariants({ variant, size }), className), ...props, children });
|
|
2969
|
-
}
|
|
2970
|
-
return /* @__PURE__ */ jsxs(
|
|
2971
|
-
Comp,
|
|
2972
|
-
{
|
|
2973
|
-
ref,
|
|
2974
|
-
disabled: disabled || loading,
|
|
2975
|
-
className: cn(buttonVariants({ variant, size }), className),
|
|
2976
|
-
...props,
|
|
2977
|
-
children: [
|
|
2978
|
-
loading ? /* @__PURE__ */ jsx(Spinner, { size: "sm" }) : iconLeft && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0", "aria-hidden": "true", children: iconLeft }),
|
|
2979
|
-
children,
|
|
2980
|
-
iconRight && !loading && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0", "aria-hidden": "true", children: iconRight })
|
|
2981
|
-
]
|
|
2982
|
-
}
|
|
2983
|
-
);
|
|
2984
|
-
});
|
|
2985
|
-
Button.displayName = "Button";
|
|
2986
|
-
var HIGHLIGHT_COLORS = {
|
|
2987
|
-
primary: "after:bg-pro-fg",
|
|
2988
|
-
success: "after:bg-success-fg",
|
|
2989
|
-
warning: "after:bg-warning-fg",
|
|
2990
|
-
destructive: "after:bg-danger-fg"
|
|
2991
|
-
};
|
|
2992
|
-
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";
|
|
2993
|
-
function Calendar({
|
|
2994
|
-
selected,
|
|
2995
|
-
onSelect,
|
|
2996
|
-
highlights = [],
|
|
2997
|
-
minDate,
|
|
2998
|
-
maxDate,
|
|
2999
|
-
className,
|
|
3000
|
-
classNames,
|
|
3001
|
-
...props
|
|
3002
|
-
}) {
|
|
3003
|
-
const { modifiers, modifiersClassNames } = React36.useMemo(() => {
|
|
3004
|
-
const buckets = {};
|
|
3005
|
-
for (const h of highlights) {
|
|
3006
|
-
const key = h.color ?? "primary";
|
|
3007
|
-
(buckets[key] ??= []).push(h.date);
|
|
3197
|
+
var HIGHLIGHT_COLORS = {
|
|
3198
|
+
primary: "after:bg-pro-fg",
|
|
3199
|
+
success: "after:bg-success-fg",
|
|
3200
|
+
warning: "after:bg-warning-fg",
|
|
3201
|
+
destructive: "after:bg-danger-fg"
|
|
3202
|
+
};
|
|
3203
|
+
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";
|
|
3204
|
+
function Calendar({
|
|
3205
|
+
selected,
|
|
3206
|
+
onSelect,
|
|
3207
|
+
highlights = [],
|
|
3208
|
+
minDate,
|
|
3209
|
+
maxDate,
|
|
3210
|
+
className,
|
|
3211
|
+
classNames,
|
|
3212
|
+
...props
|
|
3213
|
+
}) {
|
|
3214
|
+
const { modifiers, modifiersClassNames } = React37.useMemo(() => {
|
|
3215
|
+
const buckets = {};
|
|
3216
|
+
for (const h of highlights) {
|
|
3217
|
+
const key = h.color ?? "primary";
|
|
3218
|
+
(buckets[key] ??= []).push(h.date);
|
|
3008
3219
|
}
|
|
3009
3220
|
const mods = {};
|
|
3010
3221
|
const modClasses = {};
|
|
@@ -3015,7 +3226,7 @@ function Calendar({
|
|
|
3015
3226
|
}
|
|
3016
3227
|
return { modifiers: mods, modifiersClassNames: modClasses };
|
|
3017
3228
|
}, [highlights]);
|
|
3018
|
-
const disabledMatcher =
|
|
3229
|
+
const disabledMatcher = React37.useMemo(() => {
|
|
3019
3230
|
if (!minDate && !maxDate) return void 0;
|
|
3020
3231
|
if (minDate && maxDate) return [{ before: minDate }, { after: maxDate }];
|
|
3021
3232
|
if (minDate) return { before: minDate };
|
|
@@ -3147,7 +3358,42 @@ var CardAction = forwardRef(
|
|
|
3147
3358
|
}
|
|
3148
3359
|
);
|
|
3149
3360
|
CardAction.displayName = "CardAction";
|
|
3150
|
-
var
|
|
3361
|
+
var categoryTagVariants = cva(
|
|
3362
|
+
cn(
|
|
3363
|
+
"inline-flex shrink-0 items-center gap-1.5 rounded-full px-2.5 py-1",
|
|
3364
|
+
"text-xs font-bold tracking-tight"
|
|
3365
|
+
),
|
|
3366
|
+
{
|
|
3367
|
+
variants: {
|
|
3368
|
+
tone: {
|
|
3369
|
+
brand: "text-brand-pro bg-[color-mix(in_srgb,var(--color-brand-pro)_12%,transparent)]",
|
|
3370
|
+
audit: "text-brand-audit bg-[color-mix(in_srgb,var(--color-brand-audit)_12%,transparent)]",
|
|
3371
|
+
books: "text-brand-books bg-[color-mix(in_srgb,var(--color-brand-books)_12%,transparent)]",
|
|
3372
|
+
tax: "text-brand-tax bg-[color-mix(in_srgb,var(--color-brand-tax)_12%,transparent)]",
|
|
3373
|
+
neutral: "text-fg-3 bg-[color-mix(in_srgb,var(--color-fg-3)_12%,transparent)]"
|
|
3374
|
+
}
|
|
3375
|
+
},
|
|
3376
|
+
defaultVariants: { tone: "neutral" }
|
|
3377
|
+
}
|
|
3378
|
+
);
|
|
3379
|
+
var CategoryTag = forwardRef(function CategoryTag2({ label, icon, tone, className, ...props }, ref) {
|
|
3380
|
+
return /* @__PURE__ */ jsxs("span", { ref, className: cn(categoryTagVariants({ tone }), className), ...props, children: [
|
|
3381
|
+
icon && /* @__PURE__ */ jsx("span", { className: "inline-flex size-3.5 shrink-0", "aria-hidden": "true", children: icon }),
|
|
3382
|
+
label
|
|
3383
|
+
] });
|
|
3384
|
+
});
|
|
3385
|
+
CategoryTag.displayName = "CategoryTag";
|
|
3386
|
+
var CategoryDivider = forwardRef(
|
|
3387
|
+
function CategoryDivider2({ label, icon, tone, count, className, ...props }, ref) {
|
|
3388
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex items-center gap-3", className), ...props, children: [
|
|
3389
|
+
/* @__PURE__ */ jsx(CategoryTag, { label, icon, tone }),
|
|
3390
|
+
/* @__PURE__ */ jsx("span", { className: "bg-rule h-px flex-1", "aria-hidden": "true" }),
|
|
3391
|
+
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 })
|
|
3392
|
+
] });
|
|
3393
|
+
}
|
|
3394
|
+
);
|
|
3395
|
+
CategoryDivider.displayName = "CategoryDivider";
|
|
3396
|
+
var Checkbox = React37.forwardRef(function Checkbox2({
|
|
3151
3397
|
label,
|
|
3152
3398
|
indeterminate,
|
|
3153
3399
|
checked,
|
|
@@ -3157,7 +3403,7 @@ var Checkbox = React36.forwardRef(function Checkbox2({
|
|
|
3157
3403
|
id: providedId,
|
|
3158
3404
|
...props
|
|
3159
3405
|
}, ref) {
|
|
3160
|
-
const generatedId =
|
|
3406
|
+
const generatedId = React37.useId();
|
|
3161
3407
|
const id = providedId ?? generatedId;
|
|
3162
3408
|
const resolvedChecked = indeterminate ? "indeterminate" : checked;
|
|
3163
3409
|
return /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2", children: [
|
|
@@ -3198,7 +3444,7 @@ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
|
3198
3444
|
var SelectRoot = SelectPrimitive.Root;
|
|
3199
3445
|
var SelectGroup = SelectPrimitive.Group;
|
|
3200
3446
|
var SelectValue = SelectPrimitive.Value;
|
|
3201
|
-
var SelectTrigger =
|
|
3447
|
+
var SelectTrigger = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3202
3448
|
SelectPrimitive.Trigger,
|
|
3203
3449
|
{
|
|
3204
3450
|
ref,
|
|
@@ -3229,7 +3475,7 @@ var SelectTrigger = React36.forwardRef(({ className, children, ...props }, ref)
|
|
|
3229
3475
|
}
|
|
3230
3476
|
));
|
|
3231
3477
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
3232
|
-
var SelectScrollUpButton =
|
|
3478
|
+
var SelectScrollUpButton = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3233
3479
|
SelectPrimitive.ScrollUpButton,
|
|
3234
3480
|
{
|
|
3235
3481
|
ref,
|
|
@@ -3239,7 +3485,7 @@ var SelectScrollUpButton = React36.forwardRef(({ className, ...props }, ref) =>
|
|
|
3239
3485
|
}
|
|
3240
3486
|
));
|
|
3241
3487
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
3242
|
-
var SelectScrollDownButton =
|
|
3488
|
+
var SelectScrollDownButton = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3243
3489
|
SelectPrimitive.ScrollDownButton,
|
|
3244
3490
|
{
|
|
3245
3491
|
ref,
|
|
@@ -3249,7 +3495,7 @@ var SelectScrollDownButton = React36.forwardRef(({ className, ...props }, ref) =
|
|
|
3249
3495
|
}
|
|
3250
3496
|
));
|
|
3251
3497
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
3252
|
-
var SelectContent =
|
|
3498
|
+
var SelectContent = React37.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
|
|
3253
3499
|
SelectPrimitive.Content,
|
|
3254
3500
|
{
|
|
3255
3501
|
ref,
|
|
@@ -3283,7 +3529,7 @@ var SelectContent = React36.forwardRef(({ className, children, position = "poppe
|
|
|
3283
3529
|
}
|
|
3284
3530
|
) }));
|
|
3285
3531
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
3286
|
-
var SelectLabel =
|
|
3532
|
+
var SelectLabel = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3287
3533
|
SelectPrimitive.Label,
|
|
3288
3534
|
{
|
|
3289
3535
|
ref,
|
|
@@ -3295,7 +3541,7 @@ var SelectLabel = React36.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
3295
3541
|
}
|
|
3296
3542
|
));
|
|
3297
3543
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
3298
|
-
var SelectItem =
|
|
3544
|
+
var SelectItem = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3299
3545
|
SelectPrimitive.Item,
|
|
3300
3546
|
{
|
|
3301
3547
|
ref,
|
|
@@ -3316,7 +3562,7 @@ var SelectItem = React36.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
3316
3562
|
}
|
|
3317
3563
|
));
|
|
3318
3564
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
3319
|
-
var SelectSeparator =
|
|
3565
|
+
var SelectSeparator = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3320
3566
|
SelectPrimitive.Separator,
|
|
3321
3567
|
{
|
|
3322
3568
|
ref,
|
|
@@ -3401,11 +3647,11 @@ function ClientSelect({
|
|
|
3401
3647
|
] });
|
|
3402
3648
|
}
|
|
3403
3649
|
ClientSelect.displayName = "ClientSelect";
|
|
3404
|
-
var Collapsible =
|
|
3650
|
+
var Collapsible = React37.forwardRef(function Collapsible2({ className, ...props }, ref) {
|
|
3405
3651
|
return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, { ref, className: cn(className), ...props });
|
|
3406
3652
|
});
|
|
3407
3653
|
Collapsible.displayName = CollapsiblePrimitive.Root.displayName;
|
|
3408
|
-
var CollapsibleTrigger =
|
|
3654
|
+
var CollapsibleTrigger = React37.forwardRef(function CollapsibleTrigger2({ className, ...props }, ref) {
|
|
3409
3655
|
return /* @__PURE__ */ jsx(
|
|
3410
3656
|
CollapsiblePrimitive.Trigger,
|
|
3411
3657
|
{
|
|
@@ -3420,7 +3666,7 @@ var CollapsibleTrigger = React36.forwardRef(function CollapsibleTrigger2({ class
|
|
|
3420
3666
|
);
|
|
3421
3667
|
});
|
|
3422
3668
|
CollapsibleTrigger.displayName = CollapsiblePrimitive.Trigger.displayName;
|
|
3423
|
-
var CollapsibleContent =
|
|
3669
|
+
var CollapsibleContent = React37.forwardRef(function CollapsibleContent2({ className, ...props }, ref) {
|
|
3424
3670
|
return /* @__PURE__ */ jsx(
|
|
3425
3671
|
CollapsiblePrimitive.Content,
|
|
3426
3672
|
{
|
|
@@ -3497,7 +3743,7 @@ ComingSoon.displayName = "ComingSoon";
|
|
|
3497
3743
|
var Dialog = DialogPrimitive.Root;
|
|
3498
3744
|
var DialogTrigger = DialogPrimitive.Trigger;
|
|
3499
3745
|
var DialogPortal = DialogPrimitive.Portal;
|
|
3500
|
-
var DialogOverlay =
|
|
3746
|
+
var DialogOverlay = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3501
3747
|
DialogPrimitive.Overlay,
|
|
3502
3748
|
{
|
|
3503
3749
|
ref,
|
|
@@ -3518,7 +3764,7 @@ var dialogSizeStyles = {
|
|
|
3518
3764
|
lg: "max-w-2xl",
|
|
3519
3765
|
full: "max-w-[calc(100vw-2rem)]"
|
|
3520
3766
|
};
|
|
3521
|
-
var DialogContent =
|
|
3767
|
+
var DialogContent = React37.forwardRef(({ size = "md", showCloseButton = true, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
3522
3768
|
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
3523
3769
|
/* @__PURE__ */ jsxs(
|
|
3524
3770
|
DialogPrimitive.Content,
|
|
@@ -3559,7 +3805,7 @@ var DialogContent = React36.forwardRef(({ size = "md", showCloseButton = true, c
|
|
|
3559
3805
|
)
|
|
3560
3806
|
] }));
|
|
3561
3807
|
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
3562
|
-
var DialogClose =
|
|
3808
|
+
var DialogClose = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Close, { ref, className: cn(className), ...props }));
|
|
3563
3809
|
DialogClose.displayName = "DialogClose";
|
|
3564
3810
|
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("mb-4 flex flex-col gap-1.5 pr-8", className), ...props });
|
|
3565
3811
|
DialogHeader.displayName = "DialogHeader";
|
|
@@ -3574,7 +3820,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
3574
3820
|
}
|
|
3575
3821
|
);
|
|
3576
3822
|
DialogFooter.displayName = "DialogFooter";
|
|
3577
|
-
var DialogTitle =
|
|
3823
|
+
var DialogTitle = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3578
3824
|
DialogPrimitive.Title,
|
|
3579
3825
|
{
|
|
3580
3826
|
ref,
|
|
@@ -3586,7 +3832,7 @@ var DialogTitle = React36.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
3586
3832
|
}
|
|
3587
3833
|
));
|
|
3588
3834
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
3589
|
-
var DialogDescription =
|
|
3835
|
+
var DialogDescription = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3590
3836
|
DialogPrimitive.Description,
|
|
3591
3837
|
{
|
|
3592
3838
|
ref,
|
|
@@ -3616,17 +3862,17 @@ function CommandPalette({
|
|
|
3616
3862
|
onOpenChange,
|
|
3617
3863
|
placeholder = "Type a command or search..."
|
|
3618
3864
|
}) {
|
|
3619
|
-
const [internalOpen, setInternalOpen] =
|
|
3865
|
+
const [internalOpen, setInternalOpen] = React37.useState(false);
|
|
3620
3866
|
const isControlled = controlledOpen !== void 0;
|
|
3621
3867
|
const open = isControlled ? controlledOpen : internalOpen;
|
|
3622
|
-
const setOpen =
|
|
3868
|
+
const setOpen = React37.useCallback(
|
|
3623
3869
|
(value) => {
|
|
3624
3870
|
if (!isControlled) setInternalOpen(value);
|
|
3625
3871
|
onOpenChange?.(value);
|
|
3626
3872
|
},
|
|
3627
3873
|
[isControlled, onOpenChange]
|
|
3628
3874
|
);
|
|
3629
|
-
|
|
3875
|
+
React37.useEffect(() => {
|
|
3630
3876
|
function handleKeyDown(e) {
|
|
3631
3877
|
if ((e.metaKey || e.ctrlKey) && e.key === "k") {
|
|
3632
3878
|
e.preventDefault();
|
|
@@ -3781,10 +4027,10 @@ function ConfirmActionButton({
|
|
|
3781
4027
|
onOpenChange
|
|
3782
4028
|
}) {
|
|
3783
4029
|
const isControlled = open !== void 0;
|
|
3784
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
4030
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React37.useState(defaultOpen);
|
|
3785
4031
|
const resolvedOpen = isControlled ? open : uncontrolledOpen;
|
|
3786
|
-
const [pending, setPending] =
|
|
3787
|
-
const setDialogOpen =
|
|
4032
|
+
const [pending, setPending] = React37.useState(false);
|
|
4033
|
+
const setDialogOpen = React37.useCallback(
|
|
3788
4034
|
(nextOpen) => {
|
|
3789
4035
|
onOpenChange?.(nextOpen);
|
|
3790
4036
|
if (!isControlled) {
|
|
@@ -3843,7 +4089,7 @@ var ContextMenuGroup = ContextMenuPrimitive.Group;
|
|
|
3843
4089
|
var ContextMenuPortal = ContextMenuPrimitive.Portal;
|
|
3844
4090
|
var ContextMenuSub = ContextMenuPrimitive.Sub;
|
|
3845
4091
|
var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
|
|
3846
|
-
var ContextMenuSubTrigger =
|
|
4092
|
+
var ContextMenuSubTrigger = React37.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3847
4093
|
ContextMenuPrimitive.SubTrigger,
|
|
3848
4094
|
{
|
|
3849
4095
|
ref,
|
|
@@ -3864,7 +4110,7 @@ var ContextMenuSubTrigger = React36.forwardRef(({ className, inset, children, ..
|
|
|
3864
4110
|
}
|
|
3865
4111
|
));
|
|
3866
4112
|
ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
|
|
3867
|
-
var ContextMenuSubContent =
|
|
4113
|
+
var ContextMenuSubContent = React37.forwardRef(({ className, ...props }, ref) => (
|
|
3868
4114
|
// Portal the sub-content to the body. The parent Content keeps a persistent
|
|
3869
4115
|
// `scale-100` transform (its open-state animation), which makes it the
|
|
3870
4116
|
// containing block for `position: fixed` descendants — and its
|
|
@@ -3887,7 +4133,7 @@ var ContextMenuSubContent = React36.forwardRef(({ className, ...props }, ref) =>
|
|
|
3887
4133
|
) })
|
|
3888
4134
|
));
|
|
3889
4135
|
ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
|
|
3890
|
-
var ContextMenuContent =
|
|
4136
|
+
var ContextMenuContent = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
3891
4137
|
ContextMenuPrimitive.Content,
|
|
3892
4138
|
{
|
|
3893
4139
|
ref,
|
|
@@ -3903,7 +4149,7 @@ var ContextMenuContent = React36.forwardRef(({ className, ...props }, ref) => /*
|
|
|
3903
4149
|
}
|
|
3904
4150
|
) }));
|
|
3905
4151
|
ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
|
|
3906
|
-
var ContextMenuItem =
|
|
4152
|
+
var ContextMenuItem = React37.forwardRef(({ className, destructive, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3907
4153
|
ContextMenuPrimitive.Item,
|
|
3908
4154
|
{
|
|
3909
4155
|
ref,
|
|
@@ -3921,7 +4167,7 @@ var ContextMenuItem = React36.forwardRef(({ className, destructive, inset, ...pr
|
|
|
3921
4167
|
}
|
|
3922
4168
|
));
|
|
3923
4169
|
ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
|
|
3924
|
-
var ContextMenuCheckboxItem =
|
|
4170
|
+
var ContextMenuCheckboxItem = React37.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3925
4171
|
ContextMenuPrimitive.CheckboxItem,
|
|
3926
4172
|
{
|
|
3927
4173
|
ref,
|
|
@@ -3941,7 +4187,7 @@ var ContextMenuCheckboxItem = React36.forwardRef(({ className, children, checked
|
|
|
3941
4187
|
}
|
|
3942
4188
|
));
|
|
3943
4189
|
ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
|
|
3944
|
-
var ContextMenuRadioItem =
|
|
4190
|
+
var ContextMenuRadioItem = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3945
4191
|
ContextMenuPrimitive.RadioItem,
|
|
3946
4192
|
{
|
|
3947
4193
|
ref,
|
|
@@ -3960,7 +4206,7 @@ var ContextMenuRadioItem = React36.forwardRef(({ className, children, ...props }
|
|
|
3960
4206
|
}
|
|
3961
4207
|
));
|
|
3962
4208
|
ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
|
|
3963
|
-
var ContextMenuLabel =
|
|
4209
|
+
var ContextMenuLabel = React37.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3964
4210
|
ContextMenuPrimitive.Label,
|
|
3965
4211
|
{
|
|
3966
4212
|
ref,
|
|
@@ -3973,7 +4219,7 @@ var ContextMenuLabel = React36.forwardRef(({ className, inset, ...props }, ref)
|
|
|
3973
4219
|
}
|
|
3974
4220
|
));
|
|
3975
4221
|
ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
|
|
3976
|
-
var ContextMenuSeparator =
|
|
4222
|
+
var ContextMenuSeparator = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3977
4223
|
ContextMenuPrimitive.Separator,
|
|
3978
4224
|
{
|
|
3979
4225
|
ref,
|
|
@@ -4068,7 +4314,7 @@ var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
|
4068
4314
|
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
4069
4315
|
var PopoverPortal = PopoverPrimitive.Portal;
|
|
4070
4316
|
var PopoverClose = PopoverPrimitive.Close;
|
|
4071
|
-
var PopoverContent =
|
|
4317
|
+
var PopoverContent = React37.forwardRef(({ className, align = "center", side = "bottom", sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
4072
4318
|
PopoverPrimitive.Content,
|
|
4073
4319
|
{
|
|
4074
4320
|
ref,
|
|
@@ -4613,7 +4859,7 @@ var chipVariants = cva(
|
|
|
4613
4859
|
}
|
|
4614
4860
|
}
|
|
4615
4861
|
);
|
|
4616
|
-
var DismissibleChip =
|
|
4862
|
+
var DismissibleChip = React37.forwardRef(function DismissibleChip2({ label, onDismiss, variant, className, ...props }, ref) {
|
|
4617
4863
|
return /* @__PURE__ */ jsxs(
|
|
4618
4864
|
"button",
|
|
4619
4865
|
{
|
|
@@ -4753,7 +4999,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
|
4753
4999
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
4754
5000
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
4755
5001
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
4756
|
-
var DropdownMenuSubTrigger =
|
|
5002
|
+
var DropdownMenuSubTrigger = React37.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4757
5003
|
DropdownMenuPrimitive.SubTrigger,
|
|
4758
5004
|
{
|
|
4759
5005
|
ref,
|
|
@@ -4774,7 +5020,7 @@ var DropdownMenuSubTrigger = React36.forwardRef(({ className, inset, children, .
|
|
|
4774
5020
|
}
|
|
4775
5021
|
));
|
|
4776
5022
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
4777
|
-
var DropdownMenuSubContent =
|
|
5023
|
+
var DropdownMenuSubContent = React37.forwardRef(({ className, ...props }, ref) => (
|
|
4778
5024
|
// Portal the sub-content to the body. The parent Content keeps a persistent
|
|
4779
5025
|
// `scale-100` transform (its open-state animation), which makes it the
|
|
4780
5026
|
// containing block for `position: fixed` descendants — and its
|
|
@@ -4797,7 +5043,7 @@ var DropdownMenuSubContent = React36.forwardRef(({ className, ...props }, ref) =
|
|
|
4797
5043
|
) })
|
|
4798
5044
|
));
|
|
4799
5045
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
4800
|
-
var DropdownMenuContent =
|
|
5046
|
+
var DropdownMenuContent = React37.forwardRef(({ className, sideOffset = 6, align = "start", ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
4801
5047
|
DropdownMenuPrimitive.Content,
|
|
4802
5048
|
{
|
|
4803
5049
|
ref,
|
|
@@ -4815,7 +5061,7 @@ var DropdownMenuContent = React36.forwardRef(({ className, sideOffset = 6, align
|
|
|
4815
5061
|
}
|
|
4816
5062
|
) }));
|
|
4817
5063
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
4818
|
-
var DropdownMenuItem =
|
|
5064
|
+
var DropdownMenuItem = React37.forwardRef(({ className, destructive, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4819
5065
|
DropdownMenuPrimitive.Item,
|
|
4820
5066
|
{
|
|
4821
5067
|
ref,
|
|
@@ -4833,7 +5079,7 @@ var DropdownMenuItem = React36.forwardRef(({ className, destructive, inset, ...p
|
|
|
4833
5079
|
}
|
|
4834
5080
|
));
|
|
4835
5081
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
4836
|
-
var DropdownMenuCheckboxItem =
|
|
5082
|
+
var DropdownMenuCheckboxItem = React37.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4837
5083
|
DropdownMenuPrimitive.CheckboxItem,
|
|
4838
5084
|
{
|
|
4839
5085
|
ref,
|
|
@@ -4853,7 +5099,7 @@ var DropdownMenuCheckboxItem = React36.forwardRef(({ className, children, checke
|
|
|
4853
5099
|
}
|
|
4854
5100
|
));
|
|
4855
5101
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
4856
|
-
var DropdownMenuRadioItem =
|
|
5102
|
+
var DropdownMenuRadioItem = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4857
5103
|
DropdownMenuPrimitive.RadioItem,
|
|
4858
5104
|
{
|
|
4859
5105
|
ref,
|
|
@@ -4872,7 +5118,7 @@ var DropdownMenuRadioItem = React36.forwardRef(({ className, children, ...props
|
|
|
4872
5118
|
}
|
|
4873
5119
|
));
|
|
4874
5120
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
4875
|
-
var DropdownMenuLabel =
|
|
5121
|
+
var DropdownMenuLabel = React37.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4876
5122
|
DropdownMenuPrimitive.Label,
|
|
4877
5123
|
{
|
|
4878
5124
|
ref,
|
|
@@ -4885,7 +5131,7 @@ var DropdownMenuLabel = React36.forwardRef(({ className, inset, ...props }, ref)
|
|
|
4885
5131
|
}
|
|
4886
5132
|
));
|
|
4887
5133
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
4888
|
-
var DropdownMenuSeparator =
|
|
5134
|
+
var DropdownMenuSeparator = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4889
5135
|
DropdownMenuPrimitive.Separator,
|
|
4890
5136
|
{
|
|
4891
5137
|
ref,
|
|
@@ -5138,7 +5384,7 @@ FormSection.displayName = "FormSection";
|
|
|
5138
5384
|
var HoverCard = HoverCardPrimitive.Root;
|
|
5139
5385
|
var HoverCardTrigger = HoverCardPrimitive.Trigger;
|
|
5140
5386
|
var HoverCardPortal = HoverCardPrimitive.Portal;
|
|
5141
|
-
var HoverCardContent =
|
|
5387
|
+
var HoverCardContent = React37.forwardRef(({ className, align = "center", side = "bottom", sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
5142
5388
|
HoverCardPrimitive.Content,
|
|
5143
5389
|
{
|
|
5144
5390
|
ref,
|
|
@@ -5157,6 +5403,40 @@ var HoverCardContent = React36.forwardRef(({ className, align = "center", side =
|
|
|
5157
5403
|
}
|
|
5158
5404
|
) }));
|
|
5159
5405
|
HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
|
|
5406
|
+
var iconTileVariants = cva(
|
|
5407
|
+
cn("relative grid shrink-0 place-items-center", "[&_svg]:shrink-0"),
|
|
5408
|
+
{
|
|
5409
|
+
variants: {
|
|
5410
|
+
tone: {
|
|
5411
|
+
pro: "bg-pro-bg text-pro-fg",
|
|
5412
|
+
neutral: "bg-bg-2 text-fg-3",
|
|
5413
|
+
info: "bg-accent-tint text-accent-2",
|
|
5414
|
+
success: "bg-success-bg text-success-fg",
|
|
5415
|
+
warning: "bg-warning-bg text-warning-fg",
|
|
5416
|
+
danger: "bg-danger-bg text-danger-fg",
|
|
5417
|
+
audit: "bg-[color-mix(in_srgb,var(--color-brand-audit)_12%,transparent)] text-brand-audit",
|
|
5418
|
+
books: "bg-[color-mix(in_srgb,var(--color-brand-books)_12%,transparent)] text-brand-books",
|
|
5419
|
+
tax: "bg-[color-mix(in_srgb,var(--color-brand-tax)_12%,transparent)] text-brand-tax"
|
|
5420
|
+
},
|
|
5421
|
+
size: {
|
|
5422
|
+
sm: "size-[30px] rounded-[8px] [&_svg]:size-4",
|
|
5423
|
+
md: "size-[38px] rounded-[10px] [&_svg]:size-[18px]",
|
|
5424
|
+
lg: "size-[42px] rounded-[12px] [&_svg]:size-5"
|
|
5425
|
+
}
|
|
5426
|
+
},
|
|
5427
|
+
defaultVariants: {
|
|
5428
|
+
tone: "pro",
|
|
5429
|
+
size: "md"
|
|
5430
|
+
}
|
|
5431
|
+
}
|
|
5432
|
+
);
|
|
5433
|
+
var IconTile = forwardRef(function IconTile2({ icon, tone, size, badge, className, ...props }, ref) {
|
|
5434
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: cn(iconTileVariants({ tone, size }), className), ...props, children: [
|
|
5435
|
+
icon,
|
|
5436
|
+
badge != null && /* @__PURE__ */ jsx("span", { className: "absolute -top-1.5 -right-1.5 z-10 flex", children: badge })
|
|
5437
|
+
] });
|
|
5438
|
+
});
|
|
5439
|
+
IconTile.displayName = "IconTile";
|
|
5160
5440
|
var inputVariants = cva(
|
|
5161
5441
|
[
|
|
5162
5442
|
"flex w-full rounded-input border bg-surface font-body text-fg",
|
|
@@ -5276,8 +5556,8 @@ function KeyboardShortcutsDialog({
|
|
|
5276
5556
|
sections,
|
|
5277
5557
|
hotkey = "?"
|
|
5278
5558
|
} = {}) {
|
|
5279
|
-
const [open, setOpen] =
|
|
5280
|
-
|
|
5559
|
+
const [open, setOpen] = React37.useState(false);
|
|
5560
|
+
React37.useEffect(() => {
|
|
5281
5561
|
if (hotkey === null) return;
|
|
5282
5562
|
function handleKeyDown(e) {
|
|
5283
5563
|
const target = e.target;
|
|
@@ -5315,7 +5595,7 @@ function KeyboardShortcutsDialog({
|
|
|
5315
5595
|
className: "flex items-center justify-between gap-3 py-1",
|
|
5316
5596
|
children: [
|
|
5317
5597
|
/* @__PURE__ */ jsx("span", { className: "text-fg text-sm", children: shortcut.description }),
|
|
5318
|
-
/* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: shortcut.keys.map((key, i) => /* @__PURE__ */ jsxs(
|
|
5598
|
+
/* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: shortcut.keys.map((key, i) => /* @__PURE__ */ jsxs(React37.Fragment, { children: [
|
|
5319
5599
|
i > 0 && /* @__PURE__ */ jsx("span", { className: "text-fg-4 mx-0.5 text-[11px]", children: "then" }),
|
|
5320
5600
|
/* @__PURE__ */ jsx("kbd", { className: kbdClass2, children: key })
|
|
5321
5601
|
] }, i)) })
|
|
@@ -5334,7 +5614,7 @@ function KeyboardShortcutsDialog({
|
|
|
5334
5614
|
var labelVariants = cva(
|
|
5335
5615
|
"text-[13px] font-medium leading-none text-fg select-none peer-disabled:cursor-not-allowed peer-disabled:text-fg-disabled has-[+input:disabled]:text-fg-disabled"
|
|
5336
5616
|
);
|
|
5337
|
-
var Label4 =
|
|
5617
|
+
var Label4 = React37.forwardRef(
|
|
5338
5618
|
function Label5({ children, required, className, ...props }, ref) {
|
|
5339
5619
|
return /* @__PURE__ */ jsxs(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props, children: [
|
|
5340
5620
|
children,
|
|
@@ -5500,6 +5780,80 @@ function Logo({
|
|
|
5500
5780
|
}
|
|
5501
5781
|
);
|
|
5502
5782
|
}
|
|
5783
|
+
var MasterDetailLayout = forwardRef(
|
|
5784
|
+
function MasterDetailLayout2({
|
|
5785
|
+
list,
|
|
5786
|
+
detail,
|
|
5787
|
+
detailOpen = false,
|
|
5788
|
+
onBack,
|
|
5789
|
+
backLabel = "Back",
|
|
5790
|
+
listWidth = 340,
|
|
5791
|
+
className,
|
|
5792
|
+
style,
|
|
5793
|
+
...props
|
|
5794
|
+
}, ref) {
|
|
5795
|
+
const resolvedWidth = typeof listWidth === "number" ? `${listWidth}px` : listWidth;
|
|
5796
|
+
return /* @__PURE__ */ jsxs(
|
|
5797
|
+
"div",
|
|
5798
|
+
{
|
|
5799
|
+
ref,
|
|
5800
|
+
"data-detail-open": detailOpen ? "true" : "false",
|
|
5801
|
+
className: cn(
|
|
5802
|
+
"bg-surface relative flex h-full min-h-0 w-full overflow-hidden",
|
|
5803
|
+
className
|
|
5804
|
+
),
|
|
5805
|
+
style: { "--master-list-width": resolvedWidth, ...style },
|
|
5806
|
+
...props,
|
|
5807
|
+
children: [
|
|
5808
|
+
/* @__PURE__ */ jsx(
|
|
5809
|
+
"div",
|
|
5810
|
+
{
|
|
5811
|
+
className: cn(
|
|
5812
|
+
"bg-surface flex min-h-0 w-full flex-col overflow-auto",
|
|
5813
|
+
"md:w-[var(--master-list-width)] md:shrink-0 md:border-rule md:border-r"
|
|
5814
|
+
),
|
|
5815
|
+
children: list
|
|
5816
|
+
}
|
|
5817
|
+
),
|
|
5818
|
+
/* @__PURE__ */ jsxs(
|
|
5819
|
+
"div",
|
|
5820
|
+
{
|
|
5821
|
+
className: cn(
|
|
5822
|
+
"bg-surface-2 flex min-h-0 flex-col overflow-auto",
|
|
5823
|
+
// mobile: overlay the list and slide in from the right
|
|
5824
|
+
"max-md:absolute max-md:inset-0 max-md:z-[var(--z-modal)]",
|
|
5825
|
+
"max-md:transition-transform max-md:duration-[var(--duration-normal)] max-md:ease-[var(--ease-out-quart)]",
|
|
5826
|
+
"motion-reduce:transition-none",
|
|
5827
|
+
detailOpen ? "max-md:translate-x-0" : "max-md:pointer-events-none max-md:translate-x-full",
|
|
5828
|
+
// desktop: reset to a static, independently-scrolling flex column
|
|
5829
|
+
"md:static md:z-auto md:flex-1 md:translate-x-0 md:transition-none md:pointer-events-auto"
|
|
5830
|
+
),
|
|
5831
|
+
children: [
|
|
5832
|
+
onBack && /* @__PURE__ */ jsx("div", { className: "border-rule bg-surface sticky top-0 z-[var(--z-sticky)] flex h-12 shrink-0 items-center border-b px-2 md:hidden", children: /* @__PURE__ */ jsx(
|
|
5833
|
+
"button",
|
|
5834
|
+
{
|
|
5835
|
+
type: "button",
|
|
5836
|
+
onClick: onBack,
|
|
5837
|
+
"aria-label": backLabel,
|
|
5838
|
+
className: cn(
|
|
5839
|
+
"rounded-icon text-fg-3 inline-flex size-9 items-center justify-center",
|
|
5840
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
5841
|
+
"hover:bg-surface-2 hover:text-fg",
|
|
5842
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none"
|
|
5843
|
+
),
|
|
5844
|
+
children: /* @__PURE__ */ jsx(ArrowLeftIcon, { className: "size-4", "aria-hidden": "true" })
|
|
5845
|
+
}
|
|
5846
|
+
) }),
|
|
5847
|
+
detail
|
|
5848
|
+
]
|
|
5849
|
+
}
|
|
5850
|
+
)
|
|
5851
|
+
]
|
|
5852
|
+
}
|
|
5853
|
+
);
|
|
5854
|
+
}
|
|
5855
|
+
);
|
|
5856
|
+
MasterDetailLayout.displayName = "MasterDetailLayout";
|
|
5503
5857
|
var TRIGGER_SIZE = {
|
|
5504
5858
|
sm: "h-8 gap-1.5 px-2.5 text-[13px]",
|
|
5505
5859
|
md: "h-9 gap-2 px-3 text-sm",
|
|
@@ -5665,7 +6019,7 @@ function MultiSelectField({
|
|
|
5665
6019
|
size = "md",
|
|
5666
6020
|
id
|
|
5667
6021
|
}) {
|
|
5668
|
-
const selected =
|
|
6022
|
+
const selected = React37.useMemo(
|
|
5669
6023
|
() => new Set(value ? value.split(",").filter(Boolean) : []),
|
|
5670
6024
|
[value]
|
|
5671
6025
|
);
|
|
@@ -5678,7 +6032,7 @@ function MultiSelectField({
|
|
|
5678
6032
|
}
|
|
5679
6033
|
onChange(Array.from(next).join(","));
|
|
5680
6034
|
};
|
|
5681
|
-
const generatedId =
|
|
6035
|
+
const generatedId = React37.useId();
|
|
5682
6036
|
const groupId = id ?? generatedId;
|
|
5683
6037
|
return /* @__PURE__ */ jsxs("div", { className: cn("w-full", className), children: [
|
|
5684
6038
|
/* @__PURE__ */ jsx(
|
|
@@ -6507,12 +6861,12 @@ var ProgressRing = forwardRef(function ProgressRing2({ value, max = 100, size =
|
|
|
6507
6861
|
);
|
|
6508
6862
|
});
|
|
6509
6863
|
ProgressRing.displayName = "ProgressRing";
|
|
6510
|
-
var RadioGroup3 =
|
|
6864
|
+
var RadioGroup3 = React37.forwardRef(function RadioGroup4({ className, ...props }, ref) {
|
|
6511
6865
|
return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, { ref, className: cn("grid gap-2", className), ...props });
|
|
6512
6866
|
});
|
|
6513
6867
|
RadioGroup3.displayName = RadioGroupPrimitive.Root.displayName;
|
|
6514
|
-
var RadioGroupItem =
|
|
6515
|
-
const generatedId =
|
|
6868
|
+
var RadioGroupItem = React37.forwardRef(function RadioGroupItem2({ className, label, id: providedId, ...props }, ref) {
|
|
6869
|
+
const generatedId = React37.useId();
|
|
6516
6870
|
const id = providedId ?? generatedId;
|
|
6517
6871
|
const root = /* @__PURE__ */ jsx(
|
|
6518
6872
|
RadioGroupPrimitive.Item,
|
|
@@ -6597,85 +6951,295 @@ var RankedBars = forwardRef(function RankedBars2({ items, className, ...props },
|
|
|
6597
6951
|
}) });
|
|
6598
6952
|
});
|
|
6599
6953
|
RankedBars.displayName = "RankedBars";
|
|
6600
|
-
var
|
|
6601
|
-
|
|
6602
|
-
|
|
6603
|
-
|
|
6604
|
-
|
|
6605
|
-
|
|
6606
|
-
|
|
6607
|
-
|
|
6608
|
-
/* @__PURE__ */ jsx(
|
|
6609
|
-
ScrollAreaPrimitive.Viewport,
|
|
6610
|
-
{
|
|
6611
|
-
tabIndex: 0,
|
|
6612
|
-
className: "h-full w-full rounded-[inherit] focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
6613
|
-
children
|
|
6614
|
-
}
|
|
6615
|
-
),
|
|
6616
|
-
/* @__PURE__ */ jsx(ScrollBar, {}),
|
|
6617
|
-
/* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, {})
|
|
6618
|
-
]
|
|
6619
|
-
}
|
|
6620
|
-
);
|
|
6621
|
-
});
|
|
6622
|
-
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
6623
|
-
var ScrollBar = React36.forwardRef(function ScrollBar2({ className, orientation = "vertical", ...props }, ref) {
|
|
6624
|
-
return /* @__PURE__ */ jsx(
|
|
6625
|
-
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
6626
|
-
{
|
|
6627
|
-
ref,
|
|
6628
|
-
orientation,
|
|
6629
|
-
className: cn(
|
|
6630
|
-
"flex touch-none transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] select-none motion-reduce:transition-none",
|
|
6631
|
-
orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
|
|
6632
|
-
orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
|
|
6633
|
-
className
|
|
6634
|
-
),
|
|
6635
|
-
...props,
|
|
6636
|
-
children: /* @__PURE__ */ jsx(
|
|
6637
|
-
ScrollAreaPrimitive.ScrollAreaThumb,
|
|
6638
|
-
{
|
|
6639
|
-
className: cn(
|
|
6640
|
-
"bg-rule-strong relative flex-1 rounded-full",
|
|
6641
|
-
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
6642
|
-
"motion-reduce:transition-none",
|
|
6643
|
-
"hover:bg-fg-4"
|
|
6644
|
-
)
|
|
6645
|
-
}
|
|
6646
|
-
)
|
|
6647
|
-
}
|
|
6648
|
-
);
|
|
6649
|
-
});
|
|
6650
|
-
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
|
|
6651
|
-
function useDebounce(value, delay = 300) {
|
|
6652
|
-
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
6653
|
-
useEffect(() => {
|
|
6654
|
-
const timer = setTimeout(() => setDebouncedValue(value), delay);
|
|
6655
|
-
return () => clearTimeout(timer);
|
|
6656
|
-
}, [value, delay]);
|
|
6657
|
-
return debouncedValue;
|
|
6658
|
-
}
|
|
6659
|
-
var searchInputVariants = cva(
|
|
6660
|
-
[
|
|
6661
|
-
"flex w-full rounded-input border border-rule-strong bg-surface font-body text-fg",
|
|
6662
|
-
"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
6663
|
-
"motion-reduce:transition-none",
|
|
6664
|
-
"placeholder:text-fg-4",
|
|
6665
|
-
"focus-visible:outline-none focus-visible:[border-color:var(--focus-ring-border)]",
|
|
6666
|
-
"focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
6667
|
-
"disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled",
|
|
6668
|
-
// Hide the native search-cancel button — we render our own clear button.
|
|
6669
|
-
"[&::-webkit-search-cancel-button]:appearance-none",
|
|
6670
|
-
"[&::-webkit-search-decoration]:appearance-none"
|
|
6671
|
-
],
|
|
6954
|
+
var SheetSideContext = React37.createContext({});
|
|
6955
|
+
var Sheet = ({ side, children, ...props }) => /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...props, children: /* @__PURE__ */ jsx(SheetSideContext, { value: { side }, children }) });
|
|
6956
|
+
Sheet.displayName = "Sheet";
|
|
6957
|
+
var SheetTrigger = DialogPrimitive.Trigger;
|
|
6958
|
+
var SheetClose = DialogPrimitive.Close;
|
|
6959
|
+
var SheetPortal = DialogPrimitive.Portal;
|
|
6960
|
+
var SheetOverlay = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
6961
|
+
DialogPrimitive.Overlay,
|
|
6672
6962
|
{
|
|
6673
|
-
|
|
6674
|
-
|
|
6675
|
-
|
|
6676
|
-
|
|
6677
|
-
|
|
6678
|
-
|
|
6963
|
+
ref,
|
|
6964
|
+
className: cn(
|
|
6965
|
+
"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]",
|
|
6966
|
+
"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]",
|
|
6967
|
+
"data-[state=closed]:opacity-0 data-[state=open]:opacity-100",
|
|
6968
|
+
"motion-reduce:transition-none",
|
|
6969
|
+
className
|
|
6970
|
+
),
|
|
6971
|
+
...props
|
|
6972
|
+
}
|
|
6973
|
+
));
|
|
6974
|
+
SheetOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
6975
|
+
var sheetVariants = cva(
|
|
6976
|
+
cn(
|
|
6977
|
+
"fixed z-[var(--z-modal)] flex flex-col gap-4 bg-surface text-fg shadow-pop",
|
|
6978
|
+
"transition ease-in-out duration-[var(--duration-normal)] ease-[var(--ease-out-quart)]",
|
|
6979
|
+
"motion-reduce:transition-none"
|
|
6980
|
+
),
|
|
6981
|
+
{
|
|
6982
|
+
variants: {
|
|
6983
|
+
side: {
|
|
6984
|
+
top: cn(
|
|
6985
|
+
"inset-x-0 top-0 border-b border-rule",
|
|
6986
|
+
"data-[state=closed]:-translate-y-full data-[state=open]:translate-y-0"
|
|
6987
|
+
),
|
|
6988
|
+
bottom: cn(
|
|
6989
|
+
"inset-x-0 bottom-0 border-t border-rule max-h-[85vh]",
|
|
6990
|
+
"data-[state=closed]:translate-y-full data-[state=open]:translate-y-0"
|
|
6991
|
+
),
|
|
6992
|
+
left: cn(
|
|
6993
|
+
"inset-y-0 left-0 h-full w-3/4 max-w-sm border-r border-rule",
|
|
6994
|
+
"data-[state=closed]:-translate-x-full data-[state=open]:translate-x-0"
|
|
6995
|
+
),
|
|
6996
|
+
right: cn(
|
|
6997
|
+
"inset-y-0 right-0 h-full w-3/4 max-w-sm border-l border-rule",
|
|
6998
|
+
"data-[state=closed]:translate-x-full data-[state=open]:translate-x-0"
|
|
6999
|
+
)
|
|
7000
|
+
}
|
|
7001
|
+
},
|
|
7002
|
+
defaultVariants: { side: "right" }
|
|
7003
|
+
}
|
|
7004
|
+
);
|
|
7005
|
+
var sheetWidthClasses = {
|
|
7006
|
+
sm: "w-[95vw] max-w-[95vw] sm:w-[420px]",
|
|
7007
|
+
md: "w-[95vw] max-w-[95vw] sm:w-[520px]",
|
|
7008
|
+
lg: "w-[95vw] max-w-[95vw] sm:w-[640px]",
|
|
7009
|
+
xl: "w-[95vw] max-w-[95vw] sm:w-[760px]",
|
|
7010
|
+
full: "w-full max-w-none"
|
|
7011
|
+
};
|
|
7012
|
+
var SheetContent = React37.forwardRef(
|
|
7013
|
+
({ side, width = "default", customWidth, className, children, showCloseButton = true, style, ...props }, ref) => {
|
|
7014
|
+
const ctx = React37.use(SheetSideContext);
|
|
7015
|
+
const resolvedSide = side ?? ctx.side ?? "right";
|
|
7016
|
+
const supportsWidth = resolvedSide === "left" || resolvedSide === "right";
|
|
7017
|
+
const widthClass = supportsWidth && width !== "default" ? sheetWidthClasses[width] : null;
|
|
7018
|
+
const widthStyle = supportsWidth && customWidth ? { width: customWidth, maxWidth: "95vw", ...style } : style;
|
|
7019
|
+
return /* @__PURE__ */ jsxs(SheetPortal, { children: [
|
|
7020
|
+
/* @__PURE__ */ jsx(SheetOverlay, {}),
|
|
7021
|
+
/* @__PURE__ */ jsxs(
|
|
7022
|
+
DialogPrimitive.Content,
|
|
7023
|
+
{
|
|
7024
|
+
ref,
|
|
7025
|
+
className: cn(sheetVariants({ side: resolvedSide }), widthClass, className),
|
|
7026
|
+
style: widthStyle,
|
|
7027
|
+
...props,
|
|
7028
|
+
children: [
|
|
7029
|
+
children,
|
|
7030
|
+
showCloseButton && /* @__PURE__ */ jsx(
|
|
7031
|
+
DialogPrimitive.Close,
|
|
7032
|
+
{
|
|
7033
|
+
className: cn(
|
|
7034
|
+
"absolute top-4 right-4 inline-flex size-7 items-center justify-center",
|
|
7035
|
+
"rounded-icon text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7036
|
+
"hover:bg-overlay-hover hover:text-fg",
|
|
7037
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
7038
|
+
"disabled:pointer-events-none"
|
|
7039
|
+
),
|
|
7040
|
+
"aria-label": "Close",
|
|
7041
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "size-4", "aria-hidden": "true" })
|
|
7042
|
+
}
|
|
7043
|
+
)
|
|
7044
|
+
]
|
|
7045
|
+
}
|
|
7046
|
+
)
|
|
7047
|
+
] });
|
|
7048
|
+
}
|
|
7049
|
+
);
|
|
7050
|
+
SheetContent.displayName = DialogPrimitive.Content.displayName;
|
|
7051
|
+
var SheetHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-1.5 p-6 pr-12 pb-0", className), ...props });
|
|
7052
|
+
SheetHeader.displayName = "SheetHeader";
|
|
7053
|
+
var SheetFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
7054
|
+
"div",
|
|
7055
|
+
{
|
|
7056
|
+
className: cn(
|
|
7057
|
+
"border-rule mt-auto flex flex-col-reverse gap-2 border-t p-6 sm:flex-row sm:items-center sm:justify-end",
|
|
7058
|
+
className
|
|
7059
|
+
),
|
|
7060
|
+
...props
|
|
7061
|
+
}
|
|
7062
|
+
);
|
|
7063
|
+
SheetFooter.displayName = "SheetFooter";
|
|
7064
|
+
var SheetTitle = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7065
|
+
DialogPrimitive.Title,
|
|
7066
|
+
{
|
|
7067
|
+
ref,
|
|
7068
|
+
className: cn(
|
|
7069
|
+
"font-display text-fg text-base leading-tight font-medium tracking-tight",
|
|
7070
|
+
className
|
|
7071
|
+
),
|
|
7072
|
+
...props
|
|
7073
|
+
}
|
|
7074
|
+
));
|
|
7075
|
+
SheetTitle.displayName = DialogPrimitive.Title.displayName;
|
|
7076
|
+
var SheetDescription = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Description, { ref, className: cn("text-fg-3 text-sm", className), ...props }));
|
|
7077
|
+
SheetDescription.displayName = DialogPrimitive.Description.displayName;
|
|
7078
|
+
var MOBILE_QUERY = "(max-width: 639.98px)";
|
|
7079
|
+
function useIsMobile() {
|
|
7080
|
+
const [state, setState] = React37.useState({ isMobile: false, mounted: false });
|
|
7081
|
+
React37.useEffect(() => {
|
|
7082
|
+
const mql = window.matchMedia(MOBILE_QUERY);
|
|
7083
|
+
const update = () => setState({ isMobile: mql.matches, mounted: true });
|
|
7084
|
+
update();
|
|
7085
|
+
mql.addEventListener("change", update);
|
|
7086
|
+
return () => mql.removeEventListener("change", update);
|
|
7087
|
+
}, []);
|
|
7088
|
+
return state;
|
|
7089
|
+
}
|
|
7090
|
+
function ResponsiveDialog({
|
|
7091
|
+
open,
|
|
7092
|
+
onOpenChange,
|
|
7093
|
+
title,
|
|
7094
|
+
description,
|
|
7095
|
+
children,
|
|
7096
|
+
footer,
|
|
7097
|
+
className,
|
|
7098
|
+
side = "bottom",
|
|
7099
|
+
size = "md"
|
|
7100
|
+
}) {
|
|
7101
|
+
const { isMobile, mounted } = useIsMobile();
|
|
7102
|
+
const close = React37.useCallback(() => onOpenChange(false), [onOpenChange]);
|
|
7103
|
+
const resolvedFooter = typeof footer === "function" ? footer(close) : footer;
|
|
7104
|
+
const hasHeader = Boolean(title || description);
|
|
7105
|
+
if (mounted && isMobile) {
|
|
7106
|
+
return /* @__PURE__ */ jsx(Sheet, { open, onOpenChange, children: /* @__PURE__ */ jsxs(
|
|
7107
|
+
SheetContent,
|
|
7108
|
+
{
|
|
7109
|
+
side,
|
|
7110
|
+
className: cn(side === "bottom" && "rounded-t-card", className),
|
|
7111
|
+
children: [
|
|
7112
|
+
side === "bottom" && /* @__PURE__ */ jsx(
|
|
7113
|
+
"span",
|
|
7114
|
+
{
|
|
7115
|
+
"aria-hidden": "true",
|
|
7116
|
+
className: "mx-auto mt-2.5 h-1 w-9 shrink-0 rounded-full bg-[color:var(--color-rule-strong)]"
|
|
7117
|
+
}
|
|
7118
|
+
),
|
|
7119
|
+
hasHeader ? /* @__PURE__ */ jsxs(SheetHeader, { children: [
|
|
7120
|
+
/* @__PURE__ */ jsx(SheetTitle, { className: cn(!title && "sr-only"), children: title ?? "Dialog" }),
|
|
7121
|
+
description && /* @__PURE__ */ jsx(SheetDescription, { children: description })
|
|
7122
|
+
] }) : /* @__PURE__ */ jsx(SheetTitle, { className: "sr-only", children: "Dialog" }),
|
|
7123
|
+
/* @__PURE__ */ jsx(
|
|
7124
|
+
"div",
|
|
7125
|
+
{
|
|
7126
|
+
className: cn(
|
|
7127
|
+
"scrollbar-thin flex-1 overflow-y-auto px-6",
|
|
7128
|
+
!resolvedFooter && "pb-6"
|
|
7129
|
+
),
|
|
7130
|
+
children
|
|
7131
|
+
}
|
|
7132
|
+
),
|
|
7133
|
+
resolvedFooter && /* @__PURE__ */ jsx(SheetFooter, { children: resolvedFooter })
|
|
7134
|
+
]
|
|
7135
|
+
}
|
|
7136
|
+
) });
|
|
7137
|
+
}
|
|
7138
|
+
return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { size, className, children: [
|
|
7139
|
+
hasHeader ? /* @__PURE__ */ jsxs(DialogHeader, { children: [
|
|
7140
|
+
/* @__PURE__ */ jsx(DialogTitle, { className: cn(!title && "sr-only"), children: title ?? "Dialog" }),
|
|
7141
|
+
description && /* @__PURE__ */ jsx(DialogDescription, { children: description })
|
|
7142
|
+
] }) : /* @__PURE__ */ jsx(DialogTitle, { className: "sr-only", children: "Dialog" }),
|
|
7143
|
+
children,
|
|
7144
|
+
resolvedFooter && /* @__PURE__ */ jsx(DialogFooter, { children: resolvedFooter })
|
|
7145
|
+
] }) });
|
|
7146
|
+
}
|
|
7147
|
+
ResponsiveDialog.displayName = "ResponsiveDialog";
|
|
7148
|
+
var RouteTransition = forwardRef(
|
|
7149
|
+
function RouteTransition2({ routeKey, className, children, ...props }, ref) {
|
|
7150
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn(className), ...props, children: /* @__PURE__ */ jsx(
|
|
7151
|
+
"div",
|
|
7152
|
+
{
|
|
7153
|
+
className: cn(
|
|
7154
|
+
"animate-in fade-in-0 slide-in-from-bottom-2",
|
|
7155
|
+
"duration-[var(--duration-normal)] ease-[var(--ease-out-quart)]"
|
|
7156
|
+
),
|
|
7157
|
+
children
|
|
7158
|
+
},
|
|
7159
|
+
routeKey
|
|
7160
|
+
) });
|
|
7161
|
+
}
|
|
7162
|
+
);
|
|
7163
|
+
RouteTransition.displayName = "RouteTransition";
|
|
7164
|
+
var ScrollArea = React37.forwardRef(function ScrollArea2({ className, children, ...props }, ref) {
|
|
7165
|
+
return /* @__PURE__ */ jsxs(
|
|
7166
|
+
ScrollAreaPrimitive.Root,
|
|
7167
|
+
{
|
|
7168
|
+
ref,
|
|
7169
|
+
className: cn("relative overflow-hidden", className),
|
|
7170
|
+
...props,
|
|
7171
|
+
children: [
|
|
7172
|
+
/* @__PURE__ */ jsx(
|
|
7173
|
+
ScrollAreaPrimitive.Viewport,
|
|
7174
|
+
{
|
|
7175
|
+
tabIndex: 0,
|
|
7176
|
+
className: "h-full w-full rounded-[inherit] focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
7177
|
+
children
|
|
7178
|
+
}
|
|
7179
|
+
),
|
|
7180
|
+
/* @__PURE__ */ jsx(ScrollBar, {}),
|
|
7181
|
+
/* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, {})
|
|
7182
|
+
]
|
|
7183
|
+
}
|
|
7184
|
+
);
|
|
7185
|
+
});
|
|
7186
|
+
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
7187
|
+
var ScrollBar = React37.forwardRef(function ScrollBar2({ className, orientation = "vertical", ...props }, ref) {
|
|
7188
|
+
return /* @__PURE__ */ jsx(
|
|
7189
|
+
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
7190
|
+
{
|
|
7191
|
+
ref,
|
|
7192
|
+
orientation,
|
|
7193
|
+
className: cn(
|
|
7194
|
+
"flex touch-none transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] select-none motion-reduce:transition-none",
|
|
7195
|
+
orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
|
|
7196
|
+
orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
|
|
7197
|
+
className
|
|
7198
|
+
),
|
|
7199
|
+
...props,
|
|
7200
|
+
children: /* @__PURE__ */ jsx(
|
|
7201
|
+
ScrollAreaPrimitive.ScrollAreaThumb,
|
|
7202
|
+
{
|
|
7203
|
+
className: cn(
|
|
7204
|
+
"bg-rule-strong relative flex-1 rounded-full",
|
|
7205
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
7206
|
+
"motion-reduce:transition-none",
|
|
7207
|
+
"hover:bg-fg-4"
|
|
7208
|
+
)
|
|
7209
|
+
}
|
|
7210
|
+
)
|
|
7211
|
+
}
|
|
7212
|
+
);
|
|
7213
|
+
});
|
|
7214
|
+
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
|
|
7215
|
+
function useDebounce(value, delay = 300) {
|
|
7216
|
+
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
7217
|
+
useEffect(() => {
|
|
7218
|
+
const timer = setTimeout(() => setDebouncedValue(value), delay);
|
|
7219
|
+
return () => clearTimeout(timer);
|
|
7220
|
+
}, [value, delay]);
|
|
7221
|
+
return debouncedValue;
|
|
7222
|
+
}
|
|
7223
|
+
var searchInputVariants = cva(
|
|
7224
|
+
[
|
|
7225
|
+
"flex w-full rounded-input border border-rule-strong bg-surface font-body text-fg",
|
|
7226
|
+
"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
7227
|
+
"motion-reduce:transition-none",
|
|
7228
|
+
"placeholder:text-fg-4",
|
|
7229
|
+
"focus-visible:outline-none focus-visible:[border-color:var(--focus-ring-border)]",
|
|
7230
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
7231
|
+
"disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled",
|
|
7232
|
+
// Hide the native search-cancel button — we render our own clear button.
|
|
7233
|
+
"[&::-webkit-search-cancel-button]:appearance-none",
|
|
7234
|
+
"[&::-webkit-search-decoration]:appearance-none"
|
|
7235
|
+
],
|
|
7236
|
+
{
|
|
7237
|
+
variants: {
|
|
7238
|
+
inputSize: {
|
|
7239
|
+
// `sm` is the dense control tier: h-8 + 13px, so a search box lines up
|
|
7240
|
+
// pixel-for-pixel (height AND text) with Button / MultiFilterPill /
|
|
7241
|
+
// FilterChip at their `sm` tier in a toolbar row.
|
|
7242
|
+
sm: "h-8 pl-8 pr-8 text-[13px]",
|
|
6679
7243
|
md: "h-9 pl-9 pr-9 text-[13px]",
|
|
6680
7244
|
lg: "h-11 pl-10 pr-10 text-sm"
|
|
6681
7245
|
}
|
|
@@ -6685,7 +7249,7 @@ var searchInputVariants = cva(
|
|
|
6685
7249
|
}
|
|
6686
7250
|
}
|
|
6687
7251
|
);
|
|
6688
|
-
var SearchInput =
|
|
7252
|
+
var SearchInput = React37.forwardRef(
|
|
6689
7253
|
function SearchInput2({
|
|
6690
7254
|
value,
|
|
6691
7255
|
onValueChange,
|
|
@@ -6698,8 +7262,8 @@ var SearchInput = React36.forwardRef(
|
|
|
6698
7262
|
...props
|
|
6699
7263
|
}, ref) {
|
|
6700
7264
|
const debouncedValue = useDebounce(value, debounceMs);
|
|
6701
|
-
const isFirstRender =
|
|
6702
|
-
|
|
7265
|
+
const isFirstRender = React37.useRef(true);
|
|
7266
|
+
React37.useEffect(() => {
|
|
6703
7267
|
if (isFirstRender.current) {
|
|
6704
7268
|
isFirstRender.current = false;
|
|
6705
7269
|
return;
|
|
@@ -6777,15 +7341,15 @@ function SearchSelect({
|
|
|
6777
7341
|
descriptionVariant = "inline"
|
|
6778
7342
|
}) {
|
|
6779
7343
|
const isSingleMode = value !== void 0 || onValueChange !== void 0;
|
|
6780
|
-
const singleSelectedOption =
|
|
7344
|
+
const singleSelectedOption = React37.useMemo(
|
|
6781
7345
|
() => isSingleMode && value ? options.find((o) => o.id === value) ?? null : null,
|
|
6782
7346
|
[isSingleMode, value, options]
|
|
6783
7347
|
);
|
|
6784
|
-
const selected =
|
|
7348
|
+
const selected = React37.useMemo(
|
|
6785
7349
|
() => isSingleMode ? singleSelectedOption ? [singleSelectedOption] : [] : selectedProp ?? [],
|
|
6786
7350
|
[isSingleMode, singleSelectedOption, selectedProp]
|
|
6787
7351
|
);
|
|
6788
|
-
const onSelect =
|
|
7352
|
+
const onSelect = React37.useCallback(
|
|
6789
7353
|
(option) => {
|
|
6790
7354
|
if (isSingleMode) {
|
|
6791
7355
|
onValueChange?.(option.id);
|
|
@@ -6795,7 +7359,7 @@ function SearchSelect({
|
|
|
6795
7359
|
},
|
|
6796
7360
|
[isSingleMode, onValueChange, onSelectProp]
|
|
6797
7361
|
);
|
|
6798
|
-
const onRemove =
|
|
7362
|
+
const onRemove = React37.useCallback(
|
|
6799
7363
|
(option) => {
|
|
6800
7364
|
if (isSingleMode) {
|
|
6801
7365
|
onValueChange?.("");
|
|
@@ -6806,15 +7370,15 @@ function SearchSelect({
|
|
|
6806
7370
|
[isSingleMode, onValueChange, onRemoveProp]
|
|
6807
7371
|
);
|
|
6808
7372
|
const closeOnSelect = isSingleMode || closeOnSelectProp;
|
|
6809
|
-
const [search, setSearch] =
|
|
6810
|
-
const [open, setOpen] =
|
|
6811
|
-
const [activeChip, setActiveChip] =
|
|
6812
|
-
const selectedIds =
|
|
6813
|
-
const filtered =
|
|
7373
|
+
const [search, setSearch] = React37.useState("");
|
|
7374
|
+
const [open, setOpen] = React37.useState(false);
|
|
7375
|
+
const [activeChip, setActiveChip] = React37.useState(null);
|
|
7376
|
+
const selectedIds = React37.useMemo(() => new Set(selected.map((s) => s.id)), [selected]);
|
|
7377
|
+
const filtered = React37.useMemo(
|
|
6814
7378
|
() => options.filter((opt) => !selectedIds.has(opt.id)),
|
|
6815
7379
|
[options, selectedIds]
|
|
6816
7380
|
);
|
|
6817
|
-
const groups =
|
|
7381
|
+
const groups = React37.useMemo(() => {
|
|
6818
7382
|
const order = [];
|
|
6819
7383
|
const byGroup = /* @__PURE__ */ new Map();
|
|
6820
7384
|
for (const opt of filtered) {
|
|
@@ -6826,25 +7390,25 @@ function SearchSelect({
|
|
|
6826
7390
|
}
|
|
6827
7391
|
return order.map((g) => [g, byGroup.get(g)]);
|
|
6828
7392
|
}, [filtered]);
|
|
6829
|
-
const hasGroups =
|
|
6830
|
-
const pinnedSet =
|
|
6831
|
-
const chips =
|
|
7393
|
+
const hasGroups = React37.useMemo(() => groups.some(([g]) => g != null), [groups]);
|
|
7394
|
+
const pinnedSet = React37.useMemo(() => new Set(pinnedGroups ?? []), [pinnedGroups]);
|
|
7395
|
+
const chips = React37.useMemo(() => {
|
|
6832
7396
|
if (!groupFilter || !hasGroups) return [];
|
|
6833
7397
|
return groups.map(([g]) => g).filter((g) => g != null && !pinnedSet.has(g));
|
|
6834
7398
|
}, [groupFilter, hasGroups, groups, pinnedSet]);
|
|
6835
|
-
const visibleGroups =
|
|
7399
|
+
const visibleGroups = React37.useMemo(() => {
|
|
6836
7400
|
if (chips.length > 0 && activeChip) {
|
|
6837
7401
|
return groups.filter(([g]) => g === activeChip);
|
|
6838
7402
|
}
|
|
6839
7403
|
return groups;
|
|
6840
7404
|
}, [groups, chips.length, activeChip]);
|
|
6841
7405
|
const trimmedSearch = search.trim();
|
|
6842
|
-
const hasExactMatch =
|
|
7406
|
+
const hasExactMatch = React37.useMemo(
|
|
6843
7407
|
() => options.some((opt) => opt.label.toLowerCase() === trimmedSearch.toLowerCase()),
|
|
6844
7408
|
[options, trimmedSearch]
|
|
6845
7409
|
);
|
|
6846
7410
|
const showCreate = !!onCreate && trimmedSearch.length > 0 && !hasExactMatch;
|
|
6847
|
-
const handleSelect =
|
|
7411
|
+
const handleSelect = React37.useCallback(
|
|
6848
7412
|
(option) => {
|
|
6849
7413
|
onSelect(option);
|
|
6850
7414
|
setSearch("");
|
|
@@ -6852,16 +7416,16 @@ function SearchSelect({
|
|
|
6852
7416
|
},
|
|
6853
7417
|
[onSelect, closeOnSelect]
|
|
6854
7418
|
);
|
|
6855
|
-
const handleCreate =
|
|
7419
|
+
const handleCreate = React37.useCallback(() => {
|
|
6856
7420
|
if (onCreate && trimmedSearch) {
|
|
6857
7421
|
onCreate(trimmedSearch);
|
|
6858
7422
|
setSearch("");
|
|
6859
7423
|
setOpen(false);
|
|
6860
7424
|
}
|
|
6861
7425
|
}, [onCreate, trimmedSearch]);
|
|
6862
|
-
const inputRef =
|
|
6863
|
-
const listboxId =
|
|
6864
|
-
const setInputRef =
|
|
7426
|
+
const inputRef = React37.useRef(null);
|
|
7427
|
+
const listboxId = React37.useId();
|
|
7428
|
+
const setInputRef = React37.useCallback((node) => {
|
|
6865
7429
|
inputRef.current = node;
|
|
6866
7430
|
node?.removeAttribute("aria-labelledby");
|
|
6867
7431
|
node?.setAttribute("aria-controls", listboxId);
|
|
@@ -6870,12 +7434,12 @@ function SearchSelect({
|
|
|
6870
7434
|
const singleValue = closeOnSelect ? selected[0] ?? null : null;
|
|
6871
7435
|
const showValue = singleValue !== null && !open;
|
|
6872
7436
|
const popoverOpen = open && !disabled;
|
|
6873
|
-
|
|
7437
|
+
React37.useEffect(() => {
|
|
6874
7438
|
inputRef.current?.removeAttribute("aria-labelledby");
|
|
6875
7439
|
inputRef.current?.setAttribute("aria-controls", listboxId);
|
|
6876
7440
|
inputRef.current?.removeAttribute("aria-activedescendant");
|
|
6877
7441
|
});
|
|
6878
|
-
|
|
7442
|
+
React37.useEffect(() => {
|
|
6879
7443
|
if (open && closeOnSelect) {
|
|
6880
7444
|
const raf = requestAnimationFrame(() => inputRef.current?.focus());
|
|
6881
7445
|
return () => cancelAnimationFrame(raf);
|
|
@@ -7320,7 +7884,7 @@ var SegmentedProgress = forwardRef(
|
|
|
7320
7884
|
}
|
|
7321
7885
|
);
|
|
7322
7886
|
SegmentedProgress.displayName = "SegmentedProgress";
|
|
7323
|
-
var Separator4 =
|
|
7887
|
+
var Separator4 = React37.forwardRef(function Separator5({ className, orientation = "horizontal", decorative = true, ...props }, ref) {
|
|
7324
7888
|
return /* @__PURE__ */ jsx(
|
|
7325
7889
|
SeparatorPrimitive.Root,
|
|
7326
7890
|
{
|
|
@@ -7337,130 +7901,6 @@ var Separator4 = React36.forwardRef(function Separator5({ className, orientation
|
|
|
7337
7901
|
);
|
|
7338
7902
|
});
|
|
7339
7903
|
Separator4.displayName = SeparatorPrimitive.Root.displayName;
|
|
7340
|
-
var SheetSideContext = React36.createContext({});
|
|
7341
|
-
var Sheet = ({ side, children, ...props }) => /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...props, children: /* @__PURE__ */ jsx(SheetSideContext, { value: { side }, children }) });
|
|
7342
|
-
Sheet.displayName = "Sheet";
|
|
7343
|
-
var SheetTrigger = DialogPrimitive.Trigger;
|
|
7344
|
-
var SheetClose = DialogPrimitive.Close;
|
|
7345
|
-
var SheetPortal = DialogPrimitive.Portal;
|
|
7346
|
-
var SheetOverlay = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7347
|
-
DialogPrimitive.Overlay,
|
|
7348
|
-
{
|
|
7349
|
-
ref,
|
|
7350
|
-
className: cn(
|
|
7351
|
-
"bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]",
|
|
7352
|
-
"transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]",
|
|
7353
|
-
"data-[state=closed]:opacity-0 data-[state=open]:opacity-100",
|
|
7354
|
-
"motion-reduce:transition-none",
|
|
7355
|
-
className
|
|
7356
|
-
),
|
|
7357
|
-
...props
|
|
7358
|
-
}
|
|
7359
|
-
));
|
|
7360
|
-
SheetOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
7361
|
-
var sheetVariants = cva(
|
|
7362
|
-
cn(
|
|
7363
|
-
"fixed z-[var(--z-modal)] flex flex-col gap-4 bg-surface text-fg shadow-pop",
|
|
7364
|
-
"transition ease-in-out duration-[var(--duration-normal)] ease-[var(--ease-out-quart)]",
|
|
7365
|
-
"motion-reduce:transition-none"
|
|
7366
|
-
),
|
|
7367
|
-
{
|
|
7368
|
-
variants: {
|
|
7369
|
-
side: {
|
|
7370
|
-
top: cn(
|
|
7371
|
-
"inset-x-0 top-0 border-b border-rule",
|
|
7372
|
-
"data-[state=closed]:-translate-y-full data-[state=open]:translate-y-0"
|
|
7373
|
-
),
|
|
7374
|
-
bottom: cn(
|
|
7375
|
-
"inset-x-0 bottom-0 border-t border-rule max-h-[85vh]",
|
|
7376
|
-
"data-[state=closed]:translate-y-full data-[state=open]:translate-y-0"
|
|
7377
|
-
),
|
|
7378
|
-
left: cn(
|
|
7379
|
-
"inset-y-0 left-0 h-full w-3/4 max-w-sm border-r border-rule",
|
|
7380
|
-
"data-[state=closed]:-translate-x-full data-[state=open]:translate-x-0"
|
|
7381
|
-
),
|
|
7382
|
-
right: cn(
|
|
7383
|
-
"inset-y-0 right-0 h-full w-3/4 max-w-sm border-l border-rule",
|
|
7384
|
-
"data-[state=closed]:translate-x-full data-[state=open]:translate-x-0"
|
|
7385
|
-
)
|
|
7386
|
-
}
|
|
7387
|
-
},
|
|
7388
|
-
defaultVariants: { side: "right" }
|
|
7389
|
-
}
|
|
7390
|
-
);
|
|
7391
|
-
var sheetWidthClasses = {
|
|
7392
|
-
sm: "w-[95vw] max-w-[95vw] sm:w-[420px]",
|
|
7393
|
-
md: "w-[95vw] max-w-[95vw] sm:w-[520px]",
|
|
7394
|
-
lg: "w-[95vw] max-w-[95vw] sm:w-[640px]",
|
|
7395
|
-
xl: "w-[95vw] max-w-[95vw] sm:w-[760px]",
|
|
7396
|
-
full: "w-full max-w-none"
|
|
7397
|
-
};
|
|
7398
|
-
var SheetContent = React36.forwardRef(
|
|
7399
|
-
({ side, width = "default", customWidth, className, children, showCloseButton = true, style, ...props }, ref) => {
|
|
7400
|
-
const ctx = React36.use(SheetSideContext);
|
|
7401
|
-
const resolvedSide = side ?? ctx.side ?? "right";
|
|
7402
|
-
const supportsWidth = resolvedSide === "left" || resolvedSide === "right";
|
|
7403
|
-
const widthClass = supportsWidth && width !== "default" ? sheetWidthClasses[width] : null;
|
|
7404
|
-
const widthStyle = supportsWidth && customWidth ? { width: customWidth, maxWidth: "95vw", ...style } : style;
|
|
7405
|
-
return /* @__PURE__ */ jsxs(SheetPortal, { children: [
|
|
7406
|
-
/* @__PURE__ */ jsx(SheetOverlay, {}),
|
|
7407
|
-
/* @__PURE__ */ jsxs(
|
|
7408
|
-
DialogPrimitive.Content,
|
|
7409
|
-
{
|
|
7410
|
-
ref,
|
|
7411
|
-
className: cn(sheetVariants({ side: resolvedSide }), widthClass, className),
|
|
7412
|
-
style: widthStyle,
|
|
7413
|
-
...props,
|
|
7414
|
-
children: [
|
|
7415
|
-
children,
|
|
7416
|
-
showCloseButton && /* @__PURE__ */ jsx(
|
|
7417
|
-
DialogPrimitive.Close,
|
|
7418
|
-
{
|
|
7419
|
-
className: cn(
|
|
7420
|
-
"absolute top-4 right-4 inline-flex size-7 items-center justify-center",
|
|
7421
|
-
"rounded-icon text-fg-4 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7422
|
-
"hover:bg-overlay-hover hover:text-fg",
|
|
7423
|
-
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
7424
|
-
"disabled:pointer-events-none"
|
|
7425
|
-
),
|
|
7426
|
-
"aria-label": "Close",
|
|
7427
|
-
children: /* @__PURE__ */ jsx(XIcon, { className: "size-4", "aria-hidden": "true" })
|
|
7428
|
-
}
|
|
7429
|
-
)
|
|
7430
|
-
]
|
|
7431
|
-
}
|
|
7432
|
-
)
|
|
7433
|
-
] });
|
|
7434
|
-
}
|
|
7435
|
-
);
|
|
7436
|
-
SheetContent.displayName = DialogPrimitive.Content.displayName;
|
|
7437
|
-
var SheetHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-1.5 p-6 pr-12 pb-0", className), ...props });
|
|
7438
|
-
SheetHeader.displayName = "SheetHeader";
|
|
7439
|
-
var SheetFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
7440
|
-
"div",
|
|
7441
|
-
{
|
|
7442
|
-
className: cn(
|
|
7443
|
-
"border-rule mt-auto flex flex-col-reverse gap-2 border-t p-6 sm:flex-row sm:items-center sm:justify-end",
|
|
7444
|
-
className
|
|
7445
|
-
),
|
|
7446
|
-
...props
|
|
7447
|
-
}
|
|
7448
|
-
);
|
|
7449
|
-
SheetFooter.displayName = "SheetFooter";
|
|
7450
|
-
var SheetTitle = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7451
|
-
DialogPrimitive.Title,
|
|
7452
|
-
{
|
|
7453
|
-
ref,
|
|
7454
|
-
className: cn(
|
|
7455
|
-
"font-display text-fg text-base leading-tight font-medium tracking-tight",
|
|
7456
|
-
className
|
|
7457
|
-
),
|
|
7458
|
-
...props
|
|
7459
|
-
}
|
|
7460
|
-
));
|
|
7461
|
-
SheetTitle.displayName = DialogPrimitive.Title.displayName;
|
|
7462
|
-
var SheetDescription = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Description, { ref, className: cn("text-fg-3 text-sm", className), ...props }));
|
|
7463
|
-
SheetDescription.displayName = DialogPrimitive.Description.displayName;
|
|
7464
7904
|
var sideDrawerVariants = cva(
|
|
7465
7905
|
cn(
|
|
7466
7906
|
"fixed inset-y-0 z-[var(--z-modal)] flex h-full flex-col bg-surface text-fg shadow-pop",
|
|
@@ -7576,7 +8016,7 @@ function SideDrawerFooter({ children, className }) {
|
|
|
7576
8016
|
SideDrawer.Header = SideDrawerHeader;
|
|
7577
8017
|
SideDrawer.Body = SideDrawerBody;
|
|
7578
8018
|
SideDrawer.Footer = SideDrawerFooter;
|
|
7579
|
-
var Slider =
|
|
8019
|
+
var Slider = React37.forwardRef(
|
|
7580
8020
|
function Slider2({
|
|
7581
8021
|
className,
|
|
7582
8022
|
label,
|
|
@@ -7588,7 +8028,7 @@ var Slider = React36.forwardRef(
|
|
|
7588
8028
|
defaultValue,
|
|
7589
8029
|
...props
|
|
7590
8030
|
}, ref) {
|
|
7591
|
-
const generatedId =
|
|
8031
|
+
const generatedId = React37.useId();
|
|
7592
8032
|
const id = providedId ?? generatedId;
|
|
7593
8033
|
const displayValue = (() => {
|
|
7594
8034
|
const v = value ?? defaultValue;
|
|
@@ -7721,6 +8161,52 @@ var Stat = forwardRef(function Stat2({ value, label, className, ...props }, ref)
|
|
|
7721
8161
|
] });
|
|
7722
8162
|
});
|
|
7723
8163
|
Stat.displayName = "Stat";
|
|
8164
|
+
var statusDotVariants = cva("relative inline-flex shrink-0 rounded-full bg-current", {
|
|
8165
|
+
variants: {
|
|
8166
|
+
tone: {
|
|
8167
|
+
danger: "text-danger-fg",
|
|
8168
|
+
warning: "text-warning-fg",
|
|
8169
|
+
info: "text-accent",
|
|
8170
|
+
success: "text-success-fg",
|
|
8171
|
+
pro: "text-pro-fg",
|
|
8172
|
+
neutral: "text-fg-4"
|
|
8173
|
+
},
|
|
8174
|
+
size: {
|
|
8175
|
+
sm: "size-[7px]",
|
|
8176
|
+
md: "size-[9px]"
|
|
8177
|
+
},
|
|
8178
|
+
ring: {
|
|
8179
|
+
true: "shadow-[0_0_0_2px_var(--color-surface)]",
|
|
8180
|
+
false: ""
|
|
8181
|
+
}
|
|
8182
|
+
},
|
|
8183
|
+
defaultVariants: {
|
|
8184
|
+
tone: "danger",
|
|
8185
|
+
size: "sm",
|
|
8186
|
+
ring: false
|
|
8187
|
+
}
|
|
8188
|
+
});
|
|
8189
|
+
var StatusDot = forwardRef(function StatusDot2({ tone, size, ring, pulse, className, ...props }, ref) {
|
|
8190
|
+
const ariaLabel = props["aria-label"];
|
|
8191
|
+
return /* @__PURE__ */ jsx(
|
|
8192
|
+
"span",
|
|
8193
|
+
{
|
|
8194
|
+
ref,
|
|
8195
|
+
role: ariaLabel ? "img" : void 0,
|
|
8196
|
+
"aria-hidden": ariaLabel ? void 0 : true,
|
|
8197
|
+
className: cn(statusDotVariants({ tone, size, ring }), className),
|
|
8198
|
+
...props,
|
|
8199
|
+
children: pulse && /* @__PURE__ */ jsx(
|
|
8200
|
+
"span",
|
|
8201
|
+
{
|
|
8202
|
+
"aria-hidden": "true",
|
|
8203
|
+
className: "absolute inset-0 inline-flex animate-ping rounded-full bg-current opacity-75 motion-reduce:hidden"
|
|
8204
|
+
}
|
|
8205
|
+
)
|
|
8206
|
+
}
|
|
8207
|
+
);
|
|
8208
|
+
});
|
|
8209
|
+
StatusDot.displayName = "StatusDot";
|
|
7724
8210
|
var CENTER = 8;
|
|
7725
8211
|
var RING_RADIUS = 6;
|
|
7726
8212
|
var STROKE_WIDTH = 2;
|
|
@@ -7958,6 +8444,29 @@ var Stepper = forwardRef(function Stepper2({ steps, currentStep, orientation = "
|
|
|
7958
8444
|
);
|
|
7959
8445
|
});
|
|
7960
8446
|
Stepper.displayName = "Stepper";
|
|
8447
|
+
var StickyActionBar = forwardRef(
|
|
8448
|
+
function StickyActionBar2({ children, hint, offsetForMobileNav, className, ...props }, ref) {
|
|
8449
|
+
return /* @__PURE__ */ jsxs(
|
|
8450
|
+
"div",
|
|
8451
|
+
{
|
|
8452
|
+
ref,
|
|
8453
|
+
className: cn(
|
|
8454
|
+
"sticky inset-x-0 z-20 flex flex-wrap items-center gap-3",
|
|
8455
|
+
"border-t border-rule bg-surface/80 px-4 py-3 backdrop-blur-md sm:px-6",
|
|
8456
|
+
"supports-[backdrop-filter]:bg-surface/80",
|
|
8457
|
+
offsetForMobileNav ? "bottom-[calc(3.5rem_+_env(safe-area-inset-bottom))] sm:bottom-0" : "bottom-0",
|
|
8458
|
+
className
|
|
8459
|
+
),
|
|
8460
|
+
...props,
|
|
8461
|
+
children: [
|
|
8462
|
+
hint != null && /* @__PURE__ */ jsx("div", { className: "flex min-w-0 items-center gap-2 text-sm font-medium text-fg-3", children: hint }),
|
|
8463
|
+
/* @__PURE__ */ jsx("div", { className: "ml-auto flex items-center gap-2", children })
|
|
8464
|
+
]
|
|
8465
|
+
}
|
|
8466
|
+
);
|
|
8467
|
+
}
|
|
8468
|
+
);
|
|
8469
|
+
StickyActionBar.displayName = "StickyActionBar";
|
|
7961
8470
|
var SubmitButton = forwardRef(function SubmitButton2({ pendingText, children, className, ...props }, ref) {
|
|
7962
8471
|
const { pending } = useFormStatus();
|
|
7963
8472
|
return /* @__PURE__ */ jsx(
|
|
@@ -7974,6 +8483,87 @@ var SubmitButton = forwardRef(function SubmitButton2({ pendingText, children, cl
|
|
|
7974
8483
|
);
|
|
7975
8484
|
});
|
|
7976
8485
|
SubmitButton.displayName = "SubmitButton";
|
|
8486
|
+
var suiteProgressFillVariants = cva("", {
|
|
8487
|
+
variants: {
|
|
8488
|
+
tone: {
|
|
8489
|
+
pro: "bg-brand-pro",
|
|
8490
|
+
audit: "bg-brand-audit",
|
|
8491
|
+
books: "bg-brand-books",
|
|
8492
|
+
tax: "bg-brand-tax"
|
|
8493
|
+
}
|
|
8494
|
+
},
|
|
8495
|
+
defaultVariants: { tone: "pro" }
|
|
8496
|
+
});
|
|
8497
|
+
var SIZE_STYLES = {
|
|
8498
|
+
sm: { row: "gap-2", track: "gap-0.5", segment: "h-1", text: "text-xs" },
|
|
8499
|
+
md: { row: "gap-3", track: "gap-1", segment: "h-[5px]", text: "text-sm" }
|
|
8500
|
+
};
|
|
8501
|
+
var SuiteProgress = forwardRef(
|
|
8502
|
+
function SuiteProgress2({
|
|
8503
|
+
value,
|
|
8504
|
+
total,
|
|
8505
|
+
showPercent = true,
|
|
8506
|
+
percent,
|
|
8507
|
+
tone = "pro",
|
|
8508
|
+
size = "md",
|
|
8509
|
+
label,
|
|
8510
|
+
segmentClassName,
|
|
8511
|
+
className,
|
|
8512
|
+
...props
|
|
8513
|
+
}, ref) {
|
|
8514
|
+
const styles = SIZE_STYLES[size];
|
|
8515
|
+
const safeTotal = Math.max(1, Math.floor(total));
|
|
8516
|
+
const safeValue = Math.min(safeTotal, Math.max(0, Math.floor(value)));
|
|
8517
|
+
const resolvedPercent = percent != null ? Math.min(100, Math.max(0, Math.round(percent))) : Math.round(safeValue / safeTotal * 100);
|
|
8518
|
+
return /* @__PURE__ */ jsxs(
|
|
8519
|
+
"div",
|
|
8520
|
+
{
|
|
8521
|
+
ref,
|
|
8522
|
+
role: "progressbar",
|
|
8523
|
+
"aria-valuenow": resolvedPercent,
|
|
8524
|
+
"aria-valuemin": 0,
|
|
8525
|
+
"aria-valuemax": 100,
|
|
8526
|
+
"aria-valuetext": `${safeValue} of ${safeTotal}`,
|
|
8527
|
+
"aria-label": label ?? "Progress",
|
|
8528
|
+
className: cn("flex items-center", styles.row, className),
|
|
8529
|
+
...props,
|
|
8530
|
+
children: [
|
|
8531
|
+
label && /* @__PURE__ */ jsx("span", { className: cn("text-fg-2 flex-none font-medium", styles.text), children: label }),
|
|
8532
|
+
/* @__PURE__ */ jsx("div", { className: cn("flex min-w-0 flex-1", styles.track), "aria-hidden": "true", children: Array.from({ length: safeTotal }, (_, i) => {
|
|
8533
|
+
const filled = i < safeValue;
|
|
8534
|
+
return /* @__PURE__ */ jsx(
|
|
8535
|
+
"div",
|
|
8536
|
+
{
|
|
8537
|
+
className: cn(
|
|
8538
|
+
"flex-1 rounded-full",
|
|
8539
|
+
styles.segment,
|
|
8540
|
+
"transition-colors duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
8541
|
+
filled ? suiteProgressFillVariants({ tone }) : "bg-surface-3",
|
|
8542
|
+
segmentClassName
|
|
8543
|
+
)
|
|
8544
|
+
},
|
|
8545
|
+
i
|
|
8546
|
+
);
|
|
8547
|
+
}) }),
|
|
8548
|
+
showPercent && /* @__PURE__ */ jsxs(
|
|
8549
|
+
"span",
|
|
8550
|
+
{
|
|
8551
|
+
className: cn(
|
|
8552
|
+
"text-fg flex-none font-bold tracking-tight tabular-nums",
|
|
8553
|
+
styles.text
|
|
8554
|
+
),
|
|
8555
|
+
children: [
|
|
8556
|
+
resolvedPercent,
|
|
8557
|
+
/* @__PURE__ */ jsx("span", { className: "text-fg-4 ml-px text-[0.72em] font-semibold", children: "%" })
|
|
8558
|
+
]
|
|
8559
|
+
}
|
|
8560
|
+
)
|
|
8561
|
+
]
|
|
8562
|
+
}
|
|
8563
|
+
);
|
|
8564
|
+
}
|
|
8565
|
+
);
|
|
8566
|
+
SuiteProgress.displayName = "SuiteProgress";
|
|
7977
8567
|
var switchVariants = cva(
|
|
7978
8568
|
[
|
|
7979
8569
|
"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent",
|
|
@@ -8016,9 +8606,9 @@ var switchThumbVariants = cva(
|
|
|
8016
8606
|
}
|
|
8017
8607
|
}
|
|
8018
8608
|
);
|
|
8019
|
-
var Switch =
|
|
8609
|
+
var Switch = React37.forwardRef(
|
|
8020
8610
|
function Switch2({ label, size, className, id: providedId, ...props }, ref) {
|
|
8021
|
-
const generatedId =
|
|
8611
|
+
const generatedId = React37.useId();
|
|
8022
8612
|
const id = providedId ?? generatedId;
|
|
8023
8613
|
const root = /* @__PURE__ */ jsx(
|
|
8024
8614
|
SwitchPrimitive.Root,
|
|
@@ -8152,13 +8742,13 @@ var TableCaption = forwardRef(
|
|
|
8152
8742
|
}
|
|
8153
8743
|
);
|
|
8154
8744
|
TableCaption.displayName = "TableCaption";
|
|
8155
|
-
var Tabs =
|
|
8745
|
+
var Tabs = React37.forwardRef(
|
|
8156
8746
|
function Tabs2({ className, ...props }, ref) {
|
|
8157
8747
|
return /* @__PURE__ */ jsx(TabsPrimitive.Root, { ref, className: cn(className), ...props });
|
|
8158
8748
|
}
|
|
8159
8749
|
);
|
|
8160
8750
|
Tabs.displayName = TabsPrimitive.Root.displayName;
|
|
8161
|
-
var TabsList =
|
|
8751
|
+
var TabsList = React37.forwardRef(function TabsList2({ className, ...props }, ref) {
|
|
8162
8752
|
return /* @__PURE__ */ jsx(
|
|
8163
8753
|
TabsPrimitive.List,
|
|
8164
8754
|
{
|
|
@@ -8203,7 +8793,7 @@ var triggerVariants = cva(
|
|
|
8203
8793
|
}
|
|
8204
8794
|
}
|
|
8205
8795
|
);
|
|
8206
|
-
var TabsTrigger =
|
|
8796
|
+
var TabsTrigger = React37.forwardRef(function TabsTrigger2({ className, variant, ...props }, ref) {
|
|
8207
8797
|
return /* @__PURE__ */ jsx(
|
|
8208
8798
|
TabsPrimitive.Trigger,
|
|
8209
8799
|
{
|
|
@@ -8214,7 +8804,7 @@ var TabsTrigger = React36.forwardRef(function TabsTrigger2({ className, variant,
|
|
|
8214
8804
|
);
|
|
8215
8805
|
});
|
|
8216
8806
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
8217
|
-
var TabsContent =
|
|
8807
|
+
var TabsContent = React37.forwardRef(function TabsContent2({ className, ...props }, ref) {
|
|
8218
8808
|
return /* @__PURE__ */ jsx(
|
|
8219
8809
|
TabsPrimitive.Content,
|
|
8220
8810
|
{
|
|
@@ -8239,7 +8829,7 @@ function TeamMemberSelect({
|
|
|
8239
8829
|
placeholder = "Select team member...",
|
|
8240
8830
|
className
|
|
8241
8831
|
}) {
|
|
8242
|
-
const options =
|
|
8832
|
+
const options = React37.useMemo(() => {
|
|
8243
8833
|
const meBadge = /* @__PURE__ */ jsx(
|
|
8244
8834
|
Badge,
|
|
8245
8835
|
{
|
|
@@ -8569,10 +9159,10 @@ var itemVariants = cva(
|
|
|
8569
9159
|
}
|
|
8570
9160
|
}
|
|
8571
9161
|
);
|
|
8572
|
-
var ToggleGroupContext =
|
|
9162
|
+
var ToggleGroupContext = React37.createContext({
|
|
8573
9163
|
variant: "default"
|
|
8574
9164
|
});
|
|
8575
|
-
var ToggleGroup =
|
|
9165
|
+
var ToggleGroup = React37.forwardRef(function ToggleGroup2({ className, variant, children, ...props }, ref) {
|
|
8576
9166
|
return /* @__PURE__ */ jsx(
|
|
8577
9167
|
ToggleGroupPrimitive.Root,
|
|
8578
9168
|
{
|
|
@@ -8584,8 +9174,8 @@ var ToggleGroup = React36.forwardRef(function ToggleGroup2({ className, variant,
|
|
|
8584
9174
|
);
|
|
8585
9175
|
});
|
|
8586
9176
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
8587
|
-
var ToggleGroupItem =
|
|
8588
|
-
const ctx =
|
|
9177
|
+
var ToggleGroupItem = React37.forwardRef(function ToggleGroupItem2({ className, variant, ...props }, ref) {
|
|
9178
|
+
const ctx = React37.useContext(ToggleGroupContext);
|
|
8589
9179
|
return /* @__PURE__ */ jsx(
|
|
8590
9180
|
ToggleGroupPrimitive.Item,
|
|
8591
9181
|
{
|
|
@@ -8604,7 +9194,7 @@ var Tooltip = ({ delayMs, delayDuration, children, ...props }) => {
|
|
|
8604
9194
|
return /* @__PURE__ */ jsx(TooltipPrimitive.Provider, { delayDuration: resolvedDelay, children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { delayDuration: resolvedDelay, ...props, children }) });
|
|
8605
9195
|
};
|
|
8606
9196
|
Tooltip.displayName = "Tooltip";
|
|
8607
|
-
var TooltipContent =
|
|
9197
|
+
var TooltipContent = React37.forwardRef(({ className, sideOffset = 6, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
8608
9198
|
TooltipPrimitive.Content,
|
|
8609
9199
|
{
|
|
8610
9200
|
ref,
|
|
@@ -9295,7 +9885,7 @@ var Content16 = forwardRef(function Content17({ padTop, padBottom, className, st
|
|
|
9295
9885
|
);
|
|
9296
9886
|
});
|
|
9297
9887
|
Content16.displayName = "Content";
|
|
9298
|
-
var SidebarContext =
|
|
9888
|
+
var SidebarContext = React37.createContext(null);
|
|
9299
9889
|
var NOOP_CONTEXT = {
|
|
9300
9890
|
state: "expanded",
|
|
9301
9891
|
setState: () => {
|
|
@@ -9308,7 +9898,7 @@ var NOOP_CONTEXT = {
|
|
|
9308
9898
|
}
|
|
9309
9899
|
};
|
|
9310
9900
|
function useSidebarState() {
|
|
9311
|
-
return
|
|
9901
|
+
return React37.useContext(SidebarContext) ?? NOOP_CONTEXT;
|
|
9312
9902
|
}
|
|
9313
9903
|
var DEFAULT_SHORTCUT = "Mod+\\";
|
|
9314
9904
|
function readStorage(key) {
|
|
@@ -9328,16 +9918,16 @@ function SidebarProvider({
|
|
|
9328
9918
|
storageKey,
|
|
9329
9919
|
shortcut = DEFAULT_SHORTCUT
|
|
9330
9920
|
}) {
|
|
9331
|
-
const [uncontrolled, setUncontrolled] =
|
|
9921
|
+
const [uncontrolled, setUncontrolled] = React37.useState(
|
|
9332
9922
|
controlled ?? defaultState
|
|
9333
9923
|
);
|
|
9334
|
-
|
|
9924
|
+
React37.useEffect(() => {
|
|
9335
9925
|
if (controlled !== void 0) return;
|
|
9336
9926
|
const stored = readStorage(storageKey);
|
|
9337
9927
|
if (stored && stored !== uncontrolled) setUncontrolled(stored);
|
|
9338
9928
|
}, []);
|
|
9339
9929
|
const state = controlled ?? uncontrolled;
|
|
9340
|
-
const setState =
|
|
9930
|
+
const setState = React37.useCallback(
|
|
9341
9931
|
(next) => {
|
|
9342
9932
|
if (controlled === void 0) setUncontrolled(next);
|
|
9343
9933
|
onStateChange?.(next);
|
|
@@ -9350,11 +9940,11 @@ function SidebarProvider({
|
|
|
9350
9940
|
},
|
|
9351
9941
|
[controlled, onStateChange, storageKey]
|
|
9352
9942
|
);
|
|
9353
|
-
const toggle =
|
|
9943
|
+
const toggle = React37.useCallback(() => {
|
|
9354
9944
|
setState(state === "expanded" ? "rail" : "expanded");
|
|
9355
9945
|
}, [state, setState]);
|
|
9356
|
-
const [peekLockCount, setPeekLockCount] =
|
|
9357
|
-
const acquirePeekLock =
|
|
9946
|
+
const [peekLockCount, setPeekLockCount] = React37.useState(0);
|
|
9947
|
+
const acquirePeekLock = React37.useCallback(() => {
|
|
9358
9948
|
setPeekLockCount((n) => n + 1);
|
|
9359
9949
|
let released = false;
|
|
9360
9950
|
return () => {
|
|
@@ -9363,7 +9953,7 @@ function SidebarProvider({
|
|
|
9363
9953
|
setPeekLockCount((n) => Math.max(0, n - 1));
|
|
9364
9954
|
};
|
|
9365
9955
|
}, []);
|
|
9366
|
-
|
|
9956
|
+
React37.useEffect(() => {
|
|
9367
9957
|
if (!shortcut) return;
|
|
9368
9958
|
const parts = shortcut.split("+");
|
|
9369
9959
|
const key = parts.pop() ?? "";
|
|
@@ -9383,7 +9973,7 @@ function SidebarProvider({
|
|
|
9383
9973
|
window.addEventListener("keydown", onKey);
|
|
9384
9974
|
return () => window.removeEventListener("keydown", onKey);
|
|
9385
9975
|
}, [shortcut, toggle]);
|
|
9386
|
-
const value =
|
|
9976
|
+
const value = React37.useMemo(
|
|
9387
9977
|
() => ({ state, setState, toggle, collapsible: true, peekLockCount, acquirePeekLock }),
|
|
9388
9978
|
[state, setState, toggle, peekLockCount, acquirePeekLock]
|
|
9389
9979
|
);
|
|
@@ -9392,15 +9982,15 @@ function SidebarProvider({
|
|
|
9392
9982
|
SidebarProvider.displayName = "SidebarProvider";
|
|
9393
9983
|
var PEEK_ENTER_DELAY_MS = 100;
|
|
9394
9984
|
var PEEK_LEAVE_DELAY_MS = 200;
|
|
9395
|
-
var Sidebar =
|
|
9985
|
+
var Sidebar = React37.forwardRef(function Sidebar2({ className, collapsible = false, variant = "classic", onMouseEnter, onMouseLeave, style, ...props }, ref) {
|
|
9396
9986
|
const isFloating = variant === "floating";
|
|
9397
|
-
const ctx =
|
|
9987
|
+
const ctx = React37.useContext(SidebarContext);
|
|
9398
9988
|
const state = collapsible && ctx ? ctx.state : "expanded";
|
|
9399
9989
|
const peekLockCount = collapsible && ctx ? ctx.peekLockCount : 0;
|
|
9400
|
-
const [peek, setPeek] =
|
|
9401
|
-
const enterTimer =
|
|
9402
|
-
const leaveTimer =
|
|
9403
|
-
const clearTimers =
|
|
9990
|
+
const [peek, setPeek] = React37.useState(false);
|
|
9991
|
+
const enterTimer = React37.useRef(null);
|
|
9992
|
+
const leaveTimer = React37.useRef(null);
|
|
9993
|
+
const clearTimers = React37.useCallback(() => {
|
|
9404
9994
|
if (enterTimer.current != null) {
|
|
9405
9995
|
window.clearTimeout(enterTimer.current);
|
|
9406
9996
|
enterTimer.current = null;
|
|
@@ -9410,8 +10000,8 @@ var Sidebar = React36.forwardRef(function Sidebar2({ className, collapsible = fa
|
|
|
9410
10000
|
leaveTimer.current = null;
|
|
9411
10001
|
}
|
|
9412
10002
|
}, []);
|
|
9413
|
-
|
|
9414
|
-
|
|
10003
|
+
React37.useEffect(() => () => clearTimers(), [clearTimers]);
|
|
10004
|
+
React37.useEffect(() => {
|
|
9415
10005
|
if (state === "expanded") {
|
|
9416
10006
|
clearTimers();
|
|
9417
10007
|
setPeek(false);
|
|
@@ -9492,7 +10082,7 @@ var Sidebar = React36.forwardRef(function Sidebar2({ className, collapsible = fa
|
|
|
9492
10082
|
);
|
|
9493
10083
|
});
|
|
9494
10084
|
Sidebar.displayName = "Sidebar";
|
|
9495
|
-
var SidebarTrigger =
|
|
10085
|
+
var SidebarTrigger = React37.forwardRef(
|
|
9496
10086
|
function SidebarTrigger2({
|
|
9497
10087
|
className,
|
|
9498
10088
|
expandLabel = "Expand sidebar",
|
|
@@ -9500,7 +10090,7 @@ var SidebarTrigger = React36.forwardRef(
|
|
|
9500
10090
|
onClick,
|
|
9501
10091
|
...props
|
|
9502
10092
|
}, ref) {
|
|
9503
|
-
const ctx =
|
|
10093
|
+
const ctx = React37.useContext(SidebarContext);
|
|
9504
10094
|
if (!ctx) return null;
|
|
9505
10095
|
const { state, toggle } = ctx;
|
|
9506
10096
|
const label = state === "expanded" ? collapseLabel : expandLabel;
|
|
@@ -9531,14 +10121,14 @@ var SidebarTrigger = React36.forwardRef(
|
|
|
9531
10121
|
);
|
|
9532
10122
|
SidebarTrigger.displayName = "SidebarTrigger";
|
|
9533
10123
|
function useSidebarPeekLock(active) {
|
|
9534
|
-
const ctx =
|
|
9535
|
-
|
|
10124
|
+
const ctx = React37.useContext(SidebarContext);
|
|
10125
|
+
React37.useEffect(() => {
|
|
9536
10126
|
if (!active || !ctx) return;
|
|
9537
10127
|
const release = ctx.acquirePeekLock();
|
|
9538
10128
|
return release;
|
|
9539
10129
|
}, [active, ctx]);
|
|
9540
10130
|
}
|
|
9541
|
-
var SidebarPinButton =
|
|
10131
|
+
var SidebarPinButton = React37.forwardRef(
|
|
9542
10132
|
function SidebarPinButton2({
|
|
9543
10133
|
pinLabel = "Pin sidebar",
|
|
9544
10134
|
unpinLabel = "Unpin sidebar",
|
|
@@ -9546,7 +10136,7 @@ var SidebarPinButton = React36.forwardRef(
|
|
|
9546
10136
|
onClick,
|
|
9547
10137
|
...props
|
|
9548
10138
|
}, ref) {
|
|
9549
|
-
const ctx =
|
|
10139
|
+
const ctx = React37.useContext(SidebarContext);
|
|
9550
10140
|
if (!ctx || !ctx.collapsible) return null;
|
|
9551
10141
|
const { state, setState } = ctx;
|
|
9552
10142
|
const isPinned = state === "expanded";
|
|
@@ -9611,7 +10201,7 @@ function PinGlyph({
|
|
|
9611
10201
|
}
|
|
9612
10202
|
);
|
|
9613
10203
|
}
|
|
9614
|
-
var SidebarBrand =
|
|
10204
|
+
var SidebarBrand = React37.forwardRef(
|
|
9615
10205
|
function SidebarBrand2({ className, ...props }, ref) {
|
|
9616
10206
|
return /* @__PURE__ */ jsx(
|
|
9617
10207
|
"div",
|
|
@@ -9627,7 +10217,7 @@ var SidebarBrand = React36.forwardRef(
|
|
|
9627
10217
|
}
|
|
9628
10218
|
);
|
|
9629
10219
|
SidebarBrand.displayName = "SidebarBrand";
|
|
9630
|
-
var SidebarBrandText =
|
|
10220
|
+
var SidebarBrandText = React37.forwardRef(
|
|
9631
10221
|
function SidebarBrandText2({ className, ...props }, ref) {
|
|
9632
10222
|
return /* @__PURE__ */ jsx(
|
|
9633
10223
|
"span",
|
|
@@ -9652,16 +10242,16 @@ var SidebarBrandText = React36.forwardRef(
|
|
|
9652
10242
|
}
|
|
9653
10243
|
);
|
|
9654
10244
|
SidebarBrandText.displayName = "SidebarBrandText";
|
|
9655
|
-
var SidebarGroupScopeContext =
|
|
9656
|
-
var SidebarSection =
|
|
10245
|
+
var SidebarGroupScopeContext = React37.createContext(null);
|
|
10246
|
+
var SidebarSection = React37.forwardRef(
|
|
9657
10247
|
function SidebarSection2({ label, tone = "pro", className, children, ...props }, ref) {
|
|
9658
10248
|
const ariaLabel = typeof label === "string" ? label : typeof label === "number" ? String(label) : void 0;
|
|
9659
|
-
const [exclusiveId, setExclusiveIdState] =
|
|
9660
|
-
const setExclusive =
|
|
10249
|
+
const [exclusiveId, setExclusiveIdState] = React37.useState(null);
|
|
10250
|
+
const setExclusive = React37.useCallback(
|
|
9661
10251
|
(id) => setExclusiveIdState(id),
|
|
9662
10252
|
[]
|
|
9663
10253
|
);
|
|
9664
|
-
const scope =
|
|
10254
|
+
const scope = React37.useMemo(
|
|
9665
10255
|
() => ({ exclusiveId, setExclusive }),
|
|
9666
10256
|
[exclusiveId, setExclusive]
|
|
9667
10257
|
);
|
|
@@ -9714,12 +10304,12 @@ function getTextContent(node) {
|
|
|
9714
10304
|
if (node == null || typeof node === "boolean") return "";
|
|
9715
10305
|
if (typeof node === "string" || typeof node === "number") return String(node);
|
|
9716
10306
|
if (Array.isArray(node)) return node.map(getTextContent).filter(Boolean).join(" ");
|
|
9717
|
-
if (
|
|
10307
|
+
if (React37.isValidElement(node)) {
|
|
9718
10308
|
return getTextContent(node.props.children);
|
|
9719
10309
|
}
|
|
9720
10310
|
return "";
|
|
9721
10311
|
}
|
|
9722
|
-
var SidebarLink =
|
|
10312
|
+
var SidebarLink = React37.forwardRef(
|
|
9723
10313
|
function SidebarLink2({ href, icon, active = false, asChild, className, children, "aria-label": ariaLabel, ...props }, ref) {
|
|
9724
10314
|
const Comp = asChild ? Slot : "a";
|
|
9725
10315
|
const accessibleLabel = ariaLabel ?? (asChild ? void 0 : getTextContent(children) || void 0);
|
|
@@ -9790,7 +10380,7 @@ var SidebarLink = React36.forwardRef(
|
|
|
9790
10380
|
}
|
|
9791
10381
|
);
|
|
9792
10382
|
SidebarLink.displayName = "SidebarLink";
|
|
9793
|
-
var SidebarLinkLabel =
|
|
10383
|
+
var SidebarLinkLabel = React37.forwardRef(
|
|
9794
10384
|
function SidebarLinkLabel2({ className, ...props }, ref) {
|
|
9795
10385
|
return /* @__PURE__ */ jsx(
|
|
9796
10386
|
"span",
|
|
@@ -9815,7 +10405,7 @@ var SidebarLinkLabel = React36.forwardRef(
|
|
|
9815
10405
|
}
|
|
9816
10406
|
);
|
|
9817
10407
|
SidebarLinkLabel.displayName = "SidebarLinkLabel";
|
|
9818
|
-
var SidebarLinkAction =
|
|
10408
|
+
var SidebarLinkAction = React37.forwardRef(
|
|
9819
10409
|
function SidebarLinkAction2({ className, ...props }, ref) {
|
|
9820
10410
|
return /* @__PURE__ */ jsx(
|
|
9821
10411
|
"span",
|
|
@@ -9847,13 +10437,13 @@ var sidebarLinkBadgeVariants = cva(
|
|
|
9847
10437
|
defaultVariants: { tone: "default" }
|
|
9848
10438
|
}
|
|
9849
10439
|
);
|
|
9850
|
-
var SidebarLinkBadge =
|
|
10440
|
+
var SidebarLinkBadge = React37.forwardRef(
|
|
9851
10441
|
function SidebarLinkBadge2({ tone, className, ...props }, ref) {
|
|
9852
10442
|
return /* @__PURE__ */ jsx("span", { ref, className: cn(sidebarLinkBadgeVariants({ tone }), className), ...props });
|
|
9853
10443
|
}
|
|
9854
10444
|
);
|
|
9855
10445
|
SidebarLinkBadge.displayName = "SidebarLinkBadge";
|
|
9856
|
-
var SidebarLinkGroup =
|
|
10446
|
+
var SidebarLinkGroup = React37.forwardRef(
|
|
9857
10447
|
function SidebarLinkGroup2({
|
|
9858
10448
|
id: idProp,
|
|
9859
10449
|
icon,
|
|
@@ -9868,19 +10458,19 @@ var SidebarLinkGroup = React36.forwardRef(
|
|
|
9868
10458
|
children,
|
|
9869
10459
|
...props
|
|
9870
10460
|
}, ref) {
|
|
9871
|
-
const reactId =
|
|
10461
|
+
const reactId = React37.useId();
|
|
9872
10462
|
const id = idProp ?? reactId;
|
|
9873
|
-
const scope =
|
|
9874
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
10463
|
+
const scope = React37.useContext(SidebarGroupScopeContext);
|
|
10464
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React37.useState(defaultOpen);
|
|
9875
10465
|
const open = controlled ?? uncontrolledOpen;
|
|
9876
|
-
const setOpen =
|
|
10466
|
+
const setOpen = React37.useCallback(
|
|
9877
10467
|
(next) => {
|
|
9878
10468
|
if (controlled === void 0) setUncontrolledOpen(next);
|
|
9879
10469
|
onOpenChange?.(next);
|
|
9880
10470
|
},
|
|
9881
10471
|
[controlled, onOpenChange]
|
|
9882
10472
|
);
|
|
9883
|
-
|
|
10473
|
+
React37.useEffect(() => {
|
|
9884
10474
|
if (scope?.exclusiveId && scope.exclusiveId !== id && open) {
|
|
9885
10475
|
setOpen(false);
|
|
9886
10476
|
}
|
|
@@ -9989,7 +10579,7 @@ var SidebarLinkGroup = React36.forwardRef(
|
|
|
9989
10579
|
}
|
|
9990
10580
|
);
|
|
9991
10581
|
SidebarLinkGroup.displayName = "SidebarLinkGroup";
|
|
9992
|
-
var SidebarFooter =
|
|
10582
|
+
var SidebarFooter = React37.forwardRef(
|
|
9993
10583
|
function SidebarFooter2({ className, ...props }, ref) {
|
|
9994
10584
|
return /* @__PURE__ */ jsx(
|
|
9995
10585
|
"div",
|
|
@@ -10006,7 +10596,7 @@ var SidebarFooter = React36.forwardRef(
|
|
|
10006
10596
|
}
|
|
10007
10597
|
);
|
|
10008
10598
|
SidebarFooter.displayName = "SidebarFooter";
|
|
10009
|
-
var SidebarUser =
|
|
10599
|
+
var SidebarUser = React37.forwardRef(function SidebarUser2({ name, subtitle, avatarSrc, className, ...props }, ref) {
|
|
10010
10600
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex min-w-0 items-center gap-2.5", className), ...props, children: [
|
|
10011
10601
|
/* @__PURE__ */ jsx(Avatar, { size: "sm", variant: "branded", name, src: avatarSrc ?? void 0 }),
|
|
10012
10602
|
/* @__PURE__ */ jsxs(
|
|
@@ -10027,7 +10617,7 @@ var SidebarUser = React36.forwardRef(function SidebarUser2({ name, subtitle, ava
|
|
|
10027
10617
|
] });
|
|
10028
10618
|
});
|
|
10029
10619
|
SidebarUser.displayName = "SidebarUser";
|
|
10030
|
-
var SidebarBrandSwitcher =
|
|
10620
|
+
var SidebarBrandSwitcher = React37.forwardRef(
|
|
10031
10621
|
function SidebarBrandSwitcher2({
|
|
10032
10622
|
brand,
|
|
10033
10623
|
label,
|
|
@@ -10045,7 +10635,7 @@ var SidebarBrandSwitcher = React36.forwardRef(
|
|
|
10045
10635
|
contentClassName,
|
|
10046
10636
|
trailing
|
|
10047
10637
|
}, ref) {
|
|
10048
|
-
const [open, setOpen] =
|
|
10638
|
+
const [open, setOpen] = React37.useState(false);
|
|
10049
10639
|
useSidebarPeekLock(open);
|
|
10050
10640
|
const others = items.filter((p) => p.id !== current.id);
|
|
10051
10641
|
return (
|
|
@@ -10165,7 +10755,7 @@ function SidebarBrandSwitcherOtherRow({
|
|
|
10165
10755
|
unavailableBadge
|
|
10166
10756
|
}) {
|
|
10167
10757
|
const reachable = item.available !== false;
|
|
10168
|
-
const [launching, setLaunching] =
|
|
10758
|
+
const [launching, setLaunching] = React37.useState(false);
|
|
10169
10759
|
const handleSelect = async () => {
|
|
10170
10760
|
if (!reachable || launching || !onLaunch) return;
|
|
10171
10761
|
setLaunching(true);
|
|
@@ -12082,7 +12672,7 @@ var FilterChip = forwardRef(function FilterChip2({ active = false, size, count,
|
|
|
12082
12672
|
);
|
|
12083
12673
|
});
|
|
12084
12674
|
FilterChip.displayName = "FilterChip";
|
|
12085
|
-
var BulkActionBarContext =
|
|
12675
|
+
var BulkActionBarContext = React37.createContext({ tone: "surface" });
|
|
12086
12676
|
function actionClasses(tone, destructive) {
|
|
12087
12677
|
const base = cn(
|
|
12088
12678
|
"inline-flex h-8 items-center gap-1.5 rounded-btn px-3 text-[13px] font-medium",
|
|
@@ -12105,8 +12695,8 @@ function actionClasses(tone, destructive) {
|
|
|
12105
12695
|
destructive ? "text-control-destructive-fg hover:bg-control-destructive-hover-bg" : "text-control-fg hover:bg-control-hover-bg hover:text-control-hover-fg"
|
|
12106
12696
|
);
|
|
12107
12697
|
}
|
|
12108
|
-
var BulkActionBarAction =
|
|
12109
|
-
const { tone } =
|
|
12698
|
+
var BulkActionBarAction = React37.forwardRef(function BulkActionBarAction2({ asChild = false, destructive, className, type, ...props }, ref) {
|
|
12699
|
+
const { tone } = React37.use(BulkActionBarContext);
|
|
12110
12700
|
const Comp = asChild ? Slot : "button";
|
|
12111
12701
|
return /* @__PURE__ */ jsx(
|
|
12112
12702
|
Comp,
|
|
@@ -12120,7 +12710,7 @@ var BulkActionBarAction = React36.forwardRef(function BulkActionBarAction2({ asC
|
|
|
12120
12710
|
});
|
|
12121
12711
|
BulkActionBarAction.displayName = "BulkActionBarAction";
|
|
12122
12712
|
function BulkActionBarSeparator({ className }) {
|
|
12123
|
-
const { tone } =
|
|
12713
|
+
const { tone } = React37.use(BulkActionBarContext);
|
|
12124
12714
|
return /* @__PURE__ */ jsx(
|
|
12125
12715
|
"span",
|
|
12126
12716
|
{
|
|
@@ -12320,6 +12910,6 @@ var KbdHint = forwardRef(function KbdHint2({ className, children, ...props }, re
|
|
|
12320
12910
|
});
|
|
12321
12911
|
KbdHint.displayName = "KbdHint";
|
|
12322
12912
|
|
|
12323
|
-
export { AIReceiptPanel, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, 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, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, AtSignIcon, AttentionItem, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, BottomNav, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, BulkActionBar, BulkActionBarAction, BulkActionBarSeparator, Button, COUNTRY_CODES, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, 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, DashGrid, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DatePicker, DateRangePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DonutChart, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EngagementCard, EngagementTimeline, EngagementTimelineStep, EyeIcon, EyeOffIcon, Eyebrow, FileChip, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FolderTree, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MenuIcon, MessageBubble, MessageBubbleAction, MessageBubbleTombstone, MessageCircleIcon, MessageCircleWarningIcon, MessageComposer, MetadataGrid, MicrosoftBrandIcon, MinusIcon, 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, PenSignIcon, PencilIcon, PhoneCountryInput, PhoneIcon, PhoneInput, PlayIcon, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, PriorityIcon, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, RankedBars, ReceiptIcon, ReplyIcon, RotateCcwIcon, 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, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, Spinner, StarIcon, StarRating, Stat, StatusIcon, StatusPill, Stepper, StopIcon, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, 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, badgeVariants, buttonVariants, cardVariants, cn, colors, dateToIso, displayToIso, filterChipVariants, formatClock, formatCurrency, formatDuration, getFlagEmoji, inputVariants, isoToDate, isoToDisplay, isoToYear, labelVariants, parseDuration, parsePhoneForEditing, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, serviceToneLabel, serviceToneStyle, shadows, sidebarLinkBadgeVariants, spacing, spinnerVariants, starRatingVariants, surfaces, systemTokens, textareaVariants, typography, useSidebarPeekLock, useSidebarState, useStopwatch, useToast, yearToIso };
|
|
12913
|
+
export { AIReceiptPanel, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, 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, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, AtSignIcon, AttachmentChip, AttentionItem, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, BottomNav, 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, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, 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, DashGrid, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DatePicker, DateRangePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DonutChart, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EngagementCard, EngagementTimeline, EngagementTimelineStep, EyeIcon, EyeOffIcon, Eyebrow, FileChip, FileIcon, FileReturnIcon, FileTextIcon, FileTypeBadge, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FolderTree, FolderUpIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, IconTile, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, 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, 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, PenSignIcon, PenToolIcon, PencilIcon, PhoneCountryInput, PhoneIcon, PhoneInput, PlayIcon, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, PriorityIcon, ProgressBar, ProgressRing, 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, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, Spinner, StarIcon, StarRating, Stat, StatusDot, StatusIcon, StatusPill, Stepper, StickyActionBar, StopIcon, StrikethroughIcon, SubmitButton, SuiteProgress, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, 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, 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, useSidebarPeekLock, useSidebarState, useStopwatch, useToast, yearToIso };
|
|
12324
12914
|
//# sourceMappingURL=index.js.map
|
|
12325
12915
|
//# sourceMappingURL=index.js.map
|