@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
package/dist/index.js
CHANGED
|
@@ -388,6 +388,7 @@ __export(index_exports, {
|
|
|
388
388
|
SelectableCard: () => SelectableCard,
|
|
389
389
|
Separator: () => Separator,
|
|
390
390
|
ServiceConfigurationModal: () => ServiceConfigurationModal,
|
|
391
|
+
ShareContactDialog: () => ShareContactDialog,
|
|
391
392
|
ShareDetailsDialog: () => ShareDetailsDialog,
|
|
392
393
|
Sheet: () => Sheet,
|
|
393
394
|
SheetClose: () => SheetClose,
|
|
@@ -845,7 +846,7 @@ Slot.displayName = "Slot";
|
|
|
845
846
|
// src/components/ui/badge.tsx
|
|
846
847
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
847
848
|
var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
848
|
-
"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-
|
|
849
|
+
"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",
|
|
849
850
|
{
|
|
850
851
|
variants: {
|
|
851
852
|
variant: {
|
|
@@ -2614,15 +2615,19 @@ function ChatComposer({
|
|
|
2614
2615
|
mode,
|
|
2615
2616
|
channel: channelProp = "chat",
|
|
2616
2617
|
onChannelChange,
|
|
2618
|
+
isEmailIntegrated = false,
|
|
2617
2619
|
contactEmail = "",
|
|
2618
2620
|
inputValue = "",
|
|
2619
2621
|
onInputChange,
|
|
2620
2622
|
onSend,
|
|
2623
|
+
onSendEmail,
|
|
2621
2624
|
onTakeOver,
|
|
2622
2625
|
onLetAiHandle,
|
|
2623
2626
|
className
|
|
2624
2627
|
}) {
|
|
2625
|
-
const [channel, setChannel] = import_react5.default.useState(
|
|
2628
|
+
const [channel, setChannel] = import_react5.default.useState(
|
|
2629
|
+
isEmailIntegrated ? channelProp : "chat"
|
|
2630
|
+
);
|
|
2626
2631
|
const [emailTo, setEmailTo] = import_react5.default.useState(contactEmail);
|
|
2627
2632
|
const [emailCc, setEmailCc] = import_react5.default.useState("");
|
|
2628
2633
|
const [showCc, setShowCc] = import_react5.default.useState(false);
|
|
@@ -2672,7 +2677,7 @@ function ChatComposer({
|
|
|
2672
2677
|
className
|
|
2673
2678
|
),
|
|
2674
2679
|
children: [
|
|
2675
|
-
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "border-b border-border px-3 py-2", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2680
|
+
isEmailIntegrated && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "border-b border-border px-3 py-2", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2676
2681
|
Tabs,
|
|
2677
2682
|
{
|
|
2678
2683
|
value: channel,
|
|
@@ -2807,7 +2812,12 @@ function ChatComposer({
|
|
|
2807
2812
|
Button,
|
|
2808
2813
|
{
|
|
2809
2814
|
size: "sm",
|
|
2810
|
-
onClick: () =>
|
|
2815
|
+
onClick: () => onSendEmail == null ? void 0 : onSendEmail({
|
|
2816
|
+
content: inputValue,
|
|
2817
|
+
to: emailTo,
|
|
2818
|
+
cc: emailCc,
|
|
2819
|
+
subject: emailSubject
|
|
2820
|
+
}),
|
|
2811
2821
|
disabled: !inputValue.trim() || !emailTo.trim(),
|
|
2812
2822
|
children: [
|
|
2813
2823
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react6.Send, { className: "mr-1.5 size-3.5" }),
|
|
@@ -2862,9 +2872,11 @@ function ChatThread({
|
|
|
2862
2872
|
isAiTyping = false,
|
|
2863
2873
|
channel,
|
|
2864
2874
|
onChannelChange,
|
|
2875
|
+
isEmailIntegrated,
|
|
2865
2876
|
inputValue,
|
|
2866
2877
|
onInputChange,
|
|
2867
2878
|
onSend,
|
|
2879
|
+
onSendEmail,
|
|
2868
2880
|
onTakeOver,
|
|
2869
2881
|
onLetAiHandle,
|
|
2870
2882
|
onReopen,
|
|
@@ -2872,12 +2884,53 @@ function ChatThread({
|
|
|
2872
2884
|
onUnmarkUrgent,
|
|
2873
2885
|
onArchive,
|
|
2874
2886
|
onAssignToAdvisor,
|
|
2887
|
+
hasMoreMessages,
|
|
2888
|
+
isLoadingMoreMessages,
|
|
2889
|
+
onLoadMoreMessages,
|
|
2875
2890
|
onBack,
|
|
2876
2891
|
onShowLeadInfo,
|
|
2877
2892
|
className
|
|
2878
2893
|
}) {
|
|
2879
2894
|
const aiIsHandling = mode === "ai";
|
|
2880
2895
|
const isClosed = status === "closed";
|
|
2896
|
+
const scrollRef = import_react5.default.useRef(null);
|
|
2897
|
+
const preLoadScrollHeightRef = import_react5.default.useRef(null);
|
|
2898
|
+
const handleScroll = (e) => {
|
|
2899
|
+
if (!hasMoreMessages || isLoadingMoreMessages || !onLoadMoreMessages) {
|
|
2900
|
+
return;
|
|
2901
|
+
}
|
|
2902
|
+
if (e.currentTarget.scrollTop <= 80) {
|
|
2903
|
+
preLoadScrollHeightRef.current = e.currentTarget.scrollHeight;
|
|
2904
|
+
onLoadMoreMessages();
|
|
2905
|
+
}
|
|
2906
|
+
};
|
|
2907
|
+
const prevLastMessageIdRef = import_react5.default.useRef(void 0);
|
|
2908
|
+
const prevContactIdRef = import_react5.default.useRef(contact.id);
|
|
2909
|
+
import_react5.default.useLayoutEffect(() => {
|
|
2910
|
+
var _a, _b;
|
|
2911
|
+
const el = scrollRef.current;
|
|
2912
|
+
if (!el) return;
|
|
2913
|
+
if (preLoadScrollHeightRef.current !== null) {
|
|
2914
|
+
el.scrollTop = el.scrollHeight - preLoadScrollHeightRef.current;
|
|
2915
|
+
preLoadScrollHeightRef.current = null;
|
|
2916
|
+
prevLastMessageIdRef.current = (_a = messages[messages.length - 1]) == null ? void 0 : _a.id;
|
|
2917
|
+
prevContactIdRef.current = contact.id;
|
|
2918
|
+
return;
|
|
2919
|
+
}
|
|
2920
|
+
const currentLastId = (_b = messages[messages.length - 1]) == null ? void 0 : _b.id;
|
|
2921
|
+
const contactChanged = prevContactIdRef.current !== contact.id;
|
|
2922
|
+
const tailChanged = prevLastMessageIdRef.current !== currentLastId;
|
|
2923
|
+
if (contactChanged || tailChanged) {
|
|
2924
|
+
el.scrollTop = el.scrollHeight;
|
|
2925
|
+
}
|
|
2926
|
+
prevLastMessageIdRef.current = currentLastId;
|
|
2927
|
+
prevContactIdRef.current = contact.id;
|
|
2928
|
+
}, [contact.id, messages]);
|
|
2929
|
+
import_react5.default.useLayoutEffect(() => {
|
|
2930
|
+
if (!isAiTyping) return;
|
|
2931
|
+
const el = scrollRef.current;
|
|
2932
|
+
if (el) el.scrollTop = el.scrollHeight;
|
|
2933
|
+
}, [isAiTyping]);
|
|
2881
2934
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: cn("flex flex-col bg-background", className), children: [
|
|
2882
2935
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
2883
2936
|
"div",
|
|
@@ -2967,9 +3020,12 @@ function ChatThread({
|
|
|
2967
3020
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
2968
3021
|
"div",
|
|
2969
3022
|
{
|
|
3023
|
+
ref: scrollRef,
|
|
3024
|
+
onScroll: handleScroll,
|
|
2970
3025
|
className: "flex flex-1 flex-col gap-4 overflow-y-auto p-4",
|
|
2971
3026
|
tabIndex: 0,
|
|
2972
3027
|
children: [
|
|
3028
|
+
isLoadingMoreMessages && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "flex justify-center py-1 text-caption text-muted-foreground", children: "Loading older messages..." }),
|
|
2973
3029
|
messages.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-1 flex-col items-center justify-center gap-2 text-muted-foreground", children: [
|
|
2974
3030
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react6.MessageSquare, { className: "size-8 opacity-30" }),
|
|
2975
3031
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "text-sm", children: "No messages yet" })
|
|
@@ -3007,10 +3063,12 @@ function ChatThread({
|
|
|
3007
3063
|
mode,
|
|
3008
3064
|
channel,
|
|
3009
3065
|
onChannelChange,
|
|
3066
|
+
isEmailIntegrated,
|
|
3010
3067
|
contactEmail: contact.email,
|
|
3011
3068
|
inputValue,
|
|
3012
3069
|
onInputChange,
|
|
3013
3070
|
onSend,
|
|
3071
|
+
onSendEmail,
|
|
3014
3072
|
onTakeOver,
|
|
3015
3073
|
onLetAiHandle
|
|
3016
3074
|
}
|
|
@@ -3361,11 +3419,15 @@ function ConversationsPage({
|
|
|
3361
3419
|
onChannelFilterChange,
|
|
3362
3420
|
channel,
|
|
3363
3421
|
onChannelChange,
|
|
3422
|
+
isEmailIntegrated,
|
|
3364
3423
|
inputValue,
|
|
3365
3424
|
internalNotes,
|
|
3366
3425
|
showLeadPanel = true,
|
|
3367
3426
|
hasMore,
|
|
3368
3427
|
isLoadingMore,
|
|
3428
|
+
hasMoreMessages,
|
|
3429
|
+
isLoadingMoreMessages,
|
|
3430
|
+
onLoadMoreMessages,
|
|
3369
3431
|
isAiTyping,
|
|
3370
3432
|
notesSaveStatus,
|
|
3371
3433
|
onSelectConversation,
|
|
@@ -3374,6 +3436,7 @@ function ConversationsPage({
|
|
|
3374
3436
|
onFilterChange,
|
|
3375
3437
|
onInputChange,
|
|
3376
3438
|
onSend,
|
|
3439
|
+
onSendEmail,
|
|
3377
3440
|
onTakeOver,
|
|
3378
3441
|
onLetAiHandle,
|
|
3379
3442
|
onReopen,
|
|
@@ -3442,9 +3505,11 @@ function ConversationsPage({
|
|
|
3442
3505
|
isAiTyping,
|
|
3443
3506
|
channel,
|
|
3444
3507
|
onChannelChange,
|
|
3508
|
+
isEmailIntegrated,
|
|
3445
3509
|
inputValue,
|
|
3446
3510
|
onInputChange,
|
|
3447
3511
|
onSend,
|
|
3512
|
+
onSendEmail,
|
|
3448
3513
|
onTakeOver,
|
|
3449
3514
|
onLetAiHandle,
|
|
3450
3515
|
onReopen,
|
|
@@ -3452,6 +3517,9 @@ function ConversationsPage({
|
|
|
3452
3517
|
onUnmarkUrgent,
|
|
3453
3518
|
onArchive,
|
|
3454
3519
|
onAssignToAdvisor,
|
|
3520
|
+
hasMoreMessages,
|
|
3521
|
+
isLoadingMoreMessages,
|
|
3522
|
+
onLoadMoreMessages,
|
|
3455
3523
|
onBack: () => setMobilePanel("list"),
|
|
3456
3524
|
onShowLeadInfo: () => setMobilePanel("lead"),
|
|
3457
3525
|
className: cn(
|
|
@@ -3654,6 +3722,7 @@ function AdvisorCard({
|
|
|
3654
3722
|
isPrimary = false,
|
|
3655
3723
|
appointments,
|
|
3656
3724
|
onRefer,
|
|
3725
|
+
menuItems,
|
|
3657
3726
|
onMoreOptions,
|
|
3658
3727
|
onBookAppointment,
|
|
3659
3728
|
onViewAppointment
|
|
@@ -3664,17 +3733,17 @@ function AdvisorCard({
|
|
|
3664
3733
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-start gap-4 p-4", children: [
|
|
3665
3734
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Avatar, { className: "h-10 w-10 shrink-0", children: [
|
|
3666
3735
|
companyLogoUrl && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AvatarImage, { src: companyLogoUrl, alt: `${name} company logo` }),
|
|
3667
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AvatarFallback, { className: "text-
|
|
3736
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AvatarFallback, { className: "text-caption", children: avatarInitials != null ? avatarInitials : companyName ? companyName.split(" ").map((w) => w[0]).join("").slice(0, 2).toUpperCase() : name.slice(0, 2).toUpperCase() })
|
|
3668
3737
|
] }),
|
|
3669
3738
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
|
|
3670
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-
|
|
3671
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-
|
|
3739
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-label-large leading-tight", children: name }),
|
|
3740
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-body-small text-muted-foreground", children: role }),
|
|
3672
3741
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "mt-2 flex flex-col gap-1", children: [
|
|
3673
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-1.5 text-
|
|
3742
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-1.5 text-body-small text-muted-foreground", children: [
|
|
3674
3743
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react7.Phone, { className: "h-4 w-4 shrink-0" }),
|
|
3675
3744
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: phone })
|
|
3676
3745
|
] }),
|
|
3677
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-1.5 text-
|
|
3746
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-1.5 text-body-small text-muted-foreground", children: [
|
|
3678
3747
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react7.Mail, { className: "h-4 w-4 shrink-0" }),
|
|
3679
3748
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: email })
|
|
3680
3749
|
] })
|
|
@@ -3682,7 +3751,33 @@ function AdvisorCard({
|
|
|
3682
3751
|
] }),
|
|
3683
3752
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex shrink-0 items-center gap-1.5", children: [
|
|
3684
3753
|
isPrimary && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Badge, { variant: "success", children: "Primary" }),
|
|
3685
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.
|
|
3754
|
+
menuItems && menuItems.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(DropdownMenu, { children: [
|
|
3755
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3756
|
+
DropdownMenuTrigger,
|
|
3757
|
+
{
|
|
3758
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3759
|
+
Button,
|
|
3760
|
+
{
|
|
3761
|
+
variant: "ghost",
|
|
3762
|
+
size: "icon",
|
|
3763
|
+
className: "h-7 w-7",
|
|
3764
|
+
"aria-label": "More options"
|
|
3765
|
+
}
|
|
3766
|
+
),
|
|
3767
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react7.MoreVertical, { className: "h-4 w-4" })
|
|
3768
|
+
}
|
|
3769
|
+
),
|
|
3770
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DropdownMenuContent, { align: "end", children: menuItems.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3771
|
+
DropdownMenuItem,
|
|
3772
|
+
{
|
|
3773
|
+
variant: item.variant,
|
|
3774
|
+
disabled: item.disabled,
|
|
3775
|
+
onClick: item.onClick,
|
|
3776
|
+
children: item.label
|
|
3777
|
+
},
|
|
3778
|
+
i
|
|
3779
|
+
)) })
|
|
3780
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3686
3781
|
Button,
|
|
3687
3782
|
{
|
|
3688
3783
|
variant: "ghost",
|
|
@@ -3707,17 +3802,10 @@ function AdvisorCard({
|
|
|
3707
3802
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react7.CalendarCheck, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
|
|
3708
3803
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
|
|
3709
3804
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3710
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3711
|
-
|
|
3712
|
-
{
|
|
3713
|
-
variant: STATUS_VARIANT[appt.status],
|
|
3714
|
-
className: "text-[10px]",
|
|
3715
|
-
children: STATUS_LABEL[appt.status]
|
|
3716
|
-
}
|
|
3717
|
-
),
|
|
3718
|
-
appt.appointmentType && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "truncate text-sm font-semibold", children: appt.appointmentType })
|
|
3805
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Badge, { variant: STATUS_VARIANT[appt.status], children: STATUS_LABEL[appt.status] }),
|
|
3806
|
+
appt.appointmentType && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "truncate text-h6", children: appt.appointmentType })
|
|
3719
3807
|
] }),
|
|
3720
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("p", { className: "whitespace-nowrap text-
|
|
3808
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("p", { className: "whitespace-nowrap text-body-small text-muted-foreground", children: [
|
|
3721
3809
|
appt.date,
|
|
3722
3810
|
" \xB7 ",
|
|
3723
3811
|
appt.timeStart,
|
|
@@ -3745,7 +3833,7 @@ function AdvisorCard({
|
|
|
3745
3833
|
/* Empty state */
|
|
3746
3834
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-3 px-4 py-3", children: [
|
|
3747
3835
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react7.Calendar, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
|
|
3748
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "flex-1 text-
|
|
3836
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "flex-1 text-caption text-muted-foreground", children: "No upcoming appointments" })
|
|
3749
3837
|
] })
|
|
3750
3838
|
)
|
|
3751
3839
|
] }),
|
|
@@ -3764,7 +3852,7 @@ function AdvisorCard({
|
|
|
3764
3852
|
onRefer && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
3765
3853
|
Button,
|
|
3766
3854
|
{
|
|
3767
|
-
variant: "
|
|
3855
|
+
variant: "default",
|
|
3768
3856
|
size: "sm",
|
|
3769
3857
|
className: "w-full",
|
|
3770
3858
|
onClick: onRefer,
|
|
@@ -3788,8 +3876,8 @@ function AdvisorInviteCard({ onInvite }) {
|
|
|
3788
3876
|
children: [
|
|
3789
3877
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex h-10 w-10 items-center justify-center border border-dashed border-muted-foreground/40", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react7.Plus, { className: "h-5 w-5 text-muted-foreground" }) }),
|
|
3790
3878
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
3791
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-
|
|
3792
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-
|
|
3879
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-label-large", children: "Add Another Advisor" }),
|
|
3880
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-caption text-muted-foreground", children: "Connect more advisors to your account" })
|
|
3793
3881
|
] })
|
|
3794
3882
|
]
|
|
3795
3883
|
}
|
|
@@ -8904,6 +8992,19 @@ var FORMAT_OPTIONS = [
|
|
|
8904
8992
|
icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.MapPin, { className: "h-4 w-4" })
|
|
8905
8993
|
}
|
|
8906
8994
|
];
|
|
8995
|
+
var CLIENT_FORMAT_OPTIONS = [
|
|
8996
|
+
{ value: "call", label: "Call", icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.Phone, { className: "h-4 w-4" }) },
|
|
8997
|
+
{
|
|
8998
|
+
value: "online",
|
|
8999
|
+
label: "Online Meeting",
|
|
9000
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.Video, { className: "h-4 w-4" })
|
|
9001
|
+
},
|
|
9002
|
+
{
|
|
9003
|
+
value: "offline",
|
|
9004
|
+
label: "Offline Meeting",
|
|
9005
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.MapPin, { className: "h-4 w-4" })
|
|
9006
|
+
}
|
|
9007
|
+
];
|
|
8907
9008
|
function MeetingFormatSection({
|
|
8908
9009
|
format: format5,
|
|
8909
9010
|
onFormatChange,
|
|
@@ -8913,10 +9014,11 @@ function MeetingFormatSection({
|
|
|
8913
9014
|
onCustomAddressChange,
|
|
8914
9015
|
advisorOfficeAddress,
|
|
8915
9016
|
clientHomeAddress,
|
|
8916
|
-
isClientMode
|
|
9017
|
+
isClientMode,
|
|
9018
|
+
formatOptions
|
|
8917
9019
|
}) {
|
|
8918
9020
|
return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
8919
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "flex gap-2", children:
|
|
9021
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "flex gap-2", children: formatOptions.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
8920
9022
|
Toggle,
|
|
8921
9023
|
{
|
|
8922
9024
|
variant: "outline",
|
|
@@ -9209,7 +9311,8 @@ function AppointmentBookDialog({
|
|
|
9209
9311
|
onCustomAddressChange: setCustomAddress,
|
|
9210
9312
|
advisorOfficeAddress,
|
|
9211
9313
|
clientHomeAddress,
|
|
9212
|
-
isClientMode
|
|
9314
|
+
isClientMode,
|
|
9315
|
+
formatOptions: isClientMode ? CLIENT_FORMAT_OPTIONS : FORMAT_OPTIONS
|
|
9213
9316
|
}
|
|
9214
9317
|
)
|
|
9215
9318
|
] }),
|
|
@@ -11955,6 +12058,10 @@ function BankStatementDocumentTable({
|
|
|
11955
12058
|
var import_react21 = require("react");
|
|
11956
12059
|
var import_date_fns3 = require("date-fns");
|
|
11957
12060
|
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
12061
|
+
var APPLICANT_TYPE_LABELS = {
|
|
12062
|
+
primary: "Main applicant",
|
|
12063
|
+
secondary: "Co-applicant"
|
|
12064
|
+
};
|
|
11958
12065
|
function toIsoDate(date) {
|
|
11959
12066
|
return date.toISOString().slice(0, 10);
|
|
11960
12067
|
}
|
|
@@ -11978,8 +12085,10 @@ function BankStatementGenerateDialog({
|
|
|
11978
12085
|
}) {
|
|
11979
12086
|
const [statementName, setStatementName] = (0, import_react21.useState)("Bank Statement 1");
|
|
11980
12087
|
const [rangePreset, setRangePreset] = (0, import_react21.useState)(90);
|
|
11981
|
-
const [fromDate, setFromDate] = (0, import_react21.useState)(
|
|
11982
|
-
|
|
12088
|
+
const [fromDate, setFromDate] = (0, import_react21.useState)(
|
|
12089
|
+
() => presetToDateRange(90).from
|
|
12090
|
+
);
|
|
12091
|
+
const [toDate, setToDate] = (0, import_react21.useState)(() => presetToDateRange(90).to);
|
|
11983
12092
|
const [applicantType, setApplicantType] = (0, import_react21.useState)("");
|
|
11984
12093
|
const [selectedAccountIds, setSelectedAccountIds] = (0, import_react21.useState)([]);
|
|
11985
12094
|
(0, import_react21.useEffect)(() => {
|
|
@@ -12008,6 +12117,11 @@ function BankStatementGenerateDialog({
|
|
|
12008
12117
|
setToDate(to);
|
|
12009
12118
|
}
|
|
12010
12119
|
};
|
|
12120
|
+
const handlePresetChange = (val) => {
|
|
12121
|
+
if (val.length === 0) return;
|
|
12122
|
+
const raw = val[0];
|
|
12123
|
+
applyPreset(raw === "custom" ? "custom" : Number(raw));
|
|
12124
|
+
};
|
|
12011
12125
|
const areAllSelected = bankAccounts.length > 0 && selectedAccountIds.length === bankAccounts.length;
|
|
12012
12126
|
const isSomeSelected = selectedAccountIds.length > 0 && !areAllSelected;
|
|
12013
12127
|
const handleToggleAccount = (id) => {
|
|
@@ -12043,7 +12157,8 @@ function BankStatementGenerateDialog({
|
|
|
12043
12157
|
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Dialog, { open, onOpenChange: (o) => !o && onClose(), children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
12044
12158
|
DialogContent,
|
|
12045
12159
|
{
|
|
12046
|
-
|
|
12160
|
+
size: "3xl",
|
|
12161
|
+
className,
|
|
12047
12162
|
"data-slot": "bank-statement-generate-dialog",
|
|
12048
12163
|
children: [
|
|
12049
12164
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(DialogHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(DialogTitle, { children: "Generate Bank Statement" }) }),
|
|
@@ -12067,15 +12182,7 @@ function BankStatementGenerateDialog({
|
|
|
12067
12182
|
type: "single",
|
|
12068
12183
|
variant: "outline",
|
|
12069
12184
|
value: [String(rangePreset)],
|
|
12070
|
-
onValueChange:
|
|
12071
|
-
if (val.length === 0) return;
|
|
12072
|
-
const raw = val[0];
|
|
12073
|
-
if (raw === "custom") {
|
|
12074
|
-
applyPreset("custom");
|
|
12075
|
-
} else {
|
|
12076
|
-
applyPreset(Number(raw));
|
|
12077
|
-
}
|
|
12078
|
-
},
|
|
12185
|
+
onValueChange: handlePresetChange,
|
|
12079
12186
|
className: "w-full",
|
|
12080
12187
|
children: [
|
|
12081
12188
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ToggleGroupItem, { value: "90", className: "flex-1", children: "3 Months" }),
|
|
@@ -12111,11 +12218,12 @@ function BankStatementGenerateDialog({
|
|
|
12111
12218
|
{
|
|
12112
12219
|
value: applicantType,
|
|
12113
12220
|
onValueChange: (v) => handleApplicantTypeChange(v),
|
|
12221
|
+
items: APPLICANT_TYPE_LABELS,
|
|
12114
12222
|
children: [
|
|
12115
12223
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(SelectValue, { placeholder: "Applicant Type" }) }),
|
|
12116
12224
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(SelectContent, { children: [
|
|
12117
|
-
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(SelectItem, { value: "primary", children:
|
|
12118
|
-
hasCoApplicant && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(SelectItem, { value: "secondary", children:
|
|
12225
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(SelectItem, { value: "primary", children: APPLICANT_TYPE_LABELS.primary }),
|
|
12226
|
+
hasCoApplicant && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(SelectItem, { value: "secondary", children: APPLICANT_TYPE_LABELS.secondary })
|
|
12119
12227
|
] })
|
|
12120
12228
|
]
|
|
12121
12229
|
}
|
|
@@ -12141,33 +12249,43 @@ function BankStatementGenerateDialog({
|
|
|
12141
12249
|
] }) }),
|
|
12142
12250
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TableBody, { children: bankAccounts.map((account) => {
|
|
12143
12251
|
var _a, _b;
|
|
12144
|
-
|
|
12145
|
-
|
|
12146
|
-
|
|
12147
|
-
|
|
12148
|
-
|
|
12149
|
-
|
|
12150
|
-
|
|
12151
|
-
|
|
12152
|
-
|
|
12153
|
-
|
|
12154
|
-
|
|
12155
|
-
|
|
12156
|
-
|
|
12157
|
-
|
|
12158
|
-
|
|
12159
|
-
|
|
12160
|
-
|
|
12161
|
-
|
|
12162
|
-
|
|
12163
|
-
|
|
12164
|
-
|
|
12165
|
-
|
|
12166
|
-
|
|
12167
|
-
|
|
12168
|
-
|
|
12169
|
-
|
|
12170
|
-
|
|
12252
|
+
const isSelected = selectedAccountIds.includes(
|
|
12253
|
+
account.id
|
|
12254
|
+
);
|
|
12255
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
12256
|
+
TableRow,
|
|
12257
|
+
{
|
|
12258
|
+
"data-state": isSelected ? "selected" : void 0,
|
|
12259
|
+
children: [
|
|
12260
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
12261
|
+
Checkbox,
|
|
12262
|
+
{
|
|
12263
|
+
checked: isSelected,
|
|
12264
|
+
onCheckedChange: () => handleToggleAccount(account.id),
|
|
12265
|
+
"aria-label": `Select ${account.name}`
|
|
12266
|
+
}
|
|
12267
|
+
) }),
|
|
12268
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12269
|
+
account.institutionLogo && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
12270
|
+
"img",
|
|
12271
|
+
{
|
|
12272
|
+
src: account.institutionLogo,
|
|
12273
|
+
alt: (_a = account.institutionName) != null ? _a : "",
|
|
12274
|
+
className: "size-8 object-cover"
|
|
12275
|
+
}
|
|
12276
|
+
),
|
|
12277
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-body-medium font-semibold", children: account.name || account.institutionName || "\u2014" })
|
|
12278
|
+
] }) }),
|
|
12279
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-body-medium", children: (_b = account.accountNo) != null ? _b : "\u2014" }) }),
|
|
12280
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-body-medium", children: periodLabel }) }),
|
|
12281
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-body-medium", children: account.lastUpdated ? (0, import_date_fns3.format)(
|
|
12282
|
+
(0, import_date_fns3.parseISO)(account.lastUpdated),
|
|
12283
|
+
"dd MMM yyyy"
|
|
12284
|
+
) : "\u2014" }) })
|
|
12285
|
+
]
|
|
12286
|
+
},
|
|
12287
|
+
account.id
|
|
12288
|
+
);
|
|
12171
12289
|
}) })
|
|
12172
12290
|
] })
|
|
12173
12291
|
] })
|
|
@@ -14117,6 +14235,7 @@ function ReviewAlertsDialog({
|
|
|
14117
14235
|
|
|
14118
14236
|
// src/components/ui/contact-alert-dialog/contact-alert-dialog.tsx
|
|
14119
14237
|
var React33 = __toESM(require("react"));
|
|
14238
|
+
var import_lucide_react42 = require("lucide-react");
|
|
14120
14239
|
var import_ui4 = require("@react-awesome-query-builder/ui");
|
|
14121
14240
|
|
|
14122
14241
|
// src/components/ui/contact-alert-dialog/types.ts
|
|
@@ -15064,7 +15183,24 @@ function ContactAlertDialog({
|
|
|
15064
15183
|
size: "sm",
|
|
15065
15184
|
value: severity,
|
|
15066
15185
|
onValueChange: (v) => v && setSeverity(v),
|
|
15067
|
-
children: ["NEED_ACTION", "WATCH", "HEALTHY"].map((s) => /* @__PURE__ */ (0, import_jsx_runtime77.
|
|
15186
|
+
children: ["NEED_ACTION", "WATCH", "HEALTHY"].map((s) => /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
|
|
15187
|
+
ToggleGroupItem,
|
|
15188
|
+
{
|
|
15189
|
+
value: s,
|
|
15190
|
+
className: cn(
|
|
15191
|
+
s === "NEED_ACTION" && "data-pressed:bg-destructive/10 data-pressed:inset-ring-destructive data-pressed:text-destructive-text data-pressed:hover:bg-destructive/10",
|
|
15192
|
+
s === "WATCH" && "data-pressed:bg-warning/10 data-pressed:inset-ring-warning data-pressed:text-warning-text data-pressed:hover:bg-warning/10",
|
|
15193
|
+
s === "HEALTHY" && "data-pressed:bg-info/10 data-pressed:inset-ring-info data-pressed:text-info-text data-pressed:hover:bg-info/10"
|
|
15194
|
+
),
|
|
15195
|
+
children: [
|
|
15196
|
+
s === "NEED_ACTION" && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react42.AlertCircleIcon, { className: "size-3.5" }),
|
|
15197
|
+
s === "WATCH" && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react42.EyeIcon, { className: "size-3.5" }),
|
|
15198
|
+
s === "HEALTHY" && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react42.InfoIcon, { className: "size-3.5" }),
|
|
15199
|
+
SEVERITY_LABELS[s]
|
|
15200
|
+
]
|
|
15201
|
+
},
|
|
15202
|
+
s
|
|
15203
|
+
))
|
|
15068
15204
|
}
|
|
15069
15205
|
)
|
|
15070
15206
|
] }),
|
|
@@ -15118,7 +15254,7 @@ function ContactAlertDialog({
|
|
|
15118
15254
|
|
|
15119
15255
|
// src/components/ui/share-details-dialog.tsx
|
|
15120
15256
|
var React34 = __toESM(require("react"));
|
|
15121
|
-
var
|
|
15257
|
+
var import_lucide_react43 = require("lucide-react");
|
|
15122
15258
|
var import_jsx_runtime78 = require("react/jsx-runtime");
|
|
15123
15259
|
function Field3({
|
|
15124
15260
|
id,
|
|
@@ -15177,7 +15313,7 @@ function ShareDetailsDialog({
|
|
|
15177
15313
|
onClick: handleCopy,
|
|
15178
15314
|
"aria-label": copied ? "Copied" : "Copy link",
|
|
15179
15315
|
className: "shrink-0",
|
|
15180
|
-
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15316
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_lucide_react43.CheckIcon, { className: "size-4 text-success" }) : /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_lucide_react43.CopyIcon, { className: "size-4" })
|
|
15181
15317
|
}
|
|
15182
15318
|
)
|
|
15183
15319
|
] }),
|
|
@@ -15262,10 +15398,201 @@ function EmailTemplateDialog({
|
|
|
15262
15398
|
] })
|
|
15263
15399
|
] }) });
|
|
15264
15400
|
}
|
|
15401
|
+
function ShareContactDialog({
|
|
15402
|
+
open,
|
|
15403
|
+
onOpenChange,
|
|
15404
|
+
contactName,
|
|
15405
|
+
internalAdvisors,
|
|
15406
|
+
onShareInternal,
|
|
15407
|
+
onShareExternal,
|
|
15408
|
+
isSending = false,
|
|
15409
|
+
className
|
|
15410
|
+
}) {
|
|
15411
|
+
const [tab, setTab] = React34.useState("internal");
|
|
15412
|
+
const [search, setSearch] = React34.useState("");
|
|
15413
|
+
const [selectedId, setSelectedId] = React34.useState(null);
|
|
15414
|
+
const [internalNotes, setInternalNotes] = React34.useState("");
|
|
15415
|
+
const [firstName, setFirstName] = React34.useState("");
|
|
15416
|
+
const [lastName, setLastName] = React34.useState("");
|
|
15417
|
+
const [email, setEmail] = React34.useState("");
|
|
15418
|
+
const [externalNotes, setExternalNotes] = React34.useState("");
|
|
15419
|
+
function reset() {
|
|
15420
|
+
setTab("internal");
|
|
15421
|
+
setSearch("");
|
|
15422
|
+
setSelectedId(null);
|
|
15423
|
+
setInternalNotes("");
|
|
15424
|
+
setFirstName("");
|
|
15425
|
+
setLastName("");
|
|
15426
|
+
setEmail("");
|
|
15427
|
+
setExternalNotes("");
|
|
15428
|
+
}
|
|
15429
|
+
function handleOpenChange(v) {
|
|
15430
|
+
if (!v) reset();
|
|
15431
|
+
onOpenChange(v);
|
|
15432
|
+
}
|
|
15433
|
+
const filtered = internalAdvisors.filter((a) => {
|
|
15434
|
+
const q = search.toLowerCase();
|
|
15435
|
+
return a.name.toLowerCase().includes(q) || a.role.toLowerCase().includes(q);
|
|
15436
|
+
});
|
|
15437
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Dialog, { open, onOpenChange: isSending ? void 0 : handleOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(DialogContent, { size: "md", className, children: [
|
|
15438
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(DialogHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(DialogTitle, { children: "Share Contact's Information" }) }),
|
|
15439
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("p", { className: "text-sm text-muted-foreground", children: [
|
|
15440
|
+
"Share",
|
|
15441
|
+
" ",
|
|
15442
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "font-medium text-foreground", children: contactName }),
|
|
15443
|
+
"'s information with an advisor."
|
|
15444
|
+
] }),
|
|
15445
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(Tabs, { value: tab, onValueChange: setTab, children: [
|
|
15446
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(TabsList, { className: "w-full", children: [
|
|
15447
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(TabsTrigger, { value: "internal", className: "flex-1", children: "Internal Advisor" }),
|
|
15448
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(TabsTrigger, { value: "external", className: "flex-1", children: "External / Referral" })
|
|
15449
|
+
] }),
|
|
15450
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(TabsContent, { value: "internal", className: "mt-4 flex flex-col gap-4", children: [
|
|
15451
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Field3, { label: "Search Advisor", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15452
|
+
Input,
|
|
15453
|
+
{
|
|
15454
|
+
placeholder: "Search by name or role\u2026",
|
|
15455
|
+
value: search,
|
|
15456
|
+
onChange: (e) => setSearch(e.target.value)
|
|
15457
|
+
}
|
|
15458
|
+
) }),
|
|
15459
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "max-h-[200px] overflow-y-auto border border-border divide-y divide-border", children: filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("p", { className: "px-3 py-4 text-center text-sm text-muted-foreground", children: "No advisors found." }) : filtered.map((a) => {
|
|
15460
|
+
const isSelected = selectedId === a.id;
|
|
15461
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
|
|
15462
|
+
"button",
|
|
15463
|
+
{
|
|
15464
|
+
type: "button",
|
|
15465
|
+
onClick: () => setSelectedId(a.id),
|
|
15466
|
+
className: cn(
|
|
15467
|
+
"flex w-full items-center gap-3 px-3 py-2.5 text-left transition-colors hover:bg-muted/40",
|
|
15468
|
+
isSelected && "bg-primary/5"
|
|
15469
|
+
),
|
|
15470
|
+
children: [
|
|
15471
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15472
|
+
"div",
|
|
15473
|
+
{
|
|
15474
|
+
className: cn(
|
|
15475
|
+
"flex size-4 shrink-0 items-center justify-center rounded-full border-2",
|
|
15476
|
+
isSelected ? "border-primary" : "border-border bg-background"
|
|
15477
|
+
),
|
|
15478
|
+
children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "size-2 rounded-full bg-primary" })
|
|
15479
|
+
}
|
|
15480
|
+
),
|
|
15481
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { children: [
|
|
15482
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("p", { className: "text-sm font-medium", children: a.name }),
|
|
15483
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
|
|
15484
|
+
a.role,
|
|
15485
|
+
" \xB7 ",
|
|
15486
|
+
a.practice
|
|
15487
|
+
] })
|
|
15488
|
+
] })
|
|
15489
|
+
]
|
|
15490
|
+
},
|
|
15491
|
+
a.id
|
|
15492
|
+
);
|
|
15493
|
+
}) }),
|
|
15494
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Field3, { id: "sc-int-notes", label: "Notes", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15495
|
+
Textarea,
|
|
15496
|
+
{
|
|
15497
|
+
id: "sc-int-notes",
|
|
15498
|
+
placeholder: "Optional message for the advisor\u2026",
|
|
15499
|
+
rows: 3,
|
|
15500
|
+
value: internalNotes,
|
|
15501
|
+
onChange: (e) => setInternalNotes(e.target.value),
|
|
15502
|
+
disabled: isSending
|
|
15503
|
+
}
|
|
15504
|
+
) })
|
|
15505
|
+
] }),
|
|
15506
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(TabsContent, { value: "external", className: "mt-4 flex flex-col gap-4", children: [
|
|
15507
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
15508
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Field3, { id: "sc-first", label: "First Name", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15509
|
+
Input,
|
|
15510
|
+
{
|
|
15511
|
+
id: "sc-first",
|
|
15512
|
+
placeholder: "First name",
|
|
15513
|
+
value: firstName,
|
|
15514
|
+
onChange: (e) => setFirstName(e.target.value),
|
|
15515
|
+
disabled: isSending
|
|
15516
|
+
}
|
|
15517
|
+
) }),
|
|
15518
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Field3, { id: "sc-last", label: "Last Name", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15519
|
+
Input,
|
|
15520
|
+
{
|
|
15521
|
+
id: "sc-last",
|
|
15522
|
+
placeholder: "Last name",
|
|
15523
|
+
value: lastName,
|
|
15524
|
+
onChange: (e) => setLastName(e.target.value),
|
|
15525
|
+
disabled: isSending
|
|
15526
|
+
}
|
|
15527
|
+
) })
|
|
15528
|
+
] }),
|
|
15529
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Field3, { id: "sc-email", label: "Email", required: true, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15530
|
+
Input,
|
|
15531
|
+
{
|
|
15532
|
+
id: "sc-email",
|
|
15533
|
+
type: "email",
|
|
15534
|
+
placeholder: "advisor@company.com.au",
|
|
15535
|
+
value: email,
|
|
15536
|
+
onChange: (e) => setEmail(e.target.value),
|
|
15537
|
+
disabled: isSending
|
|
15538
|
+
}
|
|
15539
|
+
) }),
|
|
15540
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Field3, { id: "sc-ext-notes", label: "Notes", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15541
|
+
Textarea,
|
|
15542
|
+
{
|
|
15543
|
+
id: "sc-ext-notes",
|
|
15544
|
+
placeholder: "Optional message\u2026",
|
|
15545
|
+
rows: 3,
|
|
15546
|
+
value: externalNotes,
|
|
15547
|
+
onChange: (e) => setExternalNotes(e.target.value),
|
|
15548
|
+
disabled: isSending
|
|
15549
|
+
}
|
|
15550
|
+
) })
|
|
15551
|
+
] })
|
|
15552
|
+
] }),
|
|
15553
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(DialogFooter, { children: [
|
|
15554
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15555
|
+
Button,
|
|
15556
|
+
{
|
|
15557
|
+
variant: "outline",
|
|
15558
|
+
onClick: () => handleOpenChange(false),
|
|
15559
|
+
disabled: isSending,
|
|
15560
|
+
children: "Cancel"
|
|
15561
|
+
}
|
|
15562
|
+
),
|
|
15563
|
+
tab === "internal" ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15564
|
+
Button,
|
|
15565
|
+
{
|
|
15566
|
+
onClick: () => onShareInternal(selectedId, internalNotes),
|
|
15567
|
+
disabled: !selectedId || isSending,
|
|
15568
|
+
children: isSending ? /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(import_jsx_runtime78.Fragment, { children: [
|
|
15569
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Spinner, { className: "size-3.5" }),
|
|
15570
|
+
"Sharing\u2026"
|
|
15571
|
+
] }) : "Share Contact"
|
|
15572
|
+
}
|
|
15573
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15574
|
+
Button,
|
|
15575
|
+
{
|
|
15576
|
+
onClick: () => onShareExternal({
|
|
15577
|
+
firstName,
|
|
15578
|
+
lastName,
|
|
15579
|
+
email,
|
|
15580
|
+
notes: externalNotes
|
|
15581
|
+
}),
|
|
15582
|
+
disabled: !email || isSending,
|
|
15583
|
+
children: isSending ? /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(import_jsx_runtime78.Fragment, { children: [
|
|
15584
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Spinner, { className: "size-3.5" }),
|
|
15585
|
+
"Sending\u2026"
|
|
15586
|
+
] }) : "Send Invite"
|
|
15587
|
+
}
|
|
15588
|
+
)
|
|
15589
|
+
] })
|
|
15590
|
+
] }) });
|
|
15591
|
+
}
|
|
15265
15592
|
|
|
15266
15593
|
// src/components/ui/file-preview-dialog.tsx
|
|
15267
15594
|
var React35 = __toESM(require("react"));
|
|
15268
|
-
var
|
|
15595
|
+
var import_lucide_react44 = require("lucide-react");
|
|
15269
15596
|
|
|
15270
15597
|
// src/components/ui/progress.tsx
|
|
15271
15598
|
var import_progress = require("@base-ui/react/progress");
|
|
@@ -15310,14 +15637,14 @@ function LoadingState({ columnCount }) {
|
|
|
15310
15637
|
}
|
|
15311
15638
|
function EmptyState() {
|
|
15312
15639
|
return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: "flex flex-col items-center gap-3 py-12 text-center", children: [
|
|
15313
|
-
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
15640
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react44.FileTextIcon, { className: "size-10 text-muted-foreground/40" }),
|
|
15314
15641
|
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("p", { className: "text-sm font-medium text-foreground", children: "No data found" }),
|
|
15315
15642
|
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("p", { className: "text-xs text-muted-foreground", children: "The CSV file appears to be empty or contains only headers." })
|
|
15316
15643
|
] });
|
|
15317
15644
|
}
|
|
15318
15645
|
function ErrorState({ message }) {
|
|
15319
15646
|
return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: "flex flex-col items-center gap-3 py-12 text-center", children: [
|
|
15320
|
-
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
15647
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react44.AlertCircleIcon, { className: "size-10 text-destructive/60" }),
|
|
15321
15648
|
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("p", { className: "text-sm font-medium text-foreground", children: "Unable to parse file" }),
|
|
15322
15649
|
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("p", { className: "text-xs text-muted-foreground", children: message != null ? message : "The file could not be read. Please check the format and try again." })
|
|
15323
15650
|
] });
|
|
@@ -15350,11 +15677,11 @@ function ImportingState({
|
|
|
15350
15677
|
function RowStatusCell({ row }) {
|
|
15351
15678
|
const { _status, _statusMessage } = row;
|
|
15352
15679
|
if (_status === "success") {
|
|
15353
|
-
return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "flex items-center justify-center h-full px-2", children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
15680
|
+
return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "flex items-center justify-center h-full px-2", children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react44.CheckCircle2Icon, { className: "size-4 text-success" }) });
|
|
15354
15681
|
}
|
|
15355
15682
|
if (_status === "failed") {
|
|
15356
15683
|
return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(Tooltip, { children: [
|
|
15357
|
-
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "flex items-center justify-center h-full px-2 cursor-default", children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
15684
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "flex items-center justify-center h-full px-2 cursor-default", children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react44.CircleAlertIcon, { className: "size-4 text-destructive" }) }) }),
|
|
15358
15685
|
_statusMessage && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(TooltipContent, { side: "top", children: _statusMessage })
|
|
15359
15686
|
] }) });
|
|
15360
15687
|
}
|
|
@@ -15493,7 +15820,7 @@ function FilePreviewDialog({
|
|
|
15493
15820
|
"aria-label": `Delete row ${absoluteIdx + 1}`,
|
|
15494
15821
|
onClick: () => onRowDelete(absoluteIdx),
|
|
15495
15822
|
className: "text-muted-foreground hover:text-destructive",
|
|
15496
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
15823
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react44.Trash2Icon, { className: "size-3.5" })
|
|
15497
15824
|
}
|
|
15498
15825
|
) })
|
|
15499
15826
|
]
|
|
@@ -15550,7 +15877,7 @@ function FilePreviewDialog({
|
|
|
15550
15877
|
// src/components/ui/data-table.tsx
|
|
15551
15878
|
var React36 = __toESM(require("react"));
|
|
15552
15879
|
var import_react_table = require("@tanstack/react-table");
|
|
15553
|
-
var
|
|
15880
|
+
var import_lucide_react45 = require("lucide-react");
|
|
15554
15881
|
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
15555
15882
|
function DataTableColumnHeader({
|
|
15556
15883
|
column,
|
|
@@ -15563,11 +15890,11 @@ function DataTableColumnHeader({
|
|
|
15563
15890
|
const sorted = column.getIsSorted();
|
|
15564
15891
|
let sortIcon;
|
|
15565
15892
|
if (sorted === "asc") {
|
|
15566
|
-
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
15893
|
+
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react45.ArrowUp, { className: "ml-1 size-3.5" });
|
|
15567
15894
|
} else if (sorted === "desc") {
|
|
15568
|
-
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
15895
|
+
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react45.ArrowDown, { className: "ml-1 size-3.5" });
|
|
15569
15896
|
} else {
|
|
15570
|
-
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
15897
|
+
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react45.ArrowUpDown, { className: "ml-1 size-3.5" });
|
|
15571
15898
|
}
|
|
15572
15899
|
return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
|
|
15573
15900
|
Button,
|
|
@@ -15654,7 +15981,7 @@ function DataTableToolbar({
|
|
|
15654
15981
|
}
|
|
15655
15982
|
),
|
|
15656
15983
|
children: [
|
|
15657
|
-
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
15984
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react45.SlidersHorizontal, { className: "size-3.5" }),
|
|
15658
15985
|
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "hidden sm:inline", children: "Columns" })
|
|
15659
15986
|
]
|
|
15660
15987
|
}
|
|
@@ -15891,13 +16218,13 @@ function DataTable({
|
|
|
15891
16218
|
|
|
15892
16219
|
// src/components/ui/applicant-document-checklist.tsx
|
|
15893
16220
|
var React37 = __toESM(require("react"));
|
|
15894
|
-
var
|
|
16221
|
+
var import_lucide_react46 = require("lucide-react");
|
|
15895
16222
|
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
15896
16223
|
function StatusIcon({ status }) {
|
|
15897
16224
|
if (status === "uploaded") {
|
|
15898
|
-
return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
16225
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react46.CheckCircle2, { className: "size-5 shrink-0 text-primary" });
|
|
15899
16226
|
}
|
|
15900
|
-
return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
16227
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react46.Circle, { className: "size-5 shrink-0 text-muted-foreground" });
|
|
15901
16228
|
}
|
|
15902
16229
|
function ApplicantDocumentChecklist({
|
|
15903
16230
|
applicantName,
|
|
@@ -15979,7 +16306,7 @@ function ApplicantDocumentChecklist({
|
|
|
15979
16306
|
return (_a = inputRefs.current[item.id]) == null ? void 0 : _a.click();
|
|
15980
16307
|
},
|
|
15981
16308
|
children: [
|
|
15982
|
-
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
16309
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react46.Upload, { className: "size-3.5" }),
|
|
15983
16310
|
"Upload"
|
|
15984
16311
|
]
|
|
15985
16312
|
}
|
|
@@ -16004,7 +16331,7 @@ function ApplicantDocumentChecklist({
|
|
|
16004
16331
|
|
|
16005
16332
|
// src/components/ui/document-checklist-template.tsx
|
|
16006
16333
|
var import_react27 = require("react");
|
|
16007
|
-
var
|
|
16334
|
+
var import_lucide_react47 = require("lucide-react");
|
|
16008
16335
|
var import_jsx_runtime83 = require("react/jsx-runtime");
|
|
16009
16336
|
var DOCUMENT_TYPES = [
|
|
16010
16337
|
"Income Verification",
|
|
@@ -16103,7 +16430,7 @@ function DocumentChecklistTemplate({
|
|
|
16103
16430
|
{
|
|
16104
16431
|
className: cn("grid items-center gap-3 px-6 py-3", COLS),
|
|
16105
16432
|
children: [
|
|
16106
|
-
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16433
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_lucide_react47.GripVertical, { className: "size-4 shrink-0 text-muted-foreground/30" }),
|
|
16107
16434
|
cat.custom ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16108
16435
|
Input,
|
|
16109
16436
|
{
|
|
@@ -16150,7 +16477,7 @@ function DocumentChecklistTemplate({
|
|
|
16150
16477
|
size: "icon",
|
|
16151
16478
|
className: "size-8 text-muted-foreground hover:text-destructive",
|
|
16152
16479
|
onClick: () => handleDelete(cat.id),
|
|
16153
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16480
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_lucide_react47.Trash2, { className: "size-4" })
|
|
16154
16481
|
}
|
|
16155
16482
|
)
|
|
16156
16483
|
]
|
|
@@ -16165,7 +16492,7 @@ function DocumentChecklistTemplate({
|
|
|
16165
16492
|
className: "gap-1.5",
|
|
16166
16493
|
onClick: handleAdd,
|
|
16167
16494
|
children: [
|
|
16168
|
-
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16495
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_lucide_react47.Plus, { className: "size-4" }),
|
|
16169
16496
|
"Add Category"
|
|
16170
16497
|
]
|
|
16171
16498
|
}
|
|
@@ -16501,7 +16828,7 @@ function ExpenseBarChart({
|
|
|
16501
16828
|
|
|
16502
16829
|
// src/components/ui/financial-cards.tsx
|
|
16503
16830
|
var React39 = __toESM(require("react"));
|
|
16504
|
-
var
|
|
16831
|
+
var import_lucide_react48 = require("lucide-react");
|
|
16505
16832
|
|
|
16506
16833
|
// src/components/ui/financial-primitives.tsx
|
|
16507
16834
|
var import_jsx_runtime86 = require("react/jsx-runtime");
|
|
@@ -16684,7 +17011,7 @@ function PropertyCard({
|
|
|
16684
17011
|
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "flex-1 min-w-0 truncate text-label-medium text-foreground", children: address }),
|
|
16685
17012
|
type && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Badge, { className: "shrink-0", variant: "outline", children: type }),
|
|
16686
17013
|
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
16687
|
-
|
|
17014
|
+
import_lucide_react48.ChevronDown,
|
|
16688
17015
|
{
|
|
16689
17016
|
className: cn(
|
|
16690
17017
|
"h-5 w-5 shrink-0 text-muted-foreground transition-transform duration-200",
|
|
@@ -17326,35 +17653,35 @@ function IncomeCard({
|
|
|
17326
17653
|
);
|
|
17327
17654
|
}
|
|
17328
17655
|
var EXPENSE_ICON_MAP = {
|
|
17329
|
-
groceries:
|
|
17330
|
-
"dining out":
|
|
17331
|
-
dining:
|
|
17332
|
-
restaurants:
|
|
17333
|
-
transport:
|
|
17334
|
-
transportation:
|
|
17335
|
-
vehicle:
|
|
17336
|
-
utilities:
|
|
17337
|
-
electricity:
|
|
17338
|
-
insurance:
|
|
17339
|
-
"council rates":
|
|
17340
|
-
council:
|
|
17341
|
-
rates:
|
|
17342
|
-
medical:
|
|
17343
|
-
health:
|
|
17344
|
-
subscriptions:
|
|
17345
|
-
subscription:
|
|
17346
|
-
"credit card":
|
|
17347
|
-
education:
|
|
17348
|
-
childcare:
|
|
17349
|
-
entertainment:
|
|
17350
|
-
gym:
|
|
17351
|
-
fitness:
|
|
17352
|
-
clothing:
|
|
17353
|
-
rent:
|
|
17656
|
+
groceries: import_lucide_react48.ShoppingCart,
|
|
17657
|
+
"dining out": import_lucide_react48.UtensilsCrossed,
|
|
17658
|
+
dining: import_lucide_react48.UtensilsCrossed,
|
|
17659
|
+
restaurants: import_lucide_react48.UtensilsCrossed,
|
|
17660
|
+
transport: import_lucide_react48.Car,
|
|
17661
|
+
transportation: import_lucide_react48.Car,
|
|
17662
|
+
vehicle: import_lucide_react48.Car,
|
|
17663
|
+
utilities: import_lucide_react48.Zap,
|
|
17664
|
+
electricity: import_lucide_react48.Zap,
|
|
17665
|
+
insurance: import_lucide_react48.Shield,
|
|
17666
|
+
"council rates": import_lucide_react48.Landmark,
|
|
17667
|
+
council: import_lucide_react48.Landmark,
|
|
17668
|
+
rates: import_lucide_react48.Landmark,
|
|
17669
|
+
medical: import_lucide_react48.HeartPulse,
|
|
17670
|
+
health: import_lucide_react48.HeartPulse,
|
|
17671
|
+
subscriptions: import_lucide_react48.RefreshCw,
|
|
17672
|
+
subscription: import_lucide_react48.RefreshCw,
|
|
17673
|
+
"credit card": import_lucide_react48.CreditCard,
|
|
17674
|
+
education: import_lucide_react48.GraduationCap,
|
|
17675
|
+
childcare: import_lucide_react48.Baby,
|
|
17676
|
+
entertainment: import_lucide_react48.Tv,
|
|
17677
|
+
gym: import_lucide_react48.Dumbbell,
|
|
17678
|
+
fitness: import_lucide_react48.Dumbbell,
|
|
17679
|
+
clothing: import_lucide_react48.Shirt,
|
|
17680
|
+
rent: import_lucide_react48.Building2
|
|
17354
17681
|
};
|
|
17355
17682
|
function getExpenseIcon(expenseType) {
|
|
17356
17683
|
var _a;
|
|
17357
|
-
return (_a = EXPENSE_ICON_MAP[expenseType.toLowerCase()]) != null ? _a :
|
|
17684
|
+
return (_a = EXPENSE_ICON_MAP[expenseType.toLowerCase()]) != null ? _a : import_lucide_react48.Receipt;
|
|
17358
17685
|
}
|
|
17359
17686
|
function ExpensesCard({
|
|
17360
17687
|
items,
|
|
@@ -17405,7 +17732,7 @@ function ExpensesCard({
|
|
|
17405
17732
|
}
|
|
17406
17733
|
|
|
17407
17734
|
// src/components/ui/financial-drawers.tsx
|
|
17408
|
-
var
|
|
17735
|
+
var import_lucide_react49 = require("lucide-react");
|
|
17409
17736
|
var import_jsx_runtime88 = require("react/jsx-runtime");
|
|
17410
17737
|
function SummaryReportDrawer({
|
|
17411
17738
|
open,
|
|
@@ -17487,7 +17814,7 @@ function SummaryReportDrawer({
|
|
|
17487
17814
|
size: "icon-sm",
|
|
17488
17815
|
onClick: () => onOpenChange(false),
|
|
17489
17816
|
"aria-label": "Close drawer",
|
|
17490
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
17817
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_lucide_react49.X, { className: "h-4 w-4" })
|
|
17491
17818
|
}
|
|
17492
17819
|
)
|
|
17493
17820
|
] }),
|
|
@@ -17564,7 +17891,7 @@ function OpportunityDetailsDrawer({
|
|
|
17564
17891
|
size: "icon-sm",
|
|
17565
17892
|
onClick: () => onOpenChange(false),
|
|
17566
17893
|
"aria-label": "Close drawer",
|
|
17567
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
17894
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_lucide_react49.X, { className: "h-4 w-4" })
|
|
17568
17895
|
}
|
|
17569
17896
|
) })
|
|
17570
17897
|
] }),
|
|
@@ -18140,7 +18467,7 @@ function IncomeBarChart({
|
|
|
18140
18467
|
// src/components/ui/input-otp.tsx
|
|
18141
18468
|
var React42 = __toESM(require("react"));
|
|
18142
18469
|
var import_input_otp = require("input-otp");
|
|
18143
|
-
var
|
|
18470
|
+
var import_lucide_react50 = require("lucide-react");
|
|
18144
18471
|
var import_jsx_runtime91 = require("react/jsx-runtime");
|
|
18145
18472
|
function InputOTP(_a) {
|
|
18146
18473
|
var _b = _a, {
|
|
@@ -18206,11 +18533,11 @@ function InputOTPSlot(_a) {
|
|
|
18206
18533
|
}
|
|
18207
18534
|
function InputOTPSeparator(_a) {
|
|
18208
18535
|
var props = __objRest(_a, []);
|
|
18209
|
-
return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", __spreadProps(__spreadValues({ "data-slot": "input-otp-separator", role: "separator" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
|
|
18536
|
+
return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", __spreadProps(__spreadValues({ "data-slot": "input-otp-separator", role: "separator" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(import_lucide_react50.MinusIcon, {}) }));
|
|
18210
18537
|
}
|
|
18211
18538
|
|
|
18212
18539
|
// src/components/ui/integration-card.tsx
|
|
18213
|
-
var
|
|
18540
|
+
var import_lucide_react51 = require("lucide-react");
|
|
18214
18541
|
var import_jsx_runtime92 = require("react/jsx-runtime");
|
|
18215
18542
|
function IntegrationCard({
|
|
18216
18543
|
name,
|
|
@@ -18244,7 +18571,7 @@ function IntegrationCard({
|
|
|
18244
18571
|
) : /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "flex h-9 w-9 items-center justify-center", children: logoFallback }) }),
|
|
18245
18572
|
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { className: "text-label-medium", children: name }),
|
|
18246
18573
|
connected && /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Badge, { variant: "success", className: "gap-1", children: [
|
|
18247
|
-
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
|
|
18574
|
+
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_lucide_react51.Check, { className: "h-3 w-3" }),
|
|
18248
18575
|
"Connected"
|
|
18249
18576
|
] })
|
|
18250
18577
|
] }),
|
|
@@ -18283,11 +18610,11 @@ function SelectableCard({
|
|
|
18283
18610
|
|
|
18284
18611
|
// src/components/ui/kanban-column.tsx
|
|
18285
18612
|
var React43 = __toESM(require("react"));
|
|
18286
|
-
var
|
|
18613
|
+
var import_lucide_react53 = require("lucide-react");
|
|
18287
18614
|
|
|
18288
18615
|
// src/components/ui/opportunity-card.tsx
|
|
18289
18616
|
var import_react31 = require("react");
|
|
18290
|
-
var
|
|
18617
|
+
var import_lucide_react52 = require("lucide-react");
|
|
18291
18618
|
|
|
18292
18619
|
// src/components/ui/pipeline-primitives.tsx
|
|
18293
18620
|
var import_jsx_runtime94 = require("react/jsx-runtime");
|
|
@@ -18447,7 +18774,7 @@ function TaskViewCard({
|
|
|
18447
18774
|
className: "flex items-center gap-1.5 text-sm font-semibold",
|
|
18448
18775
|
style: { color: "var(--color-success-text)" },
|
|
18449
18776
|
children: [
|
|
18450
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18777
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Check, { className: "size-3.5 shrink-0" }),
|
|
18451
18778
|
"All tasks complete"
|
|
18452
18779
|
]
|
|
18453
18780
|
}
|
|
@@ -18517,7 +18844,7 @@ function TaskViewCard({
|
|
|
18517
18844
|
className: "flex w-full items-center justify-between text-xs text-muted-foreground hover:text-foreground",
|
|
18518
18845
|
children: [
|
|
18519
18846
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1", children: [
|
|
18520
|
-
subtasksExpanded ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18847
|
+
subtasksExpanded ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.ChevronDown, { className: "size-3" }) : /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.ChevronRight, { className: "size-3" }),
|
|
18521
18848
|
"Subtasks"
|
|
18522
18849
|
] }),
|
|
18523
18850
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { children: [
|
|
@@ -18556,7 +18883,7 @@ function TaskViewCard({
|
|
|
18556
18883
|
"size-7 shrink-0"
|
|
18557
18884
|
),
|
|
18558
18885
|
"aria-label": "Opportunity actions",
|
|
18559
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18886
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.MoreVertical, { className: "size-4" })
|
|
18560
18887
|
}
|
|
18561
18888
|
),
|
|
18562
18889
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
@@ -18703,7 +19030,7 @@ function OpportunityCard({
|
|
|
18703
19030
|
className: "flex items-center gap-1.5 rounded border border-warning/30 bg-warning/10 px-2 py-1 text-xs font-medium",
|
|
18704
19031
|
style: { color: "var(--color-warning-text)" },
|
|
18705
19032
|
children: [
|
|
18706
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19033
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Clock, { className: "size-3 shrink-0" }),
|
|
18707
19034
|
"On hold until ",
|
|
18708
19035
|
formatDateDayMonth(onHoldTo)
|
|
18709
19036
|
]
|
|
@@ -18731,7 +19058,7 @@ function OpportunityCard({
|
|
|
18731
19058
|
"size-7 shrink-0"
|
|
18732
19059
|
),
|
|
18733
19060
|
"aria-label": "Opportunity actions",
|
|
18734
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19061
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.MoreVertical, { className: "size-4" })
|
|
18735
19062
|
}
|
|
18736
19063
|
),
|
|
18737
19064
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
@@ -18750,32 +19077,32 @@ function OpportunityCard({
|
|
|
18750
19077
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
18751
19078
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "truncate text-sm font-semibold text-foreground", children: customerName }),
|
|
18752
19079
|
additionalContacts && additionalContacts > 0 ? /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(Badge, { variant: "secondary", className: "shrink-0 gap-1", children: [
|
|
18753
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19080
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Users, { className: "size-3", "aria-hidden": "true" }),
|
|
18754
19081
|
"Joint"
|
|
18755
19082
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(Badge, { variant: "secondary", className: "shrink-0 gap-1", children: [
|
|
18756
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19083
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.User, { className: "size-3", "aria-hidden": "true" }),
|
|
18757
19084
|
"Individual"
|
|
18758
19085
|
] })
|
|
18759
19086
|
] }),
|
|
18760
19087
|
customerPhone && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
|
|
18761
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19088
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
18762
19089
|
customerPhone
|
|
18763
19090
|
] }),
|
|
18764
19091
|
customerEmail && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
|
|
18765
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19092
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
18766
19093
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "truncate", children: customerEmail })
|
|
18767
19094
|
] })
|
|
18768
19095
|
] }),
|
|
18769
19096
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Separator, {}),
|
|
18770
19097
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
18771
19098
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
|
|
18772
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19099
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Calendar, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
18773
19100
|
formatDateShort(date)
|
|
18774
19101
|
] }),
|
|
18775
19102
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5", children: [
|
|
18776
19103
|
daysSinceColumnChanged !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_jsx_runtime95.Fragment, { children: [
|
|
18777
19104
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18778
|
-
|
|
19105
|
+
import_lucide_react52.Clock,
|
|
18779
19106
|
{
|
|
18780
19107
|
className: "size-3 shrink-0",
|
|
18781
19108
|
style: { color: priorityTextColor },
|
|
@@ -18849,7 +19176,7 @@ function OpportunityCard({
|
|
|
18849
19176
|
] }) }),
|
|
18850
19177
|
nextTask && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-start gap-1.5 border border-primary/30 bg-primary/5 px-2 py-1.5 text-xs", children: [
|
|
18851
19178
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18852
|
-
|
|
19179
|
+
import_lucide_react52.ArrowRight,
|
|
18853
19180
|
{
|
|
18854
19181
|
className: "mt-0.5 size-3 shrink-0 text-primary",
|
|
18855
19182
|
"aria-hidden": "true"
|
|
@@ -18891,6 +19218,45 @@ function OpportunityCard({
|
|
|
18891
19218
|
}
|
|
18892
19219
|
);
|
|
18893
19220
|
}
|
|
19221
|
+
function normalizeUrl(url) {
|
|
19222
|
+
return `https://${url.replace(/^https?:\/\//, "")}`;
|
|
19223
|
+
}
|
|
19224
|
+
function LoanApplicationLink({ url }) {
|
|
19225
|
+
const [copied, setCopied] = (0, import_react31.useState)(false);
|
|
19226
|
+
const href = normalizeUrl(url);
|
|
19227
|
+
function handleCopy() {
|
|
19228
|
+
navigator.clipboard.writeText(href).then(() => {
|
|
19229
|
+
setCopied(true);
|
|
19230
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
19231
|
+
});
|
|
19232
|
+
}
|
|
19233
|
+
return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
19234
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("p", { className: "text-caption text-muted-foreground", children: "Or the link below to fill out the loan application directly." }),
|
|
19235
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-center gap-1.5", children: [
|
|
19236
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Link2, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
19237
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19238
|
+
"a",
|
|
19239
|
+
{
|
|
19240
|
+
href,
|
|
19241
|
+
target: "_blank",
|
|
19242
|
+
rel: "noreferrer",
|
|
19243
|
+
className: "min-w-0 flex-1 truncate text-body-small text-primary underline-offset-2 hover:underline",
|
|
19244
|
+
children: url
|
|
19245
|
+
}
|
|
19246
|
+
),
|
|
19247
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19248
|
+
"button",
|
|
19249
|
+
{
|
|
19250
|
+
type: "button",
|
|
19251
|
+
onClick: handleCopy,
|
|
19252
|
+
className: "shrink-0 rounded p-1 text-muted-foreground transition-colors hover:text-foreground",
|
|
19253
|
+
"aria-label": "Copy link",
|
|
19254
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Check, { className: "size-4 text-success-text" }) : /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Copy, { className: "size-4" })
|
|
19255
|
+
}
|
|
19256
|
+
)
|
|
19257
|
+
] })
|
|
19258
|
+
] });
|
|
19259
|
+
}
|
|
18894
19260
|
function LeadCard({
|
|
18895
19261
|
customerName,
|
|
18896
19262
|
customerPhone,
|
|
@@ -18913,13 +19279,13 @@ function LeadCard({
|
|
|
18913
19279
|
children: [
|
|
18914
19280
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
|
|
18915
19281
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
18916
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "text-
|
|
18917
|
-
customerPhone && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5 text-
|
|
18918
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19282
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "text-label-medium text-foreground", children: customerName }),
|
|
19283
|
+
customerPhone && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
|
|
19284
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Phone, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
|
|
18919
19285
|
customerPhone
|
|
18920
19286
|
] }),
|
|
18921
|
-
customerEmail && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5 text-
|
|
18922
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19287
|
+
customerEmail && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
|
|
19288
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Mail, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
|
|
18923
19289
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "truncate", children: customerEmail })
|
|
18924
19290
|
] })
|
|
18925
19291
|
] }),
|
|
@@ -18932,7 +19298,7 @@ function LeadCard({
|
|
|
18932
19298
|
"-mr-1 -mt-1 size-7 shrink-0"
|
|
18933
19299
|
),
|
|
18934
19300
|
"aria-label": "Lead actions",
|
|
18935
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19301
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.MoreVertical, { className: "size-4" })
|
|
18936
19302
|
}
|
|
18937
19303
|
),
|
|
18938
19304
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(DropdownMenuContent, { align: "end", children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
@@ -18958,23 +19324,7 @@ function LeadCard({
|
|
|
18958
19324
|
children: "Send Loan Application Request"
|
|
18959
19325
|
}
|
|
18960
19326
|
),
|
|
18961
|
-
loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime95.
|
|
18962
|
-
"Or the link below to fill out the loan application directly.",
|
|
18963
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("br", {}),
|
|
18964
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18965
|
-
"a",
|
|
18966
|
-
{
|
|
18967
|
-
href: `https://${loanApplicationUrl.replace(
|
|
18968
|
-
/^https?:\/\//,
|
|
18969
|
-
""
|
|
18970
|
-
)}`,
|
|
18971
|
-
target: "_blank",
|
|
18972
|
-
rel: "noreferrer",
|
|
18973
|
-
className: "text-primary underline-offset-2 hover:underline",
|
|
18974
|
-
children: loanApplicationUrl
|
|
18975
|
-
}
|
|
18976
|
-
)
|
|
18977
|
-
] })
|
|
19327
|
+
loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(LoanApplicationLink, { url: loanApplicationUrl })
|
|
18978
19328
|
] })
|
|
18979
19329
|
]
|
|
18980
19330
|
}
|
|
@@ -19067,7 +19417,7 @@ function KanbanColumn({
|
|
|
19067
19417
|
"-mr-1 size-7 shrink-0"
|
|
19068
19418
|
),
|
|
19069
19419
|
"aria-label": "Column actions",
|
|
19070
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
19420
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react53.MoreVertical, { className: "size-4" })
|
|
19071
19421
|
}
|
|
19072
19422
|
),
|
|
19073
19423
|
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
@@ -19171,7 +19521,7 @@ function KanbanColumn({
|
|
|
19171
19521
|
|
|
19172
19522
|
// src/components/ui/stepper.tsx
|
|
19173
19523
|
var React44 = __toESM(require("react"));
|
|
19174
|
-
var
|
|
19524
|
+
var import_lucide_react54 = require("lucide-react");
|
|
19175
19525
|
var import_jsx_runtime97 = require("react/jsx-runtime");
|
|
19176
19526
|
var StepperContext = React44.createContext({
|
|
19177
19527
|
activeStep: 0,
|
|
@@ -19253,7 +19603,7 @@ function StepIndicator({ error, className }) {
|
|
|
19253
19603
|
isCompleted && !error && "bg-primary text-primary-foreground",
|
|
19254
19604
|
error && "border-2 border-destructive bg-destructive text-destructive-foreground"
|
|
19255
19605
|
),
|
|
19256
|
-
children: isCompleted && !error ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
19606
|
+
children: isCompleted && !error ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react54.Check, { className: "size-4", strokeWidth: 2.5 }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: index + 1 })
|
|
19257
19607
|
}
|
|
19258
19608
|
);
|
|
19259
19609
|
if (orientation === "horizontal") {
|
|
@@ -19478,7 +19828,7 @@ function OnboardingLayout({
|
|
|
19478
19828
|
|
|
19479
19829
|
// src/components/ui/opportunity-edit-modals.tsx
|
|
19480
19830
|
var React45 = __toESM(require("react"));
|
|
19481
|
-
var
|
|
19831
|
+
var import_lucide_react55 = require("lucide-react");
|
|
19482
19832
|
|
|
19483
19833
|
// src/lib/opportunity-constants.ts
|
|
19484
19834
|
var PROPERTY_ASSET_TYPES = /* @__PURE__ */ new Set([
|
|
@@ -19724,7 +20074,7 @@ function AccordionItemHeader({
|
|
|
19724
20074
|
),
|
|
19725
20075
|
children: [
|
|
19726
20076
|
label,
|
|
19727
|
-
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
20077
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react55.ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 text-muted-foreground transition-transform duration-200" })
|
|
19728
20078
|
]
|
|
19729
20079
|
}
|
|
19730
20080
|
),
|
|
@@ -19737,7 +20087,7 @@ function AccordionItemHeader({
|
|
|
19737
20087
|
onClick: onRemove,
|
|
19738
20088
|
className: "size-8 shrink-0",
|
|
19739
20089
|
"aria-label": removeLabel,
|
|
19740
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
20090
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react55.Trash2, { className: "size-3.5 text-destructive" })
|
|
19741
20091
|
}
|
|
19742
20092
|
)
|
|
19743
20093
|
] });
|
|
@@ -20365,7 +20715,7 @@ function EditAssetsModal({
|
|
|
20365
20715
|
onClick: addItem,
|
|
20366
20716
|
className: "w-full gap-1.5",
|
|
20367
20717
|
children: [
|
|
20368
|
-
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
20718
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react55.Plus, { className: "h-4 w-4" }),
|
|
20369
20719
|
"Add More"
|
|
20370
20720
|
]
|
|
20371
20721
|
}
|
|
@@ -20692,7 +21042,7 @@ function EditDebtsModal({
|
|
|
20692
21042
|
onClick: addItem,
|
|
20693
21043
|
className: "w-full gap-1.5",
|
|
20694
21044
|
children: [
|
|
20695
|
-
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
21045
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react55.Plus, { className: "h-4 w-4" }),
|
|
20696
21046
|
"Add More"
|
|
20697
21047
|
]
|
|
20698
21048
|
}
|
|
@@ -21193,7 +21543,7 @@ function EditIncomeModal({
|
|
|
21193
21543
|
onClick: addItem,
|
|
21194
21544
|
className: "w-full gap-1.5",
|
|
21195
21545
|
children: [
|
|
21196
|
-
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
21546
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react55.Plus, { className: "h-4 w-4" }),
|
|
21197
21547
|
"Add More"
|
|
21198
21548
|
]
|
|
21199
21549
|
}
|
|
@@ -21343,7 +21693,7 @@ function EditExpensesModal({
|
|
|
21343
21693
|
onClick: addItem,
|
|
21344
21694
|
className: "w-full gap-1.5",
|
|
21345
21695
|
children: [
|
|
21346
|
-
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
21696
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react55.Plus, { className: "h-4 w-4" }),
|
|
21347
21697
|
"Add More"
|
|
21348
21698
|
]
|
|
21349
21699
|
}
|
|
@@ -21371,7 +21721,7 @@ function EditExpensesModal({
|
|
|
21371
21721
|
// src/components/ui/opportunity-summary-tab.tsx
|
|
21372
21722
|
var React46 = __toESM(require("react"));
|
|
21373
21723
|
var import_react32 = require("react");
|
|
21374
|
-
var
|
|
21724
|
+
var import_lucide_react56 = require("lucide-react");
|
|
21375
21725
|
var import_jsx_runtime100 = require("react/jsx-runtime");
|
|
21376
21726
|
function toMonthly(amount, freq) {
|
|
21377
21727
|
return freq === "Monthly" ? amount : amount * 52 / 12;
|
|
@@ -21422,7 +21772,7 @@ function SectionEditButton({
|
|
|
21422
21772
|
},
|
|
21423
21773
|
"aria-label": title,
|
|
21424
21774
|
title,
|
|
21425
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
21775
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.Pencil, { className: "size-3.5" })
|
|
21426
21776
|
}
|
|
21427
21777
|
);
|
|
21428
21778
|
}
|
|
@@ -21458,7 +21808,7 @@ function HeroBand({
|
|
|
21458
21808
|
href: `tel:${mainAbout.phone}`,
|
|
21459
21809
|
className: "inline-flex size-7 items-center justify-center text-muted-foreground hover:text-foreground",
|
|
21460
21810
|
title: `Call: ${mainAbout.phone}`,
|
|
21461
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
21811
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.Phone, { className: "size-3.5" })
|
|
21462
21812
|
}
|
|
21463
21813
|
),
|
|
21464
21814
|
mainAbout.email && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
@@ -21467,7 +21817,7 @@ function HeroBand({
|
|
|
21467
21817
|
href: `mailto:${mainAbout.email}`,
|
|
21468
21818
|
className: "inline-flex size-7 items-center justify-center text-muted-foreground hover:text-foreground",
|
|
21469
21819
|
title: `Email: ${mainAbout.email}`,
|
|
21470
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
21820
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.Mail, { className: "size-3.5" })
|
|
21471
21821
|
}
|
|
21472
21822
|
)
|
|
21473
21823
|
] })
|
|
@@ -21606,19 +21956,19 @@ function ApplicantCardTab({
|
|
|
21606
21956
|
var STATUS_OPTIONS = ["verified", "pending", "rejected"];
|
|
21607
21957
|
var STATUS_CONFIG4 = {
|
|
21608
21958
|
verified: {
|
|
21609
|
-
Icon:
|
|
21959
|
+
Icon: import_lucide_react56.CheckCircle2,
|
|
21610
21960
|
label: "Verified",
|
|
21611
21961
|
iconCls: "text-success",
|
|
21612
21962
|
triggerCls: "border-success text-success"
|
|
21613
21963
|
},
|
|
21614
21964
|
pending: {
|
|
21615
|
-
Icon:
|
|
21965
|
+
Icon: import_lucide_react56.AlertCircle,
|
|
21616
21966
|
label: "Pending",
|
|
21617
21967
|
iconCls: "text-warning",
|
|
21618
21968
|
triggerCls: "border-warning text-warning"
|
|
21619
21969
|
},
|
|
21620
21970
|
rejected: {
|
|
21621
|
-
Icon:
|
|
21971
|
+
Icon: import_lucide_react56.AlertCircle,
|
|
21622
21972
|
label: "Rejected",
|
|
21623
21973
|
iconCls: "text-destructive",
|
|
21624
21974
|
triggerCls: "border-destructive text-destructive"
|
|
@@ -21648,7 +21998,7 @@ function DocRow({
|
|
|
21648
21998
|
),
|
|
21649
21999
|
children: [
|
|
21650
22000
|
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "shrink-0", onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Checkbox, { checked: isSelected, onCheckedChange: () => onRowClick() }) }),
|
|
21651
|
-
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
22001
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.FileText, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
21652
22002
|
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
21653
22003
|
doc.url ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
21654
22004
|
"a",
|
|
@@ -21702,7 +22052,7 @@ function DocRow({
|
|
|
21702
22052
|
download: true,
|
|
21703
22053
|
onClick: (e) => e.stopPropagation(),
|
|
21704
22054
|
className: "shrink-0 text-muted-foreground transition-colors hover:text-foreground",
|
|
21705
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
22055
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.Download, { className: "size-4" })
|
|
21706
22056
|
}
|
|
21707
22057
|
)
|
|
21708
22058
|
]
|
|
@@ -21988,7 +22338,7 @@ function OpportunitySummaryTab({
|
|
|
21988
22338
|
onDocumentsDownload == null ? void 0 : onDocumentsDownload(selected);
|
|
21989
22339
|
},
|
|
21990
22340
|
children: [
|
|
21991
|
-
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
22341
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.Download, { className: "size-3.5" }),
|
|
21992
22342
|
"Download (",
|
|
21993
22343
|
selectedDocIds.size,
|
|
21994
22344
|
")"
|
|
@@ -22010,7 +22360,7 @@ function OpportunitySummaryTab({
|
|
|
22010
22360
|
cat.hasVerified ? "text-success" : "text-warning"
|
|
22011
22361
|
),
|
|
22012
22362
|
children: [
|
|
22013
|
-
cat.hasVerified ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
22363
|
+
cat.hasVerified ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.CheckCircle2, { className: "size-3.5 shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.AlertCircle, { className: "size-3.5 shrink-0" }),
|
|
22014
22364
|
cat.name,
|
|
22015
22365
|
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("span", { className: "text-muted-foreground", children: [
|
|
22016
22366
|
"(",
|
|
@@ -22251,7 +22601,7 @@ function OpportunitySummaryTab({
|
|
|
22251
22601
|
|
|
22252
22602
|
// src/components/ui/sidebar-nav.tsx
|
|
22253
22603
|
var React47 = __toESM(require("react"));
|
|
22254
|
-
var
|
|
22604
|
+
var import_lucide_react57 = require("lucide-react");
|
|
22255
22605
|
var import_accordion8 = require("@base-ui/react/accordion");
|
|
22256
22606
|
var import_jsx_runtime101 = require("react/jsx-runtime");
|
|
22257
22607
|
function navIconCn(isActive) {
|
|
@@ -22285,7 +22635,7 @@ function MetricsGroup({ group }) {
|
|
|
22285
22635
|
}
|
|
22286
22636
|
),
|
|
22287
22637
|
item.info && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22288
|
-
|
|
22638
|
+
import_lucide_react57.Info,
|
|
22289
22639
|
{
|
|
22290
22640
|
size: 11,
|
|
22291
22641
|
strokeWidth: 2,
|
|
@@ -22404,7 +22754,7 @@ function CollapsibleNavItem({
|
|
|
22404
22754
|
),
|
|
22405
22755
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "flex-1 truncate text-left", children: item.title }),
|
|
22406
22756
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22407
|
-
|
|
22757
|
+
import_lucide_react57.ChevronDown,
|
|
22408
22758
|
{
|
|
22409
22759
|
className: cn(
|
|
22410
22760
|
"ml-auto shrink-0 text-brand-secondary-foreground/40 transition-transform duration-200",
|
|
@@ -22430,7 +22780,7 @@ function CollapsibleNavItem({
|
|
|
22430
22780
|
),
|
|
22431
22781
|
children: [
|
|
22432
22782
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22433
|
-
|
|
22783
|
+
import_lucide_react57.ChevronRight,
|
|
22434
22784
|
{
|
|
22435
22785
|
size: 11,
|
|
22436
22786
|
strokeWidth: 2,
|
|
@@ -22539,7 +22889,7 @@ function SidebarNav({
|
|
|
22539
22889
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center font-semibold text-xs bg-primary text-primary-foreground", children: getInitials(userName) }),
|
|
22540
22890
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "flex-1 truncate text-left font-medium text-brand-secondary-foreground", children: userName }),
|
|
22541
22891
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22542
|
-
|
|
22892
|
+
import_lucide_react57.ChevronDown,
|
|
22543
22893
|
{
|
|
22544
22894
|
className: "ml-auto shrink-0 text-brand-secondary-foreground/50 transition-transform duration-200 group-data-[panel-open]:rotate-180",
|
|
22545
22895
|
size: 16,
|
|
@@ -22561,7 +22911,7 @@ function SidebarNav({
|
|
|
22561
22911
|
),
|
|
22562
22912
|
children: [
|
|
22563
22913
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22564
|
-
|
|
22914
|
+
import_lucide_react57.LogOut,
|
|
22565
22915
|
{
|
|
22566
22916
|
size: 16,
|
|
22567
22917
|
strokeWidth: 1.75,
|
|
@@ -22634,14 +22984,14 @@ function SidebarNav({
|
|
|
22634
22984
|
),
|
|
22635
22985
|
children: [
|
|
22636
22986
|
collapsed ? /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22637
|
-
|
|
22987
|
+
import_lucide_react57.PanelLeftOpen,
|
|
22638
22988
|
{
|
|
22639
22989
|
size: 24,
|
|
22640
22990
|
strokeWidth: 1.75,
|
|
22641
22991
|
className: "shrink-0"
|
|
22642
22992
|
}
|
|
22643
22993
|
) : /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22644
|
-
|
|
22994
|
+
import_lucide_react57.PanelLeftClose,
|
|
22645
22995
|
{
|
|
22646
22996
|
size: 24,
|
|
22647
22997
|
strokeWidth: 1.75,
|
|
@@ -22695,7 +23045,7 @@ function PipelineAlerts({ counts, className }) {
|
|
|
22695
23045
|
}
|
|
22696
23046
|
|
|
22697
23047
|
// src/components/ui/pipeline-board.tsx
|
|
22698
|
-
var
|
|
23048
|
+
var import_lucide_react58 = require("lucide-react");
|
|
22699
23049
|
var import_jsx_runtime103 = require("react/jsx-runtime");
|
|
22700
23050
|
function Toolbar({
|
|
22701
23051
|
searchValue,
|
|
@@ -22707,7 +23057,7 @@ function Toolbar({
|
|
|
22707
23057
|
}) {
|
|
22708
23058
|
return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "flex flex-wrap items-center gap-3 border-b border-border bg-background px-4 py-3", children: [
|
|
22709
23059
|
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "relative w-56 shrink-0", children: [
|
|
22710
|
-
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
23060
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react58.Search, { className: "absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" }),
|
|
22711
23061
|
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
22712
23062
|
Input,
|
|
22713
23063
|
{
|
|
@@ -22726,7 +23076,7 @@ function Toolbar({
|
|
|
22726
23076
|
onClick: () => onSearchChange(""),
|
|
22727
23077
|
className: "absolute right-2 top-1/2 size-6 -translate-y-1/2 text-muted-foreground hover:text-foreground",
|
|
22728
23078
|
"aria-label": "Clear search",
|
|
22729
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
23079
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react58.X, { className: "size-3.5" })
|
|
22730
23080
|
}
|
|
22731
23081
|
)
|
|
22732
23082
|
] }),
|
|
@@ -22755,7 +23105,7 @@ function Toolbar({
|
|
|
22755
23105
|
onClick: onRefresh,
|
|
22756
23106
|
className: "ml-auto text-muted-foreground hover:text-foreground",
|
|
22757
23107
|
"aria-label": "Refresh board",
|
|
22758
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
23108
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react58.RefreshCw, { className: "size-4" })
|
|
22759
23109
|
}
|
|
22760
23110
|
)
|
|
22761
23111
|
] });
|
|
@@ -23714,7 +24064,7 @@ function PropertyMobileEstimateLineChart({
|
|
|
23714
24064
|
}
|
|
23715
24065
|
|
|
23716
24066
|
// src/components/ui/sonner.tsx
|
|
23717
|
-
var
|
|
24067
|
+
var import_lucide_react59 = require("lucide-react");
|
|
23718
24068
|
var import_sonner2 = require("sonner");
|
|
23719
24069
|
var import_jsx_runtime111 = require("react/jsx-runtime");
|
|
23720
24070
|
function Toaster(_a) {
|
|
@@ -23724,11 +24074,11 @@ function Toaster(_a) {
|
|
|
23724
24074
|
__spreadValues({
|
|
23725
24075
|
className: "toaster group",
|
|
23726
24076
|
icons: {
|
|
23727
|
-
success: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
23728
|
-
info: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
23729
|
-
warning: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
23730
|
-
error: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
23731
|
-
loading: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
24077
|
+
success: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react59.CircleCheckIcon, { className: "size-4" }),
|
|
24078
|
+
info: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react59.InfoIcon, { className: "size-4" }),
|
|
24079
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react59.TriangleAlertIcon, { className: "size-4" }),
|
|
24080
|
+
error: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react59.OctagonXIcon, { className: "size-4" }),
|
|
24081
|
+
loading: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react59.Loader2Icon, { className: "size-4 animate-spin" })
|
|
23732
24082
|
},
|
|
23733
24083
|
style: {
|
|
23734
24084
|
"--normal-bg": "var(--popover)",
|
|
@@ -23747,7 +24097,7 @@ function Toaster(_a) {
|
|
|
23747
24097
|
}
|
|
23748
24098
|
|
|
23749
24099
|
// src/components/ui/stage-timeline.tsx
|
|
23750
|
-
var
|
|
24100
|
+
var import_lucide_react60 = require("lucide-react");
|
|
23751
24101
|
var import_jsx_runtime112 = require("react/jsx-runtime");
|
|
23752
24102
|
function StageTimeline({
|
|
23753
24103
|
stages,
|
|
@@ -23838,7 +24188,7 @@ function StageTimeline({
|
|
|
23838
24188
|
className: "flex size-5 shrink-0 items-center justify-center rounded-full bg-primary",
|
|
23839
24189
|
"aria-hidden": "true",
|
|
23840
24190
|
children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
|
|
23841
|
-
|
|
24191
|
+
import_lucide_react60.Check,
|
|
23842
24192
|
{
|
|
23843
24193
|
className: "size-3 text-primary-foreground",
|
|
23844
24194
|
strokeWidth: 2.5
|
|
@@ -24025,10 +24375,10 @@ function FrontendShell({
|
|
|
24025
24375
|
|
|
24026
24376
|
// src/components/ui/signup-form-primitives.tsx
|
|
24027
24377
|
var import_react36 = require("react");
|
|
24028
|
-
var
|
|
24378
|
+
var import_lucide_react62 = require("lucide-react");
|
|
24029
24379
|
|
|
24030
24380
|
// src/components/ui/password-strength-tooltip.tsx
|
|
24031
|
-
var
|
|
24381
|
+
var import_lucide_react61 = require("lucide-react");
|
|
24032
24382
|
var import_jsx_runtime116 = require("react/jsx-runtime");
|
|
24033
24383
|
var RULES = [
|
|
24034
24384
|
{ label: "Minimum 8 characters", test: (p) => p.length >= 8 },
|
|
@@ -24063,7 +24413,7 @@ function PasswordStrengthTooltip({
|
|
|
24063
24413
|
{
|
|
24064
24414
|
className: `flex items-center gap-1.5 text-[13px] leading-[18px] ${valid ? "text-success" : "text-destructive"}`,
|
|
24065
24415
|
children: [
|
|
24066
|
-
valid ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
24416
|
+
valid ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react61.Check, { size: 14, className: "shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react61.X, { size: 14, className: "shrink-0" }),
|
|
24067
24417
|
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("span", { children: rule.label })
|
|
24068
24418
|
]
|
|
24069
24419
|
},
|
|
@@ -24142,7 +24492,7 @@ function PasswordField({
|
|
|
24142
24492
|
"aria-label": show ? "Hide password" : "Show password",
|
|
24143
24493
|
className: "absolute right-3 top-2.5 text-muted-foreground hover:text-foreground",
|
|
24144
24494
|
onClick: () => setShow((s) => !s),
|
|
24145
|
-
children: show ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
24495
|
+
children: show ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react62.EyeOffIcon, { className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react62.EyeIcon, { className: "size-4" })
|
|
24146
24496
|
}
|
|
24147
24497
|
)
|
|
24148
24498
|
] });
|
|
@@ -24199,7 +24549,7 @@ function StaffRowItem({
|
|
|
24199
24549
|
size: "icon-sm",
|
|
24200
24550
|
onClick: () => onRemove(member.id),
|
|
24201
24551
|
"aria-label": "Remove staff member",
|
|
24202
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
24552
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react62.Trash2Icon, { className: "size-4" })
|
|
24203
24553
|
}
|
|
24204
24554
|
)
|
|
24205
24555
|
] });
|
|
@@ -24207,7 +24557,7 @@ function StaffRowItem({
|
|
|
24207
24557
|
|
|
24208
24558
|
// src/components/ui/backoffice-signup-steps.tsx
|
|
24209
24559
|
var import_react37 = __toESM(require("react"));
|
|
24210
|
-
var
|
|
24560
|
+
var import_lucide_react63 = require("lucide-react");
|
|
24211
24561
|
var import_jsx_runtime118 = require("react/jsx-runtime");
|
|
24212
24562
|
var BASE_PLAN_PRICE = 299;
|
|
24213
24563
|
var ROLE_INFO = {
|
|
@@ -24514,7 +24864,7 @@ function InviteStaffView({
|
|
|
24514
24864
|
m.id
|
|
24515
24865
|
)),
|
|
24516
24866
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(Button, { variant: "outline", onClick: addStaff, className: "w-full", children: [
|
|
24517
|
-
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
24867
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react63.PlusIcon, { className: "size-4" }),
|
|
24518
24868
|
"Add Staff"
|
|
24519
24869
|
] })
|
|
24520
24870
|
] })
|
|
@@ -24572,7 +24922,7 @@ function PaymentView({
|
|
|
24572
24922
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
24573
24923
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("span", { className: "text-base w-[60px]", children: role }),
|
|
24574
24924
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(Tooltip, { children: [
|
|
24575
|
-
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TooltipTrigger, { children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(Button, { variant: "ghost", size: "icon-sm", "aria-label": "Info", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
24925
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TooltipTrigger, { children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(Button, { variant: "ghost", size: "icon-sm", "aria-label": "Info", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react63.InfoIcon, { className: "size-4" }) }) }),
|
|
24576
24926
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TooltipContent, { side: "top", children: ROLE_INFO[role] })
|
|
24577
24927
|
] })
|
|
24578
24928
|
] }),
|
|
@@ -24648,15 +24998,15 @@ function BackofficeSuccessStep() {
|
|
|
24648
24998
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "border border-border p-6 flex flex-col gap-4 text-left w-full max-w-[400px]", children: [
|
|
24649
24999
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("p", { className: "font-semibold text-base text-foreground", children: "Contact us anytime if you have any concerns." }),
|
|
24650
25000
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
24651
|
-
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
25001
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react63.PhoneIcon, { className: "size-5 text-success shrink-0" }),
|
|
24652
25002
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("span", { className: "text-base text-foreground", children: "0416 338 438" })
|
|
24653
25003
|
] }),
|
|
24654
25004
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
24655
|
-
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
25005
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react63.CalendarIcon, { className: "size-5 text-success shrink-0" }),
|
|
24656
25006
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("span", { className: "text-base text-foreground", children: "Book call back" })
|
|
24657
25007
|
] }),
|
|
24658
25008
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
24659
|
-
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
25009
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react63.MailIcon, { className: "size-5 text-success shrink-0" }),
|
|
24660
25010
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("span", { className: "text-base text-foreground", children: "clint@wealthx.au" })
|
|
24661
25011
|
] })
|
|
24662
25012
|
] })
|
|
@@ -24665,7 +25015,7 @@ function BackofficeSuccessStep() {
|
|
|
24665
25015
|
|
|
24666
25016
|
// src/components/ui/frontend-signup-steps.tsx
|
|
24667
25017
|
var import_react38 = require("react");
|
|
24668
|
-
var
|
|
25018
|
+
var import_lucide_react64 = require("lucide-react");
|
|
24669
25019
|
var import_jsx_runtime119 = require("react/jsx-runtime");
|
|
24670
25020
|
var fmt = (v) => new Intl.NumberFormat("en-AU", {
|
|
24671
25021
|
style: "currency",
|
|
@@ -24853,7 +25203,7 @@ function ConnectBankStep({ onConnect }) {
|
|
|
24853
25203
|
{
|
|
24854
25204
|
"aria-hidden": "true",
|
|
24855
25205
|
className: "flex h-7 w-7 items-center justify-center bg-primary text-primary-foreground",
|
|
24856
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
25206
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_lucide_react64.PlusIcon, { className: "size-4" })
|
|
24857
25207
|
}
|
|
24858
25208
|
)
|
|
24859
25209
|
] })
|
|
@@ -24933,7 +25283,7 @@ function ConnectPropertyStep({
|
|
|
24933
25283
|
children: [
|
|
24934
25284
|
/* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
24935
25285
|
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
24936
|
-
|
|
25286
|
+
import_lucide_react64.HomeIcon,
|
|
24937
25287
|
{
|
|
24938
25288
|
"aria-hidden": "true",
|
|
24939
25289
|
className: "size-4 shrink-0 text-muted-foreground"
|
|
@@ -24949,7 +25299,7 @@ function ConnectPropertyStep({
|
|
|
24949
25299
|
] })
|
|
24950
25300
|
] }),
|
|
24951
25301
|
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
24952
|
-
|
|
25302
|
+
import_lucide_react64.CheckIcon,
|
|
24953
25303
|
{
|
|
24954
25304
|
"aria-hidden": "true",
|
|
24955
25305
|
className: "size-4 text-success"
|
|
@@ -25062,7 +25412,7 @@ function FrontendSuccessStep({
|
|
|
25062
25412
|
{
|
|
25063
25413
|
"aria-hidden": "true",
|
|
25064
25414
|
className: "flex size-16 items-center justify-center bg-success/10",
|
|
25065
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
25415
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_lucide_react64.CheckIcon, { className: "size-8 text-success", strokeWidth: 2 })
|
|
25066
25416
|
}
|
|
25067
25417
|
),
|
|
25068
25418
|
/* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
@@ -25079,7 +25429,7 @@ function FrontendSuccessStep({
|
|
|
25079
25429
|
|
|
25080
25430
|
// src/components/ui/two-fa-setup-form.tsx
|
|
25081
25431
|
var import_react39 = require("react");
|
|
25082
|
-
var
|
|
25432
|
+
var import_lucide_react65 = require("lucide-react");
|
|
25083
25433
|
var import_jsx_runtime120 = require("react/jsx-runtime");
|
|
25084
25434
|
var DEFAULT_APPS = [
|
|
25085
25435
|
{ name: "Google Authenticator" },
|
|
@@ -25100,7 +25450,7 @@ function AppDownloadStep({
|
|
|
25100
25450
|
className: "flex flex-1 flex-col items-center gap-3 border border-border bg-muted/30 p-4 text-center",
|
|
25101
25451
|
children: [
|
|
25102
25452
|
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("div", { className: "flex items-center gap-2 text-sm font-medium text-foreground", children: [
|
|
25103
|
-
(_a = app.icon) != null ? _a : /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
|
|
25453
|
+
(_a = app.icon) != null ? _a : /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react65.Smartphone, { size: 18, className: "text-muted-foreground" }),
|
|
25104
25454
|
app.name
|
|
25105
25455
|
] }),
|
|
25106
25456
|
app.qrNode ? /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { className: "flex items-center justify-center", children: app.qrNode }) : /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { className: "flex h-[100px] w-[100px] items-center justify-center border border-dashed border-border bg-muted/50 text-[11px] text-muted-foreground", children: "Scan to download" })
|
|
@@ -26082,7 +26432,7 @@ function IncomeWorkDetails({
|
|
|
26082
26432
|
}
|
|
26083
26433
|
|
|
26084
26434
|
// src/components/ui/loan-application-badge.tsx
|
|
26085
|
-
var
|
|
26435
|
+
var import_lucide_react66 = require("lucide-react");
|
|
26086
26436
|
var import_jsx_runtime128 = require("react/jsx-runtime");
|
|
26087
26437
|
var STATUS_CONFIG5 = {
|
|
26088
26438
|
SENT: {
|
|
@@ -26112,7 +26462,7 @@ function LoanApplicationBadge({
|
|
|
26112
26462
|
variant: "outline",
|
|
26113
26463
|
className: cn("w-fit text-xs gap-1", statusClassName, className),
|
|
26114
26464
|
children: [
|
|
26115
|
-
showCheck && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
26465
|
+
showCheck && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_lucide_react66.CheckIcon, { "aria-hidden": "true", className: "size-3" }),
|
|
26116
26466
|
label
|
|
26117
26467
|
]
|
|
26118
26468
|
}
|
|
@@ -26283,7 +26633,7 @@ function ChevronRightIcon4({ className }) {
|
|
|
26283
26633
|
|
|
26284
26634
|
// src/components/ui/resource-center.tsx
|
|
26285
26635
|
var import_react43 = require("react");
|
|
26286
|
-
var
|
|
26636
|
+
var import_lucide_react67 = require("lucide-react");
|
|
26287
26637
|
var import_jsx_runtime131 = require("react/jsx-runtime");
|
|
26288
26638
|
function ResourceModal({
|
|
26289
26639
|
open,
|
|
@@ -26322,7 +26672,7 @@ function ResourceModal({
|
|
|
26322
26672
|
download: true,
|
|
26323
26673
|
className: "flex items-center gap-2 text-sm text-primary hover:underline",
|
|
26324
26674
|
children: [
|
|
26325
|
-
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
26675
|
+
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_lucide_react67.Download, { className: "size-3.5 shrink-0" }),
|
|
26326
26676
|
attachment.name
|
|
26327
26677
|
]
|
|
26328
26678
|
},
|
|
@@ -26352,8 +26702,8 @@ function ResourceVideoCard({ video }) {
|
|
|
26352
26702
|
alt: video.title,
|
|
26353
26703
|
className: "h-full w-full object-cover transition-transform duration-200 group-hover:scale-105"
|
|
26354
26704
|
}
|
|
26355
|
-
) : /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
26356
|
-
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "absolute inset-0 flex items-center justify-center bg-black/30 opacity-0 transition-opacity duration-200 group-hover:opacity-100", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "flex size-12 items-center justify-center bg-background/90", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
26705
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_lucide_react67.Play, { className: "size-10 text-muted-foreground opacity-40" }) }),
|
|
26706
|
+
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "absolute inset-0 flex items-center justify-center bg-black/30 opacity-0 transition-opacity duration-200 group-hover:opacity-100", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "flex size-12 items-center justify-center bg-background/90", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_lucide_react67.Play, { className: "size-5 text-foreground" }) }) }),
|
|
26357
26707
|
video.duration && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("span", { className: "absolute bottom-2 right-2 bg-black/70 px-1.5 py-0.5 text-xs font-medium text-white", children: video.duration })
|
|
26358
26708
|
] }),
|
|
26359
26709
|
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("p", { className: "text-sm font-medium text-foreground leading-snug line-clamp-2 group-hover:text-primary", children: video.title })
|
|
@@ -26456,7 +26806,7 @@ function ResourceDocumentCard({
|
|
|
26456
26806
|
className: "h-full w-full object-cover"
|
|
26457
26807
|
}
|
|
26458
26808
|
) : /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { className: "flex h-full w-full flex-col items-center justify-center gap-2", children: [
|
|
26459
|
-
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "flex items-center justify-center bg-muted-foreground/10 p-4", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
26809
|
+
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "flex items-center justify-center bg-muted-foreground/10 p-4", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_lucide_react67.Download, { className: "size-8 text-muted-foreground opacity-50" }) }),
|
|
26460
26810
|
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("span", { className: "text-xs text-muted-foreground", children: document2.title })
|
|
26461
26811
|
] }),
|
|
26462
26812
|
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "absolute inset-0 bg-foreground/40 opacity-0 transition-opacity duration-200 group-hover:opacity-100" })
|
|
@@ -26476,7 +26826,7 @@ function ResourceDocumentCard({
|
|
|
26476
26826
|
onClick: (e) => e.stopPropagation(),
|
|
26477
26827
|
className: "shrink-0",
|
|
26478
26828
|
"aria-label": `Download ${document2.title}`,
|
|
26479
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(Button, { variant: "outline", size: "icon", className: "size-8", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
26829
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(Button, { variant: "outline", size: "icon", className: "size-8", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_lucide_react67.Download, { className: "size-4" }) })
|
|
26480
26830
|
}
|
|
26481
26831
|
)
|
|
26482
26832
|
] })
|
|
@@ -26516,7 +26866,7 @@ function ResourceCarousel({
|
|
|
26516
26866
|
"opacity-0 transition-opacity duration-200 group-hover:opacity-100",
|
|
26517
26867
|
"hover:bg-muted focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
26518
26868
|
),
|
|
26519
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
26869
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_lucide_react67.ChevronLeft, { className: "size-4 text-foreground" })
|
|
26520
26870
|
}
|
|
26521
26871
|
),
|
|
26522
26872
|
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
@@ -26541,7 +26891,7 @@ function ResourceCarousel({
|
|
|
26541
26891
|
"opacity-0 transition-opacity duration-200 group-hover:opacity-100",
|
|
26542
26892
|
"hover:bg-muted focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
26543
26893
|
),
|
|
26544
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
26894
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_lucide_react67.ChevronRight, { className: "size-4 text-foreground" })
|
|
26545
26895
|
}
|
|
26546
26896
|
)
|
|
26547
26897
|
] })
|
|
@@ -26584,7 +26934,7 @@ function ResourceCenterHeader({
|
|
|
26584
26934
|
className: "border-background text-background bg-transparent hover:bg-background/10 hover:text-background",
|
|
26585
26935
|
onClick: () => setWatchModalOpen(true),
|
|
26586
26936
|
children: [
|
|
26587
|
-
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
26937
|
+
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_lucide_react67.Play, { className: "mr-2 size-4" }),
|
|
26588
26938
|
"Watch Now"
|
|
26589
26939
|
]
|
|
26590
26940
|
}
|
|
@@ -26915,6 +27265,7 @@ function ResourceCenterHeader({
|
|
|
26915
27265
|
SelectableCard,
|
|
26916
27266
|
Separator,
|
|
26917
27267
|
ServiceConfigurationModal,
|
|
27268
|
+
ShareContactDialog,
|
|
26918
27269
|
ShareDetailsDialog,
|
|
26919
27270
|
Sheet,
|
|
26920
27271
|
SheetClose,
|