@assure-one/design-system 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -14
- package/dist/index.d.ts +304 -71
- package/dist/index.js +552 -174
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tokens/index.d.ts +3 -5
- package/dist/tokens/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2120,6 +2120,74 @@ function FilterIcon({ size = 24, ...props }) {
|
|
|
2120
2120
|
}
|
|
2121
2121
|
) });
|
|
2122
2122
|
}
|
|
2123
|
+
function CheckCircleSolidIcon({ size = 24, ...props }) {
|
|
2124
|
+
return /* @__PURE__ */ jsx(Icon, { size, ...props, children: /* @__PURE__ */ jsx(
|
|
2125
|
+
"path",
|
|
2126
|
+
{
|
|
2127
|
+
fillRule: "evenodd",
|
|
2128
|
+
clipRule: "evenodd",
|
|
2129
|
+
fill: "currentColor",
|
|
2130
|
+
d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 0 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z"
|
|
2131
|
+
}
|
|
2132
|
+
) });
|
|
2133
|
+
}
|
|
2134
|
+
function XCircleSolidIcon({ size = 24, ...props }) {
|
|
2135
|
+
return /* @__PURE__ */ jsx(Icon, { size, ...props, children: /* @__PURE__ */ jsx(
|
|
2136
|
+
"path",
|
|
2137
|
+
{
|
|
2138
|
+
fillRule: "evenodd",
|
|
2139
|
+
clipRule: "evenodd",
|
|
2140
|
+
fill: "currentColor",
|
|
2141
|
+
d: "M12 2.25C6.615 2.25 2.25 6.615 2.25 12s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25Zm-1.72 6.97a.75.75 0 0 0-1.06 1.06L10.94 12l-1.72 1.72a.75.75 0 1 0 1.06 1.06L12 13.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L13.06 12l1.72-1.72a.75.75 0 1 0-1.06-1.06L12 10.94l-1.72-1.72Z"
|
|
2142
|
+
}
|
|
2143
|
+
) });
|
|
2144
|
+
}
|
|
2145
|
+
function AlertTriangleSolidIcon({ size = 24, ...props }) {
|
|
2146
|
+
return /* @__PURE__ */ jsx(Icon, { size, ...props, children: /* @__PURE__ */ jsx(
|
|
2147
|
+
"path",
|
|
2148
|
+
{
|
|
2149
|
+
fillRule: "evenodd",
|
|
2150
|
+
clipRule: "evenodd",
|
|
2151
|
+
fill: "currentColor",
|
|
2152
|
+
d: "M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z"
|
|
2153
|
+
}
|
|
2154
|
+
) });
|
|
2155
|
+
}
|
|
2156
|
+
function InfoCircleSolidIcon({ size = 24, ...props }) {
|
|
2157
|
+
return /* @__PURE__ */ jsx(Icon, { size, ...props, children: /* @__PURE__ */ jsx(
|
|
2158
|
+
"path",
|
|
2159
|
+
{
|
|
2160
|
+
fillRule: "evenodd",
|
|
2161
|
+
clipRule: "evenodd",
|
|
2162
|
+
fill: "currentColor",
|
|
2163
|
+
d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 0 1 .67 1.342l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 1 1-.671-1.341l.041-.022ZM12 9a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z"
|
|
2164
|
+
}
|
|
2165
|
+
) });
|
|
2166
|
+
}
|
|
2167
|
+
function TrendingUpIcon({ size = 24, ...props }) {
|
|
2168
|
+
return /* @__PURE__ */ jsx(Icon, { size, ...props, children: /* @__PURE__ */ jsx(
|
|
2169
|
+
"path",
|
|
2170
|
+
{
|
|
2171
|
+
d: "M2 17l6.5-6.5 5 5L22 7M16 7h6v6",
|
|
2172
|
+
stroke: "currentColor",
|
|
2173
|
+
strokeWidth: "1.5",
|
|
2174
|
+
strokeLinecap: "round",
|
|
2175
|
+
strokeLinejoin: "round"
|
|
2176
|
+
}
|
|
2177
|
+
) });
|
|
2178
|
+
}
|
|
2179
|
+
function TrendingDownIcon({ size = 24, ...props }) {
|
|
2180
|
+
return /* @__PURE__ */ jsx(Icon, { size, ...props, children: /* @__PURE__ */ jsx(
|
|
2181
|
+
"path",
|
|
2182
|
+
{
|
|
2183
|
+
d: "M2 7l6.5 6.5 5-5L22 17M16 17h6v-6",
|
|
2184
|
+
stroke: "currentColor",
|
|
2185
|
+
strokeWidth: "1.5",
|
|
2186
|
+
strokeLinecap: "round",
|
|
2187
|
+
strokeLinejoin: "round"
|
|
2188
|
+
}
|
|
2189
|
+
) });
|
|
2190
|
+
}
|
|
2123
2191
|
var Accordion = React36.forwardRef(function Accordion2({ className, ...props }, ref) {
|
|
2124
2192
|
return /* @__PURE__ */ jsx(
|
|
2125
2193
|
AccordionPrimitive.Root,
|
|
@@ -2622,12 +2690,18 @@ var buttonVariants = cva(
|
|
|
2622
2690
|
ghost: "bg-transparent text-fg-2 hover:bg-bg-2 hover:text-fg",
|
|
2623
2691
|
outline: "border border-rule-strong bg-bg text-fg-2 hover:bg-bg-2 hover:border-fg-4",
|
|
2624
2692
|
link: "bg-transparent text-accent underline-offset-4 hover:underline p-0 h-auto",
|
|
2625
|
-
accent: "bg-accent text-fg-on-accent hover:bg-accent-hover active:bg-accent-active"
|
|
2693
|
+
accent: "bg-accent text-fg-on-accent hover:bg-accent-hover active:bg-accent-active",
|
|
2694
|
+
dashed: "border-2 border-dashed border-rule bg-transparent text-fg-3 hover:border-fg-4 hover:bg-bg-2 hover:text-fg"
|
|
2626
2695
|
},
|
|
2627
2696
|
size: {
|
|
2628
2697
|
sm: "h-8 px-3 text-sm gap-1.5",
|
|
2629
2698
|
md: "h-10 px-4 text-sm gap-2",
|
|
2630
2699
|
lg: "h-12 px-6 text-base gap-2",
|
|
2700
|
+
// Icon-only sizes. Hit target ≥ 24px (WCAG 2.5.5 floor).
|
|
2701
|
+
// `icon-xs` / `icon-sm` are for dense in-row action stacks where
|
|
2702
|
+
// `size="icon"` (40×40) would visually crowd the row.
|
|
2703
|
+
"icon-xs": "size-6 [&_svg]:size-3.5",
|
|
2704
|
+
"icon-sm": "size-7 [&_svg]:size-4",
|
|
2631
2705
|
icon: "size-10"
|
|
2632
2706
|
}
|
|
2633
2707
|
},
|
|
@@ -3065,8 +3139,8 @@ function Select({
|
|
|
3065
3139
|
children: /* @__PURE__ */ jsx(SelectValue, { placeholder })
|
|
3066
3140
|
}
|
|
3067
3141
|
),
|
|
3068
|
-
/* @__PURE__ */ jsx(SelectContent, { className: contentClassName, children: options.map((opt) => /* @__PURE__ */ jsx(SelectItem, { value: opt.value, disabled: opt.disabled, children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5
|
|
3069
|
-
opt.label,
|
|
3142
|
+
/* @__PURE__ */ jsx(SelectContent, { className: contentClassName, children: options.map((opt) => /* @__PURE__ */ jsx(SelectItem, { value: opt.value, disabled: opt.disabled, children: /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
3143
|
+
/* @__PURE__ */ jsx("span", { className: "line-clamp-1", children: opt.label }),
|
|
3070
3144
|
opt.labelSuffix
|
|
3071
3145
|
] }) }, opt.value)) })
|
|
3072
3146
|
]
|
|
@@ -3084,16 +3158,17 @@ function ClientSelect({
|
|
|
3084
3158
|
placeholder = "Select a client..."
|
|
3085
3159
|
}) {
|
|
3086
3160
|
const radixValue = value ?? void 0;
|
|
3161
|
+
const selected = value ? clients.find((c) => c.id === value) : void 0;
|
|
3087
3162
|
const handleChange = (next) => {
|
|
3088
3163
|
onChange(next === "" ? null : next);
|
|
3089
3164
|
};
|
|
3090
3165
|
return /* @__PURE__ */ jsxs("div", { className: cn("relative w-full", className), children: [
|
|
3091
3166
|
/* @__PURE__ */ jsx("input", { type: "hidden", name, value: value ?? "" }),
|
|
3092
3167
|
/* @__PURE__ */ jsxs(SelectRoot, { value: radixValue, onValueChange: handleChange, children: [
|
|
3093
|
-
/* @__PURE__ */ jsx(SelectTrigger, { "aria-invalid": !!error || void 0, "aria-label": placeholder, children: /* @__PURE__ */ jsx(SelectValue, { placeholder }) }),
|
|
3094
|
-
/* @__PURE__ */ jsx(SelectContent, { children: clients.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-fg-3 px-3 py-6 text-center text-xs", children: "No clients yet" }) : clients.map((c) => /* @__PURE__ */ jsx(SelectItem, { value: c.id, children: /* @__PURE__ */ jsxs("span", { className: "flex flex-col", children: [
|
|
3095
|
-
/* @__PURE__ */ jsx("span", { className: "text-fg text-[13px] font-medium", children: c.label }),
|
|
3096
|
-
c.email && /* @__PURE__ */ jsx("span", { className: "text-fg-3 text-xs", children: c.email })
|
|
3168
|
+
/* @__PURE__ */ jsx(SelectTrigger, { "aria-invalid": !!error || void 0, "aria-label": placeholder, children: /* @__PURE__ */ jsx(SelectValue, { placeholder, children: selected?.label ?? "" }) }),
|
|
3169
|
+
/* @__PURE__ */ jsx(SelectContent, { children: clients.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-fg-3 px-3 py-6 text-center text-xs", children: "No clients yet" }) : clients.map((c) => /* @__PURE__ */ jsx(SelectItem, { value: c.id, children: /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-col", children: [
|
|
3170
|
+
/* @__PURE__ */ jsx("span", { className: "text-fg line-clamp-1 text-[13px] font-medium", children: c.label }),
|
|
3171
|
+
c.email && /* @__PURE__ */ jsx("span", { className: "text-fg-3 line-clamp-1 text-xs", children: c.email })
|
|
3097
3172
|
] }) }, c.id)) })
|
|
3098
3173
|
] }),
|
|
3099
3174
|
error && /* @__PURE__ */ jsx("p", { role: "alert", className: "text-danger-fg mt-1.5 text-xs", children: error })
|
|
@@ -3430,7 +3505,7 @@ function CommandPalette({
|
|
|
3430
3505
|
),
|
|
3431
3506
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3432
3507
|
/* @__PURE__ */ jsx("div", { className: "text-fg text-sm font-medium", children: item.label }),
|
|
3433
|
-
item.description && /* @__PURE__ */ jsx("div", { className: "text-fg-3
|
|
3508
|
+
item.description && /* @__PURE__ */ jsx("div", { className: "text-fg-3 line-clamp-1 text-xs", children: item.description })
|
|
3434
3509
|
] }),
|
|
3435
3510
|
item.shortcut && /* @__PURE__ */ jsx("kbd", { className: cn(kbdClass, "hidden shrink-0 sm:inline-flex"), children: item.shortcut })
|
|
3436
3511
|
]
|
|
@@ -4276,6 +4351,19 @@ function FormSuccess({ children, className, ...props }) {
|
|
|
4276
4351
|
}
|
|
4277
4352
|
);
|
|
4278
4353
|
}
|
|
4354
|
+
var FormSection = forwardRef(function FormSection2({ title, description, action, headSpacing = "mt-4", className, children, ...props }, ref) {
|
|
4355
|
+
return /* @__PURE__ */ jsxs("fieldset", { ref, className: cn("min-w-0", className), ...props, children: [
|
|
4356
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
4357
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
4358
|
+
/* @__PURE__ */ jsx("legend", { className: "text-fg text-sm font-semibold", children: title }),
|
|
4359
|
+
description && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-0.5 text-xs leading-relaxed", children: description })
|
|
4360
|
+
] }),
|
|
4361
|
+
action && /* @__PURE__ */ jsx("div", { className: "shrink-0", children: action })
|
|
4362
|
+
] }),
|
|
4363
|
+
/* @__PURE__ */ jsx("div", { className: headSpacing, children })
|
|
4364
|
+
] });
|
|
4365
|
+
});
|
|
4366
|
+
FormSection.displayName = "FormSection";
|
|
4279
4367
|
var HoverCard = HoverCardPrimitive.Root;
|
|
4280
4368
|
var HoverCardTrigger = HoverCardPrimitive.Trigger;
|
|
4281
4369
|
var HoverCardPortal = HoverCardPrimitive.Portal;
|
|
@@ -4398,67 +4486,45 @@ var Input = forwardRef(function Input2({
|
|
|
4398
4486
|
] });
|
|
4399
4487
|
});
|
|
4400
4488
|
Input.displayName = "Input";
|
|
4401
|
-
var
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
},
|
|
4412
|
-
{
|
|
4413
|
-
title: "Go to",
|
|
4414
|
-
icon: null,
|
|
4415
|
-
shortcuts: [
|
|
4416
|
-
{ keys: ["G", "O"], description: "Overview" },
|
|
4417
|
-
{ keys: ["G", "C"], description: "Clients" },
|
|
4418
|
-
{ keys: ["G", "W"], description: "Workflow" },
|
|
4419
|
-
{ keys: ["G", "D"], description: "Documents" },
|
|
4420
|
-
{ keys: ["G", "B"], description: "Billing" },
|
|
4421
|
-
{ keys: ["G", "M"], description: "Communications" },
|
|
4422
|
-
{ keys: ["G", "A"], description: "Calendar" },
|
|
4423
|
-
{ keys: ["G", "R"], description: "Reports" },
|
|
4424
|
-
{ keys: ["G", "S"], description: "Settings" }
|
|
4425
|
-
]
|
|
4426
|
-
},
|
|
4427
|
-
{
|
|
4428
|
-
title: "General",
|
|
4429
|
-
icon: /* @__PURE__ */ jsx(CommandIcon, { className: "size-3" }),
|
|
4430
|
-
shortcuts: [
|
|
4431
|
-
{ keys: ["\u2318", "K"], description: "Command palette" },
|
|
4432
|
-
{ keys: ["/"], description: "Focus search" },
|
|
4433
|
-
{ keys: ["?"], description: "Keyboard shortcuts" },
|
|
4434
|
-
{ keys: ["Esc"], description: "Close / go back" }
|
|
4435
|
-
]
|
|
4436
|
-
}
|
|
4437
|
-
];
|
|
4489
|
+
var GENERAL_SECTION = {
|
|
4490
|
+
title: "General",
|
|
4491
|
+
icon: /* @__PURE__ */ jsx(CommandIcon, { className: "size-3" }),
|
|
4492
|
+
shortcuts: [
|
|
4493
|
+
{ keys: ["\u2318", "K"], description: "Command palette" },
|
|
4494
|
+
{ keys: ["/"], description: "Focus search" },
|
|
4495
|
+
{ keys: ["?"], description: "Keyboard shortcuts" },
|
|
4496
|
+
{ keys: ["Esc"], description: "Close / go back" }
|
|
4497
|
+
]
|
|
4498
|
+
};
|
|
4438
4499
|
var kbdClass2 = cn(
|
|
4439
4500
|
"inline-flex items-center justify-center min-w-[18px] h-[18px] px-[5px]",
|
|
4440
4501
|
"font-mono text-[10.5px] text-fg-3 bg-bg-2 border border-rule rounded-icon",
|
|
4441
4502
|
"[border-bottom-width:1.5px]"
|
|
4442
4503
|
);
|
|
4443
|
-
function KeyboardShortcutsDialog(
|
|
4504
|
+
function KeyboardShortcutsDialog({
|
|
4505
|
+
sections,
|
|
4506
|
+
hotkey = "?"
|
|
4507
|
+
} = {}) {
|
|
4444
4508
|
const [open, setOpen] = React36.useState(false);
|
|
4445
4509
|
React36.useEffect(() => {
|
|
4510
|
+
if (hotkey === null) return;
|
|
4446
4511
|
function handleKeyDown(e) {
|
|
4447
4512
|
const target = e.target;
|
|
4448
4513
|
if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement || target?.isContentEditable) {
|
|
4449
4514
|
return;
|
|
4450
4515
|
}
|
|
4451
|
-
if (e.key ===
|
|
4516
|
+
if (e.key === hotkey && !e.metaKey && !e.ctrlKey && !e.altKey) {
|
|
4452
4517
|
e.preventDefault();
|
|
4453
4518
|
setOpen((prev) => !prev);
|
|
4454
4519
|
}
|
|
4455
4520
|
}
|
|
4456
4521
|
document.addEventListener("keydown", handleKeyDown);
|
|
4457
4522
|
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
4458
|
-
}, []);
|
|
4523
|
+
}, [hotkey]);
|
|
4524
|
+
const allSections = sections ? [...sections, GENERAL_SECTION] : [GENERAL_SECTION];
|
|
4459
4525
|
return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxs(DialogContent, { size: "md", className: "p-0", children: [
|
|
4460
4526
|
/* @__PURE__ */ jsx(DialogHeader, { className: "border-rule mb-0 border-b px-5 py-4 pr-12", children: /* @__PURE__ */ jsx(DialogTitle, { className: "text-sm font-semibold", children: "Keyboard Shortcuts" }) }),
|
|
4461
|
-
/* @__PURE__ */ jsx("div", { className: "scrollbar-thin max-h-[60vh] overflow-y-auto px-5 py-4", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-x-6 gap-y-5", children:
|
|
4527
|
+
/* @__PURE__ */ jsx("div", { className: "scrollbar-thin max-h-[60vh] overflow-y-auto px-5 py-4", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-x-6 gap-y-5", children: allSections.map((section) => /* @__PURE__ */ jsxs("div", { className: cn(section.wide && "row-span-2"), children: [
|
|
4462
4528
|
/* @__PURE__ */ jsxs(
|
|
4463
4529
|
"h3",
|
|
4464
4530
|
{
|
|
@@ -4489,7 +4555,7 @@ function KeyboardShortcutsDialog() {
|
|
|
4489
4555
|
] }, section.title)) }) }),
|
|
4490
4556
|
/* @__PURE__ */ jsx("div", { className: "border-rule bg-bg-2/40 border-t px-5 py-3", children: /* @__PURE__ */ jsxs("p", { className: "text-fg-3 text-[11px]", children: [
|
|
4491
4557
|
"Press ",
|
|
4492
|
-
/* @__PURE__ */ jsx("kbd", { className: kbdClass2, children: "?" }),
|
|
4558
|
+
/* @__PURE__ */ jsx("kbd", { className: kbdClass2, children: hotkey ?? "?" }),
|
|
4493
4559
|
" anytime to toggle this dialog"
|
|
4494
4560
|
] }) })
|
|
4495
4561
|
] }) });
|
|
@@ -4506,23 +4572,106 @@ var Label4 = React36.forwardRef(
|
|
|
4506
4572
|
}
|
|
4507
4573
|
);
|
|
4508
4574
|
Label4.displayName = LabelPrimitive.Root.displayName;
|
|
4509
|
-
var LinkButton = forwardRef(function LinkButton2({
|
|
4510
|
-
|
|
4511
|
-
|
|
4575
|
+
var LinkButton = forwardRef(function LinkButton2({
|
|
4576
|
+
href,
|
|
4577
|
+
variant = "primary",
|
|
4578
|
+
size = "md",
|
|
4579
|
+
iconLeft,
|
|
4580
|
+
iconRight,
|
|
4581
|
+
children,
|
|
4582
|
+
className,
|
|
4583
|
+
external,
|
|
4584
|
+
target,
|
|
4585
|
+
rel,
|
|
4586
|
+
...props
|
|
4587
|
+
}, ref) {
|
|
4588
|
+
const classes = cn(buttonVariants({ variant, size }), className);
|
|
4589
|
+
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4590
|
+
iconLeft && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0", "aria-hidden": "true", children: iconLeft }),
|
|
4591
|
+
children,
|
|
4592
|
+
iconRight && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0", "aria-hidden": "true", children: iconRight })
|
|
4593
|
+
] });
|
|
4594
|
+
if (external) {
|
|
4595
|
+
const safeRel = rel ?? (target === "_blank" ? "noopener noreferrer" : void 0);
|
|
4596
|
+
return /* @__PURE__ */ jsx(
|
|
4597
|
+
"a",
|
|
4598
|
+
{
|
|
4599
|
+
ref,
|
|
4600
|
+
href,
|
|
4601
|
+
className: classes,
|
|
4602
|
+
target,
|
|
4603
|
+
rel: safeRel,
|
|
4604
|
+
...props,
|
|
4605
|
+
children: content
|
|
4606
|
+
}
|
|
4607
|
+
);
|
|
4608
|
+
}
|
|
4609
|
+
return /* @__PURE__ */ jsx(Link, { ref, href, className: classes, target, rel, ...props, children: content });
|
|
4610
|
+
});
|
|
4611
|
+
LinkButton.displayName = "LinkButton";
|
|
4612
|
+
var Skeleton = forwardRef(function Skeleton2({ className, ...props }, ref) {
|
|
4613
|
+
return /* @__PURE__ */ jsx(
|
|
4614
|
+
"div",
|
|
4512
4615
|
{
|
|
4513
4616
|
ref,
|
|
4514
|
-
|
|
4515
|
-
|
|
4617
|
+
className: cn("skeleton bg-bg-3 rounded-icon animate-pulse", className),
|
|
4618
|
+
"aria-hidden": "true",
|
|
4619
|
+
...props
|
|
4620
|
+
}
|
|
4621
|
+
);
|
|
4622
|
+
});
|
|
4623
|
+
Skeleton.displayName = "Skeleton";
|
|
4624
|
+
var SkeletonText = forwardRef(function SkeletonText2({ lines = 3, className, ...props }, ref) {
|
|
4625
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-2", className), "aria-hidden": "true", ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx(
|
|
4626
|
+
"div",
|
|
4627
|
+
{
|
|
4628
|
+
className: cn(
|
|
4629
|
+
"skeleton bg-bg-3 rounded-icon h-4 animate-pulse",
|
|
4630
|
+
i === lines - 1 && "w-3/4"
|
|
4631
|
+
)
|
|
4632
|
+
},
|
|
4633
|
+
i
|
|
4634
|
+
)) });
|
|
4635
|
+
});
|
|
4636
|
+
SkeletonText.displayName = "SkeletonText";
|
|
4637
|
+
var SkeletonCircle = forwardRef(
|
|
4638
|
+
function SkeletonCircle2({ size = 40, className, ...props }, ref) {
|
|
4639
|
+
return /* @__PURE__ */ jsx(
|
|
4640
|
+
"div",
|
|
4641
|
+
{
|
|
4642
|
+
ref,
|
|
4643
|
+
className: cn("skeleton bg-bg-3 animate-pulse rounded-full", className),
|
|
4644
|
+
style: { width: size, height: size },
|
|
4645
|
+
"aria-hidden": "true",
|
|
4646
|
+
...props
|
|
4647
|
+
}
|
|
4648
|
+
);
|
|
4649
|
+
}
|
|
4650
|
+
);
|
|
4651
|
+
SkeletonCircle.displayName = "SkeletonCircle";
|
|
4652
|
+
var LoadingRows = forwardRef(function LoadingRows2({
|
|
4653
|
+
count = 3,
|
|
4654
|
+
rowHeight = "h-14",
|
|
4655
|
+
gap = "gap-2",
|
|
4656
|
+
rowClassName,
|
|
4657
|
+
label = "Loading",
|
|
4658
|
+
className,
|
|
4659
|
+
...props
|
|
4660
|
+
}, ref) {
|
|
4661
|
+
return /* @__PURE__ */ jsx(
|
|
4662
|
+
"div",
|
|
4663
|
+
{
|
|
4664
|
+
ref,
|
|
4665
|
+
role: "status",
|
|
4666
|
+
"aria-busy": "true",
|
|
4667
|
+
"aria-label": label,
|
|
4668
|
+
className: cn("flex flex-col", gap, className),
|
|
4516
4669
|
...props,
|
|
4517
|
-
children:
|
|
4518
|
-
iconLeft && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0", "aria-hidden": "true", children: iconLeft }),
|
|
4519
|
-
children,
|
|
4520
|
-
iconRight && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0", "aria-hidden": "true", children: iconRight })
|
|
4521
|
-
]
|
|
4670
|
+
children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsx(Skeleton, { className: cn(rowHeight, "w-full", rowClassName) }, i))
|
|
4522
4671
|
}
|
|
4523
4672
|
);
|
|
4524
4673
|
});
|
|
4525
|
-
|
|
4674
|
+
LoadingRows.displayName = "LoadingRows";
|
|
4526
4675
|
var sizeStyles = {
|
|
4527
4676
|
sm: { icon: 20, text: "text-sm", gap: "gap-2" },
|
|
4528
4677
|
md: { icon: 24, text: "text-[17px]", gap: "gap-2.5" },
|
|
@@ -4535,15 +4684,17 @@ function Logo({
|
|
|
4535
4684
|
className,
|
|
4536
4685
|
iconClassName,
|
|
4537
4686
|
textClassName,
|
|
4687
|
+
productName = "Pro",
|
|
4538
4688
|
inverted = false
|
|
4539
4689
|
}) {
|
|
4540
4690
|
const s = sizeStyles[size];
|
|
4691
|
+
const ariaLabel = productName ? `Assure ${productName}` : "Assure";
|
|
4541
4692
|
return /* @__PURE__ */ jsxs(
|
|
4542
4693
|
Link,
|
|
4543
4694
|
{
|
|
4544
4695
|
href,
|
|
4545
4696
|
className: cn("inline-flex items-center", s.gap, className),
|
|
4546
|
-
"aria-label":
|
|
4697
|
+
"aria-label": ariaLabel,
|
|
4547
4698
|
children: [
|
|
4548
4699
|
/* @__PURE__ */ jsx(
|
|
4549
4700
|
Image2,
|
|
@@ -4567,8 +4718,10 @@ function Logo({
|
|
|
4567
4718
|
),
|
|
4568
4719
|
children: [
|
|
4569
4720
|
/* @__PURE__ */ jsx("span", { children: "Assure" }),
|
|
4570
|
-
|
|
4571
|
-
|
|
4721
|
+
productName && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4722
|
+
" ",
|
|
4723
|
+
/* @__PURE__ */ jsx("span", { className: "text-pro-fg font-medium", children: productName })
|
|
4724
|
+
] })
|
|
4572
4725
|
]
|
|
4573
4726
|
}
|
|
4574
4727
|
)
|
|
@@ -4599,7 +4752,7 @@ function MultiFilterPill({
|
|
|
4599
4752
|
),
|
|
4600
4753
|
children: [
|
|
4601
4754
|
icon && /* @__PURE__ */ jsx("span", { className: "[&>svg]:size-3.5", "aria-hidden": "true", children: icon }),
|
|
4602
|
-
/* @__PURE__ */ jsx("span", { className: "
|
|
4755
|
+
/* @__PURE__ */ jsx("span", { className: "line-clamp-1", children: displayLabel }),
|
|
4603
4756
|
active ? /* @__PURE__ */ jsx(
|
|
4604
4757
|
"span",
|
|
4605
4758
|
{
|
|
@@ -4679,7 +4832,7 @@ function MultiFilterPill({
|
|
|
4679
4832
|
"aria-hidden": "true"
|
|
4680
4833
|
}
|
|
4681
4834
|
),
|
|
4682
|
-
/* @__PURE__ */ jsx("span", { className: "
|
|
4835
|
+
/* @__PURE__ */ jsx("span", { className: "line-clamp-1", children: opt.label })
|
|
4683
4836
|
]
|
|
4684
4837
|
}
|
|
4685
4838
|
) }, opt.key);
|
|
@@ -5478,7 +5631,7 @@ function SearchSelect({
|
|
|
5478
5631
|
),
|
|
5479
5632
|
children: [
|
|
5480
5633
|
/* @__PURE__ */ jsx(CheckIcon, { className: "size-4 shrink-0 text-transparent", "aria-hidden": "true" }),
|
|
5481
|
-
/* @__PURE__ */ jsx("span", { className: "
|
|
5634
|
+
/* @__PURE__ */ jsx("span", { className: "line-clamp-1", children: option.label })
|
|
5482
5635
|
]
|
|
5483
5636
|
},
|
|
5484
5637
|
option.id
|
|
@@ -5498,7 +5651,7 @@ function SearchSelect({
|
|
|
5498
5651
|
),
|
|
5499
5652
|
children: [
|
|
5500
5653
|
/* @__PURE__ */ jsx(PlusIcon, { className: "size-4 shrink-0", "aria-hidden": "true" }),
|
|
5501
|
-
/* @__PURE__ */ jsxs("span", { className: "
|
|
5654
|
+
/* @__PURE__ */ jsxs("span", { className: "line-clamp-1", children: [
|
|
5502
5655
|
"Create \u201C",
|
|
5503
5656
|
trimmedSearch,
|
|
5504
5657
|
"\u201D"
|
|
@@ -5790,7 +5943,7 @@ function SideDrawer({
|
|
|
5790
5943
|
function SideDrawerHeader({ title, subtitle, onClose, className }) {
|
|
5791
5944
|
return /* @__PURE__ */ jsx("div", { className: cn("border-rule bg-surface shrink-0 border-b px-6 py-4", className), children: /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
5792
5945
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
5793
|
-
/* @__PURE__ */ jsx("h2", { className: "font-display text-fg
|
|
5946
|
+
/* @__PURE__ */ jsx("h2", { className: "font-display text-fg line-clamp-1 text-base leading-tight font-medium tracking-tight", children: title }),
|
|
5794
5947
|
subtitle && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-1 text-sm", children: subtitle })
|
|
5795
5948
|
] }),
|
|
5796
5949
|
onClose && /* @__PURE__ */ jsx(
|
|
@@ -5829,46 +5982,6 @@ function SideDrawerFooter({ children, className }) {
|
|
|
5829
5982
|
SideDrawer.Header = SideDrawerHeader;
|
|
5830
5983
|
SideDrawer.Body = SideDrawerBody;
|
|
5831
5984
|
SideDrawer.Footer = SideDrawerFooter;
|
|
5832
|
-
var Skeleton = forwardRef(function Skeleton2({ className, ...props }, ref) {
|
|
5833
|
-
return /* @__PURE__ */ jsx(
|
|
5834
|
-
"div",
|
|
5835
|
-
{
|
|
5836
|
-
ref,
|
|
5837
|
-
className: cn("skeleton bg-bg-3 rounded-icon animate-pulse", className),
|
|
5838
|
-
"aria-hidden": "true",
|
|
5839
|
-
...props
|
|
5840
|
-
}
|
|
5841
|
-
);
|
|
5842
|
-
});
|
|
5843
|
-
Skeleton.displayName = "Skeleton";
|
|
5844
|
-
var SkeletonText = forwardRef(function SkeletonText2({ lines = 3, className, ...props }, ref) {
|
|
5845
|
-
return /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-2", className), "aria-hidden": "true", ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx(
|
|
5846
|
-
"div",
|
|
5847
|
-
{
|
|
5848
|
-
className: cn(
|
|
5849
|
-
"skeleton bg-bg-3 rounded-icon h-4 animate-pulse",
|
|
5850
|
-
i === lines - 1 && "w-3/4"
|
|
5851
|
-
)
|
|
5852
|
-
},
|
|
5853
|
-
i
|
|
5854
|
-
)) });
|
|
5855
|
-
});
|
|
5856
|
-
SkeletonText.displayName = "SkeletonText";
|
|
5857
|
-
var SkeletonCircle = forwardRef(
|
|
5858
|
-
function SkeletonCircle2({ size = 40, className, ...props }, ref) {
|
|
5859
|
-
return /* @__PURE__ */ jsx(
|
|
5860
|
-
"div",
|
|
5861
|
-
{
|
|
5862
|
-
ref,
|
|
5863
|
-
className: cn("skeleton bg-bg-3 animate-pulse rounded-full", className),
|
|
5864
|
-
style: { width: size, height: size },
|
|
5865
|
-
"aria-hidden": "true",
|
|
5866
|
-
...props
|
|
5867
|
-
}
|
|
5868
|
-
);
|
|
5869
|
-
}
|
|
5870
|
-
);
|
|
5871
|
-
SkeletonCircle.displayName = "SkeletonCircle";
|
|
5872
5985
|
var Slider = React36.forwardRef(
|
|
5873
5986
|
function Slider2({
|
|
5874
5987
|
className,
|
|
@@ -6575,32 +6688,55 @@ function ToastProvider({ children }) {
|
|
|
6575
6688
|
)
|
|
6576
6689
|
] });
|
|
6577
6690
|
}
|
|
6578
|
-
var
|
|
6579
|
-
default: "bg-
|
|
6580
|
-
success:
|
|
6581
|
-
|
|
6582
|
-
|
|
6691
|
+
var variantConfig = {
|
|
6692
|
+
default: { chip: "bg-pro-bg", icon: "text-pro-fg", bar: "bg-pro-fg", Icon: InfoCircleSolidIcon },
|
|
6693
|
+
success: {
|
|
6694
|
+
chip: "bg-success-bg",
|
|
6695
|
+
icon: "text-success-fg",
|
|
6696
|
+
bar: "bg-success-fg",
|
|
6697
|
+
Icon: CheckCircleSolidIcon
|
|
6698
|
+
},
|
|
6699
|
+
destructive: {
|
|
6700
|
+
chip: "bg-danger-bg",
|
|
6701
|
+
icon: "text-danger-fg",
|
|
6702
|
+
bar: "bg-danger-fg",
|
|
6703
|
+
Icon: XCircleSolidIcon
|
|
6704
|
+
},
|
|
6705
|
+
warning: {
|
|
6706
|
+
chip: "bg-warning-bg",
|
|
6707
|
+
icon: "text-warning-fg",
|
|
6708
|
+
bar: "bg-warning-fg",
|
|
6709
|
+
Icon: AlertTriangleSolidIcon
|
|
6710
|
+
}
|
|
6583
6711
|
};
|
|
6584
6712
|
function ToastItem({ toast, onDismiss }) {
|
|
6585
6713
|
const timerRef = useRef(void 0);
|
|
6586
6714
|
const [exiting, setExiting] = useState(false);
|
|
6715
|
+
const [filled, setFilled] = useState(false);
|
|
6716
|
+
const duration = toast.duration ?? 5e3;
|
|
6717
|
+
const showProgress = duration > 0;
|
|
6587
6718
|
const close = useCallback(() => {
|
|
6588
6719
|
setExiting(true);
|
|
6589
6720
|
setTimeout(() => onDismiss(toast.id), 150);
|
|
6590
6721
|
}, [toast.id, onDismiss]);
|
|
6591
6722
|
useEffect(() => {
|
|
6592
|
-
|
|
6593
|
-
if (duration <= 0) return;
|
|
6723
|
+
if (!showProgress) return;
|
|
6594
6724
|
timerRef.current = setTimeout(close, duration);
|
|
6595
6725
|
return () => clearTimeout(timerRef.current);
|
|
6596
|
-
}, [
|
|
6597
|
-
|
|
6726
|
+
}, [showProgress, duration, close]);
|
|
6727
|
+
useEffect(() => {
|
|
6728
|
+
if (!showProgress) return;
|
|
6729
|
+
const raf = requestAnimationFrame(() => setFilled(true));
|
|
6730
|
+
return () => cancelAnimationFrame(raf);
|
|
6731
|
+
}, [showProgress]);
|
|
6732
|
+
const { chip, icon, bar, Icon: Icon3 } = variantConfig[toast.variant ?? "default"];
|
|
6733
|
+
return /* @__PURE__ */ jsxs(
|
|
6598
6734
|
"div",
|
|
6599
6735
|
{
|
|
6600
6736
|
role: "status",
|
|
6601
6737
|
"data-state": exiting ? "closed" : "open",
|
|
6602
6738
|
className: cn(
|
|
6603
|
-
"rounded-card shadow-card pointer-events-auto w-80 border p-4",
|
|
6739
|
+
"bg-surface border-rule text-fg rounded-card shadow-card pointer-events-auto relative w-80 overflow-hidden border p-4",
|
|
6604
6740
|
"font-body",
|
|
6605
6741
|
// Unified data-state animation (spec §5.27) — same model as Dialog/Tooltip:
|
|
6606
6742
|
// open → fade+slide in over --duration-overlay (200ms), ease-out-quart
|
|
@@ -6609,29 +6745,68 @@ function ToastItem({ toast, onDismiss }) {
|
|
|
6609
6745
|
"data-[state=open]:duration-[var(--duration-overlay)] data-[state=open]:ease-[var(--ease-out-quart)]",
|
|
6610
6746
|
"data-[state=closed]:animate-out data-[state=closed]:slide-out-to-right-8 data-[state=closed]:fade-out-0",
|
|
6611
6747
|
"data-[state=closed]:duration-[var(--duration-fast)] data-[state=closed]:ease-[var(--ease-in)]",
|
|
6612
|
-
"motion-reduce:animate-none"
|
|
6613
|
-
variantStyles[toast.variant ?? "default"]
|
|
6748
|
+
"motion-reduce:animate-none"
|
|
6614
6749
|
),
|
|
6615
|
-
children:
|
|
6616
|
-
/* @__PURE__ */ jsxs("div", { className: "
|
|
6617
|
-
/* @__PURE__ */ jsx(
|
|
6618
|
-
|
|
6750
|
+
children: [
|
|
6751
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
|
|
6752
|
+
/* @__PURE__ */ jsx(
|
|
6753
|
+
"span",
|
|
6754
|
+
{
|
|
6755
|
+
className: cn(
|
|
6756
|
+
"inline-flex size-8 shrink-0 items-center justify-center rounded-[9px]",
|
|
6757
|
+
chip,
|
|
6758
|
+
icon
|
|
6759
|
+
),
|
|
6760
|
+
"aria-hidden": "true",
|
|
6761
|
+
children: /* @__PURE__ */ jsx(Icon3, { className: "size-5" })
|
|
6762
|
+
}
|
|
6763
|
+
),
|
|
6764
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
6765
|
+
/* @__PURE__ */ jsx("p", { className: "text-fg text-sm leading-tight font-semibold", children: toast.title }),
|
|
6766
|
+
toast.description && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-0.5 text-sm leading-snug", children: toast.description }),
|
|
6767
|
+
toast.action && /* @__PURE__ */ jsx(
|
|
6768
|
+
"button",
|
|
6769
|
+
{
|
|
6770
|
+
type: "button",
|
|
6771
|
+
onClick: () => {
|
|
6772
|
+
toast.action?.onClick();
|
|
6773
|
+
close();
|
|
6774
|
+
},
|
|
6775
|
+
className: cn(
|
|
6776
|
+
"text-pro-fg mt-2 text-sm font-semibold",
|
|
6777
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] hover:underline motion-reduce:transition-none",
|
|
6778
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] rounded-sm focus-visible:outline-none"
|
|
6779
|
+
),
|
|
6780
|
+
children: toast.action.label
|
|
6781
|
+
}
|
|
6782
|
+
)
|
|
6783
|
+
] }),
|
|
6784
|
+
/* @__PURE__ */ jsx(
|
|
6785
|
+
"button",
|
|
6786
|
+
{
|
|
6787
|
+
type: "button",
|
|
6788
|
+
onClick: close,
|
|
6789
|
+
className: cn(
|
|
6790
|
+
"text-fg-4 hover:text-fg-2 rounded-icon -mr-1 inline-flex size-5 shrink-0 items-center justify-center",
|
|
6791
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
6792
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none"
|
|
6793
|
+
),
|
|
6794
|
+
"aria-label": "Dismiss",
|
|
6795
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "size-3.5", "aria-hidden": "true" })
|
|
6796
|
+
}
|
|
6797
|
+
)
|
|
6619
6798
|
] }),
|
|
6620
|
-
/* @__PURE__ */ jsx(
|
|
6621
|
-
"
|
|
6799
|
+
showProgress && /* @__PURE__ */ jsx("div", { className: "bg-rule absolute inset-x-0 bottom-0 h-1", "aria-hidden": "true", children: /* @__PURE__ */ jsx(
|
|
6800
|
+
"div",
|
|
6622
6801
|
{
|
|
6623
|
-
type: "button",
|
|
6624
|
-
onClick: close,
|
|
6625
6802
|
className: cn(
|
|
6626
|
-
"
|
|
6627
|
-
|
|
6628
|
-
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none"
|
|
6803
|
+
"h-full transition-[width] ease-linear motion-reduce:transition-none",
|
|
6804
|
+
bar
|
|
6629
6805
|
),
|
|
6630
|
-
"
|
|
6631
|
-
children: /* @__PURE__ */ jsx(XIcon, { className: "size-3.5", "aria-hidden": "true" })
|
|
6806
|
+
style: { width: filled ? "100%" : "0%", transitionDuration: `${duration}ms` }
|
|
6632
6807
|
}
|
|
6633
|
-
)
|
|
6634
|
-
]
|
|
6808
|
+
) })
|
|
6809
|
+
]
|
|
6635
6810
|
}
|
|
6636
6811
|
);
|
|
6637
6812
|
}
|
|
@@ -6774,11 +6949,9 @@ function SidebarProvider({
|
|
|
6774
6949
|
storageKey,
|
|
6775
6950
|
shortcut = DEFAULT_SHORTCUT
|
|
6776
6951
|
}) {
|
|
6777
|
-
const [uncontrolled, setUncontrolled] = React36.useState(
|
|
6778
|
-
|
|
6779
|
-
|
|
6780
|
-
return stored ?? defaultState;
|
|
6781
|
-
});
|
|
6952
|
+
const [uncontrolled, setUncontrolled] = React36.useState(
|
|
6953
|
+
controlled ?? defaultState
|
|
6954
|
+
);
|
|
6782
6955
|
React36.useEffect(() => {
|
|
6783
6956
|
if (controlled !== void 0) return;
|
|
6784
6957
|
const stored = readStorage(storageKey);
|
|
@@ -6890,7 +7063,6 @@ var Sidebar = React36.forwardRef(function Sidebar2({ className, collapsible = fa
|
|
|
6890
7063
|
"data-peek": peek ? "true" : void 0,
|
|
6891
7064
|
"data-labels": labelsHidden ? "hide" : "show",
|
|
6892
7065
|
"data-collapsible": collapsible ? "true" : void 0,
|
|
6893
|
-
suppressHydrationWarning: true,
|
|
6894
7066
|
onMouseEnter: handleEnter,
|
|
6895
7067
|
onMouseLeave: handleLeave,
|
|
6896
7068
|
style: { width: effectiveWidth, ...style },
|
|
@@ -6980,7 +7152,9 @@ var SidebarBrandText = React36.forwardRef(
|
|
|
6980
7152
|
ref,
|
|
6981
7153
|
"aria-hidden": "false",
|
|
6982
7154
|
className: cn(
|
|
6983
|
-
|
|
7155
|
+
// line-clamp-1 (not `truncate`) so multi-word wordmarks clip at a
|
|
7156
|
+
// word boundary instead of mid-word when the rail is narrow.
|
|
7157
|
+
"min-w-0 line-clamp-1",
|
|
6984
7158
|
// Smooth fade + width collapse on rail. Keeps the wordmark
|
|
6985
7159
|
// legible up to the moment the column reaches rail width, then
|
|
6986
7160
|
// fully drops out (visibility:hidden cuts hit-testing).
|
|
@@ -7098,7 +7272,10 @@ var SidebarLink = React36.forwardRef(
|
|
|
7098
7272
|
"span",
|
|
7099
7273
|
{
|
|
7100
7274
|
className: cn(
|
|
7101
|
-
|
|
7275
|
+
// line-clamp-1 (not `truncate`) so multi-word labels clip at a
|
|
7276
|
+
// word boundary; collapses cleanly with the rail-mode max-width
|
|
7277
|
+
// animation since both rules only constrain visible content.
|
|
7278
|
+
"min-w-0 flex-1 line-clamp-1",
|
|
7102
7279
|
"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7103
7280
|
"max-w-full opacity-100",
|
|
7104
7281
|
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
|
|
@@ -7119,7 +7296,10 @@ var SidebarLinkLabel = React36.forwardRef(
|
|
|
7119
7296
|
{
|
|
7120
7297
|
ref,
|
|
7121
7298
|
className: cn(
|
|
7122
|
-
|
|
7299
|
+
// line-clamp-1 (not `truncate`) so multi-word labels clip at a
|
|
7300
|
+
// word boundary; collapses cleanly with the rail-mode max-width
|
|
7301
|
+
// animation since both rules only constrain visible content.
|
|
7302
|
+
"min-w-0 flex-1 line-clamp-1",
|
|
7123
7303
|
// Fade + collapse instead of hard display:none so a single
|
|
7124
7304
|
// 180ms opacity tween covers all labels in lockstep with the
|
|
7125
7305
|
// 220ms aside-width transition — no snap on the last frame.
|
|
@@ -7237,7 +7417,10 @@ var SidebarLinkGroup = React36.forwardRef(
|
|
|
7237
7417
|
"span",
|
|
7238
7418
|
{
|
|
7239
7419
|
className: cn(
|
|
7240
|
-
|
|
7420
|
+
// line-clamp-1 (not `truncate`) so multi-word labels clip at a
|
|
7421
|
+
// word boundary; collapses cleanly with the rail-mode max-width
|
|
7422
|
+
// animation since both rules only constrain visible content.
|
|
7423
|
+
"min-w-0 flex-1 line-clamp-1",
|
|
7241
7424
|
"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7242
7425
|
"max-w-full opacity-100",
|
|
7243
7426
|
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
|
|
@@ -7331,8 +7514,8 @@ var SidebarUser = React36.forwardRef(function SidebarUser2({ name, subtitle, ava
|
|
|
7331
7514
|
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
|
|
7332
7515
|
),
|
|
7333
7516
|
children: [
|
|
7334
|
-
/* @__PURE__ */ jsx("div", { className: "text-fg
|
|
7335
|
-
subtitle != null && /* @__PURE__ */ jsx("div", { className: "text-fg-4
|
|
7517
|
+
/* @__PURE__ */ jsx("div", { className: "text-fg line-clamp-1 text-[13px] font-medium", children: name }),
|
|
7518
|
+
subtitle != null && /* @__PURE__ */ jsx("div", { className: "text-fg-4 line-clamp-1 font-mono text-[10.5px]", children: subtitle })
|
|
7336
7519
|
]
|
|
7337
7520
|
}
|
|
7338
7521
|
)
|
|
@@ -7401,7 +7584,7 @@ var AppHeaderSearch = forwardRef(
|
|
|
7401
7584
|
...props,
|
|
7402
7585
|
children: [
|
|
7403
7586
|
/* @__PURE__ */ jsx(SearchIcon, { className: "size-[13px] shrink-0", strokeWidth: 1.8, "aria-hidden": "true" }),
|
|
7404
|
-
/* @__PURE__ */ jsx("span", { className: "
|
|
7587
|
+
/* @__PURE__ */ jsx("span", { className: "line-clamp-1 text-left", children: placeholder }),
|
|
7405
7588
|
shortcut !== null && shortcut !== void 0 && shortcut !== "" && /* @__PURE__ */ jsx(
|
|
7406
7589
|
"kbd",
|
|
7407
7590
|
{
|
|
@@ -7424,11 +7607,15 @@ var AppHeaderActions = forwardRef(
|
|
|
7424
7607
|
}
|
|
7425
7608
|
);
|
|
7426
7609
|
AppHeaderActions.displayName = "AppHeaderActions";
|
|
7427
|
-
var PageHeader = forwardRef(function PageHeader2({ eyebrow, title, meta, className, ...props }, ref) {
|
|
7610
|
+
var PageHeader = forwardRef(function PageHeader2({ eyebrow, title, description, actions, meta, className, ...props }, ref) {
|
|
7428
7611
|
return /* @__PURE__ */ jsxs("header", { ref, className: cn("mb-7", className), ...props, children: [
|
|
7429
7612
|
eyebrow && /* @__PURE__ */ jsx("div", { className: "mb-1.5", children: eyebrow }),
|
|
7430
|
-
/* @__PURE__ */
|
|
7431
|
-
|
|
7613
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3", children: [
|
|
7614
|
+
/* @__PURE__ */ jsx("h1", { className: "font-display text-fg text-[26px] leading-tight tracking-tight", children: title }),
|
|
7615
|
+
actions && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-2", children: actions })
|
|
7616
|
+
] }),
|
|
7617
|
+
description && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-2 max-w-2xl text-sm leading-relaxed", children: description }),
|
|
7618
|
+
meta && /* @__PURE__ */ jsx("div", { className: "text-fg-3 mt-2 flex flex-wrap items-center gap-2 text-sm", children: meta })
|
|
7432
7619
|
] });
|
|
7433
7620
|
});
|
|
7434
7621
|
PageHeader.displayName = "PageHeader";
|
|
@@ -7460,6 +7647,173 @@ var PageHeaderSep = forwardRef(function PageHeaderSep2({ children, className, ..
|
|
|
7460
7647
|
);
|
|
7461
7648
|
});
|
|
7462
7649
|
PageHeaderSep.displayName = "PageHeaderSep";
|
|
7650
|
+
var columnsToGridCols = {
|
|
7651
|
+
1: "grid-cols-1",
|
|
7652
|
+
2: "grid-cols-2",
|
|
7653
|
+
3: "grid-cols-3",
|
|
7654
|
+
4: "grid-cols-4"
|
|
7655
|
+
};
|
|
7656
|
+
var MetadataGrid = forwardRef(function MetadataGrid2({ columns = 2, gapX = "gap-x-6", gapY = "gap-y-3", className, children, ...props }, ref) {
|
|
7657
|
+
return /* @__PURE__ */ jsx(
|
|
7658
|
+
"dl",
|
|
7659
|
+
{
|
|
7660
|
+
ref,
|
|
7661
|
+
className: cn("grid", columnsToGridCols[columns], gapX, gapY, className),
|
|
7662
|
+
...props,
|
|
7663
|
+
children
|
|
7664
|
+
}
|
|
7665
|
+
);
|
|
7666
|
+
});
|
|
7667
|
+
MetadataGrid.displayName = "MetadataGrid";
|
|
7668
|
+
var spanToColSpan = {
|
|
7669
|
+
1: "col-span-1",
|
|
7670
|
+
2: "col-span-2",
|
|
7671
|
+
3: "col-span-3",
|
|
7672
|
+
4: "col-span-4"
|
|
7673
|
+
};
|
|
7674
|
+
function DataItem({ label, value, span = 1, className }) {
|
|
7675
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("min-w-0", spanToColSpan[span], className), children: [
|
|
7676
|
+
/* @__PURE__ */ jsx("dt", { className: "text-fg-4 text-[11px] font-medium uppercase tracking-wider", children: label }),
|
|
7677
|
+
/* @__PURE__ */ jsx("dd", { className: "text-fg mt-0.5 break-words text-sm", children: value })
|
|
7678
|
+
] });
|
|
7679
|
+
}
|
|
7680
|
+
var toneToTile = {
|
|
7681
|
+
info: "bg-info/10 text-info",
|
|
7682
|
+
success: "bg-success-fg/10 text-success-fg",
|
|
7683
|
+
warning: "bg-warning-fg/10 text-warning-fg",
|
|
7684
|
+
destructive: "bg-danger-fg/10 text-danger-fg",
|
|
7685
|
+
accent: "bg-accent/10 text-accent",
|
|
7686
|
+
muted: "bg-bg-3 text-fg-3"
|
|
7687
|
+
};
|
|
7688
|
+
var toneToValue = {
|
|
7689
|
+
info: "text-info",
|
|
7690
|
+
success: "text-success-fg",
|
|
7691
|
+
warning: "text-warning-fg",
|
|
7692
|
+
destructive: "text-danger-fg",
|
|
7693
|
+
accent: "text-accent",
|
|
7694
|
+
muted: "text-fg"
|
|
7695
|
+
};
|
|
7696
|
+
var sentimentChip = {
|
|
7697
|
+
positive: "bg-success-bg text-success-fg",
|
|
7698
|
+
negative: "bg-danger-bg text-danger-fg",
|
|
7699
|
+
neutral: "bg-bg-3 text-fg-3"
|
|
7700
|
+
};
|
|
7701
|
+
var sentimentText = {
|
|
7702
|
+
positive: "text-success-fg",
|
|
7703
|
+
negative: "text-danger-fg",
|
|
7704
|
+
neutral: "text-fg-3"
|
|
7705
|
+
};
|
|
7706
|
+
var directionToSentiment = {
|
|
7707
|
+
up: "positive",
|
|
7708
|
+
down: "negative",
|
|
7709
|
+
flat: "neutral"
|
|
7710
|
+
};
|
|
7711
|
+
var directionToIcon = {
|
|
7712
|
+
up: TrendingUpIcon,
|
|
7713
|
+
down: TrendingDownIcon,
|
|
7714
|
+
flat: MinusIcon
|
|
7715
|
+
};
|
|
7716
|
+
var directionToSrLabel = {
|
|
7717
|
+
up: "Up",
|
|
7718
|
+
down: "Down",
|
|
7719
|
+
flat: "No change"
|
|
7720
|
+
};
|
|
7721
|
+
function Sparkline({ data, className }) {
|
|
7722
|
+
if (data.length < 2) return null;
|
|
7723
|
+
const w = 100;
|
|
7724
|
+
const h = 28;
|
|
7725
|
+
const min = Math.min(...data);
|
|
7726
|
+
const max = Math.max(...data);
|
|
7727
|
+
const range = max - min || 1;
|
|
7728
|
+
const coords = data.map((d, i) => {
|
|
7729
|
+
const x = i / (data.length - 1) * w;
|
|
7730
|
+
const y = h - (d - min) / range * (h - 2) - 1;
|
|
7731
|
+
return [x, y];
|
|
7732
|
+
});
|
|
7733
|
+
const line = coords.map(([x, y]) => `${x.toFixed(2)},${y.toFixed(2)}`).join(" ");
|
|
7734
|
+
const area = `0,${h} ${line} ${w},${h}`;
|
|
7735
|
+
return /* @__PURE__ */ jsxs(
|
|
7736
|
+
"svg",
|
|
7737
|
+
{
|
|
7738
|
+
viewBox: `0 0 ${w} ${h}`,
|
|
7739
|
+
preserveAspectRatio: "none",
|
|
7740
|
+
className: cn("h-7 w-full", className),
|
|
7741
|
+
"aria-hidden": "true",
|
|
7742
|
+
children: [
|
|
7743
|
+
/* @__PURE__ */ jsx("polygon", { points: area, fill: "currentColor", className: "opacity-10" }),
|
|
7744
|
+
/* @__PURE__ */ jsx(
|
|
7745
|
+
"polyline",
|
|
7746
|
+
{
|
|
7747
|
+
points: line,
|
|
7748
|
+
fill: "none",
|
|
7749
|
+
stroke: "currentColor",
|
|
7750
|
+
strokeWidth: "2",
|
|
7751
|
+
strokeLinecap: "round",
|
|
7752
|
+
strokeLinejoin: "round",
|
|
7753
|
+
vectorEffect: "non-scaling-stroke"
|
|
7754
|
+
}
|
|
7755
|
+
)
|
|
7756
|
+
]
|
|
7757
|
+
}
|
|
7758
|
+
);
|
|
7759
|
+
}
|
|
7760
|
+
var KpiCard = forwardRef(function KpiCard2({ label, value, icon, tone = "muted", delta, trend, hint, action, toneValue, className, ...props }, ref) {
|
|
7761
|
+
const deltaSentiment = delta ? delta.sentiment ?? directionToSentiment[delta.direction] : null;
|
|
7762
|
+
const DeltaIcon = delta ? directionToIcon[delta.direction] : null;
|
|
7763
|
+
const sparkColor = deltaSentiment ? sentimentText[deltaSentiment] : toneToValue[tone];
|
|
7764
|
+
return /* @__PURE__ */ jsxs(Card, { ref, className: cn("p-4", className), ...props, children: [
|
|
7765
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
|
|
7766
|
+
icon && /* @__PURE__ */ jsx(
|
|
7767
|
+
"div",
|
|
7768
|
+
{
|
|
7769
|
+
"aria-hidden": "true",
|
|
7770
|
+
className: cn(
|
|
7771
|
+
"flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg]:size-5",
|
|
7772
|
+
toneToTile[tone]
|
|
7773
|
+
),
|
|
7774
|
+
children: icon
|
|
7775
|
+
}
|
|
7776
|
+
),
|
|
7777
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
7778
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-baseline gap-x-2 gap-y-1", children: [
|
|
7779
|
+
/* @__PURE__ */ jsx(
|
|
7780
|
+
"p",
|
|
7781
|
+
{
|
|
7782
|
+
className: cn(
|
|
7783
|
+
"text-2xl font-bold tracking-tight tabular-nums",
|
|
7784
|
+
toneValue ? toneToValue[tone] : "text-fg"
|
|
7785
|
+
),
|
|
7786
|
+
children: value
|
|
7787
|
+
}
|
|
7788
|
+
),
|
|
7789
|
+
delta && DeltaIcon && deltaSentiment && /* @__PURE__ */ jsxs(
|
|
7790
|
+
"span",
|
|
7791
|
+
{
|
|
7792
|
+
className: cn(
|
|
7793
|
+
"inline-flex items-center gap-0.5 rounded-full px-1.5 py-0.5 text-[11px] font-semibold tabular-nums",
|
|
7794
|
+
sentimentChip[deltaSentiment]
|
|
7795
|
+
),
|
|
7796
|
+
children: [
|
|
7797
|
+
/* @__PURE__ */ jsx(DeltaIcon, { className: "size-3" }),
|
|
7798
|
+
/* @__PURE__ */ jsxs("span", { className: "sr-only", children: [
|
|
7799
|
+
directionToSrLabel[delta.direction],
|
|
7800
|
+
" "
|
|
7801
|
+
] }),
|
|
7802
|
+
delta.value
|
|
7803
|
+
]
|
|
7804
|
+
}
|
|
7805
|
+
)
|
|
7806
|
+
] }),
|
|
7807
|
+
/* @__PURE__ */ jsx("p", { className: "text-fg-3 text-xs", children: label }),
|
|
7808
|
+
delta?.label && /* @__PURE__ */ jsx("p", { className: "text-fg-4 mt-0.5 text-[11px]", children: delta.label }),
|
|
7809
|
+
hint && /* @__PURE__ */ jsx("p", { className: "text-fg-4 mt-0.5 text-[11px]", children: hint })
|
|
7810
|
+
] }),
|
|
7811
|
+
action && /* @__PURE__ */ jsx("div", { className: "shrink-0", children: action })
|
|
7812
|
+
] }),
|
|
7813
|
+
trend && trend.length > 1 && /* @__PURE__ */ jsx(Sparkline, { data: trend, className: cn("mt-3", sparkColor) })
|
|
7814
|
+
] });
|
|
7815
|
+
});
|
|
7816
|
+
KpiCard.displayName = "KpiCard";
|
|
7463
7817
|
var DataTable = forwardRef(function DataTable2({ withToolbar, className, children, ...props }, ref) {
|
|
7464
7818
|
return /* @__PURE__ */ jsx(
|
|
7465
7819
|
"div",
|
|
@@ -7830,7 +8184,7 @@ var DetailSpineHeader = forwardRef(
|
|
|
7830
8184
|
}
|
|
7831
8185
|
),
|
|
7832
8186
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
7833
|
-
/* @__PURE__ */ jsx("div", { className: "font-display text-fg
|
|
8187
|
+
/* @__PURE__ */ jsx("div", { className: "font-display text-fg line-clamp-1 text-base leading-tight font-medium", children: title }),
|
|
7834
8188
|
/* @__PURE__ */ jsx("div", { className: "font-spec text-fg-4 text-[11px]", children: subtitle })
|
|
7835
8189
|
] })
|
|
7836
8190
|
] });
|
|
@@ -7909,27 +8263,51 @@ var KanbanColumn = forwardRef(function KanbanColumn2({ title, count, className,
|
|
|
7909
8263
|
);
|
|
7910
8264
|
});
|
|
7911
8265
|
KanbanColumn.displayName = "KanbanColumn";
|
|
7912
|
-
var
|
|
7913
|
-
|
|
7914
|
-
|
|
7915
|
-
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none"
|
|
7916
|
-
),
|
|
7917
|
-
{
|
|
7918
|
-
variants: {
|
|
7919
|
-
variant: {
|
|
7920
|
-
default: "",
|
|
7921
|
-
pro: "border-l-2 border-l-pro-fg",
|
|
7922
|
-
warn: "border-l-2 border-l-warning-fg",
|
|
7923
|
-
danger: "border-l-2 border-l-danger-fg"
|
|
7924
|
-
}
|
|
7925
|
-
},
|
|
7926
|
-
defaultVariants: {
|
|
7927
|
-
variant: "default"
|
|
7928
|
-
}
|
|
7929
|
-
}
|
|
8266
|
+
var kanbanCardBase = cn(
|
|
8267
|
+
"bg-surface border border-rule rounded-card shadow-quiet p-3 space-y-2 cursor-grab",
|
|
8268
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] hover:border-rule-strong motion-reduce:transition-none"
|
|
7930
8269
|
);
|
|
7931
|
-
var
|
|
7932
|
-
|
|
8270
|
+
var priorityConfig = {
|
|
8271
|
+
high: { label: "High", variant: "destructive" },
|
|
8272
|
+
medium: { label: "Med", variant: "warning" },
|
|
8273
|
+
low: { label: "Low", variant: "secondary" }
|
|
8274
|
+
};
|
|
8275
|
+
var dueStatusClass = {
|
|
8276
|
+
overdue: "text-danger-fg font-semibold",
|
|
8277
|
+
soon: "text-warning-fg font-semibold",
|
|
8278
|
+
default: "text-fg-3 font-medium"
|
|
8279
|
+
};
|
|
8280
|
+
var KanbanCard = forwardRef(function KanbanCard2({ className, label, title, client, priority, dueDate, dueStatus, assignee, children, ...props }, ref) {
|
|
8281
|
+
const isRich = title !== void 0;
|
|
8282
|
+
const pri = priority ? priorityConfig[priority] : null;
|
|
8283
|
+
const hasFooter = Boolean(dueDate || assignee);
|
|
8284
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn(kanbanCardBase, className), ...props, children: isRich ? /* @__PURE__ */ jsxs("div", { children: [
|
|
8285
|
+
(label || pri) && /* @__PURE__ */ jsxs("div", { className: "mb-2 flex items-start justify-between gap-2", children: [
|
|
8286
|
+
label ? /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", children: label }) : /* @__PURE__ */ jsx("span", {}),
|
|
8287
|
+
pri && /* @__PURE__ */ jsx(Badge, { variant: pri.variant, size: "sm", children: pri.label })
|
|
8288
|
+
] }),
|
|
8289
|
+
/* @__PURE__ */ jsx("p", { className: "text-fg text-[13px] leading-snug font-semibold", children: title }),
|
|
8290
|
+
client && /* @__PURE__ */ jsxs("p", { className: "text-fg-3 mt-1 flex items-center gap-1.5 text-xs", children: [
|
|
8291
|
+
/* @__PURE__ */ jsx(UserIcon, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
8292
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: client })
|
|
8293
|
+
] }),
|
|
8294
|
+
hasFooter && /* @__PURE__ */ jsxs("div", { className: "border-rule-soft mt-3 flex items-center justify-between border-t pt-2.5", children: [
|
|
8295
|
+
dueDate ? /* @__PURE__ */ jsxs(
|
|
8296
|
+
"span",
|
|
8297
|
+
{
|
|
8298
|
+
className: cn(
|
|
8299
|
+
"flex items-center gap-1 text-xs",
|
|
8300
|
+
dueStatusClass[dueStatus ?? "default"]
|
|
8301
|
+
),
|
|
8302
|
+
children: [
|
|
8303
|
+
/* @__PURE__ */ jsx(CalendarIcon, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
8304
|
+
dueDate
|
|
8305
|
+
]
|
|
8306
|
+
}
|
|
8307
|
+
) : /* @__PURE__ */ jsx("span", {}),
|
|
8308
|
+
assignee && /* @__PURE__ */ jsx(Avatar, { size: "xs", name: assignee.name, src: assignee.src, title: assignee.name })
|
|
8309
|
+
] })
|
|
8310
|
+
] }) : children });
|
|
7933
8311
|
});
|
|
7934
8312
|
KanbanCard.displayName = "KanbanCard";
|
|
7935
8313
|
var Toolbar = forwardRef(function Toolbar2({ className, children, ...props }, ref) {
|
|
@@ -8059,6 +8437,6 @@ var KbdHint = forwardRef(function KbdHint2({ className, children, ...props }, re
|
|
|
8059
8437
|
});
|
|
8060
8438
|
KbdHint.displayName = "KbdHint";
|
|
8061
8439
|
|
|
8062
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityItem, ActivityList, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AtSignIcon, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, Button, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatBubbleIcon, CheckCircle2Icon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content15 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DatePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EyeIcon, EyeOffIcon, Eyebrow, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, InboxIcon, InfoIcon, Input, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, Label4 as Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, StarIcon, StarRating, Stat, Stepper, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XIcon, ZoomInIcon, ZoomOutIcon, alertVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, displayToIso, filterChipVariants, inputVariants, isoToDisplay,
|
|
8440
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityItem, ActivityList, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AtSignIcon, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, Button, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content15 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DatePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EyeIcon, EyeOffIcon, Eyebrow, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, StarIcon, StarRating, Stat, Stepper, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, ZoomInIcon, ZoomOutIcon, alertVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, displayToIso, filterChipVariants, inputVariants, isoToDisplay, labelVariants, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, shadows, sidebarLinkBadgeVariants, spacing, starRatingVariants, surfaces, systemTokens, textareaVariants, typography, useSidebarState, useToast };
|
|
8063
8441
|
//# sourceMappingURL=index.js.map
|
|
8064
8442
|
//# sourceMappingURL=index.js.map
|