@wealthx/shadcn 1.5.9 → 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 (112) hide show
  1. package/.turbo/turbo-build.log +157 -157
  2. package/CHANGELOG.md +12 -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-TAFL4WDY.mjs → chunk-IODGRCQG.mjs} +17 -10
  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 +17 -10
  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 +473 -197
  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-calendar-view.tsx +7 -6
  106. package/src/components/ui/appointment-time-slot-picker.tsx +1 -0
  107. package/src/components/ui/badge.tsx +1 -1
  108. package/src/components/ui/contact-alert-dialog/contact-alert-dialog.tsx +19 -1
  109. package/src/components/ui/opportunity-card.tsx +56 -20
  110. package/src/components/ui/share-details-dialog.tsx +251 -0
  111. package/src/styles/styles-css.ts +1 -1
  112. package/dist/chunk-OZ2R6ERP.mjs +0 -174
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  badgeVariants
3
- } from "./chunk-WL6WVV47.mjs";
3
+ } from "./chunk-X6RC5UWB.mjs";
4
4
  import {
5
5
  Button
6
6
  } from "./chunk-NOOEKOWY.mjs";
@@ -48,6 +48,7 @@ import {
48
48
 
49
49
  // src/components/ui/contact-alert-dialog/contact-alert-dialog.tsx
50
50
  import * as React2 from "react";
51
+ import { AlertCircleIcon, EyeIcon, InfoIcon } from "lucide-react";
51
52
  import {
52
53
  Query,
53
54
  Utils as QbUtils4
@@ -837,7 +838,24 @@ function ContactAlertDialog({
837
838
  size: "sm",
838
839
  value: severity,
839
840
  onValueChange: (v) => v && setSeverity(v),
840
- children: ["NEED_ACTION", "WATCH", "HEALTHY"].map((s) => /* @__PURE__ */ jsx2(ToggleGroupItem, { value: s, children: SEVERITY_LABELS[s] }, s))
841
+ children: ["NEED_ACTION", "WATCH", "HEALTHY"].map((s) => /* @__PURE__ */ jsxs2(
842
+ ToggleGroupItem,
843
+ {
844
+ value: s,
845
+ className: cn(
846
+ s === "NEED_ACTION" && "data-pressed:bg-destructive/10 data-pressed:inset-ring-destructive data-pressed:text-destructive-text data-pressed:hover:bg-destructive/10",
847
+ s === "WATCH" && "data-pressed:bg-warning/10 data-pressed:inset-ring-warning data-pressed:text-warning-text data-pressed:hover:bg-warning/10",
848
+ s === "HEALTHY" && "data-pressed:bg-info/10 data-pressed:inset-ring-info data-pressed:text-info-text data-pressed:hover:bg-info/10"
849
+ ),
850
+ children: [
851
+ s === "NEED_ACTION" && /* @__PURE__ */ jsx2(AlertCircleIcon, { className: "size-3.5" }),
852
+ s === "WATCH" && /* @__PURE__ */ jsx2(EyeIcon, { className: "size-3.5" }),
853
+ s === "HEALTHY" && /* @__PURE__ */ jsx2(InfoIcon, { className: "size-3.5" }),
854
+ SEVERITY_LABELS[s]
855
+ ]
856
+ },
857
+ s
858
+ ))
841
859
  }
842
860
  )
843
861
  ] }),
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AppointmentConfirmDialog,
3
3
  AppointmentRescheduleDialog
4
- } from "./chunk-AANINK2B.mjs";
4
+ } from "./chunk-2KNQZG5S.mjs";
5
5
  import {
6
6
  Sheet,
7
7
  SheetContent
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-H6NQTIF4.mjs";
16
16
  import {
17
17
  Badge
18
- } from "./chunk-WL6WVV47.mjs";
18
+ } from "./chunk-X6RC5UWB.mjs";
19
19
  import {
20
20
  Button
21
21
  } from "./chunk-NOOEKOWY.mjs";
@@ -1,3 +1,9 @@
1
+ import {
2
+ DropdownMenu,
3
+ DropdownMenuContent,
4
+ DropdownMenuItem,
5
+ DropdownMenuTrigger
6
+ } from "./chunk-H5DTKPJ2.mjs";
1
7
  import {
2
8
  Separator
3
9
  } from "./chunk-2GIYVERS.mjs";
@@ -8,7 +14,7 @@ import {
8
14
  } from "./chunk-H6NQTIF4.mjs";
