@wealthx/shadcn 1.5.9 → 1.5.11
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/.turbo/turbo-build.log +157 -157
- package/CHANGELOG.md +12 -0
- package/dist/{chunk-AANINK2B.mjs → chunk-2KNQZG5S.mjs} +1 -1
- package/dist/chunk-3KLJ4XRE.mjs +375 -0
- package/dist/{chunk-6U4NQGVM.mjs → chunk-4X4MGYHE.mjs} +2 -2
- package/dist/{chunk-CEEVYRQA.mjs → chunk-67DGIPQ4.mjs} +1 -1
- package/dist/{chunk-7UIL5UN3.mjs → chunk-7II6QRCZ.mjs} +1 -1
- package/dist/{chunk-W5QJ57PU.mjs → chunk-7LN5OGC2.mjs} +1 -1
- package/dist/{chunk-ZXEUBBHJ.mjs → chunk-7TMPOZDE.mjs} +1 -1
- package/dist/{chunk-AHSCWXYJ.mjs → chunk-AJUAJC5O.mjs} +1 -1
- package/dist/{chunk-3CGM3QXQ.mjs → chunk-AKWN5ZQG.mjs} +2 -2
- package/dist/{chunk-FRT3S72S.mjs → chunk-CQ7HKBEX.mjs} +1 -1
- package/dist/{chunk-E2BNCA6L.mjs → chunk-EHQL64B7.mjs} +1 -1
- package/dist/{chunk-2WCIORP7.mjs → chunk-EXI64H46.mjs} +1 -1
- package/dist/{chunk-BBXSNDS3.mjs → chunk-FQYFPHDO.mjs} +1 -1
- package/dist/{chunk-3VZ6CYY2.mjs → chunk-GAXNO4JB.mjs} +1 -1
- package/dist/{chunk-3WGFIFP6.mjs → chunk-I4P7RXAE.mjs} +1 -1
- package/dist/{chunk-TAFL4WDY.mjs → chunk-IODGRCQG.mjs} +17 -10
- package/dist/{chunk-GS47ZSSA.mjs → chunk-J7KQON2N.mjs} +20 -5
- package/dist/{chunk-IQGKOT7A.mjs → chunk-K35TFQUB.mjs} +1 -1
- package/dist/{chunk-4DO3WM7V.mjs → chunk-K4VWSDJJ.mjs} +1 -1
- package/dist/{chunk-KWD6GANL.mjs → chunk-MPA2HV5U.mjs} +1 -1
- package/dist/{chunk-5LZZYODG.mjs → chunk-QHAMVWDG.mjs} +19 -1
- package/dist/{chunk-XUCDPAVI.mjs → chunk-R6U246E4.mjs} +2 -2
- package/dist/{chunk-VCDGLN25.mjs → chunk-S6AYZJYO.mjs} +47 -21
- package/dist/{chunk-WL6WVV47.mjs → chunk-X6RC5UWB.mjs} +1 -1
- package/dist/{chunk-4BHDDLWK.mjs → chunk-XAS6KBIG.mjs} +2 -2
- package/dist/{chunk-VWZS32ZQ.mjs → chunk-XYWEGBAA.mjs} +1 -1
- package/dist/{chunk-54MTIKNC.mjs → chunk-YV7XF32X.mjs} +49 -24
- package/dist/{chunk-E5EDZQ5J.mjs → chunk-ZA44WICP.mjs} +1 -1
- package/dist/{chunk-54TRNCID.mjs → chunk-ZMTCMP2G.mjs} +8 -8
- package/dist/components/ui/advisor-card.js +144 -55
- package/dist/components/ui/advisor-card.mjs +5 -2
- package/dist/components/ui/agent-evaluation-toast.js +1 -1
- package/dist/components/ui/agent-evaluation-toast.mjs +2 -2
- package/dist/components/ui/ai-assistant-drawer.js +1 -1
- package/dist/components/ui/ai-assistant-drawer.mjs +2 -2
- package/dist/components/ui/ai-builder.js +1 -1
- package/dist/components/ui/ai-builder.mjs +2 -2
- package/dist/components/ui/ai-conversations.js +1 -1
- package/dist/components/ui/ai-conversations.mjs +3 -3
- package/dist/components/ui/appointment-action-dialogs.js +1 -1
- package/dist/components/ui/appointment-action-dialogs.mjs +3 -3
- package/dist/components/ui/appointment-book-dialog.js +19 -4
- package/dist/components/ui/appointment-book-dialog.mjs +3 -3
- package/dist/components/ui/appointment-calendar-view.js +17 -10
- package/dist/components/ui/appointment-calendar-view.mjs +2 -2
- package/dist/components/ui/appointment-detail-sheet.js +1 -1
- package/dist/components/ui/appointment-detail-sheet.mjs +4 -4
- package/dist/components/ui/appointment-gmail-connect.js +1 -1
- package/dist/components/ui/appointment-gmail-connect.mjs +2 -2
- package/dist/components/ui/appointment-time-slot-picker.js +1 -1
- package/dist/components/ui/appointment-time-slot-picker.mjs +2 -2
- package/dist/components/ui/appointment-upcoming-card.js +1 -1
- package/dist/components/ui/appointment-upcoming-card.mjs +3 -3
- package/dist/components/ui/badge.js +1 -1
- package/dist/components/ui/badge.mjs +1 -1
- package/dist/components/ui/chat-widget-primitives.js +1 -1
- package/dist/components/ui/chat-widget-primitives.mjs +2 -2
- package/dist/components/ui/chat-widget.js +1 -1
- package/dist/components/ui/chat-widget.mjs +3 -3
- package/dist/components/ui/chip.js +1 -1
- package/dist/components/ui/chip.mjs +2 -2
- package/dist/components/ui/contact-alert-dialog/index.js +19 -1
- package/dist/components/ui/contact-alert-dialog/index.mjs +1 -1
- package/dist/components/ui/dashboard-transactions-table.js +1 -1
- package/dist/components/ui/dashboard-transactions-table.mjs +2 -2
- package/dist/components/ui/financial-cards.js +1 -1
- package/dist/components/ui/financial-cards.mjs +2 -2
- package/dist/components/ui/financial-sections.js +1 -1
- package/dist/components/ui/financial-sections.mjs +3 -3
- package/dist/components/ui/income-summary-component.js +1 -1
- package/dist/components/ui/income-summary-component.mjs +1 -1
- package/dist/components/ui/integration-card.js +1 -1
- package/dist/components/ui/integration-card.mjs +2 -2
- package/dist/components/ui/kanban-column.js +46 -23
- package/dist/components/ui/kanban-column.mjs +4 -4
- package/dist/components/ui/loan-applicant-information.js +1 -1
- package/dist/components/ui/loan-applicant-information.mjs +1 -1
- package/dist/components/ui/loan-application-badge.js +1 -1
- package/dist/components/ui/loan-application-badge.mjs +2 -2
- package/dist/components/ui/opportunity-card.js +46 -23
- package/dist/components/ui/opportunity-card.mjs +3 -3
- package/dist/components/ui/opportunity-summary-tab.js +1 -1
- package/dist/components/ui/opportunity-summary-tab.mjs +3 -3
- package/dist/components/ui/pipeline-board.js +46 -23
- package/dist/components/ui/pipeline-board.mjs +5 -5
- package/dist/components/ui/pipeline-primitives.js +1 -1
- package/dist/components/ui/pipeline-primitives.mjs +2 -2
- package/dist/components/ui/property-asset-card.js +1 -1
- package/dist/components/ui/property-asset-card.mjs +1 -1
- package/dist/components/ui/resource-center.js +1 -1
- package/dist/components/ui/resource-center.mjs +2 -2
- package/dist/components/ui/share-details-dialog.js +326 -30
- package/dist/components/ui/share-details-dialog.mjs +4 -1
- package/dist/components/ui/stage-timeline.js +1 -1
- package/dist/components/ui/stage-timeline.mjs +3 -3
- package/dist/index.js +473 -197
- package/dist/index.mjs +44 -42
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/components/index.tsx +4 -0
- package/src/components/ui/advisor-card.tsx +75 -25
- package/src/components/ui/appointment-book-dialog.tsx +26 -3
- package/src/components/ui/appointment-calendar-view.tsx +7 -6
- package/src/components/ui/appointment-time-slot-picker.tsx +1 -0
- package/src/components/ui/badge.tsx +1 -1
- package/src/components/ui/contact-alert-dialog/contact-alert-dialog.tsx +19 -1
- package/src/components/ui/opportunity-card.tsx +56 -20
- package/src/components/ui/share-details-dialog.tsx +251 -0
- package/src/styles/styles-css.ts +1 -1
- package/dist/chunk-OZ2R6ERP.mjs +0 -174
|
@@ -60,6 +60,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
60
60
|
var share_details_dialog_exports = {};
|
|
61
61
|
__export(share_details_dialog_exports, {
|
|
62
62
|
EmailTemplateDialog: () => EmailTemplateDialog,
|
|
63
|
+
ShareContactDialog: () => ShareContactDialog,
|
|
63
64
|
ShareDetailsDialog: () => ShareDetailsDialog
|
|
64
65
|
});
|
|
65
66
|
module.exports = __toCommonJS(share_details_dialog_exports);
|
|
@@ -485,18 +486,121 @@ function Textarea(_a) {
|
|
|
485
486
|
);
|
|
486
487
|
}
|
|
487
488
|
|
|
488
|
-
// src/components/ui/
|
|
489
|
+
// src/components/ui/tabs.tsx
|
|
490
|
+
var import_class_variance_authority3 = require("class-variance-authority");
|
|
491
|
+
var import_tabs = require("@base-ui/react/tabs");
|
|
489
492
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
493
|
+
function Tabs(_a) {
|
|
494
|
+
var _b = _a, {
|
|
495
|
+
className,
|
|
496
|
+
orientation = "horizontal"
|
|
497
|
+
} = _b, props = __objRest(_b, [
|
|
498
|
+
"className",
|
|
499
|
+
"orientation"
|
|
500
|
+
]);
|
|
501
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
502
|
+
import_tabs.Tabs.Root,
|
|
503
|
+
__spreadValues({
|
|
504
|
+
className: cn(
|
|
505
|
+
"group/tabs flex gap-2 data-[orientation=horizontal]:flex-col",
|
|
506
|
+
className
|
|
507
|
+
),
|
|
508
|
+
"data-orientation": orientation,
|
|
509
|
+
"data-slot": "tabs"
|
|
510
|
+
}, props)
|
|
511
|
+
);
|
|
512
|
+
}
|
|
513
|
+
var tabsListVariants = (0, import_class_variance_authority3.cva)(
|
|
514
|
+
"group/tabs-list inline-flex w-fit items-center justify-center gap-1 rounded-none p-[3px] text-muted-foreground group-data-[orientation=horizontal]/tabs:h-9 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col",
|
|
515
|
+
{
|
|
516
|
+
variants: {
|
|
517
|
+
variant: {
|
|
518
|
+
default: "bg-muted",
|
|
519
|
+
line: "bg-transparent p-0"
|
|
520
|
+
}
|
|
521
|
+
},
|
|
522
|
+
defaultVariants: {
|
|
523
|
+
variant: "default"
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
);
|
|
527
|
+
function TabsList(_a) {
|
|
528
|
+
var _b = _a, {
|
|
529
|
+
className,
|
|
530
|
+
variant = "default"
|
|
531
|
+
} = _b, props = __objRest(_b, [
|
|
532
|
+
"className",
|
|
533
|
+
"variant"
|
|
534
|
+
]);
|
|
535
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
536
|
+
import_tabs.Tabs.List,
|
|
537
|
+
__spreadValues({
|
|
538
|
+
className: cn(tabsListVariants({ variant }), className),
|
|
539
|
+
"data-slot": "tabs-list",
|
|
540
|
+
"data-variant": variant
|
|
541
|
+
}, props)
|
|
542
|
+
);
|
|
543
|
+
}
|
|
544
|
+
function TabsTrigger(_a) {
|
|
545
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
546
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
547
|
+
import_tabs.Tabs.Tab,
|
|
548
|
+
__spreadValues({
|
|
549
|
+
className: cn(
|
|
550
|
+
// Base layout & typography
|
|
551
|
+
"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 whitespace-nowrap",
|
|
552
|
+
"rounded-none border border-transparent px-1.5 py-1 text-label-medium",
|
|
553
|
+
"text-muted-foreground transition-all",
|
|
554
|
+
// Vertical orientation
|
|
555
|
+
"group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start",
|
|
556
|
+
// Hover & focus
|
|
557
|
+
"hover:text-foreground",
|
|
558
|
+
"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring",
|
|
559
|
+
// Disabled
|
|
560
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
561
|
+
// Active state — Default variant: primary/10 bg + subtle shadow
|
|
562
|
+
// Base UI uses data-active attribute for the active/selected tab
|
|
563
|
+
"data-active:bg-primary/10 data-active:text-foreground",
|
|
564
|
+
"group-data-[variant=default]/tabs-list:data-active:shadow-sm",
|
|
565
|
+
// Active state — Line variant: suppress bg & shadow
|
|
566
|
+
"group-data-[variant=line]/tabs-list:data-active:bg-transparent",
|
|
567
|
+
"group-data-[variant=line]/tabs-list:data-active:shadow-none",
|
|
568
|
+
// Indicator pseudo-element (visible only for Line variant, active state)
|
|
569
|
+
"after:absolute after:bg-primary after:opacity-0 after:transition-opacity",
|
|
570
|
+
"group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5",
|
|
571
|
+
"group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5",
|
|
572
|
+
"group-data-[variant=line]/tabs-list:data-active:after:opacity-100",
|
|
573
|
+
// SVG icons
|
|
574
|
+
"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
575
|
+
className
|
|
576
|
+
),
|
|
577
|
+
"data-slot": "tabs-trigger"
|
|
578
|
+
}, props)
|
|
579
|
+
);
|
|
580
|
+
}
|
|
581
|
+
function TabsContent(_a) {
|
|
582
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
583
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
584
|
+
import_tabs.Tabs.Panel,
|
|
585
|
+
__spreadValues({
|
|
586
|
+
className: cn("flex-1 outline-none", className),
|
|
587
|
+
"data-slot": "tabs-content"
|
|
588
|
+
}, props)
|
|
589
|
+
);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
// src/components/ui/share-details-dialog.tsx
|
|
593
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
490
594
|
function Field({
|
|
491
595
|
id,
|
|
492
596
|
label,
|
|
493
597
|
required,
|
|
494
598
|
children
|
|
495
599
|
}) {
|
|
496
|
-
return /* @__PURE__ */ (0,
|
|
497
|
-
/* @__PURE__ */ (0,
|
|
600
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
|
|
601
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Label, { htmlFor: id, children: [
|
|
498
602
|
label,
|
|
499
|
-
required && /* @__PURE__ */ (0,
|
|
603
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "ml-0.5 text-destructive", children: "*" })
|
|
500
604
|
] }),
|
|
501
605
|
children
|
|
502
606
|
] });
|
|
@@ -517,17 +621,17 @@ function ShareDetailsDialog({
|
|
|
517
621
|
setCopied(true);
|
|
518
622
|
setTimeout(() => setCopied(false), 2e3);
|
|
519
623
|
}
|
|
520
|
-
return /* @__PURE__ */ (0,
|
|
521
|
-
/* @__PURE__ */ (0,
|
|
522
|
-
/* @__PURE__ */ (0,
|
|
624
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(DialogContent, { size: "md", className, children: [
|
|
625
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogTitle, { children: "Share Contact Details" }) }),
|
|
626
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("p", { className: "text-sm text-muted-foreground", children: [
|
|
523
627
|
"Share a secure link to",
|
|
524
628
|
" ",
|
|
525
|
-
/* @__PURE__ */ (0,
|
|
629
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "font-medium text-foreground", children: contactName }),
|
|
526
630
|
"'s financial summary report."
|
|
527
631
|
] }),
|
|
528
|
-
/* @__PURE__ */ (0,
|
|
529
|
-
/* @__PURE__ */ (0,
|
|
530
|
-
/* @__PURE__ */ (0,
|
|
632
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Field, { label: "Shareable link", children: [
|
|
633
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex gap-2", children: [
|
|
634
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
531
635
|
Input,
|
|
532
636
|
{
|
|
533
637
|
readOnly: true,
|
|
@@ -536,7 +640,7 @@ function ShareDetailsDialog({
|
|
|
536
640
|
onClick: (e) => e.target.select()
|
|
537
641
|
}
|
|
538
642
|
),
|
|
539
|
-
/* @__PURE__ */ (0,
|
|
643
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
540
644
|
Button,
|
|
541
645
|
{
|
|
542
646
|
variant: "outline",
|
|
@@ -544,16 +648,16 @@ function ShareDetailsDialog({
|
|
|
544
648
|
onClick: handleCopy,
|
|
545
649
|
"aria-label": copied ? "Copied" : "Copy link",
|
|
546
650
|
className: "shrink-0",
|
|
547
|
-
children: copied ? /* @__PURE__ */ (0,
|
|
651
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react4.CheckIcon, { className: "size-4 text-success" }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react4.CopyIcon, { className: "size-4" })
|
|
548
652
|
}
|
|
549
653
|
)
|
|
550
654
|
] }),
|
|
551
|
-
copied && /* @__PURE__ */ (0,
|
|
655
|
+
copied && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-xs text-success", children: "Link copied to clipboard!" })
|
|
552
656
|
] }),
|
|
553
|
-
/* @__PURE__ */ (0,
|
|
554
|
-
/* @__PURE__ */ (0,
|
|
555
|
-
onEmailLink && /* @__PURE__ */ (0,
|
|
556
|
-
/* @__PURE__ */ (0,
|
|
657
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(DialogFooter, { children: [
|
|
658
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Button, { variant: "outline", onClick: () => onOpenChange(false), children: "Close" }),
|
|
659
|
+
onEmailLink && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Button, { onClick: onEmailLink, disabled: isSendingEmail, children: isSendingEmail ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
660
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Spinner, { className: "size-3.5" }),
|
|
557
661
|
"Sending\u2026"
|
|
558
662
|
] }) : "Email link" })
|
|
559
663
|
] })
|
|
@@ -579,18 +683,18 @@ function EmailTemplateDialog({
|
|
|
579
683
|
}
|
|
580
684
|
}, [open, defaultSubject, defaultBody]);
|
|
581
685
|
const canSend = subject.trim() !== "" && body.trim() !== "" && !isSending;
|
|
582
|
-
return /* @__PURE__ */ (0,
|
|
583
|
-
/* @__PURE__ */ (0,
|
|
584
|
-
/* @__PURE__ */ (0,
|
|
585
|
-
/* @__PURE__ */ (0,
|
|
586
|
-
/* @__PURE__ */ (0,
|
|
587
|
-
/* @__PURE__ */ (0,
|
|
686
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Dialog, { open, onOpenChange: isSending ? void 0 : onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(DialogContent, { size: "lg", className, children: [
|
|
687
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogTitle, { children: "Send Email" }) }),
|
|
688
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-col gap-4", children: [
|
|
689
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Field, { label: "To", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-center gap-2 border border-border bg-muted/40 px-3 py-2 text-sm", children: [
|
|
690
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "font-medium text-foreground", children: contactName }),
|
|
691
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className: "text-muted-foreground", children: [
|
|
588
692
|
"<",
|
|
589
693
|
contactEmail,
|
|
590
694
|
">"
|
|
591
695
|
] })
|
|
592
696
|
] }) }),
|
|
593
|
-
/* @__PURE__ */ (0,
|
|
697
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Field, { id: "etd-subject", label: "Subject", required: true, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
594
698
|
Input,
|
|
595
699
|
{
|
|
596
700
|
id: "etd-subject",
|
|
@@ -600,7 +704,7 @@ function EmailTemplateDialog({
|
|
|
600
704
|
disabled: isSending
|
|
601
705
|
}
|
|
602
706
|
) }),
|
|
603
|
-
/* @__PURE__ */ (0,
|
|
707
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Field, { id: "etd-body", label: "Message", required: true, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
604
708
|
Textarea,
|
|
605
709
|
{
|
|
606
710
|
id: "etd-body",
|
|
@@ -612,8 +716,8 @@ function EmailTemplateDialog({
|
|
|
612
716
|
}
|
|
613
717
|
) })
|
|
614
718
|
] }),
|
|
615
|
-
/* @__PURE__ */ (0,
|
|
616
|
-
/* @__PURE__ */ (0,
|
|
719
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(DialogFooter, { children: [
|
|
720
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
617
721
|
Button,
|
|
618
722
|
{
|
|
619
723
|
variant: "outline",
|
|
@@ -622,15 +726,207 @@ function EmailTemplateDialog({
|
|
|
622
726
|
children: "Cancel"
|
|
623
727
|
}
|
|
624
728
|
),
|
|
625
|
-
/* @__PURE__ */ (0,
|
|
626
|
-
/* @__PURE__ */ (0,
|
|
729
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Button, { onClick: () => onSend({ subject, body }), disabled: !canSend, children: isSending ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
730
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Spinner, { className: "size-3.5" }),
|
|
627
731
|
"Sending\u2026"
|
|
628
732
|
] }) : "Send Email" })
|
|
629
733
|
] })
|
|
630
734
|
] }) });
|
|
631
735
|
}
|
|
736
|
+
function ShareContactDialog({
|
|
737
|
+
open,
|
|
738
|
+
onOpenChange,
|
|
739
|
+
contactName,
|
|
740
|
+
internalAdvisors,
|
|
741
|
+
onShareInternal,
|
|
742
|
+
onShareExternal,
|
|
743
|
+
isSending = false,
|
|
744
|
+
className
|
|
745
|
+
}) {
|
|
746
|
+
const [tab, setTab] = React3.useState("internal");
|
|
747
|
+
const [search, setSearch] = React3.useState("");
|
|
748
|
+
const [selectedId, setSelectedId] = React3.useState(null);
|
|
749
|
+
const [internalNotes, setInternalNotes] = React3.useState("");
|
|
750
|
+
const [firstName, setFirstName] = React3.useState("");
|
|
751
|
+
const [lastName, setLastName] = React3.useState("");
|
|
752
|
+
const [email, setEmail] = React3.useState("");
|
|
753
|
+
const [externalNotes, setExternalNotes] = React3.useState("");
|
|
754
|
+
function reset() {
|
|
755
|
+
setTab("internal");
|
|
756
|
+
setSearch("");
|
|
757
|
+
setSelectedId(null);
|
|
758
|
+
setInternalNotes("");
|
|
759
|
+
setFirstName("");
|
|
760
|
+
setLastName("");
|
|
761
|
+
setEmail("");
|
|
762
|
+
setExternalNotes("");
|
|
763
|
+
}
|
|
764
|
+
function handleOpenChange(v) {
|
|
765
|
+
if (!v) reset();
|
|
766
|
+
onOpenChange(v);
|
|
767
|
+
}
|
|
768
|
+
const filtered = internalAdvisors.filter((a) => {
|
|
769
|
+
const q = search.toLowerCase();
|
|
770
|
+
return a.name.toLowerCase().includes(q) || a.role.toLowerCase().includes(q);
|
|
771
|
+
});
|
|
772
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Dialog, { open, onOpenChange: isSending ? void 0 : handleOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(DialogContent, { size: "md", className, children: [
|
|
773
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogTitle, { children: "Share Contact's Information" }) }),
|
|
774
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("p", { className: "text-sm text-muted-foreground", children: [
|
|
775
|
+
"Share",
|
|
776
|
+
" ",
|
|
777
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "font-medium text-foreground", children: contactName }),
|
|
778
|
+
"'s information with an advisor."
|
|
779
|
+
] }),
|
|
780
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Tabs, { value: tab, onValueChange: setTab, children: [
|
|
781
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(TabsList, { className: "w-full", children: [
|
|
782
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TabsTrigger, { value: "internal", className: "flex-1", children: "Internal Advisor" }),
|
|
783
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TabsTrigger, { value: "external", className: "flex-1", children: "External / Referral" })
|
|
784
|
+
] }),
|
|
785
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(TabsContent, { value: "internal", className: "mt-4 flex flex-col gap-4", children: [
|
|
786
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Field, { label: "Search Advisor", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
787
|
+
Input,
|
|
788
|
+
{
|
|
789
|
+
placeholder: "Search by name or role\u2026",
|
|
790
|
+
value: search,
|
|
791
|
+
onChange: (e) => setSearch(e.target.value)
|
|
792
|
+
}
|
|
793
|
+
) }),
|
|
794
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "max-h-[200px] overflow-y-auto border border-border divide-y divide-border", children: filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "px-3 py-4 text-center text-sm text-muted-foreground", children: "No advisors found." }) : filtered.map((a) => {
|
|
795
|
+
const isSelected = selectedId === a.id;
|
|
796
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
797
|
+
"button",
|
|
798
|
+
{
|
|
799
|
+
type: "button",
|
|
800
|
+
onClick: () => setSelectedId(a.id),
|
|
801
|
+
className: cn(
|
|
802
|
+
"flex w-full items-center gap-3 px-3 py-2.5 text-left transition-colors hover:bg-muted/40",
|
|
803
|
+
isSelected && "bg-primary/5"
|
|
804
|
+
),
|
|
805
|
+
children: [
|
|
806
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
807
|
+
"div",
|
|
808
|
+
{
|
|
809
|
+
className: cn(
|
|
810
|
+
"flex size-4 shrink-0 items-center justify-center rounded-full border-2",
|
|
811
|
+
isSelected ? "border-primary" : "border-border bg-background"
|
|
812
|
+
),
|
|
813
|
+
children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "size-2 rounded-full bg-primary" })
|
|
814
|
+
}
|
|
815
|
+
),
|
|
816
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { children: [
|
|
817
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-sm font-medium", children: a.name }),
|
|
818
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
|
|
819
|
+
a.role,
|
|
820
|
+
" \xB7 ",
|
|
821
|
+
a.practice
|
|
822
|
+
] })
|
|
823
|
+
] })
|
|
824
|
+
]
|
|
825
|
+
},
|
|
826
|
+
a.id
|
|
827
|
+
);
|
|
828
|
+
}) }),
|
|
829
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Field, { id: "sc-int-notes", label: "Notes", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
830
|
+
Textarea,
|
|
831
|
+
{
|
|
832
|
+
id: "sc-int-notes",
|
|
833
|
+
placeholder: "Optional message for the advisor\u2026",
|
|
834
|
+
rows: 3,
|
|
835
|
+
value: internalNotes,
|
|
836
|
+
onChange: (e) => setInternalNotes(e.target.value),
|
|
837
|
+
disabled: isSending
|
|
838
|
+
}
|
|
839
|
+
) })
|
|
840
|
+
] }),
|
|
841
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(TabsContent, { value: "external", className: "mt-4 flex flex-col gap-4", children: [
|
|
842
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
843
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Field, { id: "sc-first", label: "First Name", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
844
|
+
Input,
|
|
845
|
+
{
|
|
846
|
+
id: "sc-first",
|
|
847
|
+
placeholder: "First name",
|
|
848
|
+
value: firstName,
|
|
849
|
+
onChange: (e) => setFirstName(e.target.value),
|
|
850
|
+
disabled: isSending
|
|
851
|
+
}
|
|
852
|
+
) }),
|
|
853
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Field, { id: "sc-last", label: "Last Name", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
854
|
+
Input,
|
|
855
|
+
{
|
|
856
|
+
id: "sc-last",
|
|
857
|
+
placeholder: "Last name",
|
|
858
|
+
value: lastName,
|
|
859
|
+
onChange: (e) => setLastName(e.target.value),
|
|
860
|
+
disabled: isSending
|
|
861
|
+
}
|
|
862
|
+
) })
|
|
863
|
+
] }),
|
|
864
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Field, { id: "sc-email", label: "Email", required: true, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
865
|
+
Input,
|
|
866
|
+
{
|
|
867
|
+
id: "sc-email",
|
|
868
|
+
type: "email",
|
|
869
|
+
placeholder: "advisor@company.com.au",
|
|
870
|
+
value: email,
|
|
871
|
+
onChange: (e) => setEmail(e.target.value),
|
|
872
|
+
disabled: isSending
|
|
873
|
+
}
|
|
874
|
+
) }),
|
|
875
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Field, { id: "sc-ext-notes", label: "Notes", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
876
|
+
Textarea,
|
|
877
|
+
{
|
|
878
|
+
id: "sc-ext-notes",
|
|
879
|
+
placeholder: "Optional message\u2026",
|
|
880
|
+
rows: 3,
|
|
881
|
+
value: externalNotes,
|
|
882
|
+
onChange: (e) => setExternalNotes(e.target.value),
|
|
883
|
+
disabled: isSending
|
|
884
|
+
}
|
|
885
|
+
) })
|
|
886
|
+
] })
|
|
887
|
+
] }),
|
|
888
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(DialogFooter, { children: [
|
|
889
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
890
|
+
Button,
|
|
891
|
+
{
|
|
892
|
+
variant: "outline",
|
|
893
|
+
onClick: () => handleOpenChange(false),
|
|
894
|
+
disabled: isSending,
|
|
895
|
+
children: "Cancel"
|
|
896
|
+
}
|
|
897
|
+
),
|
|
898
|
+
tab === "internal" ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
899
|
+
Button,
|
|
900
|
+
{
|
|
901
|
+
onClick: () => onShareInternal(selectedId, internalNotes),
|
|
902
|
+
disabled: !selectedId || isSending,
|
|
903
|
+
children: isSending ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
904
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Spinner, { className: "size-3.5" }),
|
|
905
|
+
"Sharing\u2026"
|
|
906
|
+
] }) : "Share Contact"
|
|
907
|
+
}
|
|
908
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
909
|
+
Button,
|
|
910
|
+
{
|
|
911
|
+
onClick: () => onShareExternal({
|
|
912
|
+
firstName,
|
|
913
|
+
lastName,
|
|
914
|
+
email,
|
|
915
|
+
notes: externalNotes
|
|
916
|
+
}),
|
|
917
|
+
disabled: !email || isSending,
|
|
918
|
+
children: isSending ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
919
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Spinner, { className: "size-3.5" }),
|
|
920
|
+
"Sending\u2026"
|
|
921
|
+
] }) : "Send Invite"
|
|
922
|
+
}
|
|
923
|
+
)
|
|
924
|
+
] })
|
|
925
|
+
] }) });
|
|
926
|
+
}
|
|
632
927
|
// Annotate the CommonJS export names for ESM import in node:
|
|
633
928
|
0 && (module.exports = {
|
|
634
929
|
EmailTemplateDialog,
|
|
930
|
+
ShareContactDialog,
|
|
635
931
|
ShareDetailsDialog
|
|
636
932
|
});
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EmailTemplateDialog,
|
|
3
|
+
ShareContactDialog,
|
|
3
4
|
ShareDetailsDialog
|
|
4
|
-
} from "../../chunk-
|
|
5
|
+
} from "../../chunk-3KLJ4XRE.mjs";
|
|
5
6
|
import "../../chunk-JVMXMFBB.mjs";
|
|
7
|
+
import "../../chunk-WE4YKBDE.mjs";
|
|
6
8
|
import "../../chunk-BS75ICOO.mjs";
|
|
7
9
|
import "../../chunk-LI2CTS5O.mjs";
|
|
8
10
|
import "../../chunk-P7CEBZM6.mjs";
|
|
@@ -15,5 +17,6 @@ import "../../chunk-AFML43VJ.mjs";
|
|
|
15
17
|
import "../../chunk-WNQUEZJF.mjs";
|
|
16
18
|
export {
|
|
17
19
|
EmailTemplateDialog,
|
|
20
|
+
ShareContactDialog,
|
|
18
21
|
ShareDetailsDialog
|
|
19
22
|
};
|
|
@@ -263,7 +263,7 @@ Slot.displayName = "Slot";
|
|
|
263
263
|
// src/components/ui/badge.tsx
|
|
264
264
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
265
265
|
var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
266
|
-
"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2.5 py-0.5 text-
|
|
266
|
+
"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2.5 py-0.5 text-caption whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3",
|
|
267
267
|
{
|
|
268
268
|
variants: {
|
|
269
269
|
variant: {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StageTimeline
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-K35TFQUB.mjs";
|
|
4
|
+
import "../../chunk-EXI64H46.mjs";
|
|
5
5
|
import "../../chunk-JPGL36WQ.mjs";
|
|
6
6
|
import "../../chunk-IKXYTCSB.mjs";
|
|
7
7
|
import "../../chunk-JVMXMFBB.mjs";
|
|
8
8
|
import "../../chunk-PNSYFE3K.mjs";
|
|
9
|
-
import "../../chunk-
|
|
9
|
+
import "../../chunk-X6RC5UWB.mjs";
|
|
10
10
|
import "../../chunk-UNACI2YK.mjs";
|
|
11
11
|
import "../../chunk-R4HCRDU5.mjs";
|
|
12
12
|
import "../../chunk-AFML43VJ.mjs";
|