@wealthx/shadcn 1.5.10 → 1.5.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +126 -126
- package/CHANGELOG.md +6 -0
- package/dist/{chunk-AANINK2B.mjs → chunk-2KNQZG5S.mjs} +1 -1
- package/dist/chunk-3KLJ4XRE.mjs +375 -0
- package/dist/{chunk-6U4NQGVM.mjs → chunk-4X4MGYHE.mjs} +2 -2
- package/dist/{chunk-CEEVYRQA.mjs → chunk-67DGIPQ4.mjs} +1 -1
- package/dist/{chunk-7UIL5UN3.mjs → chunk-7II6QRCZ.mjs} +1 -1
- package/dist/{chunk-W5QJ57PU.mjs → chunk-7LN5OGC2.mjs} +1 -1
- package/dist/{chunk-ZXEUBBHJ.mjs → chunk-7TMPOZDE.mjs} +1 -1
- package/dist/{chunk-AHSCWXYJ.mjs → chunk-AJUAJC5O.mjs} +1 -1
- package/dist/{chunk-3CGM3QXQ.mjs → chunk-AKWN5ZQG.mjs} +2 -2
- package/dist/{chunk-FRT3S72S.mjs → chunk-CQ7HKBEX.mjs} +1 -1
- package/dist/{chunk-E2BNCA6L.mjs → chunk-EHQL64B7.mjs} +1 -1
- package/dist/{chunk-2WCIORP7.mjs → chunk-EXI64H46.mjs} +1 -1
- package/dist/{chunk-BBXSNDS3.mjs → chunk-FQYFPHDO.mjs} +1 -1
- package/dist/{chunk-3VZ6CYY2.mjs → chunk-GAXNO4JB.mjs} +1 -1
- package/dist/{chunk-3WGFIFP6.mjs → chunk-I4P7RXAE.mjs} +1 -1
- package/dist/{chunk-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/{chunk-54TRNCID.mjs → chunk-ZMTCMP2G.mjs} +8 -8
- package/dist/components/ui/advisor-card.js +144 -55
- package/dist/components/ui/advisor-card.mjs +5 -2
- package/dist/components/ui/agent-evaluation-toast.js +1 -1
- package/dist/components/ui/agent-evaluation-toast.mjs +2 -2
- package/dist/components/ui/ai-assistant-drawer.js +1 -1
- package/dist/components/ui/ai-assistant-drawer.mjs +2 -2
- package/dist/components/ui/ai-builder.js +1 -1
- package/dist/components/ui/ai-builder.mjs +2 -2
- package/dist/components/ui/ai-conversations.js +1 -1
- package/dist/components/ui/ai-conversations.mjs +3 -3
- package/dist/components/ui/appointment-action-dialogs.js +1 -1
- package/dist/components/ui/appointment-action-dialogs.mjs +3 -3
- package/dist/components/ui/appointment-book-dialog.js +19 -4
- package/dist/components/ui/appointment-book-dialog.mjs +3 -3
- package/dist/components/ui/appointment-calendar-view.js +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/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 +457 -188
- package/dist/index.mjs +44 -42
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/components/index.tsx +4 -0
- package/src/components/ui/advisor-card.tsx +75 -25
- package/src/components/ui/appointment-book-dialog.tsx +26 -3
- package/src/components/ui/appointment-time-slot-picker.tsx +1 -0
- package/src/components/ui/badge.tsx +1 -1
- package/src/components/ui/contact-alert-dialog/contact-alert-dialog.tsx +19 -1
- package/src/components/ui/opportunity-card.tsx +56 -20
- package/src/components/ui/share-details-dialog.tsx +251 -0
- package/src/styles/styles-css.ts +1 -1
- package/dist/chunk-OZ2R6ERP.mjs +0 -174
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: {
|
|
@@ -3654,6 +3655,7 @@ function AdvisorCard({
|
|
|
3654
3655
|
isPrimary = false,
|
|
3655
3656
|
appointments,
|
|
3656
3657
|
onRefer,
|
|
3658
|
+
menuItems,
|
|
3657
3659
|
onMoreOptions,
|
|
3658
3660
|
onBookAppointment,
|
|
3659
3661
|
onViewAppointment
|
|
@@ -3664,17 +3666,17 @@ function AdvisorCard({
|
|
|
3664
3666
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-start gap-4 p-4", children: [
|
|
3665
3667
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Avatar, { className: "h-10 w-10 shrink-0", children: [
|
|
3666
3668
|
companyLogoUrl && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AvatarImage, { src: companyLogoUrl, alt: `${name} company logo` }),
|
|
3667
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AvatarFallback, { className: "text-
|
|
3669
|
+
/* @__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
3670
|
] }),
|
|
3669
3671
|
/* @__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-
|
|
3672
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-label-large leading-tight", children: name }),
|
|
3673
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-body-small text-muted-foreground", children: role }),
|
|
3672
3674
|
/* @__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-
|
|
3675
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-1.5 text-body-small text-muted-foreground", children: [
|
|
3674
3676
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react7.Phone, { className: "h-4 w-4 shrink-0" }),
|
|
3675
3677
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: phone })
|
|
3676
3678
|
] }),
|
|
3677
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-1.5 text-
|
|
3679
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-1.5 text-body-small text-muted-foreground", children: [
|
|
3678
3680
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react7.Mail, { className: "h-4 w-4 shrink-0" }),
|
|
3679
3681
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: email })
|
|
3680
3682
|
] })
|
|
@@ -3682,7 +3684,33 @@ function AdvisorCard({
|
|
|
3682
3684
|
] }),
|
|
3683
3685
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex shrink-0 items-center gap-1.5", children: [
|
|
3684
3686
|
isPrimary && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Badge, { variant: "success", children: "Primary" }),
|
|
3685
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.
|
|
3687
|
+
menuItems && menuItems.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(DropdownMenu, { children: [
|
|
3688
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3689
|
+
DropdownMenuTrigger,
|
|
3690
|
+
{
|
|
3691
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3692
|
+
Button,
|
|
3693
|
+
{
|
|
3694
|
+
variant: "ghost",
|
|
3695
|
+
size: "icon",
|
|
3696
|
+
className: "h-7 w-7",
|
|
3697
|
+
"aria-label": "More options"
|
|
3698
|
+
}
|
|
3699
|
+
),
|
|
3700
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react7.MoreVertical, { className: "h-4 w-4" })
|
|
3701
|
+
}
|
|
3702
|
+
),
|
|
3703
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DropdownMenuContent, { align: "end", children: menuItems.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3704
|
+
DropdownMenuItem,
|
|
3705
|
+
{
|
|
3706
|
+
variant: item.variant,
|
|
3707
|
+
disabled: item.disabled,
|
|
3708
|
+
onClick: item.onClick,
|
|
3709
|
+
children: item.label
|
|
3710
|
+
},
|
|
3711
|
+
i
|
|
3712
|
+
)) })
|
|
3713
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3686
3714
|
Button,
|
|
3687
3715
|
{
|
|
3688
3716
|
variant: "ghost",
|
|
@@ -3707,17 +3735,10 @@ function AdvisorCard({
|
|
|
3707
3735
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react7.CalendarCheck, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
|
|
3708
3736
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
|
|
3709
3737
|
/* @__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 })
|
|
3738
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Badge, { variant: STATUS_VARIANT[appt.status], children: STATUS_LABEL[appt.status] }),
|
|
3739
|
+
appt.appointmentType && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "truncate text-h6", children: appt.appointmentType })
|
|
3719
3740
|
] }),
|
|
3720
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("p", { className: "whitespace-nowrap text-
|
|
3741
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("p", { className: "whitespace-nowrap text-body-small text-muted-foreground", children: [
|
|
3721
3742
|
appt.date,
|
|
3722
3743
|
" \xB7 ",
|
|
3723
3744
|
appt.timeStart,
|
|
@@ -3745,7 +3766,7 @@ function AdvisorCard({
|
|
|
3745
3766
|
/* Empty state */
|
|
3746
3767
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-3 px-4 py-3", children: [
|
|
3747
3768
|
/* @__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-
|
|
3769
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "flex-1 text-caption text-muted-foreground", children: "No upcoming appointments" })
|
|
3749
3770
|
] })
|
|
3750
3771
|
)
|
|
3751
3772
|
] }),
|
|
@@ -3764,7 +3785,7 @@ function AdvisorCard({
|
|
|
3764
3785
|
onRefer && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
3765
3786
|
Button,
|
|
3766
3787
|
{
|
|
3767
|
-
variant: "
|
|
3788
|
+
variant: "default",
|
|
3768
3789
|
size: "sm",
|
|
3769
3790
|
className: "w-full",
|
|
3770
3791
|
onClick: onRefer,
|
|
@@ -3788,8 +3809,8 @@ function AdvisorInviteCard({ onInvite }) {
|
|
|
3788
3809
|
children: [
|
|
3789
3810
|
/* @__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
3811
|
/* @__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-
|
|
3812
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-label-large", children: "Add Another Advisor" }),
|
|
3813
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-caption text-muted-foreground", children: "Connect more advisors to your account" })
|
|
3793
3814
|
] })
|
|
3794
3815
|
]
|
|
3795
3816
|
}
|
|
@@ -8904,6 +8925,19 @@ var FORMAT_OPTIONS = [
|
|
|
8904
8925
|
icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.MapPin, { className: "h-4 w-4" })
|
|
8905
8926
|
}
|
|
8906
8927
|
];
|
|
8928
|
+
var CLIENT_FORMAT_OPTIONS = [
|
|
8929
|
+
{ value: "call", label: "Call", icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.Phone, { className: "h-4 w-4" }) },
|
|
8930
|
+
{
|
|
8931
|
+
value: "online",
|
|
8932
|
+
label: "Online Meeting",
|
|
8933
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.Video, { className: "h-4 w-4" })
|
|
8934
|
+
},
|
|
8935
|
+
{
|
|
8936
|
+
value: "offline",
|
|
8937
|
+
label: "Offline Meeting",
|
|
8938
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.MapPin, { className: "h-4 w-4" })
|
|
8939
|
+
}
|
|
8940
|
+
];
|
|
8907
8941
|
function MeetingFormatSection({
|
|
8908
8942
|
format: format5,
|
|
8909
8943
|
onFormatChange,
|
|
@@ -8913,10 +8947,11 @@ function MeetingFormatSection({
|
|
|
8913
8947
|
onCustomAddressChange,
|
|
8914
8948
|
advisorOfficeAddress,
|
|
8915
8949
|
clientHomeAddress,
|
|
8916
|
-
isClientMode
|
|
8950
|
+
isClientMode,
|
|
8951
|
+
formatOptions
|
|
8917
8952
|
}) {
|
|
8918
8953
|
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:
|
|
8954
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "flex gap-2", children: formatOptions.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
8920
8955
|
Toggle,
|
|
8921
8956
|
{
|
|
8922
8957
|
variant: "outline",
|
|
@@ -9209,7 +9244,8 @@ function AppointmentBookDialog({
|
|
|
9209
9244
|
onCustomAddressChange: setCustomAddress,
|
|
9210
9245
|
advisorOfficeAddress,
|
|
9211
9246
|
clientHomeAddress,
|
|
9212
|
-
isClientMode
|
|
9247
|
+
isClientMode,
|
|
9248
|
+
formatOptions: isClientMode ? CLIENT_FORMAT_OPTIONS : FORMAT_OPTIONS
|
|
9213
9249
|
}
|
|
9214
9250
|
)
|
|
9215
9251
|
] }),
|
|
@@ -14117,6 +14153,7 @@ function ReviewAlertsDialog({
|
|
|
14117
14153
|
|
|
14118
14154
|
// src/components/ui/contact-alert-dialog/contact-alert-dialog.tsx
|
|
14119
14155
|
var React33 = __toESM(require("react"));
|
|
14156
|
+
var import_lucide_react42 = require("lucide-react");
|
|
14120
14157
|
var import_ui4 = require("@react-awesome-query-builder/ui");
|
|
14121
14158
|
|
|
14122
14159
|
// src/components/ui/contact-alert-dialog/types.ts
|
|
@@ -15064,7 +15101,24 @@ function ContactAlertDialog({
|
|
|
15064
15101
|
size: "sm",
|
|
15065
15102
|
value: severity,
|
|
15066
15103
|
onValueChange: (v) => v && setSeverity(v),
|
|
15067
|
-
children: ["NEED_ACTION", "WATCH", "HEALTHY"].map((s) => /* @__PURE__ */ (0, import_jsx_runtime77.
|
|
15104
|
+
children: ["NEED_ACTION", "WATCH", "HEALTHY"].map((s) => /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
|
|
15105
|
+
ToggleGroupItem,
|
|
15106
|
+
{
|
|
15107
|
+
value: s,
|
|
15108
|
+
className: cn(
|
|
15109
|
+
s === "NEED_ACTION" && "data-pressed:bg-destructive/10 data-pressed:inset-ring-destructive data-pressed:text-destructive-text data-pressed:hover:bg-destructive/10",
|
|
15110
|
+
s === "WATCH" && "data-pressed:bg-warning/10 data-pressed:inset-ring-warning data-pressed:text-warning-text data-pressed:hover:bg-warning/10",
|
|
15111
|
+
s === "HEALTHY" && "data-pressed:bg-info/10 data-pressed:inset-ring-info data-pressed:text-info-text data-pressed:hover:bg-info/10"
|
|
15112
|
+
),
|
|
15113
|
+
children: [
|
|
15114
|
+
s === "NEED_ACTION" && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react42.AlertCircleIcon, { className: "size-3.5" }),
|
|
15115
|
+
s === "WATCH" && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react42.EyeIcon, { className: "size-3.5" }),
|
|
15116
|
+
s === "HEALTHY" && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react42.InfoIcon, { className: "size-3.5" }),
|
|
15117
|
+
SEVERITY_LABELS[s]
|
|
15118
|
+
]
|
|
15119
|
+
},
|
|
15120
|
+
s
|
|
15121
|
+
))
|
|
15068
15122
|
}
|
|
15069
15123
|
)
|
|
15070
15124
|
] }),
|
|
@@ -15118,7 +15172,7 @@ function ContactAlertDialog({
|
|
|
15118
15172
|
|
|
15119
15173
|
// src/components/ui/share-details-dialog.tsx
|
|
15120
15174
|
var React34 = __toESM(require("react"));
|
|
15121
|
-
var
|
|
15175
|
+
var import_lucide_react43 = require("lucide-react");
|
|
15122
15176
|
var import_jsx_runtime78 = require("react/jsx-runtime");
|
|
15123
15177
|
function Field3({
|
|
15124
15178
|
id,
|
|
@@ -15177,7 +15231,7 @@ function ShareDetailsDialog({
|
|
|
15177
15231
|
onClick: handleCopy,
|
|
15178
15232
|
"aria-label": copied ? "Copied" : "Copy link",
|
|
15179
15233
|
className: "shrink-0",
|
|
15180
|
-
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15234
|
+
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
15235
|
}
|
|
15182
15236
|
)
|
|
15183
15237
|
] }),
|
|
@@ -15262,10 +15316,201 @@ function EmailTemplateDialog({
|
|
|
15262
15316
|
] })
|
|
15263
15317
|
] }) });
|
|
15264
15318
|
}
|
|
15319
|
+
function ShareContactDialog({
|
|
15320
|
+
open,
|
|
15321
|
+
onOpenChange,
|
|
15322
|
+
contactName,
|
|
15323
|
+
internalAdvisors,
|
|
15324
|
+
onShareInternal,
|
|
15325
|
+
onShareExternal,
|
|
15326
|
+
isSending = false,
|
|
15327
|
+
className
|
|
15328
|
+
}) {
|
|
15329
|
+
const [tab, setTab] = React34.useState("internal");
|
|
15330
|
+
const [search, setSearch] = React34.useState("");
|
|
15331
|
+
const [selectedId, setSelectedId] = React34.useState(null);
|
|
15332
|
+
const [internalNotes, setInternalNotes] = React34.useState("");
|
|
15333
|
+
const [firstName, setFirstName] = React34.useState("");
|
|
15334
|
+
const [lastName, setLastName] = React34.useState("");
|
|
15335
|
+
const [email, setEmail] = React34.useState("");
|
|
15336
|
+
const [externalNotes, setExternalNotes] = React34.useState("");
|
|
15337
|
+
function reset() {
|
|
15338
|
+
setTab("internal");
|
|
15339
|
+
setSearch("");
|
|
15340
|
+
setSelectedId(null);
|
|
15341
|
+
setInternalNotes("");
|
|
15342
|
+
setFirstName("");
|
|
15343
|
+
setLastName("");
|
|
15344
|
+
setEmail("");
|
|
15345
|
+
setExternalNotes("");
|
|
15346
|
+
}
|
|
15347
|
+
function handleOpenChange(v) {
|
|
15348
|
+
if (!v) reset();
|
|
15349
|
+
onOpenChange(v);
|
|
15350
|
+
}
|
|
15351
|
+
const filtered = internalAdvisors.filter((a) => {
|
|
15352
|
+
const q = search.toLowerCase();
|
|
15353
|
+
return a.name.toLowerCase().includes(q) || a.role.toLowerCase().includes(q);
|
|
15354
|
+
});
|
|
15355
|
+
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: [
|
|
15356
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(DialogHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(DialogTitle, { children: "Share Contact's Information" }) }),
|
|
15357
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("p", { className: "text-sm text-muted-foreground", children: [
|
|
15358
|
+
"Share",
|
|
15359
|
+
" ",
|
|
15360
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "font-medium text-foreground", children: contactName }),
|
|
15361
|
+
"'s information with an advisor."
|
|
15362
|
+
] }),
|
|
15363
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(Tabs, { value: tab, onValueChange: setTab, children: [
|
|
15364
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(TabsList, { className: "w-full", children: [
|
|
15365
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(TabsTrigger, { value: "internal", className: "flex-1", children: "Internal Advisor" }),
|
|
15366
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(TabsTrigger, { value: "external", className: "flex-1", children: "External / Referral" })
|
|
15367
|
+
] }),
|
|
15368
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(TabsContent, { value: "internal", className: "mt-4 flex flex-col gap-4", children: [
|
|
15369
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Field3, { label: "Search Advisor", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15370
|
+
Input,
|
|
15371
|
+
{
|
|
15372
|
+
placeholder: "Search by name or role\u2026",
|
|
15373
|
+
value: search,
|
|
15374
|
+
onChange: (e) => setSearch(e.target.value)
|
|
15375
|
+
}
|
|
15376
|
+
) }),
|
|
15377
|
+
/* @__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) => {
|
|
15378
|
+
const isSelected = selectedId === a.id;
|
|
15379
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
|
|
15380
|
+
"button",
|
|
15381
|
+
{
|
|
15382
|
+
type: "button",
|
|
15383
|
+
onClick: () => setSelectedId(a.id),
|
|
15384
|
+
className: cn(
|
|
15385
|
+
"flex w-full items-center gap-3 px-3 py-2.5 text-left transition-colors hover:bg-muted/40",
|
|
15386
|
+
isSelected && "bg-primary/5"
|
|
15387
|
+
),
|
|
15388
|
+
children: [
|
|
15389
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15390
|
+
"div",
|
|
15391
|
+
{
|
|
15392
|
+
className: cn(
|
|
15393
|
+
"flex size-4 shrink-0 items-center justify-center rounded-full border-2",
|
|
15394
|
+
isSelected ? "border-primary" : "border-border bg-background"
|
|
15395
|
+
),
|
|
15396
|
+
children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "size-2 rounded-full bg-primary" })
|
|
15397
|
+
}
|
|
15398
|
+
),
|
|
15399
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { children: [
|
|
15400
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("p", { className: "text-sm font-medium", children: a.name }),
|
|
15401
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
|
|
15402
|
+
a.role,
|
|
15403
|
+
" \xB7 ",
|
|
15404
|
+
a.practice
|
|
15405
|
+
] })
|
|
15406
|
+
] })
|
|
15407
|
+
]
|
|
15408
|
+
},
|
|
15409
|
+
a.id
|
|
15410
|
+
);
|
|
15411
|
+
}) }),
|
|
15412
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Field3, { id: "sc-int-notes", label: "Notes", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15413
|
+
Textarea,
|
|
15414
|
+
{
|
|
15415
|
+
id: "sc-int-notes",
|
|
15416
|
+
placeholder: "Optional message for the advisor\u2026",
|
|
15417
|
+
rows: 3,
|
|
15418
|
+
value: internalNotes,
|
|
15419
|
+
onChange: (e) => setInternalNotes(e.target.value),
|
|
15420
|
+
disabled: isSending
|
|
15421
|
+
}
|
|
15422
|
+
) })
|
|
15423
|
+
] }),
|
|
15424
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(TabsContent, { value: "external", className: "mt-4 flex flex-col gap-4", children: [
|
|
15425
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
15426
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Field3, { id: "sc-first", label: "First Name", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15427
|
+
Input,
|
|
15428
|
+
{
|
|
15429
|
+
id: "sc-first",
|
|
15430
|
+
placeholder: "First name",
|
|
15431
|
+
value: firstName,
|
|
15432
|
+
onChange: (e) => setFirstName(e.target.value),
|
|
15433
|
+
disabled: isSending
|
|
15434
|
+
}
|
|
15435
|
+
) }),
|
|
15436
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Field3, { id: "sc-last", label: "Last Name", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15437
|
+
Input,
|
|
15438
|
+
{
|
|
15439
|
+
id: "sc-last",
|
|
15440
|
+
placeholder: "Last name",
|
|
15441
|
+
value: lastName,
|
|
15442
|
+
onChange: (e) => setLastName(e.target.value),
|
|
15443
|
+
disabled: isSending
|
|
15444
|
+
}
|
|
15445
|
+
) })
|
|
15446
|
+
] }),
|
|
15447
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Field3, { id: "sc-email", label: "Email", required: true, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15448
|
+
Input,
|
|
15449
|
+
{
|
|
15450
|
+
id: "sc-email",
|
|
15451
|
+
type: "email",
|
|
15452
|
+
placeholder: "advisor@company.com.au",
|
|
15453
|
+
value: email,
|
|
15454
|
+
onChange: (e) => setEmail(e.target.value),
|
|
15455
|
+
disabled: isSending
|
|
15456
|
+
}
|
|
15457
|
+
) }),
|
|
15458
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Field3, { id: "sc-ext-notes", label: "Notes", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15459
|
+
Textarea,
|
|
15460
|
+
{
|
|
15461
|
+
id: "sc-ext-notes",
|
|
15462
|
+
placeholder: "Optional message\u2026",
|
|
15463
|
+
rows: 3,
|
|
15464
|
+
value: externalNotes,
|
|
15465
|
+
onChange: (e) => setExternalNotes(e.target.value),
|
|
15466
|
+
disabled: isSending
|
|
15467
|
+
}
|
|
15468
|
+
) })
|
|
15469
|
+
] })
|
|
15470
|
+
] }),
|
|
15471
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(DialogFooter, { children: [
|
|
15472
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15473
|
+
Button,
|
|
15474
|
+
{
|
|
15475
|
+
variant: "outline",
|
|
15476
|
+
onClick: () => handleOpenChange(false),
|
|
15477
|
+
disabled: isSending,
|
|
15478
|
+
children: "Cancel"
|
|
15479
|
+
}
|
|
15480
|
+
),
|
|
15481
|
+
tab === "internal" ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15482
|
+
Button,
|
|
15483
|
+
{
|
|
15484
|
+
onClick: () => onShareInternal(selectedId, internalNotes),
|
|
15485
|
+
disabled: !selectedId || isSending,
|
|
15486
|
+
children: isSending ? /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(import_jsx_runtime78.Fragment, { children: [
|
|
15487
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Spinner, { className: "size-3.5" }),
|
|
15488
|
+
"Sharing\u2026"
|
|
15489
|
+
] }) : "Share Contact"
|
|
15490
|
+
}
|
|
15491
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
15492
|
+
Button,
|
|
15493
|
+
{
|
|
15494
|
+
onClick: () => onShareExternal({
|
|
15495
|
+
firstName,
|
|
15496
|
+
lastName,
|
|
15497
|
+
email,
|
|
15498
|
+
notes: externalNotes
|
|
15499
|
+
}),
|
|
15500
|
+
disabled: !email || isSending,
|
|
15501
|
+
children: isSending ? /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(import_jsx_runtime78.Fragment, { children: [
|
|
15502
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Spinner, { className: "size-3.5" }),
|
|
15503
|
+
"Sending\u2026"
|
|
15504
|
+
] }) : "Send Invite"
|
|
15505
|
+
}
|
|
15506
|
+
)
|
|
15507
|
+
] })
|
|
15508
|
+
] }) });
|
|
15509
|
+
}
|
|
15265
15510
|
|
|
15266
15511
|
// src/components/ui/file-preview-dialog.tsx
|
|
15267
15512
|
var React35 = __toESM(require("react"));
|
|
15268
|
-
var
|
|
15513
|
+
var import_lucide_react44 = require("lucide-react");
|
|
15269
15514
|
|
|
15270
15515
|
// src/components/ui/progress.tsx
|
|
15271
15516
|
var import_progress = require("@base-ui/react/progress");
|
|
@@ -15310,14 +15555,14 @@ function LoadingState({ columnCount }) {
|
|
|
15310
15555
|
}
|
|
15311
15556
|
function EmptyState() {
|
|
15312
15557
|
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)(
|
|
15558
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react44.FileTextIcon, { className: "size-10 text-muted-foreground/40" }),
|
|
15314
15559
|
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("p", { className: "text-sm font-medium text-foreground", children: "No data found" }),
|
|
15315
15560
|
/* @__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
15561
|
] });
|
|
15317
15562
|
}
|
|
15318
15563
|
function ErrorState({ message }) {
|
|
15319
15564
|
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)(
|
|
15565
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react44.AlertCircleIcon, { className: "size-10 text-destructive/60" }),
|
|
15321
15566
|
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("p", { className: "text-sm font-medium text-foreground", children: "Unable to parse file" }),
|
|
15322
15567
|
/* @__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
15568
|
] });
|
|
@@ -15350,11 +15595,11 @@ function ImportingState({
|
|
|
15350
15595
|
function RowStatusCell({ row }) {
|
|
15351
15596
|
const { _status, _statusMessage } = row;
|
|
15352
15597
|
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)(
|
|
15598
|
+
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
15599
|
}
|
|
15355
15600
|
if (_status === "failed") {
|
|
15356
15601
|
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)(
|
|
15602
|
+
/* @__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
15603
|
_statusMessage && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(TooltipContent, { side: "top", children: _statusMessage })
|
|
15359
15604
|
] }) });
|
|
15360
15605
|
}
|
|
@@ -15493,7 +15738,7 @@ function FilePreviewDialog({
|
|
|
15493
15738
|
"aria-label": `Delete row ${absoluteIdx + 1}`,
|
|
15494
15739
|
onClick: () => onRowDelete(absoluteIdx),
|
|
15495
15740
|
className: "text-muted-foreground hover:text-destructive",
|
|
15496
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
15741
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react44.Trash2Icon, { className: "size-3.5" })
|
|
15497
15742
|
}
|
|
15498
15743
|
) })
|
|
15499
15744
|
]
|
|
@@ -15550,7 +15795,7 @@ function FilePreviewDialog({
|
|
|
15550
15795
|
// src/components/ui/data-table.tsx
|
|
15551
15796
|
var React36 = __toESM(require("react"));
|
|
15552
15797
|
var import_react_table = require("@tanstack/react-table");
|
|
15553
|
-
var
|
|
15798
|
+
var import_lucide_react45 = require("lucide-react");
|
|
15554
15799
|
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
15555
15800
|
function DataTableColumnHeader({
|
|
15556
15801
|
column,
|
|
@@ -15563,11 +15808,11 @@ function DataTableColumnHeader({
|
|
|
15563
15808
|
const sorted = column.getIsSorted();
|
|
15564
15809
|
let sortIcon;
|
|
15565
15810
|
if (sorted === "asc") {
|
|
15566
|
-
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
15811
|
+
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react45.ArrowUp, { className: "ml-1 size-3.5" });
|
|
15567
15812
|
} else if (sorted === "desc") {
|
|
15568
|
-
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
15813
|
+
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react45.ArrowDown, { className: "ml-1 size-3.5" });
|
|
15569
15814
|
} else {
|
|
15570
|
-
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
15815
|
+
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react45.ArrowUpDown, { className: "ml-1 size-3.5" });
|
|
15571
15816
|
}
|
|
15572
15817
|
return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
|
|
15573
15818
|
Button,
|
|
@@ -15654,7 +15899,7 @@ function DataTableToolbar({
|
|
|
15654
15899
|
}
|
|
15655
15900
|
),
|
|
15656
15901
|
children: [
|
|
15657
|
-
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
15902
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react45.SlidersHorizontal, { className: "size-3.5" }),
|
|
15658
15903
|
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "hidden sm:inline", children: "Columns" })
|
|
15659
15904
|
]
|
|
15660
15905
|
}
|
|
@@ -15891,13 +16136,13 @@ function DataTable({
|
|
|
15891
16136
|
|
|
15892
16137
|
// src/components/ui/applicant-document-checklist.tsx
|
|
15893
16138
|
var React37 = __toESM(require("react"));
|
|
15894
|
-
var
|
|
16139
|
+
var import_lucide_react46 = require("lucide-react");
|
|
15895
16140
|
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
15896
16141
|
function StatusIcon({ status }) {
|
|
15897
16142
|
if (status === "uploaded") {
|
|
15898
|
-
return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
16143
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react46.CheckCircle2, { className: "size-5 shrink-0 text-primary" });
|
|
15899
16144
|
}
|
|
15900
|
-
return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
16145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react46.Circle, { className: "size-5 shrink-0 text-muted-foreground" });
|
|
15901
16146
|
}
|
|
15902
16147
|
function ApplicantDocumentChecklist({
|
|
15903
16148
|
applicantName,
|
|
@@ -15979,7 +16224,7 @@ function ApplicantDocumentChecklist({
|
|
|
15979
16224
|
return (_a = inputRefs.current[item.id]) == null ? void 0 : _a.click();
|
|
15980
16225
|
},
|
|
15981
16226
|
children: [
|
|
15982
|
-
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
16227
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react46.Upload, { className: "size-3.5" }),
|
|
15983
16228
|
"Upload"
|
|
15984
16229
|
]
|
|
15985
16230
|
}
|
|
@@ -16004,7 +16249,7 @@ function ApplicantDocumentChecklist({
|
|
|
16004
16249
|
|
|
16005
16250
|
// src/components/ui/document-checklist-template.tsx
|
|
16006
16251
|
var import_react27 = require("react");
|
|
16007
|
-
var
|
|
16252
|
+
var import_lucide_react47 = require("lucide-react");
|
|
16008
16253
|
var import_jsx_runtime83 = require("react/jsx-runtime");
|
|
16009
16254
|
var DOCUMENT_TYPES = [
|
|
16010
16255
|
"Income Verification",
|
|
@@ -16103,7 +16348,7 @@ function DocumentChecklistTemplate({
|
|
|
16103
16348
|
{
|
|
16104
16349
|
className: cn("grid items-center gap-3 px-6 py-3", COLS),
|
|
16105
16350
|
children: [
|
|
16106
|
-
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16351
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_lucide_react47.GripVertical, { className: "size-4 shrink-0 text-muted-foreground/30" }),
|
|
16107
16352
|
cat.custom ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16108
16353
|
Input,
|
|
16109
16354
|
{
|
|
@@ -16150,7 +16395,7 @@ function DocumentChecklistTemplate({
|
|
|
16150
16395
|
size: "icon",
|
|
16151
16396
|
className: "size-8 text-muted-foreground hover:text-destructive",
|
|
16152
16397
|
onClick: () => handleDelete(cat.id),
|
|
16153
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16398
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_lucide_react47.Trash2, { className: "size-4" })
|
|
16154
16399
|
}
|
|
16155
16400
|
)
|
|
16156
16401
|
]
|
|
@@ -16165,7 +16410,7 @@ function DocumentChecklistTemplate({
|
|
|
16165
16410
|
className: "gap-1.5",
|
|
16166
16411
|
onClick: handleAdd,
|
|
16167
16412
|
children: [
|
|
16168
|
-
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
16413
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_lucide_react47.Plus, { className: "size-4" }),
|
|
16169
16414
|
"Add Category"
|
|
16170
16415
|
]
|
|
16171
16416
|
}
|
|
@@ -16501,7 +16746,7 @@ function ExpenseBarChart({
|
|
|
16501
16746
|
|
|
16502
16747
|
// src/components/ui/financial-cards.tsx
|
|
16503
16748
|
var React39 = __toESM(require("react"));
|
|
16504
|
-
var
|
|
16749
|
+
var import_lucide_react48 = require("lucide-react");
|
|
16505
16750
|
|
|
16506
16751
|
// src/components/ui/financial-primitives.tsx
|
|
16507
16752
|
var import_jsx_runtime86 = require("react/jsx-runtime");
|
|
@@ -16684,7 +16929,7 @@ function PropertyCard({
|
|
|
16684
16929
|
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "flex-1 min-w-0 truncate text-label-medium text-foreground", children: address }),
|
|
16685
16930
|
type && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Badge, { className: "shrink-0", variant: "outline", children: type }),
|
|
16686
16931
|
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
16687
|
-
|
|
16932
|
+
import_lucide_react48.ChevronDown,
|
|
16688
16933
|
{
|
|
16689
16934
|
className: cn(
|
|
16690
16935
|
"h-5 w-5 shrink-0 text-muted-foreground transition-transform duration-200",
|
|
@@ -17326,35 +17571,35 @@ function IncomeCard({
|
|
|
17326
17571
|
);
|
|
17327
17572
|
}
|
|
17328
17573
|
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:
|
|
17574
|
+
groceries: import_lucide_react48.ShoppingCart,
|
|
17575
|
+
"dining out": import_lucide_react48.UtensilsCrossed,
|
|
17576
|
+
dining: import_lucide_react48.UtensilsCrossed,
|
|
17577
|
+
restaurants: import_lucide_react48.UtensilsCrossed,
|
|
17578
|
+
transport: import_lucide_react48.Car,
|
|
17579
|
+
transportation: import_lucide_react48.Car,
|
|
17580
|
+
vehicle: import_lucide_react48.Car,
|
|
17581
|
+
utilities: import_lucide_react48.Zap,
|
|
17582
|
+
electricity: import_lucide_react48.Zap,
|
|
17583
|
+
insurance: import_lucide_react48.Shield,
|
|
17584
|
+
"council rates": import_lucide_react48.Landmark,
|
|
17585
|
+
council: import_lucide_react48.Landmark,
|
|
17586
|
+
rates: import_lucide_react48.Landmark,
|
|
17587
|
+
medical: import_lucide_react48.HeartPulse,
|
|
17588
|
+
health: import_lucide_react48.HeartPulse,
|
|
17589
|
+
subscriptions: import_lucide_react48.RefreshCw,
|
|
17590
|
+
subscription: import_lucide_react48.RefreshCw,
|
|
17591
|
+
"credit card": import_lucide_react48.CreditCard,
|
|
17592
|
+
education: import_lucide_react48.GraduationCap,
|
|
17593
|
+
childcare: import_lucide_react48.Baby,
|
|
17594
|
+
entertainment: import_lucide_react48.Tv,
|
|
17595
|
+
gym: import_lucide_react48.Dumbbell,
|
|
17596
|
+
fitness: import_lucide_react48.Dumbbell,
|
|
17597
|
+
clothing: import_lucide_react48.Shirt,
|
|
17598
|
+
rent: import_lucide_react48.Building2
|
|
17354
17599
|
};
|
|
17355
17600
|
function getExpenseIcon(expenseType) {
|
|
17356
17601
|
var _a;
|
|
17357
|
-
return (_a = EXPENSE_ICON_MAP[expenseType.toLowerCase()]) != null ? _a :
|
|
17602
|
+
return (_a = EXPENSE_ICON_MAP[expenseType.toLowerCase()]) != null ? _a : import_lucide_react48.Receipt;
|
|
17358
17603
|
}
|
|
17359
17604
|
function ExpensesCard({
|
|
17360
17605
|
items,
|
|
@@ -17405,7 +17650,7 @@ function ExpensesCard({
|
|
|
17405
17650
|
}
|
|
17406
17651
|
|
|
17407
17652
|
// src/components/ui/financial-drawers.tsx
|
|
17408
|
-
var
|
|
17653
|
+
var import_lucide_react49 = require("lucide-react");
|
|
17409
17654
|
var import_jsx_runtime88 = require("react/jsx-runtime");
|
|
17410
17655
|
function SummaryReportDrawer({
|
|
17411
17656
|
open,
|
|
@@ -17487,7 +17732,7 @@ function SummaryReportDrawer({
|
|
|
17487
17732
|
size: "icon-sm",
|
|
17488
17733
|
onClick: () => onOpenChange(false),
|
|
17489
17734
|
"aria-label": "Close drawer",
|
|
17490
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
17735
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_lucide_react49.X, { className: "h-4 w-4" })
|
|
17491
17736
|
}
|
|
17492
17737
|
)
|
|
17493
17738
|
] }),
|
|
@@ -17564,7 +17809,7 @@ function OpportunityDetailsDrawer({
|
|
|
17564
17809
|
size: "icon-sm",
|
|
17565
17810
|
onClick: () => onOpenChange(false),
|
|
17566
17811
|
"aria-label": "Close drawer",
|
|
17567
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
17812
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_lucide_react49.X, { className: "h-4 w-4" })
|
|
17568
17813
|
}
|
|
17569
17814
|
) })
|
|
17570
17815
|
] }),
|
|
@@ -18140,7 +18385,7 @@ function IncomeBarChart({
|
|
|
18140
18385
|
// src/components/ui/input-otp.tsx
|
|
18141
18386
|
var React42 = __toESM(require("react"));
|
|
18142
18387
|
var import_input_otp = require("input-otp");
|
|
18143
|
-
var
|
|
18388
|
+
var import_lucide_react50 = require("lucide-react");
|
|
18144
18389
|
var import_jsx_runtime91 = require("react/jsx-runtime");
|
|
18145
18390
|
function InputOTP(_a) {
|
|
18146
18391
|
var _b = _a, {
|
|
@@ -18206,11 +18451,11 @@ function InputOTPSlot(_a) {
|
|
|
18206
18451
|
}
|
|
18207
18452
|
function InputOTPSeparator(_a) {
|
|
18208
18453
|
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)(
|
|
18454
|
+
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
18455
|
}
|
|
18211
18456
|
|
|
18212
18457
|
// src/components/ui/integration-card.tsx
|
|
18213
|
-
var
|
|
18458
|
+
var import_lucide_react51 = require("lucide-react");
|
|
18214
18459
|
var import_jsx_runtime92 = require("react/jsx-runtime");
|
|
18215
18460
|
function IntegrationCard({
|
|
18216
18461
|
name,
|
|
@@ -18244,7 +18489,7 @@ function IntegrationCard({
|
|
|
18244
18489
|
) : /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "flex h-9 w-9 items-center justify-center", children: logoFallback }) }),
|
|
18245
18490
|
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { className: "text-label-medium", children: name }),
|
|
18246
18491
|
connected && /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Badge, { variant: "success", className: "gap-1", children: [
|
|
18247
|
-
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
|
|
18492
|
+
/* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_lucide_react51.Check, { className: "h-3 w-3" }),
|
|
18248
18493
|
"Connected"
|
|
18249
18494
|
] })
|
|
18250
18495
|
] }),
|
|
@@ -18283,11 +18528,11 @@ function SelectableCard({
|
|
|
18283
18528
|
|
|
18284
18529
|
// src/components/ui/kanban-column.tsx
|
|
18285
18530
|
var React43 = __toESM(require("react"));
|
|
18286
|
-
var
|
|
18531
|
+
var import_lucide_react53 = require("lucide-react");
|
|
18287
18532
|
|
|
18288
18533
|
// src/components/ui/opportunity-card.tsx
|
|
18289
18534
|
var import_react31 = require("react");
|
|
18290
|
-
var
|
|
18535
|
+
var import_lucide_react52 = require("lucide-react");
|
|
18291
18536
|
|
|
18292
18537
|
// src/components/ui/pipeline-primitives.tsx
|
|
18293
18538
|
var import_jsx_runtime94 = require("react/jsx-runtime");
|
|
@@ -18447,7 +18692,7 @@ function TaskViewCard({
|
|
|
18447
18692
|
className: "flex items-center gap-1.5 text-sm font-semibold",
|
|
18448
18693
|
style: { color: "var(--color-success-text)" },
|
|
18449
18694
|
children: [
|
|
18450
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18695
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Check, { className: "size-3.5 shrink-0" }),
|
|
18451
18696
|
"All tasks complete"
|
|
18452
18697
|
]
|
|
18453
18698
|
}
|
|
@@ -18517,7 +18762,7 @@ function TaskViewCard({
|
|
|
18517
18762
|
className: "flex w-full items-center justify-between text-xs text-muted-foreground hover:text-foreground",
|
|
18518
18763
|
children: [
|
|
18519
18764
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1", children: [
|
|
18520
|
-
subtasksExpanded ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18765
|
+
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
18766
|
"Subtasks"
|
|
18522
18767
|
] }),
|
|
18523
18768
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { children: [
|
|
@@ -18556,7 +18801,7 @@ function TaskViewCard({
|
|
|
18556
18801
|
"size-7 shrink-0"
|
|
18557
18802
|
),
|
|
18558
18803
|
"aria-label": "Opportunity actions",
|
|
18559
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18804
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.MoreVertical, { className: "size-4" })
|
|
18560
18805
|
}
|
|
18561
18806
|
),
|
|
18562
18807
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
@@ -18703,7 +18948,7 @@ function OpportunityCard({
|
|
|
18703
18948
|
className: "flex items-center gap-1.5 rounded border border-warning/30 bg-warning/10 px-2 py-1 text-xs font-medium",
|
|
18704
18949
|
style: { color: "var(--color-warning-text)" },
|
|
18705
18950
|
children: [
|
|
18706
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18951
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Clock, { className: "size-3 shrink-0" }),
|
|
18707
18952
|
"On hold until ",
|
|
18708
18953
|
formatDateDayMonth(onHoldTo)
|
|
18709
18954
|
]
|
|
@@ -18731,7 +18976,7 @@ function OpportunityCard({
|
|
|
18731
18976
|
"size-7 shrink-0"
|
|
18732
18977
|
),
|
|
18733
18978
|
"aria-label": "Opportunity actions",
|
|
18734
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18979
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.MoreVertical, { className: "size-4" })
|
|
18735
18980
|
}
|
|
18736
18981
|
),
|
|
18737
18982
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
@@ -18750,32 +18995,32 @@ function OpportunityCard({
|
|
|
18750
18995
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
18751
18996
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "truncate text-sm font-semibold text-foreground", children: customerName }),
|
|
18752
18997
|
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)(
|
|
18998
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Users, { className: "size-3", "aria-hidden": "true" }),
|
|
18754
18999
|
"Joint"
|
|
18755
19000
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(Badge, { variant: "secondary", className: "shrink-0 gap-1", children: [
|
|
18756
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19001
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.User, { className: "size-3", "aria-hidden": "true" }),
|
|
18757
19002
|
"Individual"
|
|
18758
19003
|
] })
|
|
18759
19004
|
] }),
|
|
18760
19005
|
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)(
|
|
19006
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
18762
19007
|
customerPhone
|
|
18763
19008
|
] }),
|
|
18764
19009
|
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)(
|
|
19010
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
18766
19011
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "truncate", children: customerEmail })
|
|
18767
19012
|
] })
|
|
18768
19013
|
] }),
|
|
18769
19014
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Separator, {}),
|
|
18770
19015
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
18771
19016
|
/* @__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)(
|
|
19017
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Calendar, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
18773
19018
|
formatDateShort(date)
|
|
18774
19019
|
] }),
|
|
18775
19020
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5", children: [
|
|
18776
19021
|
daysSinceColumnChanged !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_jsx_runtime95.Fragment, { children: [
|
|
18777
19022
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18778
|
-
|
|
19023
|
+
import_lucide_react52.Clock,
|
|
18779
19024
|
{
|
|
18780
19025
|
className: "size-3 shrink-0",
|
|
18781
19026
|
style: { color: priorityTextColor },
|
|
@@ -18849,7 +19094,7 @@ function OpportunityCard({
|
|
|
18849
19094
|
] }) }),
|
|
18850
19095
|
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
19096
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
18852
|
-
|
|
19097
|
+
import_lucide_react52.ArrowRight,
|
|
18853
19098
|
{
|
|
18854
19099
|
className: "mt-0.5 size-3 shrink-0 text-primary",
|
|
18855
19100
|
"aria-hidden": "true"
|
|
@@ -18891,6 +19136,45 @@ function OpportunityCard({
|
|
|
18891
19136
|
}
|
|
18892
19137
|
);
|
|
18893
19138
|
}
|
|
19139
|
+
function normalizeUrl(url) {
|
|
19140
|
+
return `https://${url.replace(/^https?:\/\//, "")}`;
|
|
19141
|
+
}
|
|
19142
|
+
function LoanApplicationLink({ url }) {
|
|
19143
|
+
const [copied, setCopied] = (0, import_react31.useState)(false);
|
|
19144
|
+
const href = normalizeUrl(url);
|
|
19145
|
+
function handleCopy() {
|
|
19146
|
+
navigator.clipboard.writeText(href).then(() => {
|
|
19147
|
+
setCopied(true);
|
|
19148
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
19149
|
+
});
|
|
19150
|
+
}
|
|
19151
|
+
return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
19152
|
+
/* @__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." }),
|
|
19153
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-center gap-1.5", children: [
|
|
19154
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Link2, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
19155
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19156
|
+
"a",
|
|
19157
|
+
{
|
|
19158
|
+
href,
|
|
19159
|
+
target: "_blank",
|
|
19160
|
+
rel: "noreferrer",
|
|
19161
|
+
className: "min-w-0 flex-1 truncate text-body-small text-primary underline-offset-2 hover:underline",
|
|
19162
|
+
children: url
|
|
19163
|
+
}
|
|
19164
|
+
),
|
|
19165
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19166
|
+
"button",
|
|
19167
|
+
{
|
|
19168
|
+
type: "button",
|
|
19169
|
+
onClick: handleCopy,
|
|
19170
|
+
className: "shrink-0 rounded p-1 text-muted-foreground transition-colors hover:text-foreground",
|
|
19171
|
+
"aria-label": "Copy link",
|
|
19172
|
+
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" })
|
|
19173
|
+
}
|
|
19174
|
+
)
|
|
19175
|
+
] })
|
|
19176
|
+
] });
|
|
19177
|
+
}
|
|
18894
19178
|
function LeadCard({
|
|
18895
19179
|
customerName,
|
|
18896
19180
|
customerPhone,
|
|
@@ -18913,13 +19197,13 @@ function LeadCard({
|
|
|
18913
19197
|
children: [
|
|
18914
19198
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
|
|
18915
19199
|
/* @__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)(
|
|
19200
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "text-label-medium text-foreground", children: customerName }),
|
|
19201
|
+
customerPhone && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
|
|
19202
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Phone, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
|
|
18919
19203
|
customerPhone
|
|
18920
19204
|
] }),
|
|
18921
|
-
customerEmail && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5 text-
|
|
18922
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19205
|
+
customerEmail && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
|
|
19206
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.Mail, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
|
|
18923
19207
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "truncate", children: customerEmail })
|
|
18924
19208
|
] })
|
|
18925
19209
|
] }),
|
|
@@ -18932,7 +19216,7 @@ function LeadCard({
|
|
|
18932
19216
|
"-mr-1 -mt-1 size-7 shrink-0"
|
|
18933
19217
|
),
|
|
18934
19218
|
"aria-label": "Lead actions",
|
|
18935
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
19219
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react52.MoreVertical, { className: "size-4" })
|
|
18936
19220
|
}
|
|
18937
19221
|
),
|
|
18938
19222
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(DropdownMenuContent, { align: "end", children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
|
|
@@ -18958,23 +19242,7 @@ function LeadCard({
|
|
|
18958
19242
|
children: "Send Loan Application Request"
|
|
18959
19243
|
}
|
|
18960
19244
|
),
|
|
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
|
-
] })
|
|
19245
|
+
loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(LoanApplicationLink, { url: loanApplicationUrl })
|
|
18978
19246
|
] })
|
|
18979
19247
|
]
|
|
18980
19248
|
}
|
|
@@ -19067,7 +19335,7 @@ function KanbanColumn({
|
|
|
19067
19335
|
"-mr-1 size-7 shrink-0"
|
|
19068
19336
|
),
|
|
19069
19337
|
"aria-label": "Column actions",
|
|
19070
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
19338
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react53.MoreVertical, { className: "size-4" })
|
|
19071
19339
|
}
|
|
19072
19340
|
),
|
|
19073
19341
|
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
@@ -19171,7 +19439,7 @@ function KanbanColumn({
|
|
|
19171
19439
|
|
|
19172
19440
|
// src/components/ui/stepper.tsx
|
|
19173
19441
|
var React44 = __toESM(require("react"));
|
|
19174
|
-
var
|
|
19442
|
+
var import_lucide_react54 = require("lucide-react");
|
|
19175
19443
|
var import_jsx_runtime97 = require("react/jsx-runtime");
|
|
19176
19444
|
var StepperContext = React44.createContext({
|
|
19177
19445
|
activeStep: 0,
|
|
@@ -19253,7 +19521,7 @@ function StepIndicator({ error, className }) {
|
|
|
19253
19521
|
isCompleted && !error && "bg-primary text-primary-foreground",
|
|
19254
19522
|
error && "border-2 border-destructive bg-destructive text-destructive-foreground"
|
|
19255
19523
|
),
|
|
19256
|
-
children: isCompleted && !error ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
19524
|
+
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
19525
|
}
|
|
19258
19526
|
);
|
|
19259
19527
|
if (orientation === "horizontal") {
|
|
@@ -19478,7 +19746,7 @@ function OnboardingLayout({
|
|
|
19478
19746
|
|
|
19479
19747
|
// src/components/ui/opportunity-edit-modals.tsx
|
|
19480
19748
|
var React45 = __toESM(require("react"));
|
|
19481
|
-
var
|
|
19749
|
+
var import_lucide_react55 = require("lucide-react");
|
|
19482
19750
|
|
|
19483
19751
|
// src/lib/opportunity-constants.ts
|
|
19484
19752
|
var PROPERTY_ASSET_TYPES = /* @__PURE__ */ new Set([
|
|
@@ -19724,7 +19992,7 @@ function AccordionItemHeader({
|
|
|
19724
19992
|
),
|
|
19725
19993
|
children: [
|
|
19726
19994
|
label,
|
|
19727
|
-
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
19995
|
+
/* @__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
19996
|
]
|
|
19729
19997
|
}
|
|
19730
19998
|
),
|
|
@@ -19737,7 +20005,7 @@ function AccordionItemHeader({
|
|
|
19737
20005
|
onClick: onRemove,
|
|
19738
20006
|
className: "size-8 shrink-0",
|
|
19739
20007
|
"aria-label": removeLabel,
|
|
19740
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
20008
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react55.Trash2, { className: "size-3.5 text-destructive" })
|
|
19741
20009
|
}
|
|
19742
20010
|
)
|
|
19743
20011
|
] });
|
|
@@ -20365,7 +20633,7 @@ function EditAssetsModal({
|
|
|
20365
20633
|
onClick: addItem,
|
|
20366
20634
|
className: "w-full gap-1.5",
|
|
20367
20635
|
children: [
|
|
20368
|
-
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
20636
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react55.Plus, { className: "h-4 w-4" }),
|
|
20369
20637
|
"Add More"
|
|
20370
20638
|
]
|
|
20371
20639
|
}
|
|
@@ -20692,7 +20960,7 @@ function EditDebtsModal({
|
|
|
20692
20960
|
onClick: addItem,
|
|
20693
20961
|
className: "w-full gap-1.5",
|
|
20694
20962
|
children: [
|
|
20695
|
-
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
20963
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react55.Plus, { className: "h-4 w-4" }),
|
|
20696
20964
|
"Add More"
|
|
20697
20965
|
]
|
|
20698
20966
|
}
|
|
@@ -21193,7 +21461,7 @@ function EditIncomeModal({
|
|
|
21193
21461
|
onClick: addItem,
|
|
21194
21462
|
className: "w-full gap-1.5",
|
|
21195
21463
|
children: [
|
|
21196
|
-
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
21464
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react55.Plus, { className: "h-4 w-4" }),
|
|
21197
21465
|
"Add More"
|
|
21198
21466
|
]
|
|
21199
21467
|
}
|
|
@@ -21343,7 +21611,7 @@ function EditExpensesModal({
|
|
|
21343
21611
|
onClick: addItem,
|
|
21344
21612
|
className: "w-full gap-1.5",
|
|
21345
21613
|
children: [
|
|
21346
|
-
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
21614
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react55.Plus, { className: "h-4 w-4" }),
|
|
21347
21615
|
"Add More"
|
|
21348
21616
|
]
|
|
21349
21617
|
}
|
|
@@ -21371,7 +21639,7 @@ function EditExpensesModal({
|
|
|
21371
21639
|
// src/components/ui/opportunity-summary-tab.tsx
|
|
21372
21640
|
var React46 = __toESM(require("react"));
|
|
21373
21641
|
var import_react32 = require("react");
|
|
21374
|
-
var
|
|
21642
|
+
var import_lucide_react56 = require("lucide-react");
|
|
21375
21643
|
var import_jsx_runtime100 = require("react/jsx-runtime");
|
|
21376
21644
|
function toMonthly(amount, freq) {
|
|
21377
21645
|
return freq === "Monthly" ? amount : amount * 52 / 12;
|
|
@@ -21422,7 +21690,7 @@ function SectionEditButton({
|
|
|
21422
21690
|
},
|
|
21423
21691
|
"aria-label": title,
|
|
21424
21692
|
title,
|
|
21425
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
21693
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.Pencil, { className: "size-3.5" })
|
|
21426
21694
|
}
|
|
21427
21695
|
);
|
|
21428
21696
|
}
|
|
@@ -21458,7 +21726,7 @@ function HeroBand({
|
|
|
21458
21726
|
href: `tel:${mainAbout.phone}`,
|
|
21459
21727
|
className: "inline-flex size-7 items-center justify-center text-muted-foreground hover:text-foreground",
|
|
21460
21728
|
title: `Call: ${mainAbout.phone}`,
|
|
21461
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
21729
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.Phone, { className: "size-3.5" })
|
|
21462
21730
|
}
|
|
21463
21731
|
),
|
|
21464
21732
|
mainAbout.email && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
@@ -21467,7 +21735,7 @@ function HeroBand({
|
|
|
21467
21735
|
href: `mailto:${mainAbout.email}`,
|
|
21468
21736
|
className: "inline-flex size-7 items-center justify-center text-muted-foreground hover:text-foreground",
|
|
21469
21737
|
title: `Email: ${mainAbout.email}`,
|
|
21470
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
21738
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.Mail, { className: "size-3.5" })
|
|
21471
21739
|
}
|
|
21472
21740
|
)
|
|
21473
21741
|
] })
|
|
@@ -21606,19 +21874,19 @@ function ApplicantCardTab({
|
|
|
21606
21874
|
var STATUS_OPTIONS = ["verified", "pending", "rejected"];
|
|
21607
21875
|
var STATUS_CONFIG4 = {
|
|
21608
21876
|
verified: {
|
|
21609
|
-
Icon:
|
|
21877
|
+
Icon: import_lucide_react56.CheckCircle2,
|
|
21610
21878
|
label: "Verified",
|
|
21611
21879
|
iconCls: "text-success",
|
|
21612
21880
|
triggerCls: "border-success text-success"
|
|
21613
21881
|
},
|
|
21614
21882
|
pending: {
|
|
21615
|
-
Icon:
|
|
21883
|
+
Icon: import_lucide_react56.AlertCircle,
|
|
21616
21884
|
label: "Pending",
|
|
21617
21885
|
iconCls: "text-warning",
|
|
21618
21886
|
triggerCls: "border-warning text-warning"
|
|
21619
21887
|
},
|
|
21620
21888
|
rejected: {
|
|
21621
|
-
Icon:
|
|
21889
|
+
Icon: import_lucide_react56.AlertCircle,
|
|
21622
21890
|
label: "Rejected",
|
|
21623
21891
|
iconCls: "text-destructive",
|
|
21624
21892
|
triggerCls: "border-destructive text-destructive"
|
|
@@ -21648,7 +21916,7 @@ function DocRow({
|
|
|
21648
21916
|
),
|
|
21649
21917
|
children: [
|
|
21650
21918
|
/* @__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)(
|
|
21919
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.FileText, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
21652
21920
|
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
21653
21921
|
doc.url ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
21654
21922
|
"a",
|
|
@@ -21702,7 +21970,7 @@ function DocRow({
|
|
|
21702
21970
|
download: true,
|
|
21703
21971
|
onClick: (e) => e.stopPropagation(),
|
|
21704
21972
|
className: "shrink-0 text-muted-foreground transition-colors hover:text-foreground",
|
|
21705
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
21973
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.Download, { className: "size-4" })
|
|
21706
21974
|
}
|
|
21707
21975
|
)
|
|
21708
21976
|
]
|
|
@@ -21988,7 +22256,7 @@ function OpportunitySummaryTab({
|
|
|
21988
22256
|
onDocumentsDownload == null ? void 0 : onDocumentsDownload(selected);
|
|
21989
22257
|
},
|
|
21990
22258
|
children: [
|
|
21991
|
-
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
22259
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react56.Download, { className: "size-3.5" }),
|
|
21992
22260
|
"Download (",
|
|
21993
22261
|
selectedDocIds.size,
|
|
21994
22262
|
")"
|
|
@@ -22010,7 +22278,7 @@ function OpportunitySummaryTab({
|
|
|
22010
22278
|
cat.hasVerified ? "text-success" : "text-warning"
|
|
22011
22279
|
),
|
|
22012
22280
|
children: [
|
|
22013
|
-
cat.hasVerified ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
22281
|
+
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
22282
|
cat.name,
|
|
22015
22283
|
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("span", { className: "text-muted-foreground", children: [
|
|
22016
22284
|
"(",
|
|
@@ -22251,7 +22519,7 @@ function OpportunitySummaryTab({
|
|
|
22251
22519
|
|
|
22252
22520
|
// src/components/ui/sidebar-nav.tsx
|
|
22253
22521
|
var React47 = __toESM(require("react"));
|
|
22254
|
-
var
|
|
22522
|
+
var import_lucide_react57 = require("lucide-react");
|
|
22255
22523
|
var import_accordion8 = require("@base-ui/react/accordion");
|
|
22256
22524
|
var import_jsx_runtime101 = require("react/jsx-runtime");
|
|
22257
22525
|
function navIconCn(isActive) {
|
|
@@ -22285,7 +22553,7 @@ function MetricsGroup({ group }) {
|
|
|
22285
22553
|
}
|
|
22286
22554
|
),
|
|
22287
22555
|
item.info && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22288
|
-
|
|
22556
|
+
import_lucide_react57.Info,
|
|
22289
22557
|
{
|
|
22290
22558
|
size: 11,
|
|
22291
22559
|
strokeWidth: 2,
|
|
@@ -22404,7 +22672,7 @@ function CollapsibleNavItem({
|
|
|
22404
22672
|
),
|
|
22405
22673
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "flex-1 truncate text-left", children: item.title }),
|
|
22406
22674
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22407
|
-
|
|
22675
|
+
import_lucide_react57.ChevronDown,
|
|
22408
22676
|
{
|
|
22409
22677
|
className: cn(
|
|
22410
22678
|
"ml-auto shrink-0 text-brand-secondary-foreground/40 transition-transform duration-200",
|
|
@@ -22430,7 +22698,7 @@ function CollapsibleNavItem({
|
|
|
22430
22698
|
),
|
|
22431
22699
|
children: [
|
|
22432
22700
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22433
|
-
|
|
22701
|
+
import_lucide_react57.ChevronRight,
|
|
22434
22702
|
{
|
|
22435
22703
|
size: 11,
|
|
22436
22704
|
strokeWidth: 2,
|
|
@@ -22539,7 +22807,7 @@ function SidebarNav({
|
|
|
22539
22807
|
/* @__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
22808
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "flex-1 truncate text-left font-medium text-brand-secondary-foreground", children: userName }),
|
|
22541
22809
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22542
|
-
|
|
22810
|
+
import_lucide_react57.ChevronDown,
|
|
22543
22811
|
{
|
|
22544
22812
|
className: "ml-auto shrink-0 text-brand-secondary-foreground/50 transition-transform duration-200 group-data-[panel-open]:rotate-180",
|
|
22545
22813
|
size: 16,
|
|
@@ -22561,7 +22829,7 @@ function SidebarNav({
|
|
|
22561
22829
|
),
|
|
22562
22830
|
children: [
|
|
22563
22831
|
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22564
|
-
|
|
22832
|
+
import_lucide_react57.LogOut,
|
|
22565
22833
|
{
|
|
22566
22834
|
size: 16,
|
|
22567
22835
|
strokeWidth: 1.75,
|
|
@@ -22634,14 +22902,14 @@ function SidebarNav({
|
|
|
22634
22902
|
),
|
|
22635
22903
|
children: [
|
|
22636
22904
|
collapsed ? /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22637
|
-
|
|
22905
|
+
import_lucide_react57.PanelLeftOpen,
|
|
22638
22906
|
{
|
|
22639
22907
|
size: 24,
|
|
22640
22908
|
strokeWidth: 1.75,
|
|
22641
22909
|
className: "shrink-0"
|
|
22642
22910
|
}
|
|
22643
22911
|
) : /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
22644
|
-
|
|
22912
|
+
import_lucide_react57.PanelLeftClose,
|
|
22645
22913
|
{
|
|
22646
22914
|
size: 24,
|
|
22647
22915
|
strokeWidth: 1.75,
|
|
@@ -22695,7 +22963,7 @@ function PipelineAlerts({ counts, className }) {
|
|
|
22695
22963
|
}
|
|
22696
22964
|
|
|
22697
22965
|
// src/components/ui/pipeline-board.tsx
|
|
22698
|
-
var
|
|
22966
|
+
var import_lucide_react58 = require("lucide-react");
|
|
22699
22967
|
var import_jsx_runtime103 = require("react/jsx-runtime");
|
|
22700
22968
|
function Toolbar({
|
|
22701
22969
|
searchValue,
|
|
@@ -22707,7 +22975,7 @@ function Toolbar({
|
|
|
22707
22975
|
}) {
|
|
22708
22976
|
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
22977
|
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "relative w-56 shrink-0", children: [
|
|
22710
|
-
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
22978
|
+
/* @__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
22979
|
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
22712
22980
|
Input,
|
|
22713
22981
|
{
|
|
@@ -22726,7 +22994,7 @@ function Toolbar({
|
|
|
22726
22994
|
onClick: () => onSearchChange(""),
|
|
22727
22995
|
className: "absolute right-2 top-1/2 size-6 -translate-y-1/2 text-muted-foreground hover:text-foreground",
|
|
22728
22996
|
"aria-label": "Clear search",
|
|
22729
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
22997
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react58.X, { className: "size-3.5" })
|
|
22730
22998
|
}
|
|
22731
22999
|
)
|
|
22732
23000
|
] }),
|
|
@@ -22755,7 +23023,7 @@ function Toolbar({
|
|
|
22755
23023
|
onClick: onRefresh,
|
|
22756
23024
|
className: "ml-auto text-muted-foreground hover:text-foreground",
|
|
22757
23025
|
"aria-label": "Refresh board",
|
|
22758
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
23026
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react58.RefreshCw, { className: "size-4" })
|
|
22759
23027
|
}
|
|
22760
23028
|
)
|
|
22761
23029
|
] });
|
|
@@ -23714,7 +23982,7 @@ function PropertyMobileEstimateLineChart({
|
|
|
23714
23982
|
}
|
|
23715
23983
|
|
|
23716
23984
|
// src/components/ui/sonner.tsx
|
|
23717
|
-
var
|
|
23985
|
+
var import_lucide_react59 = require("lucide-react");
|
|
23718
23986
|
var import_sonner2 = require("sonner");
|
|
23719
23987
|
var import_jsx_runtime111 = require("react/jsx-runtime");
|
|
23720
23988
|
function Toaster(_a) {
|
|
@@ -23724,11 +23992,11 @@ function Toaster(_a) {
|
|
|
23724
23992
|
__spreadValues({
|
|
23725
23993
|
className: "toaster group",
|
|
23726
23994
|
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)(
|
|
23995
|
+
success: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react59.CircleCheckIcon, { className: "size-4" }),
|
|
23996
|
+
info: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react59.InfoIcon, { className: "size-4" }),
|
|
23997
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react59.TriangleAlertIcon, { className: "size-4" }),
|
|
23998
|
+
error: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react59.OctagonXIcon, { className: "size-4" }),
|
|
23999
|
+
loading: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react59.Loader2Icon, { className: "size-4 animate-spin" })
|
|
23732
24000
|
},
|
|
23733
24001
|
style: {
|
|
23734
24002
|
"--normal-bg": "var(--popover)",
|
|
@@ -23747,7 +24015,7 @@ function Toaster(_a) {
|
|
|
23747
24015
|
}
|
|
23748
24016
|
|
|
23749
24017
|
// src/components/ui/stage-timeline.tsx
|
|
23750
|
-
var
|
|
24018
|
+
var import_lucide_react60 = require("lucide-react");
|
|
23751
24019
|
var import_jsx_runtime112 = require("react/jsx-runtime");
|
|
23752
24020
|
function StageTimeline({
|
|
23753
24021
|
stages,
|
|
@@ -23838,7 +24106,7 @@ function StageTimeline({
|
|
|
23838
24106
|
className: "flex size-5 shrink-0 items-center justify-center rounded-full bg-primary",
|
|
23839
24107
|
"aria-hidden": "true",
|
|
23840
24108
|
children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
|
|
23841
|
-
|
|
24109
|
+
import_lucide_react60.Check,
|
|
23842
24110
|
{
|
|
23843
24111
|
className: "size-3 text-primary-foreground",
|
|
23844
24112
|
strokeWidth: 2.5
|
|
@@ -24025,10 +24293,10 @@ function FrontendShell({
|
|
|
24025
24293
|
|
|
24026
24294
|
// src/components/ui/signup-form-primitives.tsx
|
|
24027
24295
|
var import_react36 = require("react");
|
|
24028
|
-
var
|
|
24296
|
+
var import_lucide_react62 = require("lucide-react");
|
|
24029
24297
|
|
|
24030
24298
|
// src/components/ui/password-strength-tooltip.tsx
|
|
24031
|
-
var
|
|
24299
|
+
var import_lucide_react61 = require("lucide-react");
|
|
24032
24300
|
var import_jsx_runtime116 = require("react/jsx-runtime");
|
|
24033
24301
|
var RULES = [
|
|
24034
24302
|
{ label: "Minimum 8 characters", test: (p) => p.length >= 8 },
|
|
@@ -24063,7 +24331,7 @@ function PasswordStrengthTooltip({
|
|
|
24063
24331
|
{
|
|
24064
24332
|
className: `flex items-center gap-1.5 text-[13px] leading-[18px] ${valid ? "text-success" : "text-destructive"}`,
|
|
24065
24333
|
children: [
|
|
24066
|
-
valid ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
24334
|
+
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
24335
|
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("span", { children: rule.label })
|
|
24068
24336
|
]
|
|
24069
24337
|
},
|
|
@@ -24142,7 +24410,7 @@ function PasswordField({
|
|
|
24142
24410
|
"aria-label": show ? "Hide password" : "Show password",
|
|
24143
24411
|
className: "absolute right-3 top-2.5 text-muted-foreground hover:text-foreground",
|
|
24144
24412
|
onClick: () => setShow((s) => !s),
|
|
24145
|
-
children: show ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
24413
|
+
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
24414
|
}
|
|
24147
24415
|
)
|
|
24148
24416
|
] });
|
|
@@ -24199,7 +24467,7 @@ function StaffRowItem({
|
|
|
24199
24467
|
size: "icon-sm",
|
|
24200
24468
|
onClick: () => onRemove(member.id),
|
|
24201
24469
|
"aria-label": "Remove staff member",
|
|
24202
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
24470
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react62.Trash2Icon, { className: "size-4" })
|
|
24203
24471
|
}
|
|
24204
24472
|
)
|
|
24205
24473
|
] });
|
|
@@ -24207,7 +24475,7 @@ function StaffRowItem({
|
|
|
24207
24475
|
|
|
24208
24476
|
// src/components/ui/backoffice-signup-steps.tsx
|
|
24209
24477
|
var import_react37 = __toESM(require("react"));
|
|
24210
|
-
var
|
|
24478
|
+
var import_lucide_react63 = require("lucide-react");
|
|
24211
24479
|
var import_jsx_runtime118 = require("react/jsx-runtime");
|
|
24212
24480
|
var BASE_PLAN_PRICE = 299;
|
|
24213
24481
|
var ROLE_INFO = {
|
|
@@ -24514,7 +24782,7 @@ function InviteStaffView({
|
|
|
24514
24782
|
m.id
|
|
24515
24783
|
)),
|
|
24516
24784
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(Button, { variant: "outline", onClick: addStaff, className: "w-full", children: [
|
|
24517
|
-
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
24785
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react63.PlusIcon, { className: "size-4" }),
|
|
24518
24786
|
"Add Staff"
|
|
24519
24787
|
] })
|
|
24520
24788
|
] })
|
|
@@ -24572,7 +24840,7 @@ function PaymentView({
|
|
|
24572
24840
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
24573
24841
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("span", { className: "text-base w-[60px]", children: role }),
|
|
24574
24842
|
/* @__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)(
|
|
24843
|
+
/* @__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
24844
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TooltipContent, { side: "top", children: ROLE_INFO[role] })
|
|
24577
24845
|
] })
|
|
24578
24846
|
] }),
|
|
@@ -24648,15 +24916,15 @@ function BackofficeSuccessStep() {
|
|
|
24648
24916
|
/* @__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
24917
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("p", { className: "font-semibold text-base text-foreground", children: "Contact us anytime if you have any concerns." }),
|
|
24650
24918
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
24651
|
-
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
24919
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react63.PhoneIcon, { className: "size-5 text-success shrink-0" }),
|
|
24652
24920
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("span", { className: "text-base text-foreground", children: "0416 338 438" })
|
|
24653
24921
|
] }),
|
|
24654
24922
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
24655
|
-
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
24923
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react63.CalendarIcon, { className: "size-5 text-success shrink-0" }),
|
|
24656
24924
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("span", { className: "text-base text-foreground", children: "Book call back" })
|
|
24657
24925
|
] }),
|
|
24658
24926
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
24659
|
-
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
24927
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react63.MailIcon, { className: "size-5 text-success shrink-0" }),
|
|
24660
24928
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("span", { className: "text-base text-foreground", children: "clint@wealthx.au" })
|
|
24661
24929
|
] })
|
|
24662
24930
|
] })
|
|
@@ -24665,7 +24933,7 @@ function BackofficeSuccessStep() {
|
|
|
24665
24933
|
|
|
24666
24934
|
// src/components/ui/frontend-signup-steps.tsx
|
|
24667
24935
|
var import_react38 = require("react");
|
|
24668
|
-
var
|
|
24936
|
+
var import_lucide_react64 = require("lucide-react");
|
|
24669
24937
|
var import_jsx_runtime119 = require("react/jsx-runtime");
|
|
24670
24938
|
var fmt = (v) => new Intl.NumberFormat("en-AU", {
|
|
24671
24939
|
style: "currency",
|
|
@@ -24853,7 +25121,7 @@ function ConnectBankStep({ onConnect }) {
|
|
|
24853
25121
|
{
|
|
24854
25122
|
"aria-hidden": "true",
|
|
24855
25123
|
className: "flex h-7 w-7 items-center justify-center bg-primary text-primary-foreground",
|
|
24856
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
25124
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_lucide_react64.PlusIcon, { className: "size-4" })
|
|
24857
25125
|
}
|
|
24858
25126
|
)
|
|
24859
25127
|
] })
|
|
@@ -24933,7 +25201,7 @@ function ConnectPropertyStep({
|
|
|
24933
25201
|
children: [
|
|
24934
25202
|
/* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
24935
25203
|
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
24936
|
-
|
|
25204
|
+
import_lucide_react64.HomeIcon,
|
|
24937
25205
|
{
|
|
24938
25206
|
"aria-hidden": "true",
|
|
24939
25207
|
className: "size-4 shrink-0 text-muted-foreground"
|
|
@@ -24949,7 +25217,7 @@ function ConnectPropertyStep({
|
|
|
24949
25217
|
] })
|
|
24950
25218
|
] }),
|
|
24951
25219
|
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
24952
|
-
|
|
25220
|
+
import_lucide_react64.CheckIcon,
|
|
24953
25221
|
{
|
|
24954
25222
|
"aria-hidden": "true",
|
|
24955
25223
|
className: "size-4 text-success"
|
|
@@ -25062,7 +25330,7 @@ function FrontendSuccessStep({
|
|
|
25062
25330
|
{
|
|
25063
25331
|
"aria-hidden": "true",
|
|
25064
25332
|
className: "flex size-16 items-center justify-center bg-success/10",
|
|
25065
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
25333
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_lucide_react64.CheckIcon, { className: "size-8 text-success", strokeWidth: 2 })
|
|
25066
25334
|
}
|
|
25067
25335
|
),
|
|
25068
25336
|
/* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
@@ -25079,7 +25347,7 @@ function FrontendSuccessStep({
|
|
|
25079
25347
|
|
|
25080
25348
|
// src/components/ui/two-fa-setup-form.tsx
|
|
25081
25349
|
var import_react39 = require("react");
|
|
25082
|
-
var
|
|
25350
|
+
var import_lucide_react65 = require("lucide-react");
|
|
25083
25351
|
var import_jsx_runtime120 = require("react/jsx-runtime");
|
|
25084
25352
|
var DEFAULT_APPS = [
|
|
25085
25353
|
{ name: "Google Authenticator" },
|
|
@@ -25100,7 +25368,7 @@ function AppDownloadStep({
|
|
|
25100
25368
|
className: "flex flex-1 flex-col items-center gap-3 border border-border bg-muted/30 p-4 text-center",
|
|
25101
25369
|
children: [
|
|
25102
25370
|
/* @__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)(
|
|
25371
|
+
(_a = app.icon) != null ? _a : /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_lucide_react65.Smartphone, { size: 18, className: "text-muted-foreground" }),
|
|
25104
25372
|
app.name
|
|
25105
25373
|
] }),
|
|
25106
25374
|
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 +26350,7 @@ function IncomeWorkDetails({
|
|
|
26082
26350
|
}
|
|
26083
26351
|
|
|
26084
26352
|
// src/components/ui/loan-application-badge.tsx
|
|
26085
|
-
var
|
|
26353
|
+
var import_lucide_react66 = require("lucide-react");
|
|
26086
26354
|
var import_jsx_runtime128 = require("react/jsx-runtime");
|
|
26087
26355
|
var STATUS_CONFIG5 = {
|
|
26088
26356
|
SENT: {
|
|
@@ -26112,7 +26380,7 @@ function LoanApplicationBadge({
|
|
|
26112
26380
|
variant: "outline",
|
|
26113
26381
|
className: cn("w-fit text-xs gap-1", statusClassName, className),
|
|
26114
26382
|
children: [
|
|
26115
|
-
showCheck && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
26383
|
+
showCheck && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_lucide_react66.CheckIcon, { "aria-hidden": "true", className: "size-3" }),
|
|
26116
26384
|
label
|
|
26117
26385
|
]
|
|
26118
26386
|
}
|
|
@@ -26283,7 +26551,7 @@ function ChevronRightIcon4({ className }) {
|
|
|
26283
26551
|
|
|
26284
26552
|
// src/components/ui/resource-center.tsx
|
|
26285
26553
|
var import_react43 = require("react");
|
|
26286
|
-
var
|
|
26554
|
+
var import_lucide_react67 = require("lucide-react");
|
|
26287
26555
|
var import_jsx_runtime131 = require("react/jsx-runtime");
|
|
26288
26556
|
function ResourceModal({
|
|
26289
26557
|
open,
|
|
@@ -26322,7 +26590,7 @@ function ResourceModal({
|
|
|
26322
26590
|
download: true,
|
|
26323
26591
|
className: "flex items-center gap-2 text-sm text-primary hover:underline",
|
|
26324
26592
|
children: [
|
|
26325
|
-
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
26593
|
+
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_lucide_react67.Download, { className: "size-3.5 shrink-0" }),
|
|
26326
26594
|
attachment.name
|
|
26327
26595
|
]
|
|
26328
26596
|
},
|
|
@@ -26352,8 +26620,8 @@ function ResourceVideoCard({ video }) {
|
|
|
26352
26620
|
alt: video.title,
|
|
26353
26621
|
className: "h-full w-full object-cover transition-transform duration-200 group-hover:scale-105"
|
|
26354
26622
|
}
|
|
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)(
|
|
26623
|
+
) : /* @__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" }) }),
|
|
26624
|
+
/* @__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
26625
|
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
26626
|
] }),
|
|
26359
26627
|
/* @__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 +26724,7 @@ function ResourceDocumentCard({
|
|
|
26456
26724
|
className: "h-full w-full object-cover"
|
|
26457
26725
|
}
|
|
26458
26726
|
) : /* @__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)(
|
|
26727
|
+
/* @__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
26728
|
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)("span", { className: "text-xs text-muted-foreground", children: document2.title })
|
|
26461
26729
|
] }),
|
|
26462
26730
|
/* @__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 +26744,7 @@ function ResourceDocumentCard({
|
|
|
26476
26744
|
onClick: (e) => e.stopPropagation(),
|
|
26477
26745
|
className: "shrink-0",
|
|
26478
26746
|
"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)(
|
|
26747
|
+
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
26748
|
}
|
|
26481
26749
|
)
|
|
26482
26750
|
] })
|
|
@@ -26516,7 +26784,7 @@ function ResourceCarousel({
|
|
|
26516
26784
|
"opacity-0 transition-opacity duration-200 group-hover:opacity-100",
|
|
26517
26785
|
"hover:bg-muted focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
26518
26786
|
),
|
|
26519
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
26787
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_lucide_react67.ChevronLeft, { className: "size-4 text-foreground" })
|
|
26520
26788
|
}
|
|
26521
26789
|
),
|
|
26522
26790
|
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
@@ -26541,7 +26809,7 @@ function ResourceCarousel({
|
|
|
26541
26809
|
"opacity-0 transition-opacity duration-200 group-hover:opacity-100",
|
|
26542
26810
|
"hover:bg-muted focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
26543
26811
|
),
|
|
26544
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
26812
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_lucide_react67.ChevronRight, { className: "size-4 text-foreground" })
|
|
26545
26813
|
}
|
|
26546
26814
|
)
|
|
26547
26815
|
] })
|
|
@@ -26584,7 +26852,7 @@ function ResourceCenterHeader({
|
|
|
26584
26852
|
className: "border-background text-background bg-transparent hover:bg-background/10 hover:text-background",
|
|
26585
26853
|
onClick: () => setWatchModalOpen(true),
|
|
26586
26854
|
children: [
|
|
26587
|
-
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
26855
|
+
/* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_lucide_react67.Play, { className: "mr-2 size-4" }),
|
|
26588
26856
|
"Watch Now"
|
|
26589
26857
|
]
|
|
26590
26858
|
}
|
|
@@ -26915,6 +27183,7 @@ function ResourceCenterHeader({
|
|
|
26915
27183
|
SelectableCard,
|
|
26916
27184
|
Separator,
|
|
26917
27185
|
ServiceConfigurationModal,
|
|
27186
|
+
ShareContactDialog,
|
|
26918
27187
|
ShareDetailsDialog,
|
|
26919
27188
|
Sheet,
|
|
26920
27189
|
SheetClose,
|