9
15
  import {
10
16
  Badge
11
- } from "./chunk-WL6WVV47.mjs";
17
+ } from "./chunk-X6RC5UWB.mjs";
12
18
  import {
13
19
  Button
14
20
  } from "./chunk-NOOEKOWY.mjs";
@@ -54,6 +60,7 @@ function AdvisorCard({
54
60
  isPrimary = false,
55
61
  appointments,
56
62
  onRefer,
63
+ menuItems,
57
64
  onMoreOptions,
58
65
  onBookAppointment,
59
66
  onViewAppointment
@@ -64,17 +71,17 @@ function AdvisorCard({
64
71
  /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-4 p-4", children: [
65
72
  /* @__PURE__ */ jsxs(Avatar, { className: "h-10 w-10 shrink-0", children: [
66
73
  companyLogoUrl && /* @__PURE__ */ jsx(AvatarImage, { src: companyLogoUrl, alt: `${name} company logo` }),
67
- /* @__PURE__ */ 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() })
74
+ /* @__PURE__ */ 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() })
68
75
  ] }),
69
76
  /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
70
- /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold leading-tight", children: name }),
71
- /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: role }),
77
+ /* @__PURE__ */ jsx("p", { className: "text-label-large leading-tight", children: name }),
78
+ /* @__PURE__ */ jsx("p", { className: "text-body-small text-muted-foreground", children: role }),
72
79
  /* @__PURE__ */ jsxs("div", { className: "mt-2 flex flex-col gap-1", children: [
73
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-sm text-muted-foreground", children: [
80
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-body-small text-muted-foreground", children: [
74
81
  /* @__PURE__ */ jsx(Phone, { className: "h-4 w-4 shrink-0" }),
75
82
  /* @__PURE__ */ jsx("span", { children: phone })
76
83
  ] }),
77
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-sm text-muted-foreground", children: [
84
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-body-small text-muted-foreground", children: [
78
85
  /* @__PURE__ */ jsx(Mail, { className: "h-4 w-4 shrink-0" }),
79
86
  /* @__PURE__ */ jsx("span", { children: email })
80
87
  ] })
@@ -82,7 +89,33 @@ function AdvisorCard({
82
89
  ] }),
