@wealthx/shadcn 1.5.10 → 1.5.12
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 +114 -114
- 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-O5CP6VP6.mjs → chunk-CPM6P63C.mjs} +56 -44
- package/dist/{chunk-FRT3S72S.mjs → chunk-CQ7HKBEX.mjs} +1 -1
- package/dist/{chunk-54TRNCID.mjs → chunk-EB626HVW.mjs} +78 -11
- 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-Z2BW5T7P.mjs → chunk-IODGRCQG.mjs} +1 -1
- 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/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 +71 -4
- 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 +1 -1
- 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/bank-statement-generate-dialog.js +61 -46
- package/dist/components/ui/bank-statement-generate-dialog.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 +583 -232
- package/dist/index.mjs +45 -43
- 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/ai-conversations.tsx +157 -23
- package/src/components/ui/appointment-book-dialog.tsx +26 -3
- package/src/components/ui/appointment-time-slot-picker.tsx +1 -0
- package/src/components/ui/badge.tsx +1 -1
- package/src/components/ui/bank-statement-generate-dialog.tsx +84 -61
- 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
|
@@ -388,7 +388,7 @@ function formatCurrency(value, options) {
|
|
|
388
388
|
var import_class_variance_authority3 = require("class-variance-authority");
|
|
389
389
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
390
390
|
var badgeVariants = (0, import_class_variance_authority3.cva)(
|
|
391
|
-
"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-
|
|
391
|
+
"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",
|
|
392
392
|
{
|
|
393
393
|
variants: {
|
|
394
394
|
variant: {
|
|
@@ -1375,6 +1375,45 @@ function OpportunityCard({
|
|
|
1375
1375
|
}
|
|
1376
1376
|
);
|
|
1377
1377
|
}
|
|
1378
|
+
function normalizeUrl(url) {
|
|
1379
|
+
return `https://${url.replace(/^https?:\/\//, "")}`;
|
|
1380
|
+
}
|
|
1381
|
+
function LoanApplicationLink({ url }) {
|
|
1382
|
+
const [copied, setCopied] = (0, import_react5.useState)(false);
|
|
1383
|
+
const href = normalizeUrl(url);
|
|
1384
|
+
function handleCopy() {
|
|
1385
|
+
navigator.clipboard.writeText(href).then(() => {
|
|
1386
|
+
setCopied(true);
|
|
1387
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
1388
|
+
});
|
|
1389
|
+
}
|
|
1390
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
1391
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-caption text-muted-foreground", children: "Or the link below to fill out the loan application directly." }),
|
|
1392
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center gap-1.5", children: [
|
|
1393
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Link2, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
1394
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1395
|
+
"a",
|
|
1396
|
+
{
|
|
1397
|
+
href,
|
|
1398
|
+
target: "_blank",
|
|
1399
|
+
rel: "noreferrer",
|
|
1400
|
+
className: "min-w-0 flex-1 truncate text-body-small text-primary underline-offset-2 hover:underline",
|
|
1401
|
+
children: url
|
|
1402
|
+
}
|
|
1403
|
+
),
|
|
1404
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1405
|
+
"button",
|
|
1406
|
+
{
|
|
1407
|
+
type: "button",
|
|
1408
|
+
onClick: handleCopy,
|
|
1409
|
+
className: "shrink-0 rounded p-1 text-muted-foreground transition-colors hover:text-foreground",
|
|
1410
|
+
"aria-label": "Copy link",
|
|
1411
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Check, { className: "size-4 text-success-text" }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Copy, { className: "size-4" })
|
|
1412
|
+
}
|
|
1413
|
+
)
|
|
1414
|
+
] })
|
|
1415
|
+
] });
|
|
1416
|
+
}
|
|
1378
1417
|
function LeadCard({
|
|
1379
1418
|
customerName,
|
|
1380
1419
|
customerPhone,
|
|
@@ -1397,13 +1436,13 @@ function LeadCard({
|
|
|
1397
1436
|
children: [
|
|
1398
1437
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
|
|
1399
1438
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
1400
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-
|
|
1401
|
-
customerPhone && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-
|
|
1402
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
1439
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-label-medium text-foreground", children: customerName }),
|
|
1440
|
+
customerPhone && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
|
|
1441
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Phone, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
|
|
1403
1442
|
customerPhone
|
|
1404
1443
|
] }),
|
|
1405
|
-
customerEmail && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-
|
|
1406
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
1444
|
+
customerEmail && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
|
|
1445
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Mail, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
|
|
1407
1446
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "truncate", children: customerEmail })
|
|
1408
1447
|
] })
|
|
1409
1448
|
] }),
|
|
@@ -1442,23 +1481,7 @@ function LeadCard({
|
|
|
1442
1481
|
children: "Send Loan Application Request"
|
|
1443
1482
|
}
|
|
1444
1483
|
),
|
|
1445
|
-
loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime15.
|
|
1446
|
-
"Or the link below to fill out the loan application directly.",
|
|
1447
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("br", {}),
|
|
1448
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1449
|
-
"a",
|
|
1450
|
-
{
|
|
1451
|
-
href: `https://${loanApplicationUrl.replace(
|
|
1452
|
-
/^https?:\/\//,
|
|
1453
|
-
""
|
|
1454
|
-
)}`,
|
|
1455
|
-
target: "_blank",
|
|
1456
|
-
rel: "noreferrer",
|
|
1457
|
-
className: "text-primary underline-offset-2 hover:underline",
|
|
1458
|
-
children: loanApplicationUrl
|
|
1459
|
-
}
|
|
1460
|
-
)
|
|
1461
|
-
] })
|
|
1484
|
+
loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(LoanApplicationLink, { url: loanApplicationUrl })
|
|
1462
1485
|
] })
|
|
1463
1486
|
]
|
|
1464
1487
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PipelineBoard
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-ZA44WICP.mjs";
|
|
4
|
+
import "../../chunk-AKWN5ZQG.mjs";
|
|
5
|
+
import "../../chunk-YV7XF32X.mjs";
|
|
6
|
+
import "../../chunk-EXI64H46.mjs";
|
|
7
7
|
import "../../chunk-JPGL36WQ.mjs";
|
|
8
8
|
import "../../chunk-IKXYTCSB.mjs";
|
|
9
9
|
import "../../chunk-JVMXMFBB.mjs";
|
|
10
10
|
import "../../chunk-PNSYFE3K.mjs";
|
|
11
11
|
import "../../chunk-H5DTKPJ2.mjs";
|
|
12
12
|
import "../../chunk-2GIYVERS.mjs";
|
|
13
|
-
import "../../chunk-
|
|
13
|
+
import "../../chunk-X6RC5UWB.mjs";
|
|
14
14
|
import "../../chunk-LHWJQNLG.mjs";
|
|
15
15
|
import "../../chunk-OWFQSXVD.mjs";
|
|
16
16
|
import "../../chunk-6QAFGZC2.mjs";
|
|
@@ -155,7 +155,7 @@ Slot.displayName = "Slot";
|
|
|
155
155
|
// src/components/ui/badge.tsx
|
|
156
156
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
157
157
|
var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
158
|
-
"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-
|
|
158
|
+
"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",
|
|
159
159
|
{
|
|
160
160
|
variants: {
|
|
161
161
|
variant: {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TaskCheckItem
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-EXI64H46.mjs";
|
|
4
4
|
import "../../chunk-IKXYTCSB.mjs";
|
|
5
5
|
import "../../chunk-PNSYFE3K.mjs";
|
|
6
|
-
import "../../chunk-
|
|
6
|
+
import "../../chunk-X6RC5UWB.mjs";
|
|
7
7
|
import "../../chunk-R4HCRDU5.mjs";
|
|
8
8
|
import "../../chunk-AFML43VJ.mjs";
|
|
9
9
|
import "../../chunk-WNQUEZJF.mjs";
|
|
@@ -156,7 +156,7 @@ Slot.displayName = "Slot";
|
|
|
156
156
|
// src/components/ui/badge.tsx
|
|
157
157
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
158
158
|
var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
159
|
-
"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-
|
|
159
|
+
"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",
|
|
160
160
|
{
|
|
161
161
|
variants: {
|
|
162
162
|
variant: {
|
|
@@ -162,7 +162,7 @@ Slot.displayName = "Slot";
|
|
|
162
162
|
// src/components/ui/badge.tsx
|
|
163
163
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
164
164
|
var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
165
|
-
"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-
|
|
165
|
+
"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",
|
|
166
166
|
{
|
|
167
167
|
variants: {
|
|
168
168
|
variant: {
|
|
@@ -5,9 +5,9 @@ import {
|
|
|
5
5
|
ResourceEmailTemplateCard,
|
|
6
6
|
ResourceModal,
|
|
7
7
|
ResourceVideoCard
|
|
8
|
-
} from "../../chunk-
|
|
8
|
+
} from "../../chunk-XYWEGBAA.mjs";
|
|
9
9
|
import "../../chunk-LI2CTS5O.mjs";
|
|
10
|
-
import "../../chunk-
|
|
10
|
+
import "../../chunk-X6RC5UWB.mjs";
|
|
11
11
|
import "../../chunk-XYSRRDBH.mjs";
|
|
12
12
|
import "../../chunk-FRCTOAKZ.mjs";
|
|
13
13
|
import "../../chunk-NOOEKOWY.mjs";
|
|
@@ -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
|
});
|