@wealthx/shadcn 1.5.31 → 1.5.33
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 +101 -101
- package/CHANGELOG.md +12 -0
- package/dist/{chunk-SYJ6LVJ6.mjs → chunk-3ZU5BH6X.mjs} +1 -1
- package/dist/{chunk-FTQ2AKZ2.mjs → chunk-4QTHK7ML.mjs} +1 -1
- package/dist/{chunk-T5HU4S4X.mjs → chunk-C7ZTZTEW.mjs} +1 -1
- package/dist/{chunk-KI57CBJR.mjs → chunk-DQNNP6I4.mjs} +33 -24
- package/dist/{chunk-AE4JKISB.mjs → chunk-EEI4FLEE.mjs} +1 -1
- package/dist/{chunk-IEQX4UVP.mjs → chunk-EY36WDCF.mjs} +1 -1
- package/dist/{chunk-HB5BKRMH.mjs → chunk-F3CU6KEI.mjs} +11 -1
- package/dist/chunk-H65NB7KI.mjs +182 -0
- package/dist/{chunk-TRM3KIHT.mjs → chunk-ICCPK3J2.mjs} +1 -1
- package/dist/{chunk-KGVVK6OS.mjs → chunk-ORMC3TV3.mjs} +3 -1
- package/dist/{chunk-HSXMTFIM.mjs → chunk-UD5UF5OC.mjs} +1 -1
- package/dist/{chunk-IW33VLL5.mjs → chunk-X3VEDQPO.mjs} +7 -3
- package/dist/{chunk-AAZSLTER.mjs → chunk-XGRSPFFC.mjs} +16 -7
- package/dist/components/ui/about-you-form.js +9 -6
- package/dist/components/ui/about-you-form.mjs +2 -2
- package/dist/components/ui/ai-conversations/index.js +4 -1
- package/dist/components/ui/ai-conversations/index.mjs +2 -2
- package/dist/components/ui/appointment-availability-settings.js +24 -12
- package/dist/components/ui/appointment-availability-settings.mjs +3 -3
- package/dist/components/ui/appointment-book-dialog.js +33 -24
- package/dist/components/ui/appointment-book-dialog.mjs +1 -1
- package/dist/components/ui/appointment-detail-sheet.js +3 -1
- package/dist/components/ui/appointment-detail-sheet.mjs +1 -1
- package/dist/components/ui/appointment-gmail-connect.js +127 -70
- package/dist/components/ui/appointment-gmail-connect.mjs +1 -1
- package/dist/components/ui/backoffice-signup-steps.js +23 -16
- package/dist/components/ui/backoffice-signup-steps.mjs +3 -3
- package/dist/components/ui/bank-statement-generate-dialog.js +12 -9
- package/dist/components/ui/bank-statement-generate-dialog.mjs +3 -3
- package/dist/components/ui/color-picker.js +21 -14
- package/dist/components/ui/color-picker.mjs +2 -2
- package/dist/components/ui/date-picker.js +6 -3
- package/dist/components/ui/date-picker.mjs +2 -2
- package/dist/components/ui/opportunity-edit-modals.js +45 -42
- package/dist/components/ui/opportunity-edit-modals.mjs +3 -3
- package/dist/components/ui/opportunity-summary-tab.js +48 -45
- package/dist/components/ui/opportunity-summary-tab.mjs +4 -4
- package/dist/components/ui/pipeline-dialogs.js +12 -9
- package/dist/components/ui/pipeline-dialogs.mjs +3 -3
- package/dist/components/ui/popover.js +22 -1
- package/dist/components/ui/popover.mjs +3 -1
- package/dist/components/ui/savings-goal-modal.js +11 -8
- package/dist/components/ui/savings-goal-modal.mjs +2 -2
- package/dist/index.js +349 -257
- package/dist/index.mjs +15 -13
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/components/index.tsx +4 -0
- package/src/components/ui/appointment-availability-settings.tsx +32 -19
- package/src/components/ui/appointment-book-dialog.tsx +52 -73
- package/src/components/ui/appointment-detail-sheet.tsx +3 -1
- package/src/components/ui/appointment-gmail-connect.tsx +89 -29
- package/src/components/ui/color-picker.tsx +12 -4
- package/src/components/ui/popover.tsx +33 -2
- package/src/styles/styles-css.ts +1 -1
- package/dist/chunk-7TMPOZDE.mjs +0 -122
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
AppointmentAvailabilitySettings,
|
|
3
3
|
MEETING_PLATFORM_OPTIONS,
|
|
4
4
|
TIMEZONE_OPTIONS
|
|
5
|
-
} from "../../chunk-
|
|
5
|
+
} from "../../chunk-XGRSPFFC.mjs";
|
|
6
6
|
import "../../chunk-PNSYFE3K.mjs";
|
|
7
7
|
import "../../chunk-WE4YKBDE.mjs";
|
|
8
8
|
import "../../chunk-K6VCC2MK.mjs";
|
|
9
9
|
import "../../chunk-T5FRVEJQ.mjs";
|
|
10
10
|
import "../../chunk-2GIYVERS.mjs";
|
|
11
|
-
import "../../chunk-
|
|
12
|
-
import "../../chunk-
|
|
11
|
+
import "../../chunk-ICCPK3J2.mjs";
|
|
12
|
+
import "../../chunk-F3CU6KEI.mjs";
|
|
13
13
|
import "../../chunk-FBNEIYSE.mjs";
|
|
14
14
|
import "../../chunk-LHWJQNLG.mjs";
|
|
15
15
|
import "../../chunk-LSRGA5BI.mjs";
|
|
@@ -1472,31 +1472,40 @@ function ClientSearch({
|
|
|
1472
1472
|
] }) })
|
|
1473
1473
|
] });
|
|
1474
1474
|
}
|
|
1475
|
+
var FMT_CALL = {
|
|
1476
|
+
value: "call",
|
|
1477
|
+
label: "Call",
|
|
1478
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Phone, { className: "h-4 w-4" })
|
|
1479
|
+
};
|
|
1480
|
+
var FMT_ONLINE = {
|
|
1481
|
+
value: "online",
|
|
1482
|
+
label: "Online Meeting",
|
|
1483
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Video, { className: "h-4 w-4" })
|
|
1484
|
+
};
|
|
1485
|
+
var FMT_GOOGLE_MEET = {
|
|
1486
|
+
value: "google-meet",
|
|
1487
|
+
label: "Google Meet",
|
|
1488
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Video, { className: "h-4 w-4" })
|
|
1489
|
+
};
|
|
1490
|
+
var FMT_MS_TEAMS = {
|
|
1491
|
+
value: "microsoft-teams",
|
|
1492
|
+
label: "MS Teams",
|
|
1493
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Users, { className: "h-4 w-4" })
|
|
1494
|
+
};
|
|
1495
|
+
var FMT_OFFLINE = {
|
|
1496
|
+
value: "offline",
|
|
1497
|
+
label: "Offline Meeting",
|
|
1498
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.MapPin, { className: "h-4 w-4" })
|
|
1499
|
+
};
|
|
1475
1500
|
function getFormatOptions(platform) {
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Video, { className: "h-4 w-4" })
|
|
1485
|
-
};
|
|
1486
|
-
const msTeams = {
|
|
1487
|
-
value: "microsoft-teams",
|
|
1488
|
-
label: "MS Teams",
|
|
1489
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Users, { className: "h-4 w-4" })
|
|
1490
|
-
};
|
|
1491
|
-
const offline = {
|
|
1492
|
-
value: "offline",
|
|
1493
|
-
label: "Offline Meeting",
|
|
1494
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.MapPin, { className: "h-4 w-4" })
|
|
1495
|
-
};
|
|
1496
|
-
if (platform === "google-meet") return [call, googleMeet, offline];
|
|
1497
|
-
if (platform === "microsoft-teams") return [call, msTeams, offline];
|
|
1498
|
-
if (platform === "any") return [call, googleMeet, msTeams, offline];
|
|
1499
|
-
return [call, offline];
|
|
1501
|
+
if (platform === "online") return [FMT_CALL, FMT_ONLINE, FMT_OFFLINE];
|
|
1502
|
+
if (platform === "google-meet")
|
|
1503
|
+
return [FMT_CALL, FMT_GOOGLE_MEET, FMT_OFFLINE];
|
|
1504
|
+
if (platform === "microsoft-teams")
|
|
1505
|
+
return [FMT_CALL, FMT_MS_TEAMS, FMT_OFFLINE];
|
|
1506
|
+
if (platform === "any")
|
|
1507
|
+
return [FMT_CALL, FMT_GOOGLE_MEET, FMT_MS_TEAMS, FMT_OFFLINE];
|
|
1508
|
+
return [FMT_CALL, FMT_OFFLINE];
|
|
1500
1509
|
}
|
|
1501
1510
|
function MeetingFormatSection({
|
|
1502
1511
|
format: format2,
|
|
@@ -1371,11 +1371,13 @@ var MEETING_FORMAT_META = {
|
|
|
1371
1371
|
icon: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Users, { className: ICON_CLASS }),
|
|
1372
1372
|
label: "Microsoft Teams"
|
|
1373
1373
|
},
|
|
1374
|
+
online: { icon: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Video, { className: ICON_CLASS }), label: "Online Meeting" },
|
|
1374
1375
|
offline: { icon: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.MapPin, { className: ICON_CLASS }), label: "In Person" }
|
|
1375
1376
|
};
|
|
1376
1377
|
var ONLINE_FORMATS = /* @__PURE__ */ new Set([
|
|
1377
1378
|
"google-meet",
|
|
1378
|
-
"microsoft-teams"
|
|
1379
|
+
"microsoft-teams",
|
|
1380
|
+
"online"
|
|
1379
1381
|
]);
|
|
1380
1382
|
function AppointmentDetailSheet({
|
|
1381
1383
|
appointment,
|
|
@@ -63,9 +63,6 @@ __export(appointment_gmail_connect_exports, {
|
|
|
63
63
|
});
|
|
64
64
|
module.exports = __toCommonJS(appointment_gmail_connect_exports);
|
|
65
65
|
|
|
66
|
-
// src/components/ui/badge.tsx
|
|
67
|
-
var import_class_variance_authority = require("class-variance-authority");
|
|
68
|
-
|
|
69
66
|
// src/lib/utils.ts
|
|
70
67
|
var import_clsx = require("clsx");
|
|
71
68
|
var import_tailwind_merge = require("tailwind-merge");
|
|
@@ -105,6 +102,9 @@ function cn(...inputs) {
|
|
|
105
102
|
return twMerge((0, import_clsx.clsx)(inputs));
|
|
106
103
|
}
|
|
107
104
|
|
|
105
|
+
// src/components/ui/badge.tsx
|
|
106
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
107
|
+
|
|
108
108
|
// src/lib/slot.tsx
|
|
109
109
|
var React = __toESM(require("react"));
|
|
110
110
|
function mergeRefs(...refs) {
|
|
@@ -319,94 +319,151 @@ function Separator(_a) {
|
|
|
319
319
|
// src/components/ui/appointment-gmail-connect.tsx
|
|
320
320
|
var import_lucide_react2 = require("lucide-react");
|
|
321
321
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
322
|
+
function GmailIcon({ className }) {
|
|
323
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { viewBox: "0 0 24 24", className, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
324
|
+
"path",
|
|
325
|
+
{
|
|
326
|
+
fill: "#EA4335",
|
|
327
|
+
d: "M24 5.457v13.909c0 .904-.732 1.636-1.636 1.636h-3.819V11.73L12 16.64l-6.545-4.91v9.273H1.636A1.636 1.636 0 0 1 0 19.366V5.457c0-2.023 2.309-3.178 3.927-1.964L5.455 4.64 12 9.548l6.545-4.91 1.528-1.145C21.69 2.28 24 3.434 24 5.457z"
|
|
328
|
+
}
|
|
329
|
+
) });
|
|
330
|
+
}
|
|
331
|
+
function OutlookIcon({ className }) {
|
|
332
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { viewBox: "0 0 24 24", className, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
333
|
+
"path",
|
|
334
|
+
{
|
|
335
|
+
fill: "#0078D4",
|
|
336
|
+
d: "M0 3.449L9.75 2.1v9.451H0m10.949-9.602L24 0v11.4H10.949M0 12.6h9.75v9.451L0 20.699M10.949 12.6H24V24l-12.9-1.801"
|
|
337
|
+
}
|
|
338
|
+
) });
|
|
339
|
+
}
|
|
340
|
+
var PROVIDER_META = {
|
|
341
|
+
gmail: { label: "Gmail", iconBg: "bg-[#EA4335]/10", Icon: GmailIcon },
|
|
342
|
+
outlook: { label: "Outlook", iconBg: "bg-[#0078D4]/10", Icon: OutlookIcon }
|
|
343
|
+
};
|
|
322
344
|
var PERMISSIONS = [
|
|
323
345
|
"Read your calendar availability",
|
|
324
346
|
"Send appointment confirmation emails",
|
|
325
347
|
"Create calendar events on your behalf"
|
|
326
348
|
];
|
|
327
349
|
function AppointmentGmailConnect({
|
|
350
|
+
provider = "gmail",
|
|
328
351
|
connection,
|
|
329
352
|
calendarLink,
|
|
353
|
+
highlighted = false,
|
|
330
354
|
onCopyLink,
|
|
331
355
|
onGoToIntegrations
|
|
332
356
|
}) {
|
|
357
|
+
const { label, iconBg, Icon } = PROVIDER_META[provider];
|
|
333
358
|
if (connection.connected) {
|
|
334
|
-
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.
|
|
343
|
-
"Active"
|
|
344
|
-
] }),
|
|
345
|
-
connection.connectedAt && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "shrink-0 text-xs text-muted-foreground", children: [
|
|
346
|
-
"Connected since ",
|
|
347
|
-
connection.connectedAt
|
|
348
|
-
] }),
|
|
349
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
350
|
-
Button,
|
|
351
|
-
{
|
|
352
|
-
size: "sm",
|
|
353
|
-
variant: "ghost",
|
|
354
|
-
className: "shrink-0 gap-1.5 text-muted-foreground",
|
|
355
|
-
onClick: onGoToIntegrations,
|
|
356
|
-
children: [
|
|
357
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Settings, { className: "h-3.5 w-3.5" }),
|
|
358
|
-
"Manage"
|
|
359
|
-
]
|
|
360
|
-
}
|
|
361
|
-
)
|
|
362
|
-
] }),
|
|
363
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Separator, {}),
|
|
364
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-2 px-5 py-4", children: [
|
|
365
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium text-muted-foreground", children: "Permissions granted" }),
|
|
366
|
-
PERMISSIONS.map((perm) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
367
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Check, { className: "h-3.5 w-3.5 shrink-0 text-success" }),
|
|
368
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-sm text-muted-foreground", children: perm })
|
|
369
|
-
] }, perm))
|
|
370
|
-
] }),
|
|
371
|
-
calendarLink && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
372
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Separator, {}),
|
|
373
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-2.5 px-5 py-4", children: [
|
|
374
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
375
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Link2, { className: "h-4 w-4 text-muted-foreground" }),
|
|
376
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-semibold", children: "Calendar Appointment Link" })
|
|
377
|
-
] }),
|
|
378
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm text-muted-foreground", children: "Share with clients so they can self-book." }),
|
|
379
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "relative", children: [
|
|
359
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
360
|
+
"div",
|
|
361
|
+
{
|
|
362
|
+
className: cn(
|
|
363
|
+
"flex flex-col border bg-card",
|
|
364
|
+
highlighted ? "border-primary" : "border-border"
|
|
365
|
+
),
|
|
366
|
+
children: [
|
|
367
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-start gap-3 px-5 py-4", children: [
|
|
380
368
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
381
|
-
|
|
369
|
+
"div",
|
|
382
370
|
{
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
371
|
+
className: cn(
|
|
372
|
+
"flex h-10 w-10 shrink-0 items-center justify-center",
|
|
373
|
+
iconBg
|
|
374
|
+
),
|
|
375
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Icon, { className: "h-5 w-5" })
|
|
387
376
|
}
|
|
388
377
|
),
|
|
389
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
378
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
379
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "text-base font-semibold", children: [
|
|
380
|
+
label,
|
|
381
|
+
" Connected"
|
|
382
|
+
] }),
|
|
383
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "truncate text-sm text-muted-foreground", children: connection.email })
|
|
384
|
+
] }),
|
|
385
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex shrink-0 flex-col items-end gap-1.5", children: [
|
|
386
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
387
|
+
Button,
|
|
388
|
+
{
|
|
389
|
+
size: "sm",
|
|
390
|
+
variant: "ghost",
|
|
391
|
+
className: "gap-1.5 text-muted-foreground",
|
|
392
|
+
onClick: onGoToIntegrations,
|
|
393
|
+
children: [
|
|
394
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Settings, { className: "h-3.5 w-3.5" }),
|
|
395
|
+
"Manage"
|
|
396
|
+
]
|
|
397
|
+
}
|
|
398
|
+
),
|
|
399
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
400
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(Badge, { variant: "success", children: [
|
|
401
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Check, { size: 10 }),
|
|
402
|
+
"Active"
|
|
403
|
+
] }),
|
|
404
|
+
connection.connectedAt && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
|
|
405
|
+
"Connected since ",
|
|
406
|
+
connection.connectedAt
|
|
407
|
+
] })
|
|
408
|
+
] })
|
|
409
|
+
] })
|
|
410
|
+
] }),
|
|
411
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Separator, {}),
|
|
412
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-2 px-5 py-4", children: [
|
|
413
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium text-muted-foreground", children: "Permissions granted" }),
|
|
414
|
+
PERMISSIONS.map((perm) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
415
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Check, { className: "h-3.5 w-3.5 shrink-0 text-success" }),
|
|
416
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-sm text-muted-foreground", children: perm })
|
|
417
|
+
] }, perm))
|
|
418
|
+
] }),
|
|
419
|
+
calendarLink && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
420
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Separator, {}),
|
|
421
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-2.5 px-5 py-4", children: [
|
|
422
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
423
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Link2, { className: "h-4 w-4 text-muted-foreground" }),
|
|
424
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-semibold", children: "Calendar Appointment Link" })
|
|
425
|
+
] }),
|
|
426
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm text-muted-foreground", children: "Share with clients so they can self-book." }),
|
|
427
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "relative", children: [
|
|
428
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
429
|
+
Input,
|
|
430
|
+
{
|
|
431
|
+
id: "calendar-link",
|
|
432
|
+
readOnly: true,
|
|
433
|
+
value: calendarLink,
|
|
434
|
+
className: "cursor-default select-all pr-10 text-muted-foreground"
|
|
435
|
+
}
|
|
436
|
+
),
|
|
437
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
438
|
+
Button,
|
|
439
|
+
{
|
|
440
|
+
type: "button",
|
|
441
|
+
variant: "ghost",
|
|
442
|
+
size: "icon",
|
|
443
|
+
onClick: onCopyLink,
|
|
444
|
+
className: "absolute right-1 top-1/2 h-8 w-8 -translate-y-1/2",
|
|
445
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Copy, { className: "h-4 w-4" })
|
|
446
|
+
}
|
|
447
|
+
)
|
|
448
|
+
] })
|
|
449
|
+
] })
|
|
400
450
|
] })
|
|
401
|
-
]
|
|
402
|
-
|
|
403
|
-
|
|
451
|
+
]
|
|
452
|
+
}
|
|
453
|
+
);
|
|
404
454
|
}
|
|
405
455
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col items-center gap-4 border border-border bg-card px-6 py-8 text-center", children: [
|
|
406
456
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "flex h-12 w-12 items-center justify-center bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Mail, { className: "h-6 w-6 text-muted-foreground" }) }),
|
|
407
457
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
|
|
408
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.
|
|
409
|
-
|
|
458
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "text-base font-semibold", children: [
|
|
459
|
+
label,
|
|
460
|
+
" not connected"
|
|
461
|
+
] }),
|
|
462
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "max-w-xs text-sm text-muted-foreground", children: [
|
|
463
|
+
"Connect your ",
|
|
464
|
+
label,
|
|
465
|
+
" account in Integrations to enable calendar booking and appointment confirmations."
|
|
466
|
+
] })
|
|
410
467
|
] }),
|
|
411
468
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex w-full max-w-xs flex-col gap-2 text-left", children: [
|
|
412
469
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium text-muted-foreground", children: "Once connected, WealthX will be able to:" }),
|
|
@@ -278,9 +278,10 @@ function Checkbox(_a) {
|
|
|
278
278
|
}
|
|
279
279
|
|
|
280
280
|
// src/components/ui/color-picker.tsx
|
|
281
|
-
var
|
|
281
|
+
var React4 = __toESM(require("react"));
|
|
282
282
|
|
|
283
283
|
// src/components/ui/popover.tsx
|
|
284
|
+
var React3 = __toESM(require("react"));
|
|
284
285
|
var import_popover = require("@base-ui/react/popover");
|
|
285
286
|
|
|
286
287
|
// src/lib/theme-provider.tsx
|
|
@@ -293,6 +294,7 @@ function useThemeVars() {
|
|
|
293
294
|
|
|
294
295
|
// src/components/ui/popover.tsx
|
|
295
296
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
297
|
+
var PopoverPortalContext = React3.createContext(void 0);
|
|
296
298
|
function Popover(_a) {
|
|
297
299
|
var props = __objRest(_a, []);
|
|
298
300
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_popover.Popover.Root, __spreadValues({ "data-slot": "popover" }, props));
|
|
@@ -314,7 +316,8 @@ function PopoverContent(_a) {
|
|
|
314
316
|
"style"
|
|
315
317
|
]);
|
|
316
318
|
const themeVars = useThemeVars();
|
|
317
|
-
|
|
319
|
+
const portalContainer = React3.useContext(PopoverPortalContext);
|
|
320
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_popover.Popover.Portal, { container: portalContainer != null ? portalContainer : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
318
321
|
import_popover.Popover.Positioner,
|
|
319
322
|
{
|
|
320
323
|
className: "z-[200]",
|
|
@@ -432,15 +435,19 @@ function ColorPickerContent({
|
|
|
432
435
|
onChange,
|
|
433
436
|
presets = COLOR_PICKER_PRESETS
|
|
434
437
|
}) {
|
|
435
|
-
const [hexInput, setHexInput] =
|
|
436
|
-
|
|
437
|
-
|
|
438
|
+
const [hexInput, setHexInput] = React4.useState(value);
|
|
439
|
+
const hexInputRef = React4.useRef(hexInput);
|
|
440
|
+
hexInputRef.current = hexInput;
|
|
441
|
+
React4.useEffect(() => {
|
|
442
|
+
if (value !== hexInputRef.current) {
|
|
443
|
+
setHexInput(value);
|
|
444
|
+
}
|
|
438
445
|
}, [value]);
|
|
439
446
|
function handleHexInputChange(e) {
|
|
440
447
|
const raw = e.target.value;
|
|
441
448
|
setHexInput(raw);
|
|
442
449
|
const normalized = normalizeHex(raw);
|
|
443
|
-
if (
|
|
450
|
+
if (/^#[0-9A-Fa-f]{6}$/.test(normalized)) {
|
|
444
451
|
onChange(normalized);
|
|
445
452
|
}
|
|
446
453
|
}
|
|
@@ -520,10 +527,10 @@ function ColorPicker({
|
|
|
520
527
|
className
|
|
521
528
|
}) {
|
|
522
529
|
const isControlled = controlledValue !== void 0;
|
|
523
|
-
const [internalValue, setInternalValue] =
|
|
530
|
+
const [internalValue, setInternalValue] = React4.useState(defaultValue);
|
|
524
531
|
const color = isControlled ? controlledValue : internalValue;
|
|
525
|
-
const [open, setOpen] =
|
|
526
|
-
|
|
532
|
+
const [open, setOpen] = React4.useState(false);
|
|
533
|
+
React4.useEffect(() => {
|
|
527
534
|
if (disabled) setOpen(false);
|
|
528
535
|
}, [disabled]);
|
|
529
536
|
function handleChange(newColor) {
|
|
@@ -745,11 +752,11 @@ function FieldError(_a) {
|
|
|
745
752
|
}
|
|
746
753
|
|
|
747
754
|
// src/components/ui/select.tsx
|
|
748
|
-
var
|
|
755
|
+
var React5 = __toESM(require("react"));
|
|
749
756
|
var import_lucide_react3 = require("lucide-react");
|
|
750
757
|
var import_select = require("@base-ui/react/select");
|
|
751
758
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
752
|
-
var SelectPortalContext =
|
|
759
|
+
var SelectPortalContext = React5.createContext(
|
|
753
760
|
void 0
|
|
754
761
|
);
|
|
755
762
|
function Select(_a) {
|
|
@@ -798,7 +805,7 @@ function SelectContent(_a) {
|
|
|
798
805
|
"style"
|
|
799
806
|
]);
|
|
800
807
|
const themeVars = useThemeVars();
|
|
801
|
-
const portalContainer =
|
|
808
|
+
const portalContainer = React5.useContext(SelectPortalContext);
|
|
802
809
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_select.Select.Portal, { container: portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
803
810
|
import_select.Select.Positioner,
|
|
804
811
|
{
|
|
@@ -1047,7 +1054,7 @@ var import_react5 = require("react");
|
|
|
1047
1054
|
var import_lucide_react6 = require("lucide-react");
|
|
1048
1055
|
|
|
1049
1056
|
// src/components/ui/password-strength-tooltip.tsx
|
|
1050
|
-
var
|
|
1057
|
+
var React6 = __toESM(require("react"));
|
|
1051
1058
|
var import_lucide_react5 = require("lucide-react");
|
|
1052
1059
|
var import_popover3 = require("@base-ui/react/popover");
|
|
1053
1060
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
@@ -1061,10 +1068,10 @@ var PASSWORD_STRENGTH_RULES = [
|
|
|
1061
1068
|
test: (p) => /[^A-Za-z0-9]/.test(p)
|
|
1062
1069
|
}
|
|
1063
1070
|
];
|
|
1064
|
-
var PasswordStrengthTooltip =
|
|
1071
|
+
var PasswordStrengthTooltip = React6.forwardRef(function PasswordStrengthTooltip2({ open = false, password, children, side = "right" }, forwardedRef) {
|
|
1065
1072
|
const themeVars = useThemeVars();
|
|
1066
|
-
const anchorRef =
|
|
1067
|
-
const composedRef =
|
|
1073
|
+
const anchorRef = React6.useRef(null);
|
|
1074
|
+
const composedRef = React6.useCallback(
|
|
1068
1075
|
(node) => {
|
|
1069
1076
|
anchorRef.current = node;
|
|
1070
1077
|
if (typeof forwardedRef === "function") {
|
|
@@ -6,17 +6,17 @@ import {
|
|
|
6
6
|
PaymentView,
|
|
7
7
|
PersonalDetailsStep,
|
|
8
8
|
StripeView
|
|
9
|
-
} from "../../chunk-
|
|
9
|
+
} from "../../chunk-EY36WDCF.mjs";
|
|
10
10
|
import "../../chunk-4UT3RZ2D.mjs";
|
|
11
11
|
import "../../chunk-IKVF4XE2.mjs";
|
|
12
12
|
import "../../chunk-I4KVSZCH.mjs";
|
|
13
|
-
import "../../chunk-
|
|
13
|
+
import "../../chunk-X3VEDQPO.mjs";
|
|
14
14
|
import "../../chunk-MS3GNXMB.mjs";
|
|
15
15
|
import "../../chunk-3S6KVFF5.mjs";
|
|
16
16
|
import "../../chunk-IKXYTCSB.mjs";
|
|
17
17
|
import "../../chunk-K6VCC2MK.mjs";
|
|
18
18
|
import "../../chunk-2GIYVERS.mjs";
|
|
19
|
-
import "../../chunk-
|
|
19
|
+
import "../../chunk-F3CU6KEI.mjs";
|
|
20
20
|
import "../../chunk-LSRGA5BI.mjs";
|
|
21
21
|
import "../../chunk-LBTHZSBT.mjs";
|
|
22
22
|
import "../../chunk-XYSRRDBH.mjs";
|
|
@@ -272,7 +272,7 @@ function Checkbox(_a) {
|
|
|
272
272
|
}
|
|
273
273
|
|
|
274
274
|
// src/components/ui/date-picker.tsx
|
|
275
|
-
var
|
|
275
|
+
var React5 = __toESM(require("react"));
|
|
276
276
|
var import_date_fns2 = require("date-fns");
|
|
277
277
|
var import_lucide_react4 = require("lucide-react");
|
|
278
278
|
|
|
@@ -512,6 +512,7 @@ function CalendarDayButton(_a) {
|
|
|
512
512
|
}
|
|
513
513
|
|
|
514
514
|
// src/components/ui/popover.tsx
|
|
515
|
+
var React4 = __toESM(require("react"));
|
|
515
516
|
var import_popover = require("@base-ui/react/popover");
|
|
516
517
|
|
|
517
518
|
// src/lib/theme-provider.tsx
|
|
@@ -524,6 +525,7 @@ function useThemeVars() {
|
|
|
524
525
|
|
|
525
526
|
// src/components/ui/popover.tsx
|
|
526
527
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
528
|
+
var PopoverPortalContext = React4.createContext(void 0);
|
|
527
529
|
function Popover(_a) {
|
|
528
530
|
var props = __objRest(_a, []);
|
|
529
531
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_popover.Popover.Root, __spreadValues({ "data-slot": "popover" }, props));
|
|
@@ -545,7 +547,8 @@ function PopoverContent(_a) {
|
|
|
545
547
|
"style"
|
|
546
548
|
]);
|
|
547
549
|
const themeVars = useThemeVars();
|
|
548
|
-
|
|
550
|
+
const portalContainer = React4.useContext(PopoverPortalContext);
|
|
551
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_popover.Popover.Portal, { container: portalContainer != null ? portalContainer : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
549
552
|
import_popover.Popover.Positioner,
|
|
550
553
|
{
|
|
551
554
|
className: "z-[200]",
|
|
@@ -577,7 +580,7 @@ function DatePicker({
|
|
|
577
580
|
className,
|
|
578
581
|
calendarProps
|
|
579
582
|
}) {
|
|
580
|
-
const [open, setOpen] =
|
|
583
|
+
const [open, setOpen] = React5.useState(false);
|
|
581
584
|
function handleDaySelect(day) {
|
|
582
585
|
if (!day) {
|
|
583
586
|
onChange == null ? void 0 : onChange(void 0);
|
|
@@ -930,11 +933,11 @@ function FieldLabel(_a) {
|
|
|
930
933
|
var import_lucide_react7 = require("lucide-react");
|
|
931
934
|
|
|
932
935
|
// src/components/ui/select.tsx
|
|
933
|
-
var
|
|
936
|
+
var React6 = __toESM(require("react"));
|
|
934
937
|
var import_lucide_react6 = require("lucide-react");
|
|
935
938
|
var import_select = require("@base-ui/react/select");
|
|
936
939
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
937
|
-
var SelectPortalContext =
|
|
940
|
+
var SelectPortalContext = React6.createContext(
|
|
938
941
|
void 0
|
|
939
942
|
);
|
|
940
943
|
function Select(_a) {
|
|
@@ -983,7 +986,7 @@ function SelectContent(_a) {
|
|
|
983
986
|
"style"
|
|
984
987
|
]);
|
|
985
988
|
const themeVars = useThemeVars();
|
|
986
|
-
const portalContainer =
|
|
989
|
+
const portalContainer = React6.useContext(SelectPortalContext);
|
|
987
990
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_select.Select.Portal, { container: portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
988
991
|
import_select.Select.Positioner,
|
|
989
992
|
{
|
|
@@ -1250,7 +1253,7 @@ function TableCell(_a) {
|
|
|
1250
1253
|
}
|
|
1251
1254
|
|
|
1252
1255
|
// src/components/ui/toggle-group.tsx
|
|
1253
|
-
var
|
|
1256
|
+
var React7 = __toESM(require("react"));
|
|
1254
1257
|
var import_toggle_group = require("@base-ui/react/toggle-group");
|
|
1255
1258
|
var import_toggle2 = require("@base-ui/react/toggle");
|
|
1256
1259
|
|
|
@@ -1281,7 +1284,7 @@ var toggleVariants = (0, import_class_variance_authority4.cva)(
|
|
|
1281
1284
|
|
|
1282
1285
|
// src/components/ui/toggle-group.tsx
|
|
1283
1286
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1284
|
-
var ToggleGroupContext =
|
|
1287
|
+
var ToggleGroupContext = React7.createContext({
|
|
1285
1288
|
size: "default",
|
|
1286
1289
|
variant: "default",
|
|
1287
1290
|
spacing: 0
|
|
@@ -1333,7 +1336,7 @@ function ToggleGroupItem(_a) {
|
|
|
1333
1336
|
"variant",
|
|
1334
1337
|
"size"
|
|
1335
1338
|
]);
|
|
1336
|
-
const context =
|
|
1339
|
+
const context = React7.useContext(ToggleGroupContext);
|
|
1337
1340
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1338
1341
|
import_toggle2.Toggle,
|
|
1339
1342
|
__spreadProps(__spreadValues({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BankStatementGenerateDialog
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-4QTHK7ML.mjs";
|
|
4
4
|
import "../../chunk-MS3GNXMB.mjs";
|
|
5
5
|
import "../../chunk-6WRDXE7A.mjs";
|
|
6
6
|
import "../../chunk-GT3RU6GA.mjs";
|
|
@@ -9,8 +9,8 @@ import "../../chunk-K6VCC2MK.mjs";
|
|
|
9
9
|
import "../../chunk-T5FRVEJQ.mjs";
|
|
10
10
|
import "../../chunk-2GIYVERS.mjs";
|
|
11
11
|
import "../../chunk-JVMXMFBB.mjs";
|
|
12
|
-
import "../../chunk-
|
|
13
|
-
import "../../chunk-
|
|
12
|
+
import "../../chunk-ICCPK3J2.mjs";
|
|
13
|
+
import "../../chunk-F3CU6KEI.mjs";
|
|
14
14
|
import "../../chunk-OWFQSXVD.mjs";
|
|
15
15
|
import "../../chunk-6QAFGZC2.mjs";
|
|
16
16
|
import "../../chunk-FBNEIYSE.mjs";
|