83
90
  /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [
84
91
  isPrimary && /* @__PURE__ */ jsx(Badge, { variant: "success", children: "Primary" }),
85
- /* @__PURE__ */ jsx(
92
+ menuItems && menuItems.length > 0 ? /* @__PURE__ */ jsxs(DropdownMenu, { children: [
93
+ /* @__PURE__ */ jsx(
94
+ DropdownMenuTrigger,
95
+ {
96
+ render: /* @__PURE__ */ jsx(
97
+ Button,
98
+ {
99
+ variant: "ghost",
100
+ size: "icon",
101
+ className: "h-7 w-7",
102
+ "aria-label": "More options"
103
+ }
104
+ ),
105
+ children: /* @__PURE__ */ jsx(MoreVertical, { className: "h-4 w-4" })
106
+ }
107
+ ),
108
+ /* @__PURE__ */ jsx(DropdownMenuContent, { align: "end", children: menuItems.map((item, i) => /* @__PURE__ */ jsx(
109
+ DropdownMenuItem,
110
+ {
111
+ variant: item.variant,
112
+ disabled: item.disabled,
113
+ onClick: item.onClick,
114
+ children: item.label
115
+ },
116
+ i
117
+ )) })
118
+ ] }) : /* @__PURE__ */ jsx(
86
119
  Button,
87
120
  {
88
121
  variant: "ghost",
@@ -107,17 +140,10 @@ function AdvisorCard({
107
140
  /* @__PURE__ */ jsx(CalendarCheck, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
108
141
  /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
109
142
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
110
- /* @__PURE__ */ jsx(
111
- Badge,
112
- {
113
- variant: STATUS_VARIANT[appt.status],
114
- className: "text-[10px]",
115
- children: STATUS_LABEL[appt.status]
116
- }
117
- ),
118
- appt.appointmentType && /* @__PURE__ */ jsx("span", { className: "truncate text-sm font-semibold", children: appt.appointmentType })
143
+ /* @__PURE__ */ jsx(Badge, { variant: STATUS_VARIANT[appt.status], children: STATUS_LABEL[appt.status] }),
144
+ appt.appointmentType && /* @__PURE__ */ jsx("span", { className: "truncate text-h6", children: appt.appointmentType })
119
145
  ] }),
120
- /* @__PURE__ */ jsxs("p", { className: "whitespace-nowrap text-sm text-muted-foreground", children: [
146
+ /* @__PURE__ */ jsxs("p", { className: "whitespace-nowrap text-body-small text-muted-foreground", children: [
121
147
  appt.date,
122
148
  " \xB7 ",
123
149
  appt.timeStart,
@@ -145,7 +171,7 @@ function AdvisorCard({
145
171
  /* Empty state */
146
172
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 px-4 py-3", children: [
147
173
  /* @__PURE__ */ jsx(Calendar, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
148
- /* @__PURE__ */ jsx("p", { className: "flex-1 text-xs text-muted-foreground", children: "No upcoming appointments" })
174
+ /* @__PURE__ */ jsx("p", { className: "flex-1 text-caption text-muted-foreground", children: "No upcoming appointments" })
149
175
  ] })
150
176
  )
151
177
  ] }),
@@ -164,7 +190,7 @@ function AdvisorCard({
164
190
  onRefer && /* @__PURE__ */ jsxs(
165
191
  Button,
166
192
  {
167
- variant: "outline",
193
+ variant: "default",
168
194
  size: "sm",
169
195
  className: "w-full",
170
196
  onClick: onRefer,
@@ -188,8 +214,8 @@ function AdvisorInviteCard({ onInvite }) {
188
214
  children: [
189
215
  /* @__PURE__ */ jsx("div", { className: "flex h-10 w-10 items-center justify-center border border-dashed border-muted-foreground/40", children: /* @__PURE__ */ jsx(Plus, { className: "h-5 w-5 text-muted-foreground" }) }),
190
216
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
191
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: "Add Another Advisor" }),
192
- /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "Connect more advisors to your account" })
217
+ /* @__PURE__ */ jsx("p", { className: "text-label-large", children: "Add Another Advisor" }),
218
+ /* @__PURE__ */ jsx("p", { className: "text-caption text-muted-foreground", children: "Connect more advisors to your account" })
193
219
  ] })
194
220
  ]
195
221
  }
@@ -13,7 +13,7 @@ import {
13
13
  import { cva } from "class-variance-authority";
14
14
  import { jsx } from "react/jsx-runtime";
15
15
  var badgeVariants = cva(
16
- "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",
16
+ "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",
17
17
  {
18
18
  variants: {
19
19
  variant: {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AppointmentSlotSection
3
- } from "./chunk-FRT3S72S.mjs";
3
+ } from "./chunk-CQ7HKBEX.mjs";
4
4
  import {
5
5
  Separator
6
6
  } from "./chunk-2GIYVERS.mjs";
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-H6NQTIF4.mjs";
23
23
  import {
24
24
  Badge
25
- } from "./chunk-WL6WVV47.mjs";
25
+ } from "./chunk-X6RC5UWB.mjs";
26
26
  import {
27
27
  Calendar
28
28
  } from "./chunk-FBNEIYSE.mjs";
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-LI2CTS5O.mjs";
7
7
  import {
8
8
  Badge
9
- } from "./chunk-WL6WVV47.mjs";
9
+ } from "./chunk-X6RC5UWB.mjs";
10
10
  import {
11
11
  Button
12
12
  } from "./chunk-NOOEKOWY.mjs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TaskCheckItem
3
- } from "./chunk-2WCIORP7.mjs";
3
+ } from "./chunk-EXI64H46.mjs";
4
4
  import {
5
5
  Progress
6
6
  } from "./chunk-JPGL36WQ.mjs";
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-2GIYVERS.mjs";
17
17
  import {
18
18
  Badge
19
- } from "./chunk-WL6WVV47.mjs";
19
+ } from "./chunk-X6RC5UWB.mjs";
20
20
  import {
21
21
  formatDateDayMonth,
22
22
  formatDateShort
@@ -47,6 +47,8 @@ import {
47
47
  Users,
48
48
  Calendar,
49
49
  Check,
50
+ Copy,
51
+ Link2,
50
52
  MoreVertical,
51
53
  Clock,
52
54
  ArrowRight,
@@ -574,6 +576,45 @@ function OpportunityCard({
574
576
  }
575
577
  );
576
578
  }
579
+ function normalizeUrl(url) {
580
+ return `https://${url.replace(/^https?:\/\//, "")}`;
581
+ }
582
+ function LoanApplicationLink({ url }) {
583
+ const [copied, setCopied] = useState(false);
584
+ const href = normalizeUrl(url);
585
+ function handleCopy() {
586
+ navigator.clipboard.writeText(href).then(() => {
587
+ setCopied(true);
588
+ setTimeout(() => setCopied(false), 2e3);
589
+ });
590
+ }
591
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
592
+ /* @__PURE__ */ jsx("p", { className: "text-caption text-muted-foreground", children: "Or the link below to fill out the loan application directly." }),
593
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
594
+ /* @__PURE__ */ jsx(Link2, { className: "size-4 shrink-0 text-muted-foreground" }),
595
+ /* @__PURE__ */ jsx(
596
+ "a",
597
+ {
598
+ href,
599
+ target: "_blank",
600
+ rel: "noreferrer",
601
+ className: "min-w-0 flex-1 truncate text-body-small text-primary underline-offset-2 hover:underline",
602
+ children: url
603
+ }
604
+ ),
605
+ /* @__PURE__ */ jsx(
606
+ "button",
607
+ {
608
+ type: "button",
609
+ onClick: handleCopy,
610
+ className: "shrink-0 rounded p-1 text-muted-foreground transition-colors hover:text-foreground",
611
+ "aria-label": "Copy link",
612
+ children: copied ? /* @__PURE__ */ jsx(Check, { className: "size-4 text-success-text" }) : /* @__PURE__ */ jsx(Copy, { className: "size-4" })
613
+ }
614
+ )
615
+ ] })
616
+ ] });
617
+ }
577
618
  function LeadCard({
578
619
  customerName,
579
620
  customerPhone,
@@ -596,13 +637,13 @@ function LeadCard({
596
637
  children: [
597
638
  /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-2", children: [
598
639
  /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
599
- /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold text-foreground", children: customerName }),
600
- customerPhone && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
601
- /* @__PURE__ */ jsx(Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
640
+ /* @__PURE__ */ jsx("span", { className: "text-label-medium text-foreground", children: customerName }),
641
+ customerPhone && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
642
+ /* @__PURE__ */ jsx(Phone, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
602
643
  customerPhone
603
644
  ] }),
604
- customerEmail && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
605
- /* @__PURE__ */ jsx(Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
645
+ customerEmail && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
646
+ /* @__PURE__ */ jsx(Mail, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
606
647
  /* @__PURE__ */ jsx("span", { className: "truncate", children: customerEmail })
607
648
  ] })
608
649
  ] }),
