@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.
Files changed (111) hide show
  1. package/.turbo/turbo-build.log +126 -126
  2. package/CHANGELOG.md +6 -0
  3. package/dist/{chunk-AANINK2B.mjs → chunk-2KNQZG5S.mjs} +1 -1
  4. package/dist/chunk-3KLJ4XRE.mjs +375 -0
  5. package/dist/{chunk-6U4NQGVM.mjs → chunk-4X4MGYHE.mjs} +2 -2
  6. package/dist/{chunk-CEEVYRQA.mjs → chunk-67DGIPQ4.mjs} +1 -1
  7. package/dist/{chunk-7UIL5UN3.mjs → chunk-7II6QRCZ.mjs} +1 -1
  8. package/dist/{chunk-W5QJ57PU.mjs → chunk-7LN5OGC2.mjs} +1 -1
  9. package/dist/{chunk-ZXEUBBHJ.mjs → chunk-7TMPOZDE.mjs} +1 -1
  10. package/dist/{chunk-AHSCWXYJ.mjs → chunk-AJUAJC5O.mjs} +1 -1
  11. package/dist/{chunk-3CGM3QXQ.mjs → chunk-AKWN5ZQG.mjs} +2 -2
  12. package/dist/{chunk-FRT3S72S.mjs → chunk-CQ7HKBEX.mjs} +1 -1
  13. package/dist/{chunk-E2BNCA6L.mjs → chunk-EHQL64B7.mjs} +1 -1
  14. package/dist/{chunk-2WCIORP7.mjs → chunk-EXI64H46.mjs} +1 -1
  15. package/dist/{chunk-BBXSNDS3.mjs → chunk-FQYFPHDO.mjs} +1 -1
  16. package/dist/{chunk-3VZ6CYY2.mjs → chunk-GAXNO4JB.mjs} +1 -1
  17. package/dist/{chunk-3WGFIFP6.mjs → chunk-I4P7RXAE.mjs} +1 -1
  18. package/dist/{chunk-Z2BW5T7P.mjs → chunk-IODGRCQG.mjs} +1 -1
  19. package/dist/{chunk-GS47ZSSA.mjs → chunk-J7KQON2N.mjs} +20 -5
  20. package/dist/{chunk-IQGKOT7A.mjs → chunk-K35TFQUB.mjs} +1 -1
  21. package/dist/{chunk-4DO3WM7V.mjs → chunk-K4VWSDJJ.mjs} +1 -1
  22. package/dist/{chunk-KWD6GANL.mjs → chunk-MPA2HV5U.mjs} +1 -1
  23. package/dist/{chunk-5LZZYODG.mjs → chunk-QHAMVWDG.mjs} +19 -1
  24. package/dist/{chunk-XUCDPAVI.mjs → chunk-R6U246E4.mjs} +2 -2
  25. package/dist/{chunk-VCDGLN25.mjs → chunk-S6AYZJYO.mjs} +47 -21
  26. package/dist/{chunk-WL6WVV47.mjs → chunk-X6RC5UWB.mjs} +1 -1
  27. package/dist/{chunk-4BHDDLWK.mjs → chunk-XAS6KBIG.mjs} +2 -2
  28. package/dist/{chunk-VWZS32ZQ.mjs → chunk-XYWEGBAA.mjs} +1 -1
  29. package/dist/{chunk-54MTIKNC.mjs → chunk-YV7XF32X.mjs} +49 -24
  30. package/dist/{chunk-E5EDZQ5J.mjs → chunk-ZA44WICP.mjs} +1 -1
  31. package/dist/{chunk-54TRNCID.mjs → chunk-ZMTCMP2G.mjs} +8 -8
  32. package/dist/components/ui/advisor-card.js +144 -55
  33. package/dist/components/ui/advisor-card.mjs +5 -2
  34. package/dist/components/ui/agent-evaluation-toast.js +1 -1
  35. package/dist/components/ui/agent-evaluation-toast.mjs +2 -2
  36. package/dist/components/ui/ai-assistant-drawer.js +1 -1
  37. package/dist/components/ui/ai-assistant-drawer.mjs +2 -2
  38. package/dist/components/ui/ai-builder.js +1 -1
  39. package/dist/components/ui/ai-builder.mjs +2 -2
  40. package/dist/components/ui/ai-conversations.js +1 -1
  41. package/dist/components/ui/ai-conversations.mjs +3 -3
  42. package/dist/components/ui/appointment-action-dialogs.js +1 -1
  43. package/dist/components/ui/appointment-action-dialogs.mjs +3 -3
  44. package/dist/components/ui/appointment-book-dialog.js +19 -4
  45. package/dist/components/ui/appointment-book-dialog.mjs +3 -3
  46. package/dist/components/ui/appointment-calendar-view.js +1 -1
  47. package/dist/components/ui/appointment-calendar-view.mjs +2 -2
  48. package/dist/components/ui/appointment-detail-sheet.js +1 -1
  49. package/dist/components/ui/appointment-detail-sheet.mjs +4 -4
  50. package/dist/components/ui/appointment-gmail-connect.js +1 -1
  51. package/dist/components/ui/appointment-gmail-connect.mjs +2 -2
  52. package/dist/components/ui/appointment-time-slot-picker.js +1 -1
  53. package/dist/components/ui/appointment-time-slot-picker.mjs +2 -2
  54. package/dist/components/ui/appointment-upcoming-card.js +1 -1
  55. package/dist/components/ui/appointment-upcoming-card.mjs +3 -3
  56. package/dist/components/ui/badge.js +1 -1
  57. package/dist/components/ui/badge.mjs +1 -1
  58. package/dist/components/ui/chat-widget-primitives.js +1 -1
  59. package/dist/components/ui/chat-widget-primitives.mjs +2 -2
  60. package/dist/components/ui/chat-widget.js +1 -1
  61. package/dist/components/ui/chat-widget.mjs +3 -3
  62. package/dist/components/ui/chip.js +1 -1
  63. package/dist/components/ui/chip.mjs +2 -2
  64. package/dist/components/ui/contact-alert-dialog/index.js +19 -1
  65. package/dist/components/ui/contact-alert-dialog/index.mjs +1 -1
  66. package/dist/components/ui/dashboard-transactions-table.js +1 -1
  67. package/dist/components/ui/dashboard-transactions-table.mjs +2 -2
  68. package/dist/components/ui/financial-cards.js +1 -1
  69. package/dist/components/ui/financial-cards.mjs +2 -2
  70. package/dist/components/ui/financial-sections.js +1 -1
  71. package/dist/components/ui/financial-sections.mjs +3 -3
  72. package/dist/components/ui/income-summary-component.js +1 -1
  73. package/dist/components/ui/income-summary-component.mjs +1 -1
  74. package/dist/components/ui/integration-card.js +1 -1
  75. package/dist/components/ui/integration-card.mjs +2 -2
  76. package/dist/components/ui/kanban-column.js +46 -23
  77. package/dist/components/ui/kanban-column.mjs +4 -4
  78. package/dist/components/ui/loan-applicant-information.js +1 -1
  79. package/dist/components/ui/loan-applicant-information.mjs +1 -1
  80. package/dist/components/ui/loan-application-badge.js +1 -1
  81. package/dist/components/ui/loan-application-badge.mjs +2 -2
  82. package/dist/components/ui/opportunity-card.js +46 -23
  83. package/dist/components/ui/opportunity-card.mjs +3 -3
  84. package/dist/components/ui/opportunity-summary-tab.js +1 -1
  85. package/dist/components/ui/opportunity-summary-tab.mjs +3 -3
  86. package/dist/components/ui/pipeline-board.js +46 -23
  87. package/dist/components/ui/pipeline-board.mjs +5 -5
  88. package/dist/components/ui/pipeline-primitives.js +1 -1
  89. package/dist/components/ui/pipeline-primitives.mjs +2 -2
  90. package/dist/components/ui/property-asset-card.js +1 -1
  91. package/dist/components/ui/property-asset-card.mjs +1 -1
  92. package/dist/components/ui/resource-center.js +1 -1
  93. package/dist/components/ui/resource-center.mjs +2 -2
  94. package/dist/components/ui/share-details-dialog.js +326 -30
  95. package/dist/components/ui/share-details-dialog.mjs +4 -1
  96. package/dist/components/ui/stage-timeline.js +1 -1
  97. package/dist/components/ui/stage-timeline.mjs +3 -3
  98. package/dist/index.js +457 -188
  99. package/dist/index.mjs +44 -42
  100. package/dist/styles.css +1 -1
  101. package/package.json +1 -1
  102. package/src/components/index.tsx +4 -0
  103. package/src/components/ui/advisor-card.tsx +75 -25
  104. package/src/components/ui/appointment-book-dialog.tsx +26 -3
  105. package/src/components/ui/appointment-time-slot-picker.tsx +1 -0
  106. package/src/components/ui/badge.tsx +1 -1
  107. package/src/components/ui/contact-alert-dialog/contact-alert-dialog.tsx +19 -1
  108. package/src/components/ui/opportunity-card.tsx +56 -20
  109. package/src/components/ui/share-details-dialog.tsx +251 -0
  110. package/src/styles/styles-css.ts +1 -1
  111. 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-xs font-medium font-sans 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
