@assure-one/design-system 1.4.3 → 1.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/dist/index.d.ts +298 -2
- package/dist/index.js +371 -1
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -9243,6 +9243,95 @@ var VisuallyHidden = forwardRef(
|
|
|
9243
9243
|
}
|
|
9244
9244
|
);
|
|
9245
9245
|
VisuallyHidden.displayName = "VisuallyHidden";
|
|
9246
|
+
var TONE_DOT = {
|
|
9247
|
+
brand: "bg-brand",
|
|
9248
|
+
info: "bg-info",
|
|
9249
|
+
success: "bg-success",
|
|
9250
|
+
warning: "bg-warning",
|
|
9251
|
+
muted: "bg-muted-foreground/40",
|
|
9252
|
+
danger: "bg-destructive"
|
|
9253
|
+
};
|
|
9254
|
+
function ChannelTabs({ tabs, value, onChange, className, ...props }) {
|
|
9255
|
+
return /* @__PURE__ */ jsx(
|
|
9256
|
+
"div",
|
|
9257
|
+
{
|
|
9258
|
+
role: "tablist",
|
|
9259
|
+
"aria-label": "Channel",
|
|
9260
|
+
className: cn("flex items-center gap-1 border-b border-border bg-card px-3 py-2", className),
|
|
9261
|
+
...props,
|
|
9262
|
+
children: tabs.map((tab) => {
|
|
9263
|
+
const active = value === tab.value;
|
|
9264
|
+
const count = tab.count;
|
|
9265
|
+
return /* @__PURE__ */ jsxs(
|
|
9266
|
+
"button",
|
|
9267
|
+
{
|
|
9268
|
+
type: "button",
|
|
9269
|
+
role: "tab",
|
|
9270
|
+
"aria-selected": active,
|
|
9271
|
+
onClick: () => onChange(tab.value),
|
|
9272
|
+
className: cn(
|
|
9273
|
+
"flex items-center gap-2 rounded-md border px-3 py-1.5 text-sm font-medium transition-colors",
|
|
9274
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
9275
|
+
active ? "border-brand bg-brand/5 text-brand" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
9276
|
+
),
|
|
9277
|
+
children: [
|
|
9278
|
+
/* @__PURE__ */ jsx(
|
|
9279
|
+
"span",
|
|
9280
|
+
{
|
|
9281
|
+
className: cn(
|
|
9282
|
+
"size-1.5 rounded-full",
|
|
9283
|
+
active ? TONE_DOT[tab.tone ?? "muted"] : "bg-muted-foreground/40"
|
|
9284
|
+
),
|
|
9285
|
+
"aria-hidden": true
|
|
9286
|
+
}
|
|
9287
|
+
),
|
|
9288
|
+
tab.label,
|
|
9289
|
+
count !== void 0 && count > 0 && /* @__PURE__ */ jsx(
|
|
9290
|
+
"span",
|
|
9291
|
+
{
|
|
9292
|
+
className: cn(
|
|
9293
|
+
"ml-0.5 inline-flex h-4 min-w-4 items-center justify-center rounded-full px-1 text-[10px] font-semibold tabular-nums",
|
|
9294
|
+
active ? "bg-background/60" : "bg-muted text-muted-foreground"
|
|
9295
|
+
),
|
|
9296
|
+
children: count
|
|
9297
|
+
}
|
|
9298
|
+
)
|
|
9299
|
+
]
|
|
9300
|
+
},
|
|
9301
|
+
tab.value
|
|
9302
|
+
);
|
|
9303
|
+
})
|
|
9304
|
+
}
|
|
9305
|
+
);
|
|
9306
|
+
}
|
|
9307
|
+
ChannelTabs.displayName = "ChannelTabs";
|
|
9308
|
+
var TONE_STYLES = {
|
|
9309
|
+
brand: "bg-brand/10 text-brand border-brand/30",
|
|
9310
|
+
info: "bg-info/10 text-info border-info/30",
|
|
9311
|
+
primary: "bg-primary/10 text-primary border-primary/30",
|
|
9312
|
+
success: "bg-success/10 text-success border-success/30",
|
|
9313
|
+
warning: "bg-warning/10 text-warning border-warning/30",
|
|
9314
|
+
danger: "bg-destructive/10 text-destructive border-destructive/30",
|
|
9315
|
+
muted: "bg-muted text-muted-foreground border-border"
|
|
9316
|
+
};
|
|
9317
|
+
function IntentBadge({ tone = "muted", icon, children, className, ...props }) {
|
|
9318
|
+
return /* @__PURE__ */ jsxs(
|
|
9319
|
+
"span",
|
|
9320
|
+
{
|
|
9321
|
+
className: cn(
|
|
9322
|
+
"inline-flex items-center gap-1 rounded-full border border-dashed px-2.5 py-1 text-xs font-medium",
|
|
9323
|
+
TONE_STYLES[tone],
|
|
9324
|
+
className
|
|
9325
|
+
),
|
|
9326
|
+
...props,
|
|
9327
|
+
children: [
|
|
9328
|
+
icon && /* @__PURE__ */ jsx("span", { className: "shrink-0 [&>svg]:size-3", children: icon }),
|
|
9329
|
+
children
|
|
9330
|
+
]
|
|
9331
|
+
}
|
|
9332
|
+
);
|
|
9333
|
+
}
|
|
9334
|
+
IntentBadge.displayName = "IntentBadge";
|
|
9246
9335
|
function AiSpark({ size = 16, className }) {
|
|
9247
9336
|
const id = useId();
|
|
9248
9337
|
return /* @__PURE__ */ jsxs(
|
|
@@ -13436,7 +13525,288 @@ var KbdHint = forwardRef(function KbdHint2({ className, children, ...props }, re
|
|
|
13436
13525
|
);
|
|
13437
13526
|
});
|
|
13438
13527
|
KbdHint.displayName = "KbdHint";
|
|
13528
|
+
function SuggestionPills({
|
|
13529
|
+
suggestions,
|
|
13530
|
+
onPick,
|
|
13531
|
+
loading,
|
|
13532
|
+
label = "Smart replies",
|
|
13533
|
+
className
|
|
13534
|
+
}) {
|
|
13535
|
+
if (!loading && suggestions.length === 0) return null;
|
|
13536
|
+
return /* @__PURE__ */ jsxs(
|
|
13537
|
+
"div",
|
|
13538
|
+
{
|
|
13539
|
+
className: cn(
|
|
13540
|
+
"ds-suggestion-bar flex items-center gap-2 overflow-x-auto border-t border-border/60 bg-gradient-to-b from-brand-soft/40 to-transparent px-4 py-2.5 [scrollbar-width:none]",
|
|
13541
|
+
className
|
|
13542
|
+
),
|
|
13543
|
+
children: [
|
|
13544
|
+
/* @__PURE__ */ jsxs("span", { className: "flex shrink-0 items-center gap-1.5 text-[11px] font-medium text-muted-foreground", children: [
|
|
13545
|
+
/* @__PURE__ */ jsx(SparkleIcon, { className: "ds-suggestion-spark size-3.5 text-brand", "aria-hidden": "true" }),
|
|
13546
|
+
label
|
|
13547
|
+
] }),
|
|
13548
|
+
loading ? [0, 1].map((i) => /* @__PURE__ */ jsx("span", { className: "h-7 w-32 shrink-0 animate-pulse rounded-full bg-muted" }, i)) : suggestions.map((text, i) => /* @__PURE__ */ jsx(
|
|
13549
|
+
"button",
|
|
13550
|
+
{
|
|
13551
|
+
type: "button",
|
|
13552
|
+
onClick: () => onPick(text),
|
|
13553
|
+
title: text,
|
|
13554
|
+
style: { animationDelay: `${i * 110}ms` },
|
|
13555
|
+
className: cn(
|
|
13556
|
+
"ds-suggestion-pill max-w-[260px] shrink-0 truncate whitespace-nowrap rounded-full border px-3.5 py-1.5 text-[12px] font-medium",
|
|
13557
|
+
"border-brand/30 bg-brand-soft text-brand-soft-foreground shadow-[0_1px_6px_rgba(108,66,248,0.14)]",
|
|
13558
|
+
"transition-all hover:-translate-y-0.5 hover:border-brand/50 hover:bg-brand/10 hover:shadow-[0_3px_10px_rgba(108,66,248,0.22)]",
|
|
13559
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background"
|
|
13560
|
+
),
|
|
13561
|
+
children: text
|
|
13562
|
+
},
|
|
13563
|
+
text + i
|
|
13564
|
+
))
|
|
13565
|
+
]
|
|
13566
|
+
}
|
|
13567
|
+
);
|
|
13568
|
+
}
|
|
13569
|
+
SuggestionPills.displayName = "SuggestionPills";
|
|
13570
|
+
function AiDraftCard({
|
|
13571
|
+
state,
|
|
13572
|
+
title = "AI Draft",
|
|
13573
|
+
contextLine,
|
|
13574
|
+
subject,
|
|
13575
|
+
children,
|
|
13576
|
+
actions,
|
|
13577
|
+
error,
|
|
13578
|
+
onRetry,
|
|
13579
|
+
onDismiss,
|
|
13580
|
+
resetCollapseKey,
|
|
13581
|
+
className
|
|
13582
|
+
}) {
|
|
13583
|
+
const [collapsed, setCollapsed] = useState(false);
|
|
13584
|
+
const [prevKey, setPrevKey] = useState(resetCollapseKey);
|
|
13585
|
+
if (resetCollapseKey !== prevKey) {
|
|
13586
|
+
setPrevKey(resetCollapseKey);
|
|
13587
|
+
setCollapsed(false);
|
|
13588
|
+
}
|
|
13589
|
+
if (state === "loading" || state === "refining") {
|
|
13590
|
+
const duration = state === "loading" ? "1200ms" : "800ms";
|
|
13591
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("ds-ai-surface rounded-lg p-3", className), children: [
|
|
13592
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 pb-2", children: [
|
|
13593
|
+
/* @__PURE__ */ jsx(SparkleIcon, { size: 14, className: "animate-pulse-soft text-brand" }),
|
|
13594
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-brand", children: state === "loading" ? "Generating draft..." : "Refining..." })
|
|
13595
|
+
] }),
|
|
13596
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-2", children: [90, 100, 75, 60].map((width, i) => /* @__PURE__ */ jsx(
|
|
13597
|
+
"div",
|
|
13598
|
+
{
|
|
13599
|
+
className: "h-3 animate-pulse-soft rounded bg-brand/20",
|
|
13600
|
+
style: { width: `${width}%`, animationDuration: duration }
|
|
13601
|
+
},
|
|
13602
|
+
i
|
|
13603
|
+
)) })
|
|
13604
|
+
] });
|
|
13605
|
+
}
|
|
13606
|
+
if (state === "error") {
|
|
13607
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border border-destructive/20 bg-destructive/5 p-3", className), children: [
|
|
13608
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-destructive", children: error ?? "Something went wrong." }),
|
|
13609
|
+
(onRetry || onDismiss) && /* @__PURE__ */ jsxs("div", { className: "mt-2 flex gap-2", children: [
|
|
13610
|
+
onRetry && /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: onRetry, className: "text-destructive", children: "Retry" }),
|
|
13611
|
+
onDismiss && /* @__PURE__ */ jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: onDismiss, children: "Dismiss" })
|
|
13612
|
+
] })
|
|
13613
|
+
] });
|
|
13614
|
+
}
|
|
13615
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("ds-ai-surface rounded-lg p-3", className), children: [
|
|
13616
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", !collapsed && "mb-2"), children: [
|
|
13617
|
+
/* @__PURE__ */ jsx(SparkleIcon, { size: 14, className: "text-brand" }),
|
|
13618
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-bold text-brand", children: title }),
|
|
13619
|
+
contextLine && /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-muted-foreground", children: contextLine }),
|
|
13620
|
+
/* @__PURE__ */ jsx(
|
|
13621
|
+
"button",
|
|
13622
|
+
{
|
|
13623
|
+
type: "button",
|
|
13624
|
+
onClick: () => setCollapsed((c) => !c),
|
|
13625
|
+
"aria-expanded": !collapsed,
|
|
13626
|
+
"aria-label": collapsed ? "Expand AI draft" : "Collapse AI draft",
|
|
13627
|
+
title: collapsed ? "Show draft" : "Hide draft",
|
|
13628
|
+
className: "ml-auto -mr-1 shrink-0 rounded p-1 text-brand/70 transition-colors hover:bg-brand/10 hover:text-brand focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
13629
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, { size: 16, className: cn("transition-transform", collapsed && "-rotate-90") })
|
|
13630
|
+
}
|
|
13631
|
+
)
|
|
13632
|
+
] }),
|
|
13633
|
+
!collapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
13634
|
+
subject && /* @__PURE__ */ jsx("p", { className: "mb-1.5 text-sm font-semibold text-foreground", children: subject }),
|
|
13635
|
+
/* @__PURE__ */ jsx("div", { className: "max-h-[140px] overflow-y-auto text-sm font-medium leading-relaxed text-foreground", children }),
|
|
13636
|
+
actions && /* @__PURE__ */ jsx("div", { className: "mt-3 flex flex-wrap items-center gap-2", children: actions })
|
|
13637
|
+
] })
|
|
13638
|
+
] });
|
|
13639
|
+
}
|
|
13640
|
+
AiDraftCard.displayName = "AiDraftCard";
|
|
13641
|
+
function EmailMessageCard({
|
|
13642
|
+
direction,
|
|
13643
|
+
senderName,
|
|
13644
|
+
subject,
|
|
13645
|
+
time,
|
|
13646
|
+
via = "Email",
|
|
13647
|
+
avatar,
|
|
13648
|
+
ccCount = 0,
|
|
13649
|
+
children,
|
|
13650
|
+
attachments,
|
|
13651
|
+
status,
|
|
13652
|
+
actions,
|
|
13653
|
+
clampHeight = 240,
|
|
13654
|
+
className,
|
|
13655
|
+
...props
|
|
13656
|
+
}) {
|
|
13657
|
+
const isOutbound = direction === "outbound";
|
|
13658
|
+
const subjectText = subject?.trim();
|
|
13659
|
+
const bodyRef = useRef(null);
|
|
13660
|
+
const [needsClamp, setNeedsClamp] = useState(false);
|
|
13661
|
+
const [expanded, setExpanded] = useState(false);
|
|
13662
|
+
useEffect(() => {
|
|
13663
|
+
const el = bodyRef.current;
|
|
13664
|
+
if (el) setNeedsClamp(el.scrollHeight > clampHeight);
|
|
13665
|
+
}, [children, clampHeight]);
|
|
13666
|
+
const clamped = needsClamp && !expanded;
|
|
13667
|
+
const hasFooter = Boolean(attachments || status || actions);
|
|
13668
|
+
return /* @__PURE__ */ jsxs(
|
|
13669
|
+
"div",
|
|
13670
|
+
{
|
|
13671
|
+
className: cn("group flex gap-2", isOutbound ? "flex-row-reverse" : "flex-row", className),
|
|
13672
|
+
...props,
|
|
13673
|
+
children: [
|
|
13674
|
+
!isOutbound && avatar && /* @__PURE__ */ jsx("span", { className: "mt-7 shrink-0", children: avatar }),
|
|
13675
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex min-w-0 flex-col gap-1", isOutbound ? "items-end" : "items-start"), children: [
|
|
13676
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 px-1", children: [
|
|
13677
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-foreground", children: senderName }),
|
|
13678
|
+
/* @__PURE__ */ jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
13679
|
+
"via ",
|
|
13680
|
+
via
|
|
13681
|
+
] }),
|
|
13682
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-muted-foreground", children: "\xB7" }),
|
|
13683
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-muted-foreground", children: time })
|
|
13684
|
+
] }),
|
|
13685
|
+
/* @__PURE__ */ jsxs(
|
|
13686
|
+
"div",
|
|
13687
|
+
{
|
|
13688
|
+
className: cn(
|
|
13689
|
+
"w-full max-w-2xl overflow-hidden rounded-xl border bg-card shadow-sm",
|
|
13690
|
+
isOutbound ? "border-brand/30" : "border-border"
|
|
13691
|
+
),
|
|
13692
|
+
children: [
|
|
13693
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2.5 border-b border-border bg-brand/5 px-3.5 py-2.5", children: [
|
|
13694
|
+
/* @__PURE__ */ jsx("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-lg border border-brand/20 bg-brand/10 text-brand", children: /* @__PURE__ */ jsx(MailIcon, { size: 16 }) }),
|
|
13695
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
13696
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
13697
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 rounded px-1.5 py-px text-[10px] font-bold uppercase tracking-wider text-brand", children: "Email" }),
|
|
13698
|
+
subjectText && /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate text-sm font-semibold text-foreground", children: subjectText })
|
|
13699
|
+
] }),
|
|
13700
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-1.5 text-[10px] text-muted-foreground", children: [
|
|
13701
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
13702
|
+
"From ",
|
|
13703
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-foreground/80", children: senderName })
|
|
13704
|
+
] }),
|
|
13705
|
+
ccCount > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
13706
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground/60", children: "\xB7" }),
|
|
13707
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
13708
|
+
"Cc ",
|
|
13709
|
+
ccCount
|
|
13710
|
+
] })
|
|
13711
|
+
] })
|
|
13712
|
+
] })
|
|
13713
|
+
] }),
|
|
13714
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 whitespace-nowrap pt-0.5 text-[10px] text-muted-foreground", children: time })
|
|
13715
|
+
] }),
|
|
13716
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
13717
|
+
/* @__PURE__ */ jsx(
|
|
13718
|
+
"div",
|
|
13719
|
+
{
|
|
13720
|
+
ref: bodyRef,
|
|
13721
|
+
className: cn(
|
|
13722
|
+
"px-4 py-3 text-sm leading-relaxed text-foreground",
|
|
13723
|
+
clamped && "max-h-56 overflow-hidden"
|
|
13724
|
+
),
|
|
13725
|
+
children
|
|
13726
|
+
}
|
|
13727
|
+
),
|
|
13728
|
+
clamped && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-x-0 bottom-0 h-14 bg-gradient-to-b from-transparent to-card" })
|
|
13729
|
+
] }),
|
|
13730
|
+
needsClamp && /* @__PURE__ */ jsxs(
|
|
13731
|
+
"button",
|
|
13732
|
+
{
|
|
13733
|
+
type: "button",
|
|
13734
|
+
onClick: () => setExpanded((v) => !v),
|
|
13735
|
+
"aria-expanded": expanded,
|
|
13736
|
+
className: "flex w-full items-center justify-center gap-1.5 border-t border-border/60 bg-card py-1.5 text-xs font-medium text-brand transition-colors hover:bg-muted/40",
|
|
13737
|
+
children: [
|
|
13738
|
+
expanded ? "Show less" : "Show full email",
|
|
13739
|
+
/* @__PURE__ */ jsx(ChevronDownIcon, { size: 13, className: cn("transition-transform", expanded && "rotate-180") })
|
|
13740
|
+
]
|
|
13741
|
+
}
|
|
13742
|
+
),
|
|
13743
|
+
hasFooter && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 border-t border-border bg-muted/30 px-3 py-2", children: [
|
|
13744
|
+
/* @__PURE__ */ jsx("div", { className: "min-w-0", children: attachments }),
|
|
13745
|
+
/* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-2", children: [
|
|
13746
|
+
status,
|
|
13747
|
+
actions
|
|
13748
|
+
] })
|
|
13749
|
+
] })
|
|
13750
|
+
]
|
|
13751
|
+
}
|
|
13752
|
+
)
|
|
13753
|
+
] })
|
|
13754
|
+
]
|
|
13755
|
+
}
|
|
13756
|
+
);
|
|
13757
|
+
}
|
|
13758
|
+
EmailMessageCard.displayName = "EmailMessageCard";
|
|
13759
|
+
function SignatureEditor({
|
|
13760
|
+
title = "Email signature",
|
|
13761
|
+
children,
|
|
13762
|
+
loading = false,
|
|
13763
|
+
onAddImage,
|
|
13764
|
+
addingImage = false,
|
|
13765
|
+
onSave,
|
|
13766
|
+
saving = false,
|
|
13767
|
+
onInsert,
|
|
13768
|
+
className
|
|
13769
|
+
}) {
|
|
13770
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col", className), children: [
|
|
13771
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b border-border px-3 py-2", children: [
|
|
13772
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs font-semibold text-foreground", children: title }),
|
|
13773
|
+
onAddImage && /* @__PURE__ */ jsxs(
|
|
13774
|
+
Button,
|
|
13775
|
+
{
|
|
13776
|
+
type: "button",
|
|
13777
|
+
variant: "ghost",
|
|
13778
|
+
size: "sm",
|
|
13779
|
+
className: "h-7 gap-1.5 text-xs",
|
|
13780
|
+
disabled: addingImage || loading,
|
|
13781
|
+
loading: addingImage,
|
|
13782
|
+
onClick: onAddImage,
|
|
13783
|
+
children: [
|
|
13784
|
+
/* @__PURE__ */ jsx(UploadIcon, { size: 13 }),
|
|
13785
|
+
"Add image"
|
|
13786
|
+
]
|
|
13787
|
+
}
|
|
13788
|
+
)
|
|
13789
|
+
] }),
|
|
13790
|
+
/* @__PURE__ */ jsx("div", { className: "p-3", children: loading ? /* @__PURE__ */ jsx("div", { className: "h-32 animate-pulse rounded-md bg-muted" }) : children }),
|
|
13791
|
+
(onSave || onInsert) && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-2 border-t border-border px-3 py-2", children: [
|
|
13792
|
+
onSave && /* @__PURE__ */ jsx(
|
|
13793
|
+
Button,
|
|
13794
|
+
{
|
|
13795
|
+
type: "button",
|
|
13796
|
+
variant: "ghost",
|
|
13797
|
+
size: "sm",
|
|
13798
|
+
disabled: saving || loading,
|
|
13799
|
+
loading: saving,
|
|
13800
|
+
onClick: onSave,
|
|
13801
|
+
children: "Save"
|
|
13802
|
+
}
|
|
13803
|
+
),
|
|
13804
|
+
onInsert && /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", disabled: loading, onClick: onInsert, children: "Insert" })
|
|
13805
|
+
] })
|
|
13806
|
+
] });
|
|
13807
|
+
}
|
|
13808
|
+
SignatureEditor.displayName = "SignatureEditor";
|
|
13439
13809
|
|
|
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 };
|
|
13810
|
+
export { AIReceiptPanel, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, AiDraftCard, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, AreaChart, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, 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, ChannelTabs, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientRailGroupHeader, ClientRailItem, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content16 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CountryFlag, CountrySelect, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, 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, EmailMessageCard, 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, IntentBadge, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LandmarkIcon, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MasterDetailLayout, MenuIcon, MessageBubble, MessageBubbleAction, MessageBubbleTombstone, MessageCircleIcon, MessageCircleWarningIcon, MessageComposer, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MissingDocumentsPanel, 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, SignatureEditor, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, Spinner, StarIcon, StarRating, Stat, StatusDot, StatusIcon, StatusPill, Stepper, StickyActionBar, StopIcon, StrikethroughIcon, SubmitButton, SuggestionPills, 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 };
|
|
13441
13811
|
//# sourceMappingURL=index.js.map
|
|
13442
13812
|
//# sourceMappingURL=index.js.map
|