@@ -641,23 +682,7 @@ function LeadCard({
641
682
  children: "Send Loan Application Request"
642
683
  }
643
684
  ),
644
- loanApplicationUrl && /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
645
- "Or the link below to fill out the loan application directly.",
646
- /* @__PURE__ */ jsx("br", {}),
647
- /* @__PURE__ */ jsx(
648
- "a",
649
- {
650
- href: `https://${loanApplicationUrl.replace(
651
- /^https?:\/\//,
652
- ""
653
- )}`,
654
- target: "_blank",
655
- rel: "noreferrer",
656
- className: "text-primary underline-offset-2 hover:underline",
657
- children: loanApplicationUrl
658
- }
659
- )
660
- ] })
685
+ loanApplicationUrl && /* @__PURE__ */ jsx(LoanApplicationLink, { url: loanApplicationUrl })
661
686
  ] })
662
687
  ]
663
688
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  KanbanColumn
3
- } from "./chunk-3CGM3QXQ.mjs";
3
+ } from "./chunk-AKWN5ZQG.mjs";
4
4
  import {
5
5
  ToggleGroup,
6
6
  ToggleGroupItem
@@ -1,10 +1,3 @@
1
- import {
2
- DropdownMenu,
3
- DropdownMenuContent,
4
- DropdownMenuItem,
5
- DropdownMenuSeparator,
6
- DropdownMenuTrigger
7
- } from "./chunk-H5DTKPJ2.mjs";
8
1
  import {
9
2
  Tooltip,
10
3
  TooltipContent,
@@ -16,6 +9,13 @@ import {
16
9
  TabsList,
17
10
  TabsTrigger
18
11
  } from "./chunk-WE4YKBDE.mjs";
12
+ import {
13
+ DropdownMenu,
14
+ DropdownMenuContent,
15
+ DropdownMenuItem,
16
+ DropdownMenuSeparator,
17
+ DropdownMenuTrigger
18
+ } from "./chunk-H5DTKPJ2.mjs";
19
19
  import {
20
20
  Separator
21
21
  } from "./chunk-2GIYVERS.mjs";
@@ -36,7 +36,7 @@ import {
36
36
  } from "./chunk-H6NQTIF4.mjs";
37
37
  import {
38
38
  Badge
39
- } from "./chunk-WL6WVV47.mjs";
39
+ } from "./chunk-X6RC5UWB.mjs";
40
40
  import {
41
41
  ToggleGroup,
42
42
  ToggleGroupItem