+ "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-sm", children: avatarInitials != null ? avatarInitials : companyName ? companyName.split(" ").map((w) => w[0]).join("").slice(0, 2).toUpperCase() : name.slice(0, 2).toUpperCase() })
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-sm font-semibold leading-tight", children: name }),
3671
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-sm text-muted-foreground", children: role }),
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-sm text-muted-foreground", children: [
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-sm text-muted-foreground", children: [
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.jsx)(
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
- Badge,
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-sm text-muted-foreground", children: [
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-xs text-muted-foreground", children: "No upcoming appointments" })
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: "outline",
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-sm font-medium", children: "Add Another Advisor" }),
3792
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-xs text-muted-foreground", children: "Connect more advisors to your account" })
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: FORMAT_OPTIONS.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
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.jsx)(ToggleGroupItem, { value: s, children: SEVERITY_LABELS[s] }, s))
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 import_lucide_react42 = require("lucide-react");
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)(import_lucide_react42.CheckIcon, { className: "size-4 text-success" }) : /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_lucide_react42.CopyIcon, { className: "size-4" })
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 import_lucide_react43 = require("lucide-react");
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)(import_lucide_react43.FileTextIcon, { className: "size-10 text-muted-foreground/40" }),
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)(import_lucide_react43.AlertCircleIcon, { className: "size-10 text-destructive/60" }),
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)(import_lucide_react43.CheckCircle2Icon, { className: "size-4 text-success" }) });
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)(import_lucide_react43.CircleAlertIcon, { className: "size-4 text-destructive" }) }) }),
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)(import_lucide_react43.Trash2Icon, { className: "size-3.5" })
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 import_lucide_react44 = require("lucide-react");
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)(import_lucide_react44.ArrowUp, { className: "ml-1 size-3.5" });
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)(import_lucide_react44.ArrowDown, { className: "ml-1 size-3.5" });
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)(import_lucide_react44.ArrowUpDown, { className: "ml-1 size-3.5" });
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)(import_lucide_react44.SlidersHorizontal, { className: "size-3.5" }),
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 import_lucide_react45 = require("lucide-react");
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)(import_lucide_react45.CheckCircle2, { className: "size-5 shrink-0 text-primary" });
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)(import_lucide_react45.Circle, { className: "size-5 shrink-0 text-muted-foreground" });
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)(import_lucide_react45.Upload, { className: "size-3.5" }),
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 import_lucide_react46 = require("lucide-react");
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)(import_lucide_react46.GripVertical, { className: "size-4 shrink-0 text-muted-foreground/30" }),
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)(import_lucide_react46.Trash2, { className: "size-4" })
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)(import_lucide_react46.Plus, { className: "size-4" }),
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 import_lucide_react47 = require("lucide-react");
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
- import_lucide_react47.ChevronDown,
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: import_lucide_react47.ShoppingCart,
17330
- "dining out": import_lucide_react47.UtensilsCrossed,
17331
- dining: import_lucide_react47.UtensilsCrossed,
17332
- restaurants: import_lucide_react47.UtensilsCrossed,
17333
- transport: import_lucide_react47.Car,
17334
- transportation: import_lucide_react47.Car,
17335
- vehicle: import_lucide_react47.Car,
17336
- utilities: import_lucide_react47.Zap,
17337
- electricity: import_lucide_react47.Zap,
17338
- insurance: import_lucide_react47.Shield,
17339
- "council rates": import_lucide_react47.Landmark,
17340
- council: import_lucide_react47.Landmark,
17341
- rates: import_lucide_react47.Landmark,
17342
- medical: import_lucide_react47.HeartPulse,
17343
- health: import_lucide_react47.HeartPulse,
17344
- subscriptions: import_lucide_react47.RefreshCw,
17345
- subscription: import_lucide_react47.RefreshCw,
17346
- "credit card": import_lucide_react47.CreditCard,
17347
- education: import_lucide_react47.GraduationCap,
17348
- childcare: import_lucide_react47.Baby,
17349
- entertainment: import_lucide_react47.Tv,
17350
- gym: import_lucide_react47.Dumbbell,
17351
- fitness: import_lucide_react47.Dumbbell,
17352
- clothing: import_lucide_react47.Shirt,
17353
- rent: import_lucide_react47.Building2
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 : import_lucide_react47.Receipt;
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 import_lucide_react48 = require("lucide-react");
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)(import_lucide_react48.X, { className: "h-4 w-4" })
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)(import_lucide_react48.X, { className: "h-4 w-4" })
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 import_lucide_react49 = require("lucide-react");
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)(import_lucide_react49.MinusIcon, {}) }));
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 import_lucide_react50 = require("lucide-react");
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)(import_lucide_react50.Check, { className: "h-3 w-3" }),
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 import_lucide_react52 = require("lucide-react");
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 import_lucide_react51 = require("lucide-react");
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)(import_lucide_react51.Check, { className: "size-3.5 shrink-0" }),
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)(import_lucide_react51.ChevronDown, { className: "size-3" }) : /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react51.ChevronRight, { className: "size-3" }),
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)(import_lucide_react51.MoreVertical, { className: "size-4" })
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)(import_lucide_react51.Clock, { className: "size-3 shrink-0" }),
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)(import_lucide_react51.MoreVertical, { className: "size-4" })
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)(import_lucide_react51.Users, { className: "size-3", "aria-hidden": "true" }),
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)(import_lucide_react51.User, { className: "size-3", "aria-hidden": "true" }),
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)(import_lucide_react51.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
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)(import_lucide_react51.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
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)(import_lucide_react51.Calendar, { className: "size-3 shrink-0", "aria-hidden": "true" }),
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
- import_lucide_react51.Clock,
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
- import_lucide_react51.ArrowRight,
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-sm font-semibold text-foreground", children: customerName }),
18917
- customerPhone && /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
18918
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react51.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
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-xs text-muted-foreground", children: [
18922
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react51.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
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)(import_lucide_react51.MoreVertical, { className: "size-4" })
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.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
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)(import_lucide_react52.MoreVertical, { className: "size-4" })
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 import_lucide_react53 = require("lucide-react");
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)(import_lucide_react53.Check, { className: "size-4", strokeWidth: 2.5 }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: index + 1 })
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 import_lucide_react54 = require("lucide-react");
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)(import_lucide_react54.ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 text-muted-foreground transition-transform duration-200" })
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)(import_lucide_react54.Trash2, { className: "size-3.5 text-destructive" })
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)(import_lucide_react54.Plus, { className: "h-4 w-4" }),
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)(import_lucide_react54.Plus, { className: "h-4 w-4" }),
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)(import_lucide_react54.Plus, { className: "h-4 w-4" }),
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)(import_lucide_react54.Plus, { className: "h-4 w-4" }),
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 import_lucide_react55 = require("lucide-react");
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)(import_lucide_react55.Pencil, { className: "size-3.5" })
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)(import_lucide_react55.Phone, { className: "size-3.5" })
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)(import_lucide_react55.Mail, { className: "size-3.5" })
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: import_lucide_react55.CheckCircle2,
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: import_lucide_react55.AlertCircle,
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: import_lucide_react55.AlertCircle,
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)(import_lucide_react55.FileText, { className: "size-4 shrink-0 text-muted-foreground" }),
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)(import_lucide_react55.Download, { className: "size-4" })
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)(import_lucide_react55.Download, { className: "size-3.5" }),
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)(import_lucide_react55.CheckCircle2, { className: "size-3.5 shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react55.AlertCircle, { className: "size-3.5 shrink-0" }),
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 import_lucide_react56 = require("lucide-react");
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
- import_lucide_react56.Info,
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
- import_lucide_react56.ChevronDown,
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
- import_lucide_react56.ChevronRight,
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
- import_lucide_react56.ChevronDown,
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
- import_lucide_react56.LogOut,
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
- import_lucide_react56.PanelLeftOpen,
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
- import_lucide_react56.PanelLeftClose,
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 import_lucide_react57 = require("lucide-react");
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)(import_lucide_react57.Search, { className: "absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" }),
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)(import_lucide_react57.X, { className: "size-3.5" })
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)(import_lucide_react57.RefreshCw, { className: "size-4" })
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 import_lucide_react58 = require("lucide-react");
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)(import_lucide_react58.CircleCheckIcon, { className: "size-4" }),
23728
- info: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react58.InfoIcon, { className: "size-4" }),
23729
- warning: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react58.TriangleAlertIcon, { className: "size-4" }),
23730
- error: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react58.OctagonXIcon, { className: "size-4" }),
23731
- loading: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react58.Loader2Icon, { className: "size-4 animate-spin" })
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 import_lucide_react59 = require("lucide-react");
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
- import_lucide_react59.Check,
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 import_lucide_react61 = require("lucide-react");
24296
+ var import_lucide_react62 = require("lucide-react");
24029
24297
 
