@assure-one/design-system 1.3.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +181 -7
- package/dist/index.js +738 -211
- 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 React38 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';
|
|
@@ -2285,7 +2285,7 @@ function PauseIcon({ size = 24, ...props }) {
|
|
|
2285
2285
|
function StopIcon({ size = 24, ...props }) {
|
|
2286
2286
|
return /* @__PURE__ */ jsx(Icon, { size, ...props, children: /* @__PURE__ */ jsx("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2", fill: "currentColor" }) });
|
|
2287
2287
|
}
|
|
2288
|
-
var Accordion =
|
|
2288
|
+
var Accordion = React38.forwardRef(function Accordion2({ className, ...props }, ref) {
|
|
2289
2289
|
return /* @__PURE__ */ jsx(
|
|
2290
2290
|
AccordionPrimitive.Root,
|
|
2291
2291
|
{
|
|
@@ -2296,11 +2296,11 @@ var Accordion = React37.forwardRef(function Accordion2({ className, ...props },
|
|
|
2296
2296
|
);
|
|
2297
2297
|
});
|
|
2298
2298
|
Accordion.displayName = AccordionPrimitive.Root.displayName;
|
|
2299
|
-
var AccordionItem =
|
|
2299
|
+
var AccordionItem = React38.forwardRef(function AccordionItem2({ className, ...props }, ref) {
|
|
2300
2300
|
return /* @__PURE__ */ jsx(AccordionPrimitive.Item, { ref, className: cn(className), ...props });
|
|
2301
2301
|
});
|
|
2302
2302
|
AccordionItem.displayName = AccordionPrimitive.Item.displayName;
|
|
2303
|
-
var AccordionTrigger =
|
|
2303
|
+
var AccordionTrigger = React38.forwardRef(function AccordionTrigger2({ children, className, ...props }, ref) {
|
|
2304
2304
|
return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
2305
2305
|
AccordionPrimitive.Trigger,
|
|
2306
2306
|
{
|
|
@@ -2329,7 +2329,7 @@ var AccordionTrigger = React37.forwardRef(function AccordionTrigger2({ children,
|
|
|
2329
2329
|
) });
|
|
2330
2330
|
});
|
|
2331
2331
|
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
|
2332
|
-
var AccordionContent =
|
|
2332
|
+
var AccordionContent = React38.forwardRef(function AccordionContent2({ children, className, ...props }, ref) {
|
|
2333
2333
|
return /* @__PURE__ */ jsx(
|
|
2334
2334
|
AccordionPrimitive.Content,
|
|
2335
2335
|
{
|
|
@@ -2349,7 +2349,7 @@ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
|
|
|
2349
2349
|
var AlertDialog = AlertDialogPrimitive.Root;
|
|
2350
2350
|
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
2351
2351
|
var AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
2352
|
-
var AlertDialogOverlay =
|
|
2352
|
+
var AlertDialogOverlay = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2353
2353
|
AlertDialogPrimitive.Overlay,
|
|
2354
2354
|
{
|
|
2355
2355
|
ref,
|
|
@@ -2364,7 +2364,7 @@ var AlertDialogOverlay = React37.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2364
2364
|
}
|
|
2365
2365
|
));
|
|
2366
2366
|
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
|
2367
|
-
var AlertDialogContent =
|
|
2367
|
+
var AlertDialogContent = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
|
|
2368
2368
|
/* @__PURE__ */ jsx(AlertDialogOverlay, {}),
|
|
2369
2369
|
/* @__PURE__ */ jsx(
|
|
2370
2370
|
AlertDialogPrimitive.Content,
|
|
@@ -2399,7 +2399,7 @@ var AlertDialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
2399
2399
|
}
|
|
2400
2400
|
);
|
|
2401
2401
|
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
2402
|
-
var AlertDialogTitle =
|
|
2402
|
+
var AlertDialogTitle = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2403
2403
|
AlertDialogPrimitive.Title,
|
|
2404
2404
|
{
|
|
2405
2405
|
ref,
|
|
@@ -2411,7 +2411,7 @@ var AlertDialogTitle = React37.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
2411
2411
|
}
|
|
2412
2412
|
));
|
|
2413
2413
|
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
|
2414
|
-
var AlertDialogDescription =
|
|
2414
|
+
var AlertDialogDescription = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2415
2415
|
AlertDialogPrimitive.Description,
|
|
2416
2416
|
{
|
|
2417
2417
|
ref,
|
|
@@ -2420,7 +2420,7 @@ var AlertDialogDescription = React37.forwardRef(({ className, ...props }, ref) =
|
|
|
2420
2420
|
}
|
|
2421
2421
|
));
|
|
2422
2422
|
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
|
2423
|
-
var AlertDialogAction =
|
|
2423
|
+
var AlertDialogAction = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2424
2424
|
AlertDialogPrimitive.Action,
|
|
2425
2425
|
{
|
|
2426
2426
|
ref,
|
|
@@ -2436,7 +2436,7 @@ var AlertDialogAction = React37.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2436
2436
|
}
|
|
2437
2437
|
));
|
|
2438
2438
|
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
|
2439
|
-
var AlertDialogCancel =
|
|
2439
|
+
var AlertDialogCancel = React38.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2440
2440
|
AlertDialogPrimitive.Cancel,
|
|
2441
2441
|
{
|
|
2442
2442
|
ref,
|
|
@@ -2631,7 +2631,7 @@ var AreaChart = forwardRef(function AreaChart2({ data, height = 140, formatValue
|
|
|
2631
2631
|
] });
|
|
2632
2632
|
});
|
|
2633
2633
|
AreaChart.displayName = "AreaChart";
|
|
2634
|
-
var AspectRatio =
|
|
2634
|
+
var AspectRatio = React38.forwardRef(function AspectRatio2({ className, ratio = 16 / 9, ...props }, ref) {
|
|
2635
2635
|
return /* @__PURE__ */ jsx(
|
|
2636
2636
|
AspectRatioPrimitive.Root,
|
|
2637
2637
|
{
|
|
@@ -2970,7 +2970,7 @@ var statusDotSizes = {
|
|
|
2970
2970
|
function getInitials(name) {
|
|
2971
2971
|
return name.split(" ").map((part) => part[0]).filter(Boolean).slice(0, 2).join("").toUpperCase();
|
|
2972
2972
|
}
|
|
2973
|
-
var Avatar =
|
|
2973
|
+
var Avatar = React38.forwardRef(
|
|
2974
2974
|
function Avatar2({ src, alt, name, size = "md", variant = "initials", status, className, ...props }, ref) {
|
|
2975
2975
|
const initials = name ? getInitials(name) : "?";
|
|
2976
2976
|
const resolvedSize = size ?? "md";
|
|
@@ -3211,7 +3211,7 @@ function Calendar({
|
|
|
3211
3211
|
classNames,
|
|
3212
3212
|
...props
|
|
3213
3213
|
}) {
|
|
3214
|
-
const { modifiers, modifiersClassNames } =
|
|
3214
|
+
const { modifiers, modifiersClassNames } = React38.useMemo(() => {
|
|
3215
3215
|
const buckets = {};
|
|
3216
3216
|
for (const h of highlights) {
|
|
3217
3217
|
const key = h.color ?? "primary";
|
|
@@ -3226,7 +3226,7 @@ function Calendar({
|
|
|
3226
3226
|
}
|
|
3227
3227
|
return { modifiers: mods, modifiersClassNames: modClasses };
|
|
3228
3228
|
}, [highlights]);
|
|
3229
|
-
const disabledMatcher =
|
|
3229
|
+
const disabledMatcher = React38.useMemo(() => {
|
|
3230
3230
|
if (!minDate && !maxDate) return void 0;
|
|
3231
3231
|
if (minDate && maxDate) return [{ before: minDate }, { after: maxDate }];
|
|
3232
3232
|
if (minDate) return { before: minDate };
|
|
@@ -3393,7 +3393,7 @@ var CategoryDivider = forwardRef(
|
|
|
3393
3393
|
}
|
|
3394
3394
|
);
|
|
3395
3395
|
CategoryDivider.displayName = "CategoryDivider";
|
|
3396
|
-
var Checkbox =
|
|
3396
|
+
var Checkbox = React38.forwardRef(function Checkbox2({
|
|
3397
3397
|
label,
|
|
3398
3398
|
indeterminate,
|
|
3399
3399
|
checked,
|
|
@@ -3403,7 +3403,7 @@ var Checkbox = React37.forwardRef(function Checkbox2({
|
|
|
3403
3403
|
id: providedId,
|
|
3404
3404
|
...props
|
|
3405
3405
|
}, ref) {
|
|
3406
|
-
const generatedId =
|
|
3406
|
+
const generatedId = React38.useId();
|
|
3407
3407
|
const id = providedId ?? generatedId;
|
|
3408
3408
|
const resolvedChecked = indeterminate ? "indeterminate" : checked;
|
|
3409
3409
|
return /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2", children: [
|
|
@@ -3444,7 +3444,7 @@ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
|
3444
3444
|
var SelectRoot = SelectPrimitive.Root;
|
|
3445
3445
|
var SelectGroup = SelectPrimitive.Group;
|
|
3446
3446
|
var SelectValue = SelectPrimitive.Value;
|
|
3447
|
-
var SelectTrigger =
|
|
3447
|
+
var SelectTrigger = React38.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3448
3448
|
SelectPrimitive.Trigger,
|
|
3449
3449
|
{
|
|
3450
3450
|
ref,
|
|
@@ -3475,7 +3475,7 @@ var SelectTrigger = React37.forwardRef(({ className, children, ...props }, ref)
|
|
|
3475
3475
|
}
|
|
3476
3476
|
));
|
|
3477
3477
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
3478
|
-
var SelectScrollUpButton =
|
|
3478
|
+
var SelectScrollUpButton = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3479
3479
|
SelectPrimitive.ScrollUpButton,
|
|
3480
3480
|
{
|
|
3481
3481
|
ref,
|
|
@@ -3485,7 +3485,7 @@ var SelectScrollUpButton = React37.forwardRef(({ className, ...props }, ref) =>
|
|
|
3485
3485
|
}
|
|
3486
3486
|
));
|
|
3487
3487
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
3488
|
-
var SelectScrollDownButton =
|
|
3488
|
+
var SelectScrollDownButton = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3489
3489
|
SelectPrimitive.ScrollDownButton,
|
|
3490
3490
|
{
|
|
3491
3491
|
ref,
|
|
@@ -3495,7 +3495,7 @@ var SelectScrollDownButton = React37.forwardRef(({ className, ...props }, ref) =
|
|
|
3495
3495
|
}
|
|
3496
3496
|
));
|
|
3497
3497
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
3498
|
-
var SelectContent =
|
|
3498
|
+
var SelectContent = React38.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
|
|
3499
3499
|
SelectPrimitive.Content,
|
|
3500
3500
|
{
|
|
3501
3501
|
ref,
|
|
@@ -3529,7 +3529,7 @@ var SelectContent = React37.forwardRef(({ className, children, position = "poppe
|
|
|
3529
3529
|
}
|
|
3530
3530
|
) }));
|
|
3531
3531
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
3532
|
-
var SelectLabel =
|
|
3532
|
+
var SelectLabel = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3533
3533
|
SelectPrimitive.Label,
|
|
3534
3534
|
{
|
|
3535
3535
|
ref,
|
|
@@ -3541,7 +3541,7 @@ var SelectLabel = React37.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
3541
3541
|
}
|
|
3542
3542
|
));
|
|
3543
3543
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
3544
|
-
var SelectItem =
|
|
3544
|
+
var SelectItem = React38.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3545
3545
|
SelectPrimitive.Item,
|
|
3546
3546
|
{
|
|
3547
3547
|
ref,
|
|
@@ -3562,7 +3562,7 @@ var SelectItem = React37.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
3562
3562
|
}
|
|
3563
3563
|
));
|
|
3564
3564
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
3565
|
-
var SelectSeparator =
|
|
3565
|
+
var SelectSeparator = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3566
3566
|
SelectPrimitive.Separator,
|
|
3567
3567
|
{
|
|
3568
3568
|
ref,
|
|
@@ -3647,11 +3647,11 @@ function ClientSelect({
|
|
|
3647
3647
|
] });
|
|
3648
3648
|
}
|
|
3649
3649
|
ClientSelect.displayName = "ClientSelect";
|
|
3650
|
-
var Collapsible =
|
|
3650
|
+
var Collapsible = React38.forwardRef(function Collapsible2({ className, ...props }, ref) {
|
|
3651
3651
|
return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, { ref, className: cn(className), ...props });
|
|
3652
3652
|
});
|
|
3653
3653
|
Collapsible.displayName = CollapsiblePrimitive.Root.displayName;
|
|
3654
|
-
var CollapsibleTrigger =
|
|
3654
|
+
var CollapsibleTrigger = React38.forwardRef(function CollapsibleTrigger2({ className, ...props }, ref) {
|
|
3655
3655
|
return /* @__PURE__ */ jsx(
|
|
3656
3656
|
CollapsiblePrimitive.Trigger,
|
|
3657
3657
|
{
|
|
@@ -3666,7 +3666,7 @@ var CollapsibleTrigger = React37.forwardRef(function CollapsibleTrigger2({ class
|
|
|
3666
3666
|
);
|
|
3667
3667
|
});
|
|
3668
3668
|
CollapsibleTrigger.displayName = CollapsiblePrimitive.Trigger.displayName;
|
|
3669
|
-
var CollapsibleContent =
|
|
3669
|
+
var CollapsibleContent = React38.forwardRef(function CollapsibleContent2({ className, ...props }, ref) {
|
|
3670
3670
|
return /* @__PURE__ */ jsx(
|
|
3671
3671
|
CollapsiblePrimitive.Content,
|
|
3672
3672
|
{
|
|
@@ -3743,7 +3743,7 @@ ComingSoon.displayName = "ComingSoon";
|
|
|
3743
3743
|
var Dialog = DialogPrimitive.Root;
|
|
3744
3744
|
var DialogTrigger = DialogPrimitive.Trigger;
|
|
3745
3745
|
var DialogPortal = DialogPrimitive.Portal;
|
|
3746
|
-
var DialogOverlay =
|
|
3746
|
+
var DialogOverlay = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3747
3747
|
DialogPrimitive.Overlay,
|
|
3748
3748
|
{
|
|
3749
3749
|
ref,
|
|
@@ -3764,7 +3764,7 @@ var dialogSizeStyles = {
|
|
|
3764
3764
|
lg: "max-w-2xl",
|
|
3765
3765
|
full: "max-w-[calc(100vw-2rem)]"
|
|
3766
3766
|
};
|
|
3767
|
-
var DialogContent =
|
|
3767
|
+
var DialogContent = React38.forwardRef(({ size = "md", showCloseButton = true, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
3768
3768
|
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
3769
3769
|
/* @__PURE__ */ jsxs(
|
|
3770
3770
|
DialogPrimitive.Content,
|
|
@@ -3805,7 +3805,7 @@ var DialogContent = React37.forwardRef(({ size = "md", showCloseButton = true, c
|
|
|
3805
3805
|
)
|
|
3806
3806
|
] }));
|
|
3807
3807
|
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
3808
|
-
var DialogClose =
|
|
3808
|
+
var DialogClose = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Close, { ref, className: cn(className), ...props }));
|
|
3809
3809
|
DialogClose.displayName = "DialogClose";
|
|
3810
3810
|
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("mb-4 flex flex-col gap-1.5 pr-8", className), ...props });
|
|
3811
3811
|
DialogHeader.displayName = "DialogHeader";
|
|
@@ -3820,7 +3820,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
3820
3820
|
}
|
|
3821
3821
|
);
|
|
3822
3822
|
DialogFooter.displayName = "DialogFooter";
|
|
3823
|
-
var DialogTitle =
|
|
3823
|
+
var DialogTitle = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3824
3824
|
DialogPrimitive.Title,
|
|
3825
3825
|
{
|
|
3826
3826
|
ref,
|
|
@@ -3832,7 +3832,7 @@ var DialogTitle = React37.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
3832
3832
|
}
|
|
3833
3833
|
));
|
|
3834
3834
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
3835
|
-
var DialogDescription =
|
|
3835
|
+
var DialogDescription = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3836
3836
|
DialogPrimitive.Description,
|
|
3837
3837
|
{
|
|
3838
3838
|
ref,
|
|
@@ -3862,17 +3862,17 @@ function CommandPalette({
|
|
|
3862
3862
|
onOpenChange,
|
|
3863
3863
|
placeholder = "Type a command or search..."
|
|
3864
3864
|
}) {
|
|
3865
|
-
const [internalOpen, setInternalOpen] =
|
|
3865
|
+
const [internalOpen, setInternalOpen] = React38.useState(false);
|
|
3866
3866
|
const isControlled = controlledOpen !== void 0;
|
|
3867
3867
|
const open = isControlled ? controlledOpen : internalOpen;
|
|
3868
|
-
const setOpen =
|
|
3868
|
+
const setOpen = React38.useCallback(
|
|
3869
3869
|
(value) => {
|
|
3870
3870
|
if (!isControlled) setInternalOpen(value);
|
|
3871
3871
|
onOpenChange?.(value);
|
|
3872
3872
|
},
|
|
3873
3873
|
[isControlled, onOpenChange]
|
|
3874
3874
|
);
|
|
3875
|
-
|
|
3875
|
+
React38.useEffect(() => {
|
|
3876
3876
|
function handleKeyDown(e) {
|
|
3877
3877
|
if ((e.metaKey || e.ctrlKey) && e.key === "k") {
|
|
3878
3878
|
e.preventDefault();
|
|
@@ -4027,10 +4027,10 @@ function ConfirmActionButton({
|
|
|
4027
4027
|
onOpenChange
|
|
4028
4028
|
}) {
|
|
4029
4029
|
const isControlled = open !== void 0;
|
|
4030
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
4030
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React38.useState(defaultOpen);
|
|
4031
4031
|
const resolvedOpen = isControlled ? open : uncontrolledOpen;
|
|
4032
|
-
const [pending, setPending] =
|
|
4033
|
-
const setDialogOpen =
|
|
4032
|
+
const [pending, setPending] = React38.useState(false);
|
|
4033
|
+
const setDialogOpen = React38.useCallback(
|
|
4034
4034
|
(nextOpen) => {
|
|
4035
4035
|
onOpenChange?.(nextOpen);
|
|
4036
4036
|
if (!isControlled) {
|
|
@@ -4089,7 +4089,7 @@ var ContextMenuGroup = ContextMenuPrimitive.Group;
|
|
|
4089
4089
|
var ContextMenuPortal = ContextMenuPrimitive.Portal;
|
|
4090
4090
|
var ContextMenuSub = ContextMenuPrimitive.Sub;
|
|
4091
4091
|
var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
|
|
4092
|
-
var ContextMenuSubTrigger =
|
|
4092
|
+
var ContextMenuSubTrigger = React38.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4093
4093
|
ContextMenuPrimitive.SubTrigger,
|
|
4094
4094
|
{
|
|
4095
4095
|
ref,
|
|
@@ -4110,7 +4110,7 @@ var ContextMenuSubTrigger = React37.forwardRef(({ className, inset, children, ..
|
|
|
4110
4110
|
}
|
|
4111
4111
|
));
|
|
4112
4112
|
ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
|
|
4113
|
-
var ContextMenuSubContent =
|
|
4113
|
+
var ContextMenuSubContent = React38.forwardRef(({ className, ...props }, ref) => (
|
|
4114
4114
|
// Portal the sub-content to the body. The parent Content keeps a persistent
|
|
4115
4115
|
// `scale-100` transform (its open-state animation), which makes it the
|
|
4116
4116
|
// containing block for `position: fixed` descendants — and its
|
|
@@ -4133,7 +4133,7 @@ var ContextMenuSubContent = React37.forwardRef(({ className, ...props }, ref) =>
|
|
|
4133
4133
|
) })
|
|
4134
4134
|
));
|
|
4135
4135
|
ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
|
|
4136
|
-
var ContextMenuContent =
|
|
4136
|
+
var ContextMenuContent = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
4137
4137
|
ContextMenuPrimitive.Content,
|
|
4138
4138
|
{
|
|
4139
4139
|
ref,
|
|
@@ -4149,7 +4149,7 @@ var ContextMenuContent = React37.forwardRef(({ className, ...props }, ref) => /*
|
|
|
4149
4149
|
}
|
|
4150
4150
|
) }));
|
|
4151
4151
|
ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
|
|
4152
|
-
var ContextMenuItem =
|
|
4152
|
+
var ContextMenuItem = React38.forwardRef(({ className, destructive, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4153
4153
|
ContextMenuPrimitive.Item,
|
|
4154
4154
|
{
|
|
4155
4155
|
ref,
|
|
@@ -4167,7 +4167,7 @@ var ContextMenuItem = React37.forwardRef(({ className, destructive, inset, ...pr
|
|
|
4167
4167
|
}
|
|
4168
4168
|
));
|
|
4169
4169
|
ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
|
|
4170
|
-
var ContextMenuCheckboxItem =
|
|
4170
|
+
var ContextMenuCheckboxItem = React38.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4171
4171
|
ContextMenuPrimitive.CheckboxItem,
|
|
4172
4172
|
{
|
|
4173
4173
|
ref,
|
|
@@ -4187,7 +4187,7 @@ var ContextMenuCheckboxItem = React37.forwardRef(({ className, children, checked
|
|
|
4187
4187
|
}
|
|
4188
4188
|
));
|
|
4189
4189
|
ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
|
|
4190
|
-
var ContextMenuRadioItem =
|
|
4190
|
+
var ContextMenuRadioItem = React38.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4191
4191
|
ContextMenuPrimitive.RadioItem,
|
|
4192
4192
|
{
|
|
4193
4193
|
ref,
|
|
@@ -4206,7 +4206,7 @@ var ContextMenuRadioItem = React37.forwardRef(({ className, children, ...props }
|
|
|
4206
4206
|
}
|
|
4207
4207
|
));
|
|
4208
4208
|
ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
|
|
4209
|
-
var ContextMenuLabel =
|
|
4209
|
+
var ContextMenuLabel = React38.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4210
4210
|
ContextMenuPrimitive.Label,
|
|
4211
4211
|
{
|
|
4212
4212
|
ref,
|
|
@@ -4219,7 +4219,7 @@ var ContextMenuLabel = React37.forwardRef(({ className, inset, ...props }, ref)
|
|
|
4219
4219
|
}
|
|
4220
4220
|
));
|
|
4221
4221
|
ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
|
|
4222
|
-
var ContextMenuSeparator =
|
|
4222
|
+
var ContextMenuSeparator = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4223
4223
|
ContextMenuPrimitive.Separator,
|
|
4224
4224
|
{
|
|
4225
4225
|
ref,
|
|
@@ -4314,7 +4314,7 @@ var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
|
4314
4314
|
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
4315
4315
|
var PopoverPortal = PopoverPrimitive.Portal;
|
|
4316
4316
|
var PopoverClose = PopoverPrimitive.Close;
|
|
4317
|
-
var PopoverContent =
|
|
4317
|
+
var PopoverContent = React38.forwardRef(({ className, align = "center", side = "bottom", sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
4318
4318
|
PopoverPrimitive.Content,
|
|
4319
4319
|
{
|
|
4320
4320
|
ref,
|
|
@@ -4859,7 +4859,7 @@ var chipVariants = cva(
|
|
|
4859
4859
|
}
|
|
4860
4860
|
}
|
|
4861
4861
|
);
|
|
4862
|
-
var DismissibleChip =
|
|
4862
|
+
var DismissibleChip = React38.forwardRef(function DismissibleChip2({ label, onDismiss, variant, className, ...props }, ref) {
|
|
4863
4863
|
return /* @__PURE__ */ jsxs(
|
|
4864
4864
|
"button",
|
|
4865
4865
|
{
|
|
@@ -4876,6 +4876,29 @@ var DismissibleChip = React37.forwardRef(function DismissibleChip2({ label, onDi
|
|
|
4876
4876
|
}
|
|
4877
4877
|
);
|
|
4878
4878
|
});
|
|
4879
|
+
var DocumentsWorkspaceLayout = forwardRef(function DocumentsWorkspaceLayout2({ clientsRail, folderTree, filesArea, className, ...props }, ref) {
|
|
4880
|
+
return /* @__PURE__ */ jsxs(
|
|
4881
|
+
"div",
|
|
4882
|
+
{
|
|
4883
|
+
ref,
|
|
4884
|
+
className: cn(
|
|
4885
|
+
// Root: fills parent, no self-scroll, 2-col base → 3-col at lg/xl
|
|
4886
|
+
"grid h-full min-h-0 overflow-hidden bg-surface",
|
|
4887
|
+
"grid-cols-[240px_minmax(0,1fr)]",
|
|
4888
|
+
"lg:grid-cols-[248px_220px_minmax(0,1fr)]",
|
|
4889
|
+
"xl:grid-cols-[280px_244px_minmax(0,1fr)]",
|
|
4890
|
+
className
|
|
4891
|
+
),
|
|
4892
|
+
...props,
|
|
4893
|
+
children: [
|
|
4894
|
+
/* @__PURE__ */ jsx("div", { className: "flex min-h-0 min-w-0 flex-col border-r border-rule bg-surface", children: clientsRail }),
|
|
4895
|
+
/* @__PURE__ */ jsx("div", { className: "hidden min-h-0 min-w-0 flex-col border-r border-rule bg-surface lg:flex", children: folderTree }),
|
|
4896
|
+
/* @__PURE__ */ jsx("div", { className: "flex min-h-0 min-w-0 flex-col bg-bg", children: filesArea })
|
|
4897
|
+
]
|
|
4898
|
+
}
|
|
4899
|
+
);
|
|
4900
|
+
});
|
|
4901
|
+
DocumentsWorkspaceLayout.displayName = "DocumentsWorkspaceLayout";
|
|
4879
4902
|
var RAMP = [
|
|
4880
4903
|
"var(--color-chart-1)",
|
|
4881
4904
|
"var(--color-chart-2)",
|
|
@@ -4999,7 +5022,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
|
4999
5022
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
5000
5023
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
5001
5024
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
5002
|
-
var DropdownMenuSubTrigger =
|
|
5025
|
+
var DropdownMenuSubTrigger = React38.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5003
5026
|
DropdownMenuPrimitive.SubTrigger,
|
|
5004
5027
|
{
|
|
5005
5028
|
ref,
|
|
@@ -5020,7 +5043,7 @@ var DropdownMenuSubTrigger = React37.forwardRef(({ className, inset, children, .
|
|
|
5020
5043
|
}
|
|
5021
5044
|
));
|
|
5022
5045
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
5023
|
-
var DropdownMenuSubContent =
|
|
5046
|
+
var DropdownMenuSubContent = React38.forwardRef(({ className, ...props }, ref) => (
|
|
5024
5047
|
// Portal the sub-content to the body. The parent Content keeps a persistent
|
|
5025
5048
|
// `scale-100` transform (its open-state animation), which makes it the
|
|
5026
5049
|
// containing block for `position: fixed` descendants — and its
|
|
@@ -5043,7 +5066,7 @@ var DropdownMenuSubContent = React37.forwardRef(({ className, ...props }, ref) =
|
|
|
5043
5066
|
) })
|
|
5044
5067
|
));
|
|
5045
5068
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
5046
|
-
var DropdownMenuContent =
|
|
5069
|
+
var DropdownMenuContent = React38.forwardRef(({ className, sideOffset = 6, align = "start", ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
5047
5070
|
DropdownMenuPrimitive.Content,
|
|
5048
5071
|
{
|
|
5049
5072
|
ref,
|
|
@@ -5061,7 +5084,7 @@ var DropdownMenuContent = React37.forwardRef(({ className, sideOffset = 6, align
|
|
|
5061
5084
|
}
|
|
5062
5085
|
) }));
|
|
5063
5086
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
5064
|
-
var DropdownMenuItem =
|
|
5087
|
+
var DropdownMenuItem = React38.forwardRef(({ className, destructive, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5065
5088
|
DropdownMenuPrimitive.Item,
|
|
5066
5089
|
{
|
|
5067
5090
|
ref,
|
|
@@ -5079,7 +5102,7 @@ var DropdownMenuItem = React37.forwardRef(({ className, destructive, inset, ...p
|
|
|
5079
5102
|
}
|
|
5080
5103
|
));
|
|
5081
5104
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
5082
|
-
var DropdownMenuCheckboxItem =
|
|
5105
|
+
var DropdownMenuCheckboxItem = React38.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5083
5106
|
DropdownMenuPrimitive.CheckboxItem,
|
|
5084
5107
|
{
|
|
5085
5108
|
ref,
|
|
@@ -5099,7 +5122,7 @@ var DropdownMenuCheckboxItem = React37.forwardRef(({ className, children, checke
|
|
|
5099
5122
|
}
|
|
5100
5123
|
));
|
|
5101
5124
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
5102
|
-
var DropdownMenuRadioItem =
|
|
5125
|
+
var DropdownMenuRadioItem = React38.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5103
5126
|
DropdownMenuPrimitive.RadioItem,
|
|
5104
5127
|
{
|
|
5105
5128
|
ref,
|
|
@@ -5118,7 +5141,7 @@ var DropdownMenuRadioItem = React37.forwardRef(({ className, children, ...props
|
|
|
5118
5141
|
}
|
|
5119
5142
|
));
|
|
5120
5143
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
5121
|
-
var DropdownMenuLabel =
|
|
5144
|
+
var DropdownMenuLabel = React38.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5122
5145
|
DropdownMenuPrimitive.Label,
|
|
5123
5146
|
{
|
|
5124
5147
|
ref,
|
|
@@ -5131,7 +5154,7 @@ var DropdownMenuLabel = React37.forwardRef(({ className, inset, ...props }, ref)
|
|
|
5131
5154
|
}
|
|
5132
5155
|
));
|
|
5133
5156
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
5134
|
-
var DropdownMenuSeparator =
|
|
5157
|
+
var DropdownMenuSeparator = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5135
5158
|
DropdownMenuPrimitive.Separator,
|
|
5136
5159
|
{
|
|
5137
5160
|
ref,
|
|
@@ -5384,7 +5407,7 @@ FormSection.displayName = "FormSection";
|
|
|
5384
5407
|
var HoverCard = HoverCardPrimitive.Root;
|
|
5385
5408
|
var HoverCardTrigger = HoverCardPrimitive.Trigger;
|
|
5386
5409
|
var HoverCardPortal = HoverCardPrimitive.Portal;
|
|
5387
|
-
var HoverCardContent =
|
|
5410
|
+
var HoverCardContent = React38.forwardRef(({ className, align = "center", side = "bottom", sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
5388
5411
|
HoverCardPrimitive.Content,
|
|
5389
5412
|
{
|
|
5390
5413
|
ref,
|
|
@@ -5556,8 +5579,8 @@ function KeyboardShortcutsDialog({
|
|
|
5556
5579
|
sections,
|
|
5557
5580
|
hotkey = "?"
|
|
5558
5581
|
} = {}) {
|
|
5559
|
-
const [open, setOpen] =
|
|
5560
|
-
|
|
5582
|
+
const [open, setOpen] = React38.useState(false);
|
|
5583
|
+
React38.useEffect(() => {
|
|
5561
5584
|
if (hotkey === null) return;
|
|
5562
5585
|
function handleKeyDown(e) {
|
|
5563
5586
|
const target = e.target;
|
|
@@ -5595,7 +5618,7 @@ function KeyboardShortcutsDialog({
|
|
|
5595
5618
|
className: "flex items-center justify-between gap-3 py-1",
|
|
5596
5619
|
children: [
|
|
5597
5620
|
/* @__PURE__ */ jsx("span", { className: "text-fg text-sm", children: shortcut.description }),
|
|
5598
|
-
/* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: shortcut.keys.map((key, i) => /* @__PURE__ */ jsxs(
|
|
5621
|
+
/* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: shortcut.keys.map((key, i) => /* @__PURE__ */ jsxs(React38.Fragment, { children: [
|
|
5599
5622
|
i > 0 && /* @__PURE__ */ jsx("span", { className: "text-fg-4 mx-0.5 text-[11px]", children: "then" }),
|
|
5600
5623
|
/* @__PURE__ */ jsx("kbd", { className: kbdClass2, children: key })
|
|
5601
5624
|
] }, i)) })
|
|
@@ -5614,7 +5637,7 @@ function KeyboardShortcutsDialog({
|
|
|
5614
5637
|
var labelVariants = cva(
|
|
5615
5638
|
"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"
|
|
5616
5639
|
);
|
|
5617
|
-
var Label4 =
|
|
5640
|
+
var Label4 = React38.forwardRef(
|
|
5618
5641
|
function Label5({ children, required, className, ...props }, ref) {
|
|
5619
5642
|
return /* @__PURE__ */ jsxs(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props, children: [
|
|
5620
5643
|
children,
|
|
@@ -6019,7 +6042,7 @@ function MultiSelectField({
|
|
|
6019
6042
|
size = "md",
|
|
6020
6043
|
id
|
|
6021
6044
|
}) {
|
|
6022
|
-
const selected =
|
|
6045
|
+
const selected = React38.useMemo(
|
|
6023
6046
|
() => new Set(value ? value.split(",").filter(Boolean) : []),
|
|
6024
6047
|
[value]
|
|
6025
6048
|
);
|
|
@@ -6032,7 +6055,7 @@ function MultiSelectField({
|
|
|
6032
6055
|
}
|
|
6033
6056
|
onChange(Array.from(next).join(","));
|
|
6034
6057
|
};
|
|
6035
|
-
const generatedId =
|
|
6058
|
+
const generatedId = React38.useId();
|
|
6036
6059
|
const groupId = id ?? generatedId;
|
|
6037
6060
|
return /* @__PURE__ */ jsxs("div", { className: cn("w-full", className), children: [
|
|
6038
6061
|
/* @__PURE__ */ jsx(
|
|
@@ -6861,12 +6884,12 @@ var ProgressRing = forwardRef(function ProgressRing2({ value, max = 100, size =
|
|
|
6861
6884
|
);
|
|
6862
6885
|
});
|
|
6863
6886
|
ProgressRing.displayName = "ProgressRing";
|
|
6864
|
-
var RadioGroup3 =
|
|
6887
|
+
var RadioGroup3 = React38.forwardRef(function RadioGroup4({ className, ...props }, ref) {
|
|
6865
6888
|
return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, { ref, className: cn("grid gap-2", className), ...props });
|
|
6866
6889
|
});
|
|
6867
6890
|
RadioGroup3.displayName = RadioGroupPrimitive.Root.displayName;
|
|
6868
|
-
var RadioGroupItem =
|
|
6869
|
-
const generatedId =
|
|
6891
|
+
var RadioGroupItem = React38.forwardRef(function RadioGroupItem2({ className, label, id: providedId, ...props }, ref) {
|
|
6892
|
+
const generatedId = React38.useId();
|
|
6870
6893
|
const id = providedId ?? generatedId;
|
|
6871
6894
|
const root = /* @__PURE__ */ jsx(
|
|
6872
6895
|
RadioGroupPrimitive.Item,
|
|
@@ -6951,13 +6974,13 @@ var RankedBars = forwardRef(function RankedBars2({ items, className, ...props },
|
|
|
6951
6974
|
}) });
|
|
6952
6975
|
});
|
|
6953
6976
|
RankedBars.displayName = "RankedBars";
|
|
6954
|
-
var SheetSideContext =
|
|
6977
|
+
var SheetSideContext = React38.createContext({});
|
|
6955
6978
|
var Sheet = ({ side, children, ...props }) => /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...props, children: /* @__PURE__ */ jsx(SheetSideContext, { value: { side }, children }) });
|
|
6956
6979
|
Sheet.displayName = "Sheet";
|
|
6957
6980
|
var SheetTrigger = DialogPrimitive.Trigger;
|
|
6958
6981
|
var SheetClose = DialogPrimitive.Close;
|
|
6959
6982
|
var SheetPortal = DialogPrimitive.Portal;
|
|
6960
|
-
var SheetOverlay =
|
|
6983
|
+
var SheetOverlay = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
6961
6984
|
DialogPrimitive.Overlay,
|
|
6962
6985
|
{
|
|
6963
6986
|
ref,
|
|
@@ -7009,9 +7032,9 @@ var sheetWidthClasses = {
|
|
|
7009
7032
|
xl: "w-[95vw] max-w-[95vw] sm:w-[760px]",
|
|
7010
7033
|
full: "w-full max-w-none"
|
|
7011
7034
|
};
|
|
7012
|
-
var SheetContent =
|
|
7035
|
+
var SheetContent = React38.forwardRef(
|
|
7013
7036
|
({ side, width = "default", customWidth, className, children, showCloseButton = true, style, ...props }, ref) => {
|
|
7014
|
-
const ctx =
|
|
7037
|
+
const ctx = React38.use(SheetSideContext);
|
|
7015
7038
|
const resolvedSide = side ?? ctx.side ?? "right";
|
|
7016
7039
|
const supportsWidth = resolvedSide === "left" || resolvedSide === "right";
|
|
7017
7040
|
const widthClass = supportsWidth && width !== "default" ? sheetWidthClasses[width] : null;
|
|
@@ -7061,7 +7084,7 @@ var SheetFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
7061
7084
|
}
|
|
7062
7085
|
);
|
|
7063
7086
|
SheetFooter.displayName = "SheetFooter";
|
|
7064
|
-
var SheetTitle =
|
|
7087
|
+
var SheetTitle = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7065
7088
|
DialogPrimitive.Title,
|
|
7066
7089
|
{
|
|
7067
7090
|
ref,
|
|
@@ -7073,12 +7096,12 @@ var SheetTitle = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
7073
7096
|
}
|
|
7074
7097
|
));
|
|
7075
7098
|
SheetTitle.displayName = DialogPrimitive.Title.displayName;
|
|
7076
|
-
var SheetDescription =
|
|
7099
|
+
var SheetDescription = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Description, { ref, className: cn("text-fg-3 text-sm", className), ...props }));
|
|
7077
7100
|
SheetDescription.displayName = DialogPrimitive.Description.displayName;
|
|
7078
7101
|
var MOBILE_QUERY = "(max-width: 639.98px)";
|
|
7079
7102
|
function useIsMobile() {
|
|
7080
|
-
const [state, setState] =
|
|
7081
|
-
|
|
7103
|
+
const [state, setState] = React38.useState({ isMobile: false, mounted: false });
|
|
7104
|
+
React38.useEffect(() => {
|
|
7082
7105
|
const mql = window.matchMedia(MOBILE_QUERY);
|
|
7083
7106
|
const update = () => setState({ isMobile: mql.matches, mounted: true });
|
|
7084
7107
|
update();
|
|
@@ -7099,7 +7122,7 @@ function ResponsiveDialog({
|
|
|
7099
7122
|
size = "md"
|
|
7100
7123
|
}) {
|
|
7101
7124
|
const { isMobile, mounted } = useIsMobile();
|
|
7102
|
-
const close =
|
|
7125
|
+
const close = React38.useCallback(() => onOpenChange(false), [onOpenChange]);
|
|
7103
7126
|
const resolvedFooter = typeof footer === "function" ? footer(close) : footer;
|
|
7104
7127
|
const hasHeader = Boolean(title || description);
|
|
7105
7128
|
if (mounted && isMobile) {
|
|
@@ -7161,7 +7184,7 @@ var RouteTransition = forwardRef(
|
|
|
7161
7184
|
}
|
|
7162
7185
|
);
|
|
7163
7186
|
RouteTransition.displayName = "RouteTransition";
|
|
7164
|
-
var ScrollArea =
|
|
7187
|
+
var ScrollArea = React38.forwardRef(function ScrollArea2({ className, children, ...props }, ref) {
|
|
7165
7188
|
return /* @__PURE__ */ jsxs(
|
|
7166
7189
|
ScrollAreaPrimitive.Root,
|
|
7167
7190
|
{
|
|
@@ -7184,7 +7207,7 @@ var ScrollArea = React37.forwardRef(function ScrollArea2({ className, children,
|
|
|
7184
7207
|
);
|
|
7185
7208
|
});
|
|
7186
7209
|
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
7187
|
-
var ScrollBar =
|
|
7210
|
+
var ScrollBar = React38.forwardRef(function ScrollBar2({ className, orientation = "vertical", ...props }, ref) {
|
|
7188
7211
|
return /* @__PURE__ */ jsx(
|
|
7189
7212
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
7190
7213
|
{
|
|
@@ -7249,7 +7272,7 @@ var searchInputVariants = cva(
|
|
|
7249
7272
|
}
|
|
7250
7273
|
}
|
|
7251
7274
|
);
|
|
7252
|
-
var SearchInput =
|
|
7275
|
+
var SearchInput = React38.forwardRef(
|
|
7253
7276
|
function SearchInput2({
|
|
7254
7277
|
value,
|
|
7255
7278
|
onValueChange,
|
|
@@ -7262,8 +7285,8 @@ var SearchInput = React37.forwardRef(
|
|
|
7262
7285
|
...props
|
|
7263
7286
|
}, ref) {
|
|
7264
7287
|
const debouncedValue = useDebounce(value, debounceMs);
|
|
7265
|
-
const isFirstRender =
|
|
7266
|
-
|
|
7288
|
+
const isFirstRender = React38.useRef(true);
|
|
7289
|
+
React38.useEffect(() => {
|
|
7267
7290
|
if (isFirstRender.current) {
|
|
7268
7291
|
isFirstRender.current = false;
|
|
7269
7292
|
return;
|
|
@@ -7341,15 +7364,15 @@ function SearchSelect({
|
|
|
7341
7364
|
descriptionVariant = "inline"
|
|
7342
7365
|
}) {
|
|
7343
7366
|
const isSingleMode = value !== void 0 || onValueChange !== void 0;
|
|
7344
|
-
const singleSelectedOption =
|
|
7367
|
+
const singleSelectedOption = React38.useMemo(
|
|
7345
7368
|
() => isSingleMode && value ? options.find((o) => o.id === value) ?? null : null,
|
|
7346
7369
|
[isSingleMode, value, options]
|
|
7347
7370
|
);
|
|
7348
|
-
const selected =
|
|
7371
|
+
const selected = React38.useMemo(
|
|
7349
7372
|
() => isSingleMode ? singleSelectedOption ? [singleSelectedOption] : [] : selectedProp ?? [],
|
|
7350
7373
|
[isSingleMode, singleSelectedOption, selectedProp]
|
|
7351
7374
|
);
|
|
7352
|
-
const onSelect =
|
|
7375
|
+
const onSelect = React38.useCallback(
|
|
7353
7376
|
(option) => {
|
|
7354
7377
|
if (isSingleMode) {
|
|
7355
7378
|
onValueChange?.(option.id);
|
|
@@ -7359,7 +7382,7 @@ function SearchSelect({
|
|
|
7359
7382
|
},
|
|
7360
7383
|
[isSingleMode, onValueChange, onSelectProp]
|
|
7361
7384
|
);
|
|
7362
|
-
const onRemove =
|
|
7385
|
+
const onRemove = React38.useCallback(
|
|
7363
7386
|
(option) => {
|
|
7364
7387
|
if (isSingleMode) {
|
|
7365
7388
|
onValueChange?.("");
|
|
@@ -7370,15 +7393,15 @@ function SearchSelect({
|
|
|
7370
7393
|
[isSingleMode, onValueChange, onRemoveProp]
|
|
7371
7394
|
);
|
|
7372
7395
|
const closeOnSelect = isSingleMode || closeOnSelectProp;
|
|
7373
|
-
const [search, setSearch] =
|
|
7374
|
-
const [open, setOpen] =
|
|
7375
|
-
const [activeChip, setActiveChip] =
|
|
7376
|
-
const selectedIds =
|
|
7377
|
-
const filtered =
|
|
7396
|
+
const [search, setSearch] = React38.useState("");
|
|
7397
|
+
const [open, setOpen] = React38.useState(false);
|
|
7398
|
+
const [activeChip, setActiveChip] = React38.useState(null);
|
|
7399
|
+
const selectedIds = React38.useMemo(() => new Set(selected.map((s) => s.id)), [selected]);
|
|
7400
|
+
const filtered = React38.useMemo(
|
|
7378
7401
|
() => options.filter((opt) => !selectedIds.has(opt.id)),
|
|
7379
7402
|
[options, selectedIds]
|
|
7380
7403
|
);
|
|
7381
|
-
const groups =
|
|
7404
|
+
const groups = React38.useMemo(() => {
|
|
7382
7405
|
const order = [];
|
|
7383
7406
|
const byGroup = /* @__PURE__ */ new Map();
|
|
7384
7407
|
for (const opt of filtered) {
|
|
@@ -7390,25 +7413,25 @@ function SearchSelect({
|
|
|
7390
7413
|
}
|
|
7391
7414
|
return order.map((g) => [g, byGroup.get(g)]);
|
|
7392
7415
|
}, [filtered]);
|
|
7393
|
-
const hasGroups =
|
|
7394
|
-
const pinnedSet =
|
|
7395
|
-
const chips =
|
|
7416
|
+
const hasGroups = React38.useMemo(() => groups.some(([g]) => g != null), [groups]);
|
|
7417
|
+
const pinnedSet = React38.useMemo(() => new Set(pinnedGroups ?? []), [pinnedGroups]);
|
|
7418
|
+
const chips = React38.useMemo(() => {
|
|
7396
7419
|
if (!groupFilter || !hasGroups) return [];
|
|
7397
7420
|
return groups.map(([g]) => g).filter((g) => g != null && !pinnedSet.has(g));
|
|
7398
7421
|
}, [groupFilter, hasGroups, groups, pinnedSet]);
|
|
7399
|
-
const visibleGroups =
|
|
7422
|
+
const visibleGroups = React38.useMemo(() => {
|
|
7400
7423
|
if (chips.length > 0 && activeChip) {
|
|
7401
7424
|
return groups.filter(([g]) => g === activeChip);
|
|
7402
7425
|
}
|
|
7403
7426
|
return groups;
|
|
7404
7427
|
}, [groups, chips.length, activeChip]);
|
|
7405
7428
|
const trimmedSearch = search.trim();
|
|
7406
|
-
const hasExactMatch =
|
|
7429
|
+
const hasExactMatch = React38.useMemo(
|
|
7407
7430
|
() => options.some((opt) => opt.label.toLowerCase() === trimmedSearch.toLowerCase()),
|
|
7408
7431
|
[options, trimmedSearch]
|
|
7409
7432
|
);
|
|
7410
7433
|
const showCreate = !!onCreate && trimmedSearch.length > 0 && !hasExactMatch;
|
|
7411
|
-
const handleSelect =
|
|
7434
|
+
const handleSelect = React38.useCallback(
|
|
7412
7435
|
(option) => {
|
|
7413
7436
|
onSelect(option);
|
|
7414
7437
|
setSearch("");
|
|
@@ -7416,16 +7439,16 @@ function SearchSelect({
|
|
|
7416
7439
|
},
|
|
7417
7440
|
[onSelect, closeOnSelect]
|
|
7418
7441
|
);
|
|
7419
|
-
const handleCreate =
|
|
7442
|
+
const handleCreate = React38.useCallback(() => {
|
|
7420
7443
|
if (onCreate && trimmedSearch) {
|
|
7421
7444
|
onCreate(trimmedSearch);
|
|
7422
7445
|
setSearch("");
|
|
7423
7446
|
setOpen(false);
|
|
7424
7447
|
}
|
|
7425
7448
|
}, [onCreate, trimmedSearch]);
|
|
7426
|
-
const inputRef =
|
|
7427
|
-
const listboxId =
|
|
7428
|
-
const setInputRef =
|
|
7449
|
+
const inputRef = React38.useRef(null);
|
|
7450
|
+
const listboxId = React38.useId();
|
|
7451
|
+
const setInputRef = React38.useCallback((node) => {
|
|
7429
7452
|
inputRef.current = node;
|
|
7430
7453
|
node?.removeAttribute("aria-labelledby");
|
|
7431
7454
|
node?.setAttribute("aria-controls", listboxId);
|
|
@@ -7434,12 +7457,12 @@ function SearchSelect({
|
|
|
7434
7457
|
const singleValue = closeOnSelect ? selected[0] ?? null : null;
|
|
7435
7458
|
const showValue = singleValue !== null && !open;
|
|
7436
7459
|
const popoverOpen = open && !disabled;
|
|
7437
|
-
|
|
7460
|
+
React38.useEffect(() => {
|
|
7438
7461
|
inputRef.current?.removeAttribute("aria-labelledby");
|
|
7439
7462
|
inputRef.current?.setAttribute("aria-controls", listboxId);
|
|
7440
7463
|
inputRef.current?.removeAttribute("aria-activedescendant");
|
|
7441
7464
|
});
|
|
7442
|
-
|
|
7465
|
+
React38.useEffect(() => {
|
|
7443
7466
|
if (open && closeOnSelect) {
|
|
7444
7467
|
const raf = requestAnimationFrame(() => inputRef.current?.focus());
|
|
7445
7468
|
return () => cancelAnimationFrame(raf);
|
|
@@ -7884,7 +7907,7 @@ var SegmentedProgress = forwardRef(
|
|
|
7884
7907
|
}
|
|
7885
7908
|
);
|
|
7886
7909
|
SegmentedProgress.displayName = "SegmentedProgress";
|
|
7887
|
-
var Separator4 =
|
|
7910
|
+
var Separator4 = React38.forwardRef(function Separator5({ className, orientation = "horizontal", decorative = true, ...props }, ref) {
|
|
7888
7911
|
return /* @__PURE__ */ jsx(
|
|
7889
7912
|
SeparatorPrimitive.Root,
|
|
7890
7913
|
{
|
|
@@ -8016,7 +8039,7 @@ function SideDrawerFooter({ children, className }) {
|
|
|
8016
8039
|
SideDrawer.Header = SideDrawerHeader;
|
|
8017
8040
|
SideDrawer.Body = SideDrawerBody;
|
|
8018
8041
|
SideDrawer.Footer = SideDrawerFooter;
|
|
8019
|
-
var Slider =
|
|
8042
|
+
var Slider = React38.forwardRef(
|
|
8020
8043
|
function Slider2({
|
|
8021
8044
|
className,
|
|
8022
8045
|
label,
|
|
@@ -8028,7 +8051,7 @@ var Slider = React37.forwardRef(
|
|
|
8028
8051
|
defaultValue,
|
|
8029
8052
|
...props
|
|
8030
8053
|
}, ref) {
|
|
8031
|
-
const generatedId =
|
|
8054
|
+
const generatedId = React38.useId();
|
|
8032
8055
|
const id = providedId ?? generatedId;
|
|
8033
8056
|
const displayValue = (() => {
|
|
8034
8057
|
const v = value ?? defaultValue;
|
|
@@ -8336,6 +8359,7 @@ var statusMap = {
|
|
|
8336
8359
|
approved: { variant: "success", label: "Approved" },
|
|
8337
8360
|
paid: { variant: "success", label: "Paid" },
|
|
8338
8361
|
complete: { variant: "success", label: "Complete" },
|
|
8362
|
+
received: { variant: "success", label: "Received" },
|
|
8339
8363
|
draft: { variant: "secondary", label: "Draft" },
|
|
8340
8364
|
pending: { variant: "secondary", label: "Pending" },
|
|
8341
8365
|
overdue: { variant: "destructive", label: "Overdue" },
|
|
@@ -8606,9 +8630,9 @@ var switchThumbVariants = cva(
|
|
|
8606
8630
|
}
|
|
8607
8631
|
}
|
|
8608
8632
|
);
|
|
8609
|
-
var Switch =
|
|
8633
|
+
var Switch = React38.forwardRef(
|
|
8610
8634
|
function Switch2({ label, size, className, id: providedId, ...props }, ref) {
|
|
8611
|
-
const generatedId =
|
|
8635
|
+
const generatedId = React38.useId();
|
|
8612
8636
|
const id = providedId ?? generatedId;
|
|
8613
8637
|
const root = /* @__PURE__ */ jsx(
|
|
8614
8638
|
SwitchPrimitive.Root,
|
|
@@ -8742,13 +8766,13 @@ var TableCaption = forwardRef(
|
|
|
8742
8766
|
}
|
|
8743
8767
|
);
|
|
8744
8768
|
TableCaption.displayName = "TableCaption";
|
|
8745
|
-
var Tabs =
|
|
8769
|
+
var Tabs = React38.forwardRef(
|
|
8746
8770
|
function Tabs2({ className, ...props }, ref) {
|
|
8747
8771
|
return /* @__PURE__ */ jsx(TabsPrimitive.Root, { ref, className: cn(className), ...props });
|
|
8748
8772
|
}
|
|
8749
8773
|
);
|
|
8750
8774
|
Tabs.displayName = TabsPrimitive.Root.displayName;
|
|
8751
|
-
var TabsList =
|
|
8775
|
+
var TabsList = React38.forwardRef(function TabsList2({ className, ...props }, ref) {
|
|
8752
8776
|
return /* @__PURE__ */ jsx(
|
|
8753
8777
|
TabsPrimitive.List,
|
|
8754
8778
|
{
|
|
@@ -8793,7 +8817,7 @@ var triggerVariants = cva(
|
|
|
8793
8817
|
}
|
|
8794
8818
|
}
|
|
8795
8819
|
);
|
|
8796
|
-
var TabsTrigger =
|
|
8820
|
+
var TabsTrigger = React38.forwardRef(function TabsTrigger2({ className, variant, ...props }, ref) {
|
|
8797
8821
|
return /* @__PURE__ */ jsx(
|
|
8798
8822
|
TabsPrimitive.Trigger,
|
|
8799
8823
|
{
|
|
@@ -8804,7 +8828,7 @@ var TabsTrigger = React37.forwardRef(function TabsTrigger2({ className, variant,
|
|
|
8804
8828
|
);
|
|
8805
8829
|
});
|
|
8806
8830
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
8807
|
-
var TabsContent =
|
|
8831
|
+
var TabsContent = React38.forwardRef(function TabsContent2({ className, ...props }, ref) {
|
|
8808
8832
|
return /* @__PURE__ */ jsx(
|
|
8809
8833
|
TabsPrimitive.Content,
|
|
8810
8834
|
{
|
|
@@ -8829,7 +8853,7 @@ function TeamMemberSelect({
|
|
|
8829
8853
|
placeholder = "Select team member...",
|
|
8830
8854
|
className
|
|
8831
8855
|
}) {
|
|
8832
|
-
const options =
|
|
8856
|
+
const options = React38.useMemo(() => {
|
|
8833
8857
|
const meBadge = /* @__PURE__ */ jsx(
|
|
8834
8858
|
Badge,
|
|
8835
8859
|
{
|
|
@@ -9159,10 +9183,10 @@ var itemVariants = cva(
|
|
|
9159
9183
|
}
|
|
9160
9184
|
}
|
|
9161
9185
|
);
|
|
9162
|
-
var ToggleGroupContext =
|
|
9186
|
+
var ToggleGroupContext = React38.createContext({
|
|
9163
9187
|
variant: "default"
|
|
9164
9188
|
});
|
|
9165
|
-
var ToggleGroup =
|
|
9189
|
+
var ToggleGroup = React38.forwardRef(function ToggleGroup2({ className, variant, children, ...props }, ref) {
|
|
9166
9190
|
return /* @__PURE__ */ jsx(
|
|
9167
9191
|
ToggleGroupPrimitive.Root,
|
|
9168
9192
|
{
|
|
@@ -9174,8 +9198,8 @@ var ToggleGroup = React37.forwardRef(function ToggleGroup2({ className, variant,
|
|
|
9174
9198
|
);
|
|
9175
9199
|
});
|
|
9176
9200
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
9177
|
-
var ToggleGroupItem =
|
|
9178
|
-
const ctx =
|
|
9201
|
+
var ToggleGroupItem = React38.forwardRef(function ToggleGroupItem2({ className, variant, ...props }, ref) {
|
|
9202
|
+
const ctx = React38.useContext(ToggleGroupContext);
|
|
9179
9203
|
return /* @__PURE__ */ jsx(
|
|
9180
9204
|
ToggleGroupPrimitive.Item,
|
|
9181
9205
|
{
|
|
@@ -9194,7 +9218,7 @@ var Tooltip = ({ delayMs, delayDuration, children, ...props }) => {
|
|
|
9194
9218
|
return /* @__PURE__ */ jsx(TooltipPrimitive.Provider, { delayDuration: resolvedDelay, children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { delayDuration: resolvedDelay, ...props, children }) });
|
|
9195
9219
|
};
|
|
9196
9220
|
Tooltip.displayName = "Tooltip";
|
|
9197
|
-
var TooltipContent =
|
|
9221
|
+
var TooltipContent = React38.forwardRef(({ className, sideOffset = 6, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
9198
9222
|
TooltipPrimitive.Content,
|
|
9199
9223
|
{
|
|
9200
9224
|
ref,
|
|
@@ -9748,7 +9772,12 @@ var EngagementTimelineStep = forwardRef(
|
|
|
9748
9772
|
}
|
|
9749
9773
|
);
|
|
9750
9774
|
EngagementTimelineStep.displayName = "EngagementTimelineStep";
|
|
9751
|
-
var
|
|
9775
|
+
var ROW_BASE = "group/row flex w-full items-center gap-1.5 rounded-lg px-2.5 py-1 text-left text-[12px] font-medium transition-colors duration-[120ms] motion-reduce:transition-none";
|
|
9776
|
+
var ROW_INACTIVE = "text-fg-2 hover:bg-surface-2 hover:text-fg";
|
|
9777
|
+
var ROW_ACTIVE = "bg-pro-bg text-pro-fg font-semibold";
|
|
9778
|
+
var BADGE_BASE = "ml-auto min-w-[18px] rounded-full px-[5px] py-px text-center text-[10px] font-[650] tabular-nums";
|
|
9779
|
+
var BADGE_INACTIVE = "bg-surface-2 text-fg-4";
|
|
9780
|
+
var BADGE_ACTIVE = "bg-pro-bg text-pro-fg";
|
|
9752
9781
|
var FolderTree = forwardRef(function FolderTree2({ nodes, activeId, onSelect, defaultOpenIds, openIds, onOpenChange, className, ...props }, ref) {
|
|
9753
9782
|
const isControlled = openIds !== void 0;
|
|
9754
9783
|
const [internalOpen, setInternalOpen] = useState(() => new Set(defaultOpenIds ?? []));
|
|
@@ -9767,64 +9796,562 @@ var FolderTree = forwardRef(function FolderTree2({ nodes, activeId, onSelect, de
|
|
|
9767
9796
|
const hasChildren = Boolean(node.children?.length);
|
|
9768
9797
|
const isOpen = open.has(node.id);
|
|
9769
9798
|
const isActive = activeId === node.id;
|
|
9770
|
-
return /* @__PURE__ */ jsxs("li", { children: [
|
|
9799
|
+
return /* @__PURE__ */ jsxs("li", { className: "relative", children: [
|
|
9800
|
+
depth > 0 && /* @__PURE__ */ jsx(
|
|
9801
|
+
"span",
|
|
9802
|
+
{
|
|
9803
|
+
"aria-hidden": true,
|
|
9804
|
+
className: "pointer-events-none absolute left-[-11px] top-0 bottom-0 w-px bg-[color:var(--color-rule-strong)]"
|
|
9805
|
+
}
|
|
9806
|
+
),
|
|
9807
|
+
/* @__PURE__ */ jsxs("div", { className: cn(ROW_BASE, isActive ? ROW_ACTIVE : ROW_INACTIVE), children: [
|
|
9808
|
+
hasChildren ? /* @__PURE__ */ jsx(
|
|
9809
|
+
"button",
|
|
9810
|
+
{
|
|
9811
|
+
type: "button",
|
|
9812
|
+
"aria-expanded": isOpen,
|
|
9813
|
+
"aria-label": isOpen ? `Collapse ${node.name}` : `Expand ${node.name}`,
|
|
9814
|
+
onClick: (e) => {
|
|
9815
|
+
e.stopPropagation();
|
|
9816
|
+
toggle(node.id);
|
|
9817
|
+
},
|
|
9818
|
+
className: cn(
|
|
9819
|
+
"shrink-0 text-fg-4 transition-transform duration-[150ms] motion-reduce:transition-none",
|
|
9820
|
+
isOpen && "rotate-90"
|
|
9821
|
+
),
|
|
9822
|
+
children: /* @__PURE__ */ jsx(ChevronRightIcon, { size: 13, "aria-hidden": "true" })
|
|
9823
|
+
}
|
|
9824
|
+
) : /* @__PURE__ */ jsx("span", { className: "w-[13px] shrink-0", "aria-hidden": true }),
|
|
9825
|
+
/* @__PURE__ */ jsxs(
|
|
9826
|
+
"button",
|
|
9827
|
+
{
|
|
9828
|
+
type: "button",
|
|
9829
|
+
onClick: () => onSelect?.(node.id),
|
|
9830
|
+
"aria-current": isActive ? "true" : void 0,
|
|
9831
|
+
className: "flex min-w-0 flex-1 items-center gap-1.5 text-left text-[12px] focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
9832
|
+
children: [
|
|
9833
|
+
isOpen && hasChildren ? /* @__PURE__ */ jsx(
|
|
9834
|
+
FolderOpenIcon,
|
|
9835
|
+
{
|
|
9836
|
+
size: 14,
|
|
9837
|
+
"aria-hidden": "true",
|
|
9838
|
+
className: cn("shrink-0", isActive ? "text-pro-fg" : "text-fg-3")
|
|
9839
|
+
}
|
|
9840
|
+
) : /* @__PURE__ */ jsx(
|
|
9841
|
+
FolderClosedIcon,
|
|
9842
|
+
{
|
|
9843
|
+
size: 14,
|
|
9844
|
+
"aria-hidden": "true",
|
|
9845
|
+
className: cn("shrink-0", isActive ? "text-pro-fg" : "text-fg-3")
|
|
9846
|
+
}
|
|
9847
|
+
),
|
|
9848
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children: node.name })
|
|
9849
|
+
]
|
|
9850
|
+
}
|
|
9851
|
+
),
|
|
9852
|
+
node.count != null && /* @__PURE__ */ jsx("span", { className: cn(BADGE_BASE, isActive ? BADGE_ACTIVE : BADGE_INACTIVE), children: node.count })
|
|
9853
|
+
] }),
|
|
9854
|
+
hasChildren && isOpen && /* @__PURE__ */ jsx("ul", { className: "relative flex flex-col pl-[22px]", children: node.children.map((child) => renderNode(child, depth + 1)) })
|
|
9855
|
+
] }, node.id);
|
|
9856
|
+
};
|
|
9857
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn("w-full", className), ...props, children: /* @__PURE__ */ jsx("ul", { className: "flex flex-col", children: nodes.map((node) => renderNode(node, 0)) }) });
|
|
9858
|
+
});
|
|
9859
|
+
FolderTree.displayName = "FolderTree";
|
|
9860
|
+
var ClientRailItem = forwardRef(
|
|
9861
|
+
function ClientRailItem2({
|
|
9862
|
+
name,
|
|
9863
|
+
avatarSrc,
|
|
9864
|
+
entityType,
|
|
9865
|
+
pendingCount,
|
|
9866
|
+
fileCount,
|
|
9867
|
+
metaSuffix,
|
|
9868
|
+
active = false,
|
|
9869
|
+
className,
|
|
9870
|
+
...props
|
|
9871
|
+
}, ref) {
|
|
9872
|
+
const hasPending = Boolean(pendingCount && pendingCount > 0);
|
|
9873
|
+
return /* @__PURE__ */ jsxs(
|
|
9874
|
+
"button",
|
|
9875
|
+
{
|
|
9876
|
+
ref,
|
|
9877
|
+
type: "button",
|
|
9878
|
+
className: cn(
|
|
9879
|
+
// Layout
|
|
9880
|
+
"relative flex w-full items-center gap-[11px] border-b border-rule px-[14px] py-[11px] text-left",
|
|
9881
|
+
// Motion
|
|
9882
|
+
"transition-colors duration-[120ms] motion-reduce:transition-none",
|
|
9883
|
+
// Cursor
|
|
9884
|
+
"cursor-pointer",
|
|
9885
|
+
// State — hover only when not active to avoid override
|
|
9886
|
+
active ? "bg-pro-bg" : "hover:bg-surface-2",
|
|
9887
|
+
className
|
|
9888
|
+
),
|
|
9889
|
+
...props,
|
|
9890
|
+
children: [
|
|
9891
|
+
active && /* @__PURE__ */ jsx(
|
|
9892
|
+
"span",
|
|
9893
|
+
{
|
|
9894
|
+
"aria-hidden": "true",
|
|
9895
|
+
className: "absolute top-0 bottom-0 left-0 w-[3px] bg-pro-fg"
|
|
9896
|
+
}
|
|
9897
|
+
),
|
|
9898
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0", children: /* @__PURE__ */ jsx(Avatar, { name, src: avatarSrc, size: "sm" }) }),
|
|
9899
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
9900
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-[7px]", children: [
|
|
9901
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-[13.5px] font-[650] text-fg", children: name }),
|
|
9902
|
+
hasPending && /* @__PURE__ */ jsx(StatusDot, { tone: "pro", size: "sm" }),
|
|
9903
|
+
fileCount != null && /* @__PURE__ */ jsx("span", { className: "shrink-0 rounded-full bg-surface-2 px-[6px] py-px text-[10.5px] font-bold text-fg-3", children: fileCount })
|
|
9904
|
+
] }),
|
|
9905
|
+
/* @__PURE__ */ jsx("p", { className: "mt-0.5 text-[11.5px] text-fg-3", children: hasPending ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9906
|
+
/* @__PURE__ */ jsxs("span", { className: "font-semibold text-pro-fg", children: [
|
|
9907
|
+
pendingCount,
|
|
9908
|
+
" pending"
|
|
9909
|
+
] }),
|
|
9910
|
+
" \xB7 ",
|
|
9911
|
+
entityType
|
|
9912
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9913
|
+
entityType,
|
|
9914
|
+
metaSuffix != null && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9915
|
+
" \xB7 ",
|
|
9916
|
+
metaSuffix
|
|
9917
|
+
] })
|
|
9918
|
+
] }) })
|
|
9919
|
+
] })
|
|
9920
|
+
]
|
|
9921
|
+
}
|
|
9922
|
+
);
|
|
9923
|
+
}
|
|
9924
|
+
);
|
|
9925
|
+
ClientRailItem.displayName = "ClientRailItem";
|
|
9926
|
+
var ClientRailGroupHeader = forwardRef(function ClientRailGroupHeader2({ label, count, accent = false, className, ...props }, ref) {
|
|
9927
|
+
return /* @__PURE__ */ jsxs(
|
|
9928
|
+
"div",
|
|
9929
|
+
{
|
|
9930
|
+
ref,
|
|
9931
|
+
className: cn(
|
|
9932
|
+
"flex items-center gap-[7px] px-[14px] pt-[14px] pb-[5px] text-[11.5px] font-semibold",
|
|
9933
|
+
accent ? "text-pro-fg" : "text-fg-3",
|
|
9934
|
+
className
|
|
9935
|
+
),
|
|
9936
|
+
...props,
|
|
9937
|
+
children: [
|
|
9938
|
+
accent && /* @__PURE__ */ jsx(StatusDot, { tone: "pro", size: "sm" }),
|
|
9939
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
9940
|
+
label,
|
|
9941
|
+
count != null && /* @__PURE__ */ jsxs("span", { className: accent ? void 0 : "text-fg-4", children: [
|
|
9942
|
+
" \xB7 ",
|
|
9943
|
+
count
|
|
9944
|
+
] })
|
|
9945
|
+
] })
|
|
9946
|
+
]
|
|
9947
|
+
}
|
|
9948
|
+
);
|
|
9949
|
+
});
|
|
9950
|
+
ClientRailGroupHeader.displayName = "ClientRailGroupHeader";
|
|
9951
|
+
function getFileTypeParts(fileType) {
|
|
9952
|
+
const normalized = fileType.toLowerCase().trim().replace(/^\./, "");
|
|
9953
|
+
if (normalized.includes("pdf")) {
|
|
9954
|
+
return { Icon: FileTextIcon, colorClass: "text-danger-fg" };
|
|
9955
|
+
}
|
|
9956
|
+
if (normalized.includes("image") || ["jpg", "jpeg", "png", "tiff"].some((type) => normalized.includes(type))) {
|
|
9957
|
+
return { Icon: FileIcon, colorClass: "text-pro-fg" };
|
|
9958
|
+
}
|
|
9959
|
+
if (normalized.includes("excel") || normalized.includes("spreadsheet") || ["xlsx", "xls", "csv"].some((type) => normalized.includes(type))) {
|
|
9960
|
+
return { Icon: FileTextIcon, colorClass: "text-success-fg" };
|
|
9961
|
+
}
|
|
9962
|
+
if (normalized.includes("word") || ["docx", "doc"].some((type) => normalized.includes(type))) {
|
|
9963
|
+
return { Icon: FileTextIcon, colorClass: "text-pro-fg" };
|
|
9964
|
+
}
|
|
9965
|
+
return { Icon: FileIcon, colorClass: "text-fg-4" };
|
|
9966
|
+
}
|
|
9967
|
+
function MetaText({
|
|
9968
|
+
values,
|
|
9969
|
+
className,
|
|
9970
|
+
dotClassName
|
|
9971
|
+
}) {
|
|
9972
|
+
const presentValues = values.filter(Boolean);
|
|
9973
|
+
if (presentValues.length === 0) {
|
|
9974
|
+
return null;
|
|
9975
|
+
}
|
|
9976
|
+
return /* @__PURE__ */ jsx("div", { className, children: presentValues.map((value, index) => /* @__PURE__ */ jsxs(React38.Fragment, { children: [
|
|
9977
|
+
index > 0 && /* @__PURE__ */ jsx(
|
|
9978
|
+
"span",
|
|
9979
|
+
{
|
|
9980
|
+
className: cn("size-[3px] rounded-full bg-fg-4", dotClassName),
|
|
9981
|
+
"aria-hidden": "true"
|
|
9982
|
+
}
|
|
9983
|
+
),
|
|
9984
|
+
/* @__PURE__ */ jsx("span", { children: value })
|
|
9985
|
+
] }, `${value}-${index}`)) });
|
|
9986
|
+
}
|
|
9987
|
+
function FileTile({ fileType, card }) {
|
|
9988
|
+
const { Icon: Icon3, colorClass } = getFileTypeParts(fileType);
|
|
9989
|
+
return /* @__PURE__ */ jsx(
|
|
9990
|
+
"span",
|
|
9991
|
+
{
|
|
9992
|
+
className: cn(
|
|
9993
|
+
"grid shrink-0 place-items-center bg-surface-2",
|
|
9994
|
+
card ? "size-[46px] rounded-xl bg-surface" : "size-[38px] rounded-[10px]"
|
|
9995
|
+
),
|
|
9996
|
+
"aria-hidden": "true",
|
|
9997
|
+
children: /* @__PURE__ */ jsx(Icon3, { className: colorClass, size: card ? 22 : 18 })
|
|
9998
|
+
}
|
|
9999
|
+
);
|
|
10000
|
+
}
|
|
10001
|
+
function CheckboxSlot({
|
|
10002
|
+
selected,
|
|
10003
|
+
onSelectedChange,
|
|
10004
|
+
className
|
|
10005
|
+
}) {
|
|
10006
|
+
return (
|
|
10007
|
+
// Wrapper only stops click propagation so the row's open handler does not
|
|
10008
|
+
// fire when toggling the checkbox; the Checkbox itself is the focusable control.
|
|
10009
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events
|
|
10010
|
+
/* @__PURE__ */ jsx(
|
|
10011
|
+
"div",
|
|
10012
|
+
{
|
|
10013
|
+
className: cn(
|
|
10014
|
+
"shrink-0 transition-opacity duration-[120ms] motion-reduce:transition-none",
|
|
10015
|
+
selected ? "opacity-100" : "opacity-0 group-hover:opacity-100",
|
|
10016
|
+
className
|
|
10017
|
+
),
|
|
10018
|
+
onClick: (event) => event.stopPropagation(),
|
|
10019
|
+
children: /* @__PURE__ */ jsx(
|
|
10020
|
+
Checkbox,
|
|
10021
|
+
{
|
|
10022
|
+
checked: selected,
|
|
10023
|
+
onCheckedChange: (checked) => onSelectedChange?.(checked === true)
|
|
10024
|
+
}
|
|
10025
|
+
)
|
|
10026
|
+
}
|
|
10027
|
+
)
|
|
10028
|
+
);
|
|
10029
|
+
}
|
|
10030
|
+
function MoreActions({ menu }) {
|
|
10031
|
+
if (!menu) {
|
|
10032
|
+
return null;
|
|
10033
|
+
}
|
|
10034
|
+
return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
10035
|
+
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
10036
|
+
"button",
|
|
10037
|
+
{
|
|
10038
|
+
type: "button",
|
|
10039
|
+
className: cn(
|
|
10040
|
+
"grid size-[30px] place-items-center rounded-[8px] text-fg-4",
|
|
10041
|
+
"transition-colors duration-[120ms] motion-reduce:transition-none",
|
|
10042
|
+
"group-hover:text-fg-2 hover:bg-surface hover:text-pro-fg hover:shadow-sm"
|
|
10043
|
+
),
|
|
10044
|
+
"aria-label": "More actions",
|
|
10045
|
+
onClick: (event) => event.stopPropagation(),
|
|
10046
|
+
children: /* @__PURE__ */ jsx(MoreHorizontalIcon, { size: 16 })
|
|
10047
|
+
}
|
|
10048
|
+
) }),
|
|
10049
|
+
/* @__PURE__ */ jsx(DropdownMenuContent, { align: "end", children: menu })
|
|
10050
|
+
] });
|
|
10051
|
+
}
|
|
10052
|
+
var DocumentFileRow = React38.forwardRef(
|
|
10053
|
+
function DocumentFileRow2({
|
|
10054
|
+
name,
|
|
10055
|
+
fileType,
|
|
10056
|
+
size,
|
|
10057
|
+
date,
|
|
10058
|
+
by,
|
|
10059
|
+
status,
|
|
10060
|
+
nameAdornment,
|
|
10061
|
+
menu,
|
|
10062
|
+
selected = false,
|
|
10063
|
+
showCheckbox = true,
|
|
10064
|
+
onSelectedChange,
|
|
10065
|
+
onOpen,
|
|
10066
|
+
className,
|
|
10067
|
+
onClick,
|
|
10068
|
+
...props
|
|
10069
|
+
}, ref) {
|
|
10070
|
+
return (
|
|
10071
|
+
// Whole-row click is a pointer enhancement that opens the file; the same
|
|
10072
|
+
// action is keyboard-reachable via the kebab menu's items, and the row's
|
|
10073
|
+
// interactive controls (checkbox, menu) are independently focusable.
|
|
10074
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events
|
|
9771
10075
|
/* @__PURE__ */ jsxs(
|
|
9772
10076
|
"div",
|
|
9773
10077
|
{
|
|
10078
|
+
ref,
|
|
9774
10079
|
className: cn(
|
|
9775
|
-
"group
|
|
9776
|
-
|
|
10080
|
+
"group flex cursor-pointer items-center gap-[13px] border-b border-rule px-[14px] py-3",
|
|
10081
|
+
"transition-colors duration-[120ms] motion-reduce:transition-none hover:bg-surface-2",
|
|
10082
|
+
selected && "bg-pro-bg",
|
|
10083
|
+
className
|
|
9777
10084
|
),
|
|
10085
|
+
onClick: (event) => {
|
|
10086
|
+
onClick?.(event);
|
|
10087
|
+
if (!event.defaultPrevented) {
|
|
10088
|
+
onOpen?.();
|
|
10089
|
+
}
|
|
10090
|
+
},
|
|
10091
|
+
...props,
|
|
9778
10092
|
children: [
|
|
10093
|
+
showCheckbox !== false && /* @__PURE__ */ jsx(CheckboxSlot, { selected, onSelectedChange }),
|
|
10094
|
+
/* @__PURE__ */ jsx(FileTile, { fileType }),
|
|
10095
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
10096
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
10097
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-[13.5px] font-semibold text-fg", children: name }),
|
|
10098
|
+
nameAdornment
|
|
10099
|
+
] }),
|
|
10100
|
+
/* @__PURE__ */ jsx(
|
|
10101
|
+
MetaText,
|
|
10102
|
+
{
|
|
10103
|
+
values: [size, date, by],
|
|
10104
|
+
className: "mt-0.5 flex flex-wrap items-center gap-[7px] text-[11.5px] text-fg-3"
|
|
10105
|
+
}
|
|
10106
|
+
)
|
|
10107
|
+
] }),
|
|
10108
|
+
/* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-[10px]", children: [
|
|
10109
|
+
status,
|
|
10110
|
+
/* @__PURE__ */ jsx(MoreActions, { menu })
|
|
10111
|
+
] })
|
|
10112
|
+
]
|
|
10113
|
+
}
|
|
10114
|
+
)
|
|
10115
|
+
);
|
|
10116
|
+
}
|
|
10117
|
+
);
|
|
10118
|
+
DocumentFileRow.displayName = "DocumentFileRow";
|
|
10119
|
+
var DocumentFileCard = React38.forwardRef(
|
|
10120
|
+
function DocumentFileCard2({
|
|
10121
|
+
name,
|
|
10122
|
+
fileType,
|
|
10123
|
+
size,
|
|
10124
|
+
date,
|
|
10125
|
+
by: _by,
|
|
10126
|
+
status,
|
|
10127
|
+
nameAdornment: _nameAdornment,
|
|
10128
|
+
menu,
|
|
10129
|
+
selected = false,
|
|
10130
|
+
showCheckbox = true,
|
|
10131
|
+
onSelectedChange,
|
|
10132
|
+
onOpen,
|
|
10133
|
+
className,
|
|
10134
|
+
onClick,
|
|
10135
|
+
...props
|
|
10136
|
+
}, ref) {
|
|
10137
|
+
return (
|
|
10138
|
+
// Whole-card click is a pointer enhancement that opens the file; the same
|
|
10139
|
+
// action is keyboard-reachable via the kebab menu's items, and the card's
|
|
10140
|
+
// interactive controls (checkbox, menu) are independently focusable.
|
|
10141
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events
|
|
10142
|
+
/* @__PURE__ */ jsxs(
|
|
10143
|
+
"div",
|
|
10144
|
+
{
|
|
10145
|
+
ref,
|
|
10146
|
+
className: cn(
|
|
10147
|
+
"group relative cursor-pointer rounded-2xl border border-rule bg-surface p-3",
|
|
10148
|
+
"transition-[border-color,box-shadow,transform] duration-[120ms] motion-reduce:transition-none",
|
|
10149
|
+
"hover:-translate-y-0.5 hover:border-rule-strong hover:shadow-sm",
|
|
10150
|
+
selected && "border-pro-fg bg-pro-bg",
|
|
10151
|
+
className
|
|
10152
|
+
),
|
|
10153
|
+
onClick: (event) => {
|
|
10154
|
+
onClick?.(event);
|
|
10155
|
+
if (!event.defaultPrevented) {
|
|
10156
|
+
onOpen?.();
|
|
10157
|
+
}
|
|
10158
|
+
},
|
|
10159
|
+
...props,
|
|
10160
|
+
children: [
|
|
10161
|
+
showCheckbox !== false && /* @__PURE__ */ jsx(
|
|
10162
|
+
CheckboxSlot,
|
|
10163
|
+
{
|
|
10164
|
+
selected,
|
|
10165
|
+
onSelectedChange,
|
|
10166
|
+
className: "absolute top-2 left-2 z-[2]"
|
|
10167
|
+
}
|
|
10168
|
+
),
|
|
10169
|
+
/* @__PURE__ */ jsx("div", { className: "relative mb-[11px] grid h-[92px] place-items-center overflow-hidden rounded-[10px] bg-surface-2", children: /* @__PURE__ */ jsx(FileTile, { fileType, card: true }) }),
|
|
10170
|
+
/* @__PURE__ */ jsx("div", { className: "truncate text-[13px] font-semibold text-fg", children: name }),
|
|
9779
10171
|
/* @__PURE__ */ jsx(
|
|
9780
|
-
|
|
10172
|
+
MetaText,
|
|
9781
10173
|
{
|
|
9782
|
-
|
|
9783
|
-
"
|
|
9784
|
-
|
|
9785
|
-
|
|
9786
|
-
|
|
9787
|
-
|
|
9788
|
-
|
|
9789
|
-
|
|
9790
|
-
|
|
9791
|
-
|
|
9792
|
-
|
|
9793
|
-
|
|
9794
|
-
|
|
9795
|
-
|
|
9796
|
-
|
|
9797
|
-
|
|
9798
|
-
|
|
9799
|
-
|
|
10174
|
+
values: [size, date],
|
|
10175
|
+
className: "mt-[3px] flex items-center gap-[6px] text-[11px] text-fg-3"
|
|
10176
|
+
}
|
|
10177
|
+
),
|
|
10178
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-[10px] flex items-center justify-between", children: [
|
|
10179
|
+
/* @__PURE__ */ jsx("div", { className: "min-w-0", children: status }),
|
|
10180
|
+
/* @__PURE__ */ jsx(MoreActions, { menu })
|
|
10181
|
+
] })
|
|
10182
|
+
]
|
|
10183
|
+
}
|
|
10184
|
+
)
|
|
10185
|
+
);
|
|
10186
|
+
}
|
|
10187
|
+
);
|
|
10188
|
+
DocumentFileCard.displayName = "DocumentFileCard";
|
|
10189
|
+
var DocumentRequestField = forwardRef(
|
|
10190
|
+
function DocumentRequestField2({
|
|
10191
|
+
index,
|
|
10192
|
+
typeControl,
|
|
10193
|
+
label,
|
|
10194
|
+
onLabelChange,
|
|
10195
|
+
note,
|
|
10196
|
+
onNoteChange,
|
|
10197
|
+
onRemove,
|
|
10198
|
+
canRemove = true,
|
|
10199
|
+
className,
|
|
10200
|
+
...props
|
|
10201
|
+
}, ref) {
|
|
10202
|
+
const humanIndex = index + 1;
|
|
10203
|
+
const showRemove = Boolean(onRemove) && canRemove;
|
|
10204
|
+
return /* @__PURE__ */ jsxs(
|
|
10205
|
+
"div",
|
|
10206
|
+
{
|
|
10207
|
+
ref,
|
|
10208
|
+
className: cn(
|
|
10209
|
+
"rounded-2xl border border-rule bg-surface-2 p-[14px] mb-[10px]",
|
|
10210
|
+
className
|
|
10211
|
+
),
|
|
10212
|
+
...props,
|
|
10213
|
+
children: [
|
|
10214
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-[9px] mb-3", children: [
|
|
10215
|
+
/* @__PURE__ */ jsx(
|
|
10216
|
+
"span",
|
|
10217
|
+
{
|
|
10218
|
+
"aria-hidden": "true",
|
|
10219
|
+
className: "size-[22px] rounded-full bg-pro-bg text-pro-fg text-[11px] font-bold grid place-items-center shrink-0 leading-none",
|
|
10220
|
+
children: humanIndex
|
|
9800
10221
|
}
|
|
9801
10222
|
),
|
|
9802
|
-
/* @__PURE__ */ jsxs(
|
|
10223
|
+
/* @__PURE__ */ jsxs("span", { className: "text-[13px] font-[650] text-pro-fg", children: [
|
|
10224
|
+
"Document ",
|
|
10225
|
+
humanIndex
|
|
10226
|
+
] }),
|
|
10227
|
+
showRemove && /* @__PURE__ */ jsx(
|
|
9803
10228
|
"button",
|
|
9804
10229
|
{
|
|
9805
10230
|
type: "button",
|
|
9806
|
-
onClick:
|
|
9807
|
-
"aria-
|
|
10231
|
+
onClick: onRemove,
|
|
10232
|
+
"aria-label": `Remove document ${humanIndex}`,
|
|
9808
10233
|
className: cn(
|
|
9809
|
-
"
|
|
9810
|
-
|
|
10234
|
+
"ml-auto size-[26px] rounded-[7px] grid place-items-center",
|
|
10235
|
+
"text-fg-4",
|
|
10236
|
+
"transition-colors duration-[120ms] motion-reduce:transition-none",
|
|
10237
|
+
"hover:bg-danger-bg hover:text-danger-fg",
|
|
10238
|
+
"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]"
|
|
9811
10239
|
),
|
|
9812
|
-
children:
|
|
9813
|
-
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "shrink-0 [&_svg]:size-4", children: isOpen && hasChildren ? /* @__PURE__ */ jsx(FolderOpenIcon, {}) : /* @__PURE__ */ jsx(FolderClosedIcon, {}) }),
|
|
9814
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children: node.name }),
|
|
9815
|
-
node.count != null && /* @__PURE__ */ jsx("span", { className: "text-fg-4 shrink-0 text-xs tabular-nums", children: node.count })
|
|
9816
|
-
]
|
|
10240
|
+
children: /* @__PURE__ */ jsx(CloseIcon, { size: 14, "aria-hidden": "true" })
|
|
9817
10241
|
}
|
|
9818
10242
|
)
|
|
9819
|
-
]
|
|
9820
|
-
|
|
9821
|
-
|
|
9822
|
-
|
|
9823
|
-
|
|
9824
|
-
|
|
9825
|
-
|
|
9826
|
-
|
|
9827
|
-
|
|
10243
|
+
] }),
|
|
10244
|
+
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-3", children: [
|
|
10245
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
10246
|
+
/* @__PURE__ */ jsx("span", { className: "mb-1.5 block text-[11.5px] font-semibold text-fg-2", children: "Type" }),
|
|
10247
|
+
typeControl
|
|
10248
|
+
] }),
|
|
10249
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
10250
|
+
/* @__PURE__ */ jsxs("span", { className: "mb-1.5 block text-[11.5px] font-semibold text-fg-2", children: [
|
|
10251
|
+
"Label",
|
|
10252
|
+
" ",
|
|
10253
|
+
/* @__PURE__ */ jsx("span", { className: "text-danger-fg", "aria-hidden": "true", children: "*" })
|
|
10254
|
+
] }),
|
|
10255
|
+
/* @__PURE__ */ jsx(
|
|
10256
|
+
Input,
|
|
10257
|
+
{
|
|
10258
|
+
value: label,
|
|
10259
|
+
onChange: (e) => onLabelChange(e.target.value),
|
|
10260
|
+
placeholder: "e.g. Bank statement for review",
|
|
10261
|
+
inputSize: "sm",
|
|
10262
|
+
"aria-label": `Label for document ${humanIndex}`,
|
|
10263
|
+
"aria-required": "true"
|
|
10264
|
+
}
|
|
10265
|
+
)
|
|
10266
|
+
] }),
|
|
10267
|
+
/* @__PURE__ */ jsxs("div", { className: "col-span-2", children: [
|
|
10268
|
+
/* @__PURE__ */ jsx("span", { className: "mb-1.5 block text-[11.5px] font-semibold text-fg-2", children: "Note" }),
|
|
10269
|
+
/* @__PURE__ */ jsx(
|
|
10270
|
+
Input,
|
|
10271
|
+
{
|
|
10272
|
+
value: note,
|
|
10273
|
+
onChange: (e) => onNoteChange(e.target.value),
|
|
10274
|
+
placeholder: "Optional note for the client",
|
|
10275
|
+
inputSize: "sm",
|
|
10276
|
+
"aria-label": `Note for document ${humanIndex}`
|
|
10277
|
+
}
|
|
10278
|
+
)
|
|
10279
|
+
] })
|
|
10280
|
+
] })
|
|
10281
|
+
]
|
|
10282
|
+
}
|
|
10283
|
+
);
|
|
10284
|
+
}
|
|
10285
|
+
);
|
|
10286
|
+
DocumentRequestField.displayName = "DocumentRequestField";
|
|
10287
|
+
var stateToStatus = {
|
|
10288
|
+
missing: "requested",
|
|
10289
|
+
pending: "pending",
|
|
10290
|
+
received: "received"
|
|
10291
|
+
};
|
|
10292
|
+
function StateDot({ state }) {
|
|
10293
|
+
const colorClass = state === "received" ? "bg-success-fg" : state === "pending" ? "bg-fg-4" : "bg-warning-fg";
|
|
10294
|
+
return /* @__PURE__ */ jsx(
|
|
10295
|
+
"span",
|
|
10296
|
+
{
|
|
10297
|
+
"aria-hidden": "true",
|
|
10298
|
+
className: cn("block size-1.5 shrink-0 rounded-full", colorClass)
|
|
10299
|
+
}
|
|
10300
|
+
);
|
|
10301
|
+
}
|
|
10302
|
+
var MissingDocumentsPanel = forwardRef(
|
|
10303
|
+
function MissingDocumentsPanel2({ items, subtitle = "Suggested from this engagement", onRequest, className, ...props }, ref) {
|
|
10304
|
+
const hasItems = items.length > 0;
|
|
10305
|
+
return /* @__PURE__ */ jsxs(
|
|
10306
|
+
"div",
|
|
10307
|
+
{
|
|
10308
|
+
ref,
|
|
10309
|
+
className: cn(
|
|
10310
|
+
"border-rule bg-surface flex flex-col gap-3 rounded-2xl border p-4 shadow-quiet",
|
|
10311
|
+
className
|
|
10312
|
+
),
|
|
10313
|
+
...props,
|
|
10314
|
+
children: [
|
|
10315
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2.5", children: [
|
|
10316
|
+
/* @__PURE__ */ jsx(
|
|
10317
|
+
"span",
|
|
10318
|
+
{
|
|
10319
|
+
"aria-hidden": "true",
|
|
10320
|
+
className: "grid size-7 shrink-0 place-items-center rounded-lg bg-[image:var(--gradient-ai)] text-white [&_svg]:size-3.5",
|
|
10321
|
+
children: /* @__PURE__ */ jsx(SparklesIcon, {})
|
|
10322
|
+
}
|
|
10323
|
+
),
|
|
10324
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
10325
|
+
/* @__PURE__ */ jsx("p", { className: "text-fg-4 mb-0.5 text-[10px] font-semibold tracking-widest uppercase", children: "AI" }),
|
|
10326
|
+
/* @__PURE__ */ jsx("p", { className: "text-fg text-[14px] font-[650] leading-tight", children: "Missing documents" }),
|
|
10327
|
+
/* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-0.5 text-[12px] leading-snug", children: subtitle })
|
|
10328
|
+
] })
|
|
10329
|
+
] }),
|
|
10330
|
+
hasItems ? /* @__PURE__ */ jsx("ul", { className: "flex flex-col", children: items.map((item, idx) => /* @__PURE__ */ jsxs(
|
|
10331
|
+
"li",
|
|
10332
|
+
{
|
|
10333
|
+
className: "border-rule flex items-center gap-3 border-b py-2 last:border-0",
|
|
10334
|
+
children: [
|
|
10335
|
+
/* @__PURE__ */ jsx(StateDot, { state: item.state }),
|
|
10336
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
10337
|
+
/* @__PURE__ */ jsx("p", { className: "text-fg truncate text-[13px] leading-snug", children: item.label }),
|
|
10338
|
+
item.dueDate != null && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-0.5 text-[11.5px] leading-none", children: item.dueDate })
|
|
10339
|
+
] }),
|
|
10340
|
+
/* @__PURE__ */ jsx(StatusPill, { status: stateToStatus[item.state], dot: false })
|
|
10341
|
+
]
|
|
10342
|
+
},
|
|
10343
|
+
idx
|
|
10344
|
+
)) }) : (
|
|
10345
|
+
/* Empty / all-received state */
|
|
10346
|
+
/* @__PURE__ */ jsx("p", { className: "text-success-fg py-1 text-[13px] font-medium", children: "All documents received" })
|
|
10347
|
+
),
|
|
10348
|
+
onRequest != null && hasItems && /* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx(Button, { size: "sm", variant: "secondary", onClick: onRequest, children: "Request missing" }) })
|
|
10349
|
+
]
|
|
10350
|
+
}
|
|
10351
|
+
);
|
|
10352
|
+
}
|
|
10353
|
+
);
|
|
10354
|
+
MissingDocumentsPanel.displayName = "MissingDocumentsPanel";
|
|
9828
10355
|
function renderAction(action) {
|
|
9829
10356
|
return /* @__PURE__ */ jsxs(DropdownMenuItem, { onSelect: action.onSelect, children: [
|
|
9830
10357
|
action.icon && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-fg-3 [&_svg]:size-4", children: action.icon }),
|
|
@@ -9885,7 +10412,7 @@ var Content16 = forwardRef(function Content17({ padTop, padBottom, className, st
|
|
|
9885
10412
|
);
|
|
9886
10413
|
});
|
|
9887
10414
|
Content16.displayName = "Content";
|
|
9888
|
-
var SidebarContext =
|
|
10415
|
+
var SidebarContext = React38.createContext(null);
|
|
9889
10416
|
var NOOP_CONTEXT = {
|
|
9890
10417
|
state: "expanded",
|
|
9891
10418
|
setState: () => {
|
|
@@ -9898,7 +10425,7 @@ var NOOP_CONTEXT = {
|
|
|
9898
10425
|
}
|
|
9899
10426
|
};
|
|
9900
10427
|
function useSidebarState() {
|
|
9901
|
-
return
|
|
10428
|
+
return React38.useContext(SidebarContext) ?? NOOP_CONTEXT;
|
|
9902
10429
|
}
|
|
9903
10430
|
var DEFAULT_SHORTCUT = "Mod+\\";
|
|
9904
10431
|
function readStorage(key) {
|
|
@@ -9918,16 +10445,16 @@ function SidebarProvider({
|
|
|
9918
10445
|
storageKey,
|
|
9919
10446
|
shortcut = DEFAULT_SHORTCUT
|
|
9920
10447
|
}) {
|
|
9921
|
-
const [uncontrolled, setUncontrolled] =
|
|
10448
|
+
const [uncontrolled, setUncontrolled] = React38.useState(
|
|
9922
10449
|
controlled ?? defaultState
|
|
9923
10450
|
);
|
|
9924
|
-
|
|
10451
|
+
React38.useEffect(() => {
|
|
9925
10452
|
if (controlled !== void 0) return;
|
|
9926
10453
|
const stored = readStorage(storageKey);
|
|
9927
10454
|
if (stored && stored !== uncontrolled) setUncontrolled(stored);
|
|
9928
10455
|
}, []);
|
|
9929
10456
|
const state = controlled ?? uncontrolled;
|
|
9930
|
-
const setState =
|
|
10457
|
+
const setState = React38.useCallback(
|
|
9931
10458
|
(next) => {
|
|
9932
10459
|
if (controlled === void 0) setUncontrolled(next);
|
|
9933
10460
|
onStateChange?.(next);
|
|
@@ -9940,11 +10467,11 @@ function SidebarProvider({
|
|
|
9940
10467
|
},
|
|
9941
10468
|
[controlled, onStateChange, storageKey]
|
|
9942
10469
|
);
|
|
9943
|
-
const toggle =
|
|
10470
|
+
const toggle = React38.useCallback(() => {
|
|
9944
10471
|
setState(state === "expanded" ? "rail" : "expanded");
|
|
9945
10472
|
}, [state, setState]);
|
|
9946
|
-
const [peekLockCount, setPeekLockCount] =
|
|
9947
|
-
const acquirePeekLock =
|
|
10473
|
+
const [peekLockCount, setPeekLockCount] = React38.useState(0);
|
|
10474
|
+
const acquirePeekLock = React38.useCallback(() => {
|
|
9948
10475
|
setPeekLockCount((n) => n + 1);
|
|
9949
10476
|
let released = false;
|
|
9950
10477
|
return () => {
|
|
@@ -9953,7 +10480,7 @@ function SidebarProvider({
|
|
|
9953
10480
|
setPeekLockCount((n) => Math.max(0, n - 1));
|
|
9954
10481
|
};
|
|
9955
10482
|
}, []);
|
|
9956
|
-
|
|
10483
|
+
React38.useEffect(() => {
|
|
9957
10484
|
if (!shortcut) return;
|
|
9958
10485
|
const parts = shortcut.split("+");
|
|
9959
10486
|
const key = parts.pop() ?? "";
|
|
@@ -9973,7 +10500,7 @@ function SidebarProvider({
|
|
|
9973
10500
|
window.addEventListener("keydown", onKey);
|
|
9974
10501
|
return () => window.removeEventListener("keydown", onKey);
|
|
9975
10502
|
}, [shortcut, toggle]);
|
|
9976
|
-
const value =
|
|
10503
|
+
const value = React38.useMemo(
|
|
9977
10504
|
() => ({ state, setState, toggle, collapsible: true, peekLockCount, acquirePeekLock }),
|
|
9978
10505
|
[state, setState, toggle, peekLockCount, acquirePeekLock]
|
|
9979
10506
|
);
|
|
@@ -9982,15 +10509,15 @@ function SidebarProvider({
|
|
|
9982
10509
|
SidebarProvider.displayName = "SidebarProvider";
|
|
9983
10510
|
var PEEK_ENTER_DELAY_MS = 100;
|
|
9984
10511
|
var PEEK_LEAVE_DELAY_MS = 200;
|
|
9985
|
-
var Sidebar =
|
|
10512
|
+
var Sidebar = React38.forwardRef(function Sidebar2({ className, collapsible = false, variant = "classic", onMouseEnter, onMouseLeave, style, ...props }, ref) {
|
|
9986
10513
|
const isFloating = variant === "floating";
|
|
9987
|
-
const ctx =
|
|
10514
|
+
const ctx = React38.useContext(SidebarContext);
|
|
9988
10515
|
const state = collapsible && ctx ? ctx.state : "expanded";
|
|
9989
10516
|
const peekLockCount = collapsible && ctx ? ctx.peekLockCount : 0;
|
|
9990
|
-
const [peek, setPeek] =
|
|
9991
|
-
const enterTimer =
|
|
9992
|
-
const leaveTimer =
|
|
9993
|
-
const clearTimers =
|
|
10517
|
+
const [peek, setPeek] = React38.useState(false);
|
|
10518
|
+
const enterTimer = React38.useRef(null);
|
|
10519
|
+
const leaveTimer = React38.useRef(null);
|
|
10520
|
+
const clearTimers = React38.useCallback(() => {
|
|
9994
10521
|
if (enterTimer.current != null) {
|
|
9995
10522
|
window.clearTimeout(enterTimer.current);
|
|
9996
10523
|
enterTimer.current = null;
|
|
@@ -10000,8 +10527,8 @@ var Sidebar = React37.forwardRef(function Sidebar2({ className, collapsible = fa
|
|
|
10000
10527
|
leaveTimer.current = null;
|
|
10001
10528
|
}
|
|
10002
10529
|
}, []);
|
|
10003
|
-
|
|
10004
|
-
|
|
10530
|
+
React38.useEffect(() => () => clearTimers(), [clearTimers]);
|
|
10531
|
+
React38.useEffect(() => {
|
|
10005
10532
|
if (state === "expanded") {
|
|
10006
10533
|
clearTimers();
|
|
10007
10534
|
setPeek(false);
|
|
@@ -10082,7 +10609,7 @@ var Sidebar = React37.forwardRef(function Sidebar2({ className, collapsible = fa
|
|
|
10082
10609
|
);
|
|
10083
10610
|
});
|
|
10084
10611
|
Sidebar.displayName = "Sidebar";
|
|
10085
|
-
var SidebarTrigger =
|
|
10612
|
+
var SidebarTrigger = React38.forwardRef(
|
|
10086
10613
|
function SidebarTrigger2({
|
|
10087
10614
|
className,
|
|
10088
10615
|
expandLabel = "Expand sidebar",
|
|
@@ -10090,7 +10617,7 @@ var SidebarTrigger = React37.forwardRef(
|
|
|
10090
10617
|
onClick,
|
|
10091
10618
|
...props
|
|
10092
10619
|
}, ref) {
|
|
10093
|
-
const ctx =
|
|
10620
|
+
const ctx = React38.useContext(SidebarContext);
|
|
10094
10621
|
if (!ctx) return null;
|
|
10095
10622
|
const { state, toggle } = ctx;
|
|
10096
10623
|
const label = state === "expanded" ? collapseLabel : expandLabel;
|
|
@@ -10121,14 +10648,14 @@ var SidebarTrigger = React37.forwardRef(
|
|
|
10121
10648
|
);
|
|
10122
10649
|
SidebarTrigger.displayName = "SidebarTrigger";
|
|
10123
10650
|
function useSidebarPeekLock(active) {
|
|
10124
|
-
const ctx =
|
|
10125
|
-
|
|
10651
|
+
const ctx = React38.useContext(SidebarContext);
|
|
10652
|
+
React38.useEffect(() => {
|
|
10126
10653
|
if (!active || !ctx) return;
|
|
10127
10654
|
const release = ctx.acquirePeekLock();
|
|
10128
10655
|
return release;
|
|
10129
10656
|
}, [active, ctx]);
|
|
10130
10657
|
}
|
|
10131
|
-
var SidebarPinButton =
|
|
10658
|
+
var SidebarPinButton = React38.forwardRef(
|
|
10132
10659
|
function SidebarPinButton2({
|
|
10133
10660
|
pinLabel = "Pin sidebar",
|
|
10134
10661
|
unpinLabel = "Unpin sidebar",
|
|
@@ -10136,7 +10663,7 @@ var SidebarPinButton = React37.forwardRef(
|
|
|
10136
10663
|
onClick,
|
|
10137
10664
|
...props
|
|
10138
10665
|
}, ref) {
|
|
10139
|
-
const ctx =
|
|
10666
|
+
const ctx = React38.useContext(SidebarContext);
|
|
10140
10667
|
if (!ctx || !ctx.collapsible) return null;
|
|
10141
10668
|
const { state, setState } = ctx;
|
|
10142
10669
|
const isPinned = state === "expanded";
|
|
@@ -10201,7 +10728,7 @@ function PinGlyph({
|
|
|
10201
10728
|
}
|
|
10202
10729
|
);
|
|
10203
10730
|
}
|
|
10204
|
-
var SidebarBrand =
|
|
10731
|
+
var SidebarBrand = React38.forwardRef(
|
|
10205
10732
|
function SidebarBrand2({ className, ...props }, ref) {
|
|
10206
10733
|
return /* @__PURE__ */ jsx(
|
|
10207
10734
|
"div",
|
|
@@ -10217,7 +10744,7 @@ var SidebarBrand = React37.forwardRef(
|
|
|
10217
10744
|
}
|
|
10218
10745
|
);
|
|
10219
10746
|
SidebarBrand.displayName = "SidebarBrand";
|
|
10220
|
-
var SidebarBrandText =
|
|
10747
|
+
var SidebarBrandText = React38.forwardRef(
|
|
10221
10748
|
function SidebarBrandText2({ className, ...props }, ref) {
|
|
10222
10749
|
return /* @__PURE__ */ jsx(
|
|
10223
10750
|
"span",
|
|
@@ -10242,16 +10769,16 @@ var SidebarBrandText = React37.forwardRef(
|
|
|
10242
10769
|
}
|
|
10243
10770
|
);
|
|
10244
10771
|
SidebarBrandText.displayName = "SidebarBrandText";
|
|
10245
|
-
var SidebarGroupScopeContext =
|
|
10246
|
-
var SidebarSection =
|
|
10772
|
+
var SidebarGroupScopeContext = React38.createContext(null);
|
|
10773
|
+
var SidebarSection = React38.forwardRef(
|
|
10247
10774
|
function SidebarSection2({ label, tone = "pro", className, children, ...props }, ref) {
|
|
10248
10775
|
const ariaLabel = typeof label === "string" ? label : typeof label === "number" ? String(label) : void 0;
|
|
10249
|
-
const [exclusiveId, setExclusiveIdState] =
|
|
10250
|
-
const setExclusive =
|
|
10776
|
+
const [exclusiveId, setExclusiveIdState] = React38.useState(null);
|
|
10777
|
+
const setExclusive = React38.useCallback(
|
|
10251
10778
|
(id) => setExclusiveIdState(id),
|
|
10252
10779
|
[]
|
|
10253
10780
|
);
|
|
10254
|
-
const scope =
|
|
10781
|
+
const scope = React38.useMemo(
|
|
10255
10782
|
() => ({ exclusiveId, setExclusive }),
|
|
10256
10783
|
[exclusiveId, setExclusive]
|
|
10257
10784
|
);
|
|
@@ -10304,12 +10831,12 @@ function getTextContent(node) {
|
|
|
10304
10831
|
if (node == null || typeof node === "boolean") return "";
|
|
10305
10832
|
if (typeof node === "string" || typeof node === "number") return String(node);
|
|
10306
10833
|
if (Array.isArray(node)) return node.map(getTextContent).filter(Boolean).join(" ");
|
|
10307
|
-
if (
|
|
10834
|
+
if (React38.isValidElement(node)) {
|
|
10308
10835
|
return getTextContent(node.props.children);
|
|
10309
10836
|
}
|
|
10310
10837
|
return "";
|
|
10311
10838
|
}
|
|
10312
|
-
var SidebarLink =
|
|
10839
|
+
var SidebarLink = React38.forwardRef(
|
|
10313
10840
|
function SidebarLink2({ href, icon, active = false, asChild, className, children, "aria-label": ariaLabel, ...props }, ref) {
|
|
10314
10841
|
const Comp = asChild ? Slot : "a";
|
|
10315
10842
|
const accessibleLabel = ariaLabel ?? (asChild ? void 0 : getTextContent(children) || void 0);
|
|
@@ -10380,7 +10907,7 @@ var SidebarLink = React37.forwardRef(
|
|
|
10380
10907
|
}
|
|
10381
10908
|
);
|
|
10382
10909
|
SidebarLink.displayName = "SidebarLink";
|
|
10383
|
-
var SidebarLinkLabel =
|
|
10910
|
+
var SidebarLinkLabel = React38.forwardRef(
|
|
10384
10911
|
function SidebarLinkLabel2({ className, ...props }, ref) {
|
|
10385
10912
|
return /* @__PURE__ */ jsx(
|
|
10386
10913
|
"span",
|
|
@@ -10405,7 +10932,7 @@ var SidebarLinkLabel = React37.forwardRef(
|
|
|
10405
10932
|
}
|
|
10406
10933
|
);
|
|
10407
10934
|
SidebarLinkLabel.displayName = "SidebarLinkLabel";
|
|
10408
|
-
var SidebarLinkAction =
|
|
10935
|
+
var SidebarLinkAction = React38.forwardRef(
|
|
10409
10936
|
function SidebarLinkAction2({ className, ...props }, ref) {
|
|
10410
10937
|
return /* @__PURE__ */ jsx(
|
|
10411
10938
|
"span",
|
|
@@ -10437,13 +10964,13 @@ var sidebarLinkBadgeVariants = cva(
|
|
|
10437
10964
|
defaultVariants: { tone: "default" }
|
|
10438
10965
|
}
|
|
10439
10966
|
);
|
|
10440
|
-
var SidebarLinkBadge =
|
|
10967
|
+
var SidebarLinkBadge = React38.forwardRef(
|
|
10441
10968
|
function SidebarLinkBadge2({ tone, className, ...props }, ref) {
|
|
10442
10969
|
return /* @__PURE__ */ jsx("span", { ref, className: cn(sidebarLinkBadgeVariants({ tone }), className), ...props });
|
|
10443
10970
|
}
|
|
10444
10971
|
);
|
|
10445
10972
|
SidebarLinkBadge.displayName = "SidebarLinkBadge";
|
|
10446
|
-
var SidebarLinkGroup =
|
|
10973
|
+
var SidebarLinkGroup = React38.forwardRef(
|
|
10447
10974
|
function SidebarLinkGroup2({
|
|
10448
10975
|
id: idProp,
|
|
10449
10976
|
icon,
|
|
@@ -10458,19 +10985,19 @@ var SidebarLinkGroup = React37.forwardRef(
|
|
|
10458
10985
|
children,
|
|
10459
10986
|
...props
|
|
10460
10987
|
}, ref) {
|
|
10461
|
-
const reactId =
|
|
10988
|
+
const reactId = React38.useId();
|
|
10462
10989
|
const id = idProp ?? reactId;
|
|
10463
|
-
const scope =
|
|
10464
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
10990
|
+
const scope = React38.useContext(SidebarGroupScopeContext);
|
|
10991
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React38.useState(defaultOpen);
|
|
10465
10992
|
const open = controlled ?? uncontrolledOpen;
|
|
10466
|
-
const setOpen =
|
|
10993
|
+
const setOpen = React38.useCallback(
|
|
10467
10994
|
(next) => {
|
|
10468
10995
|
if (controlled === void 0) setUncontrolledOpen(next);
|
|
10469
10996
|
onOpenChange?.(next);
|
|
10470
10997
|
},
|
|
10471
10998
|
[controlled, onOpenChange]
|
|
10472
10999
|
);
|
|
10473
|
-
|
|
11000
|
+
React38.useEffect(() => {
|
|
10474
11001
|
if (scope?.exclusiveId && scope.exclusiveId !== id && open) {
|
|
10475
11002
|
setOpen(false);
|
|
10476
11003
|
}
|
|
@@ -10579,7 +11106,7 @@ var SidebarLinkGroup = React37.forwardRef(
|
|
|
10579
11106
|
}
|
|
10580
11107
|
);
|
|
10581
11108
|
SidebarLinkGroup.displayName = "SidebarLinkGroup";
|
|
10582
|
-
var SidebarFooter =
|
|
11109
|
+
var SidebarFooter = React38.forwardRef(
|
|
10583
11110
|
function SidebarFooter2({ className, ...props }, ref) {
|
|
10584
11111
|
return /* @__PURE__ */ jsx(
|
|
10585
11112
|
"div",
|
|
@@ -10596,7 +11123,7 @@ var SidebarFooter = React37.forwardRef(
|
|
|
10596
11123
|
}
|
|
10597
11124
|
);
|
|
10598
11125
|
SidebarFooter.displayName = "SidebarFooter";
|
|
10599
|
-
var SidebarUser =
|
|
11126
|
+
var SidebarUser = React38.forwardRef(function SidebarUser2({ name, subtitle, avatarSrc, className, ...props }, ref) {
|
|
10600
11127
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex min-w-0 items-center gap-2.5", className), ...props, children: [
|
|
10601
11128
|
/* @__PURE__ */ jsx(Avatar, { size: "sm", variant: "branded", name, src: avatarSrc ?? void 0 }),
|
|
10602
11129
|
/* @__PURE__ */ jsxs(
|
|
@@ -10617,7 +11144,7 @@ var SidebarUser = React37.forwardRef(function SidebarUser2({ name, subtitle, ava
|
|
|
10617
11144
|
] });
|
|
10618
11145
|
});
|
|
10619
11146
|
SidebarUser.displayName = "SidebarUser";
|
|
10620
|
-
var SidebarBrandSwitcher =
|
|
11147
|
+
var SidebarBrandSwitcher = React38.forwardRef(
|
|
10621
11148
|
function SidebarBrandSwitcher2({
|
|
10622
11149
|
brand,
|
|
10623
11150
|
label,
|
|
@@ -10635,7 +11162,7 @@ var SidebarBrandSwitcher = React37.forwardRef(
|
|
|
10635
11162
|
contentClassName,
|
|
10636
11163
|
trailing
|
|
10637
11164
|
}, ref) {
|
|
10638
|
-
const [open, setOpen] =
|
|
11165
|
+
const [open, setOpen] = React38.useState(false);
|
|
10639
11166
|
useSidebarPeekLock(open);
|
|
10640
11167
|
const others = items.filter((p) => p.id !== current.id);
|
|
10641
11168
|
return (
|
|
@@ -10755,7 +11282,7 @@ function SidebarBrandSwitcherOtherRow({
|
|
|
10755
11282
|
unavailableBadge
|
|
10756
11283
|
}) {
|
|
10757
11284
|
const reachable = item.available !== false;
|
|
10758
|
-
const [launching, setLaunching] =
|
|
11285
|
+
const [launching, setLaunching] = React38.useState(false);
|
|
10759
11286
|
const handleSelect = async () => {
|
|
10760
11287
|
if (!reachable || launching || !onLaunch) return;
|
|
10761
11288
|
setLaunching(true);
|
|
@@ -12672,7 +13199,7 @@ var FilterChip = forwardRef(function FilterChip2({ active = false, size, count,
|
|
|
12672
13199
|
);
|
|
12673
13200
|
});
|
|
12674
13201
|
FilterChip.displayName = "FilterChip";
|
|
12675
|
-
var BulkActionBarContext =
|
|
13202
|
+
var BulkActionBarContext = React38.createContext({ tone: "surface" });
|
|
12676
13203
|
function actionClasses(tone, destructive) {
|
|
12677
13204
|
const base = cn(
|
|
12678
13205
|
"inline-flex h-8 items-center gap-1.5 rounded-btn px-3 text-[13px] font-medium",
|
|
@@ -12695,8 +13222,8 @@ function actionClasses(tone, destructive) {
|
|
|
12695
13222
|
destructive ? "text-control-destructive-fg hover:bg-control-destructive-hover-bg" : "text-control-fg hover:bg-control-hover-bg hover:text-control-hover-fg"
|
|
12696
13223
|
);
|
|
12697
13224
|
}
|
|
12698
|
-
var BulkActionBarAction =
|
|
12699
|
-
const { tone } =
|
|
13225
|
+
var BulkActionBarAction = React38.forwardRef(function BulkActionBarAction2({ asChild = false, destructive, className, type, ...props }, ref) {
|
|
13226
|
+
const { tone } = React38.use(BulkActionBarContext);
|
|
12700
13227
|
const Comp = asChild ? Slot : "button";
|
|
12701
13228
|
return /* @__PURE__ */ jsx(
|
|
12702
13229
|
Comp,
|
|
@@ -12710,7 +13237,7 @@ var BulkActionBarAction = React37.forwardRef(function BulkActionBarAction2({ asC
|
|
|
12710
13237
|
});
|
|
12711
13238
|
BulkActionBarAction.displayName = "BulkActionBarAction";
|
|
12712
13239
|
function BulkActionBarSeparator({ className }) {
|
|
12713
|
-
const { tone } =
|
|
13240
|
+
const { tone } = React38.use(BulkActionBarContext);
|
|
12714
13241
|
return /* @__PURE__ */ jsx(
|
|
12715
13242
|
"span",
|
|
12716
13243
|
{
|
|
@@ -12910,6 +13437,6 @@ var KbdHint = forwardRef(function KbdHint2({ className, children, ...props }, re
|
|
|
12910
13437
|
});
|
|
12911
13438
|
KbdHint.displayName = "KbdHint";
|
|
12912
13439
|
|
|
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 };
|
|
13440
|
+
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, ClientRailGroupHeader, ClientRailItem, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content16 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CountryFlag, CountrySelect, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, 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, DocumentFileCard, DocumentFileRow, DocumentIcon, DocumentRequestField, DocumentsWorkspaceLayout, 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, MissingDocumentsPanel, 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 };
|
|
12914
13441
|
//# sourceMappingURL=index.js.map
|
|
12915
13442
|
//# sourceMappingURL=index.js.map
|