24030
24298
  // src/components/ui/password-strength-tooltip.tsx
24031
- var import_lucide_react60 = require("lucide-react");
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)(import_lucide_react60.Check, { size: 14, className: "shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react60.X, { size: 14, className: "shrink-0" }),
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)(import_lucide_react61.EyeOffIcon, { className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react61.EyeIcon, { className: "size-4" })
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)(import_lucide_react61.Trash2Icon, { className: "size-4" })
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 import_lucide_react62 = require("lucide-react");
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)(import_lucide_react62.PlusIcon, { className: "size-4" }),
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)(import_lucide_react62.InfoIcon, { className: "size-4" }) }) }),
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)(import_lucide_react62.PhoneIcon, { className: "size-5 text-success shrink-0" }),
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)(import_lucide_react62.CalendarIcon, { className: "size-5 text-success shrink-0" }),
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)(import_lucide_react62.MailIcon, { className: "size-5 text-success shrink-0" }),
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 import_lucide_react63 = require("lucide-react");
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)(import_lucide_react63.PlusIcon, { className: "size-4" })
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
- import_lucide_react63.HomeIcon,
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
- import_lucide_react63.CheckIcon,
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)(import_lucide_react63.CheckIcon, { className: "size-8 text-success", strokeWidth: 2 })
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 import_lucide_react64 = require("lucide-react");
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)(import_lucide_react64.Smartphone, { size: 18, className: "text-muted-foreground" }),
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 import_lucide_react65 = require("lucide-react");
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)(import_lucide_react65.CheckIcon, { "aria-hidden": "true", className: "size-3" }),
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 import_lucide_react66 = require("lucide-react");
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)(import_lucide_react66.Download, { className: "size-3.5 shrink-0" }),
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)(import_lucide_react66.Play, { className: "size-10 text-muted-foreground opacity-40" }) }),
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)(import_lucide_react66.Play, { className: "size-5 text-foreground" }) }) }),
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)(import_lucide_react66.Download, { className: "size-8 text-muted-foreground opacity-50" }) }),
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)(import_lucide_react66.Download, { className: "size-4" }) })
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)(import_lucide_react66.ChevronLeft, { className: "size-4 text-foreground" })
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)(import_lucide_react66.ChevronRight, { className: "size-4 text-foreground" })
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)(import_lucide_react66.Play, { className: "mr-2 size-4" }),
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,