@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
@@ -156,7 +156,7 @@ Slot.displayName = "Slot";
156
156
  // src/components/ui/badge.tsx
157
157
  var import_jsx_runtime = require("react/jsx-runtime");
158
158
  var badgeVariants = (0, import_class_variance_authority.cva)(
159
- "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",
159
+ "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",
160
160
  {
161
161
  variants: {
162
162
  variant: {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  IntegrationCard
3
- } from "../../chunk-CEEVYRQA.mjs";
4
- import "../../chunk-WL6WVV47.mjs";
3
+ } from "../../chunk-67DGIPQ4.mjs";
4
+ import "../../chunk-X6RC5UWB.mjs";
5
5
  import "../../chunk-NOOEKOWY.mjs";
6
6
  import "../../chunk-R4HCRDU5.mjs";
7
7
  import "../../chunk-AFML43VJ.mjs";
@@ -181,7 +181,7 @@ Slot.displayName = "Slot";
181
181
  // src/components/ui/badge.tsx
182
182
  var import_jsx_runtime2 = require("react/jsx-runtime");
183
183
  var badgeVariants = (0, import_class_variance_authority.cva)(
184
- "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",
184
+ "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",
185
185
  {
186
186
  variants: {
187
187
  variant: {
@@ -1245,6 +1245,45 @@ function OpportunityCard({
1245
1245
  }
1246
1246
  );
1247
1247
  }
1248
+ function normalizeUrl(url) {
1249
+ return `https://${url.replace(/^https?:\/\//, "")}`;
1250
+ }
1251
+ function LoanApplicationLink({ url }) {
1252
+ const [copied, setCopied] = (0, import_react5.useState)(false);
1253
+ const href = normalizeUrl(url);
1254
+ function handleCopy() {
1255
+ navigator.clipboard.writeText(href).then(() => {
1256
+ setCopied(true);
1257
+ setTimeout(() => setCopied(false), 2e3);
1258
+ });
1259
+ }
1260
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex flex-col gap-1", children: [
1261
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "text-caption text-muted-foreground", children: "Or the link below to fill out the loan application directly." }),
1262
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center gap-1.5", children: [
1263
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react6.Link2, { className: "size-4 shrink-0 text-muted-foreground" }),
1264
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1265
+ "a",
1266
+ {
1267
+ href,
1268
+ target: "_blank",
1269
+ rel: "noreferrer",
1270
+ className: "min-w-0 flex-1 truncate text-body-small text-primary underline-offset-2 hover:underline",
1271
+ children: url
1272
+ }
1273
+ ),
1274
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1275
+ "button",
1276
+ {
1277
+ type: "button",
1278
+ onClick: handleCopy,
1279
+ className: "shrink-0 rounded p-1 text-muted-foreground transition-colors hover:text-foreground",
1280
+ "aria-label": "Copy link",
1281
+ children: copied ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react6.Check, { className: "size-4 text-success-text" }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react6.Copy, { className: "size-4" })
1282
+ }
1283
+ )
1284
+ ] })
1285
+ ] });
1286
+ }
1248
1287
  function LeadCard({
1249
1288
  customerName,
1250
1289
  customerPhone,
@@ -1267,13 +1306,13 @@ function LeadCard({
1267
1306
  children: [
1268
1307
  /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
1269
1308
  /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
1270
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "text-sm font-semibold text-foreground", children: customerName }),
1271
- customerPhone && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1272
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react6.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1309
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "text-label-medium text-foreground", children: customerName }),
1310
+ customerPhone && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
1311
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react6.Phone, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
1273
1312
  customerPhone
1274
1313
  ] }),
1275
- customerEmail && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1276
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react6.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1314
+ customerEmail && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
1315
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react6.Mail, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
1277
1316
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "truncate", children: customerEmail })
1278
1317
  ] })
1279
1318
  ] }),
@@ -1312,23 +1351,7 @@ function LeadCard({
1312
1351
  children: "Send Loan Application Request"
1313
1352
  }
1314
1353
  ),
1315
- loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
1316
- "Or the link below to fill out the loan application directly.",
1317
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("br", {}),
1318
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1319
- "a",
1320
- {
1321
- href: `https://${loanApplicationUrl.replace(
1322
- /^https?:\/\//,
1323
- ""
1324
- )}`,
1325
- target: "_blank",
1326
- rel: "noreferrer",
1327
- className: "text-primary underline-offset-2 hover:underline",
1328
- children: loanApplicationUrl
1329
- }
1330
- )
1331
- ] })
1354
+ loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(LoanApplicationLink, { url: loanApplicationUrl })
1332
1355
  ] })
1333
1356
  ]
1334
1357
  }
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  KanbanColumn
3
- } from "../../chunk-3CGM3QXQ.mjs";
4
- import "../../chunk-54MTIKNC.mjs";
5
- import "../../chunk-2WCIORP7.mjs";
3
+ } from "../../chunk-AKWN5ZQG.mjs";
4
+ import "../../chunk-YV7XF32X.mjs";
5
+ import "../../chunk-EXI64H46.mjs";
6
6
  import "../../chunk-JPGL36WQ.mjs";
7
7
  import "../../chunk-IKXYTCSB.mjs";
8
8
  import "../../chunk-JVMXMFBB.mjs";
9
9
  import "../../chunk-PNSYFE3K.mjs";
10
10
  import "../../chunk-H5DTKPJ2.mjs";
11
11
  import "../../chunk-2GIYVERS.mjs";
12
- import "../../chunk-WL6WVV47.mjs";
12
+ import "../../chunk-X6RC5UWB.mjs";
13
13
  import "../../chunk-LHWJQNLG.mjs";
14
14
  import "../../chunk-XYSRRDBH.mjs";
15
15
  import "../../chunk-FRCTOAKZ.mjs";
@@ -155,7 +155,7 @@ Slot.displayName = "Slot";
155
155
  // src/components/ui/badge.tsx
156
156
  var import_jsx_runtime = require("react/jsx-runtime");
157
157
  var badgeVariants = (0, import_class_variance_authority.cva)(
158
- "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",
158
+ "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",
159
159
  {
160
160
  variants: {
161
161
  variant: {
@@ -3,7 +3,7 @@ import {
3
3
  } from "../../chunk-3VDET466.mjs";
4
4
  import {
5
5
  Badge
6
- } from "../../chunk-WL6WVV47.mjs";
6
+ } from "../../chunk-X6RC5UWB.mjs";
7
7
  import {
8
8
  Button
9
9
  } from "../../chunk-NOOEKOWY.mjs";
@@ -153,7 +153,7 @@ Slot.displayName = "Slot";
153
153
  // src/components/ui/badge.tsx
154
154
  var import_jsx_runtime = require("react/jsx-runtime");
155
155
  var badgeVariants = (0, import_class_variance_authority.cva)(
156
- "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",
156
+ "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",
157
157
  {
158
158
  variants: {
159
159
  variant: {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  LoanApplicationBadge
3
- } from "../../chunk-4DO3WM7V.mjs";
4
- import "../../chunk-WL6WVV47.mjs";
3
+ } from "../../chunk-K4VWSDJJ.mjs";
4
+ import "../../chunk-X6RC5UWB.mjs";
5
5
  import "../../chunk-R4HCRDU5.mjs";
6
6
  import "../../chunk-AFML43VJ.mjs";
7
7
  import "../../chunk-WNQUEZJF.mjs";
@@ -195,7 +195,7 @@ Slot.displayName = "Slot";
195
195
  // src/components/ui/badge.tsx
196
196
  var import_jsx_runtime = require("react/jsx-runtime");
197
197
  var badgeVariants = (0, import_class_variance_authority.cva)(
198
- "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",
198
+ "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",
199
199
  {
200
200
  variants: {
201
201
  variant: {
@@ -1215,6 +1215,45 @@ function OpportunityCard({
1215
1215
  }
1216
1216
  );
1217
1217
  }
1218
+ function normalizeUrl(url) {
1219
+ return `https://${url.replace(/^https?:\/\//, "")}`;
1220
+ }
1221
+ function LoanApplicationLink({ url }) {
1222
+ const [copied, setCopied] = (0, import_react5.useState)(false);
1223
+ const href = normalizeUrl(url);
1224
+ function handleCopy() {
1225
+ navigator.clipboard.writeText(href).then(() => {
1226
+ setCopied(true);
1227
+ setTimeout(() => setCopied(false), 2e3);
1228
+ });
1229
+ }
1230
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-1", children: [
1231
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-caption text-muted-foreground", children: "Or the link below to fill out the loan application directly." }),
1232
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center gap-1.5", children: [
1233
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react5.Link2, { className: "size-4 shrink-0 text-muted-foreground" }),
1234
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1235
+ "a",
1236
+ {
1237
+ href,
1238
+ target: "_blank",
1239
+ rel: "noreferrer",
1240
+ className: "min-w-0 flex-1 truncate text-body-small text-primary underline-offset-2 hover:underline",
1241
+ children: url
1242
+ }
1243
+ ),
1244
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1245
+ "button",
1246
+ {
1247
+ type: "button",
1248
+ onClick: handleCopy,
1249
+ className: "shrink-0 rounded p-1 text-muted-foreground transition-colors hover:text-foreground",
1250
+ "aria-label": "Copy link",
1251
+ children: copied ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react5.Check, { className: "size-4 text-success-text" }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react5.Copy, { className: "size-4" })
1252
+ }
1253
+ )
1254
+ ] })
1255
+ ] });
1256
+ }
1218
1257
  function LeadCard({
1219
1258
  customerName,
1220
1259
  customerPhone,
@@ -1237,13 +1276,13 @@ function LeadCard({
1237
1276
  children: [
1238
1277
  /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
1239
1278
  /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
1240
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-sm font-semibold text-foreground", children: customerName }),
1241
- customerPhone && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1242
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react5.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1279
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-label-medium text-foreground", children: customerName }),
1280
+ customerPhone && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
1281
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react5.Phone, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
1243
1282
  customerPhone
1244
1283
  ] }),
1245
- customerEmail && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1246
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react5.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1284
+ customerEmail && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
1285
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react5.Mail, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
1247
1286
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "truncate", children: customerEmail })
1248
1287
  ] })
1249
1288
  ] }),
@@ -1282,23 +1321,7 @@ function LeadCard({
1282
1321
  children: "Send Loan Application Request"
1283
1322
  }
1284
1323
  ),
1285
- loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
1286
- "Or the link below to fill out the loan application directly.",
1287
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("br", {}),
1288
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1289
- "a",
1290
- {
1291
- href: `https://${loanApplicationUrl.replace(
1292
- /^https?:\/\//,
1293
- ""
1294
- )}`,
1295
- target: "_blank",
1296
- rel: "noreferrer",
1297
- className: "text-primary underline-offset-2 hover:underline",
1298
- children: loanApplicationUrl
1299
- }
1300
- )
1301
- ] })
1324
+ loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(LoanApplicationLink, { url: loanApplicationUrl })
1302
1325
  ] })
1303
1326
  ]
1304
1327
  }
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  LeadCard,
3
3
  OpportunityCard
4
- } from "../../chunk-54MTIKNC.mjs";
5
- import "../../chunk-2WCIORP7.mjs";
4
+ } from "../../chunk-YV7XF32X.mjs";
5
+ import "../../chunk-EXI64H46.mjs";
6
6
  import "../../chunk-JPGL36WQ.mjs";
7
7
  import "../../chunk-IKXYTCSB.mjs";
8
8
  import "../../chunk-PNSYFE3K.mjs";
9
9
  import "../../chunk-H5DTKPJ2.mjs";
10
10
  import "../../chunk-2GIYVERS.mjs";
11
- import "../../chunk-WL6WVV47.mjs";
11
+ import "../../chunk-X6RC5UWB.mjs";
12
12
  import "../../chunk-LHWJQNLG.mjs";
13
13
  import "../../chunk-XYSRRDBH.mjs";
14
14
  import "../../chunk-FRCTOAKZ.mjs";
@@ -158,7 +158,7 @@ Slot.displayName = "Slot";
158
158
  // src/components/ui/badge.tsx
159
159
  var import_jsx_runtime = require("react/jsx-runtime");
160
160
  var badgeVariants = (0, import_class_variance_authority.cva)(
161
- "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",
161
+ "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",
162
162
  {
163
163
  variants: {
164
164
  variant: {
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  OpportunitySummaryTab
3
- } from "../../chunk-6U4NQGVM.mjs";
3
+ } from "../../chunk-4X4MGYHE.mjs";
4
4
  import "../../chunk-6MDNL5I2.mjs";
5
- import "../../chunk-W5QJ57PU.mjs";
5
+ import "../../chunk-7LN5OGC2.mjs";
6
6
  import "../../chunk-DQB4EPIS.mjs";
7
7
  import "../../chunk-JTK6VJXY.mjs";
8
8
  import "../../chunk-MXP2RX2V.mjs";
@@ -12,7 +12,7 @@ import "../../chunk-USOVLDGS.mjs";
12
12
  import "../../chunk-WE4YKBDE.mjs";
13
13
  import "../../chunk-BS75ICOO.mjs";
14
14
  import "../../chunk-LI2CTS5O.mjs";
15
- import "../../chunk-WL6WVV47.mjs";
15
+ import "../../chunk-X6RC5UWB.mjs";
16
16
  import "../../chunk-TRM3KIHT.mjs";
17
17
  import "../../chunk-HB5BKRMH.mjs";
18
18
  import "../../chunk-FBNEIYSE.mjs";
@@ -388,7 +388,7 @@ function formatCurrency(value, options) {
388
388
  var import_class_variance_authority3 = require("class-variance-authority");
389
389
  var import_jsx_runtime6 = require("react/jsx-runtime");
390
390
  var badgeVariants = (0, import_class_variance_authority3.cva)(
391
- "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",
391
+ "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",
392
392
  {
393
393
  variants: {
394
394
  variant: {
@@ -1375,6 +1375,45 @@ function OpportunityCard({
1375
1375
  }
1376
1376
  );
1377
1377
  }
1378
+ function normalizeUrl(url) {
1379
+ return `https://${url.replace(/^https?:\/\//, "")}`;
1380
+ }
1381
+ function LoanApplicationLink({ url }) {
1382
+ const [copied, setCopied] = (0, import_react5.useState)(false);
1383
+ const href = normalizeUrl(url);
1384
+ function handleCopy() {
1385
+ navigator.clipboard.writeText(href).then(() => {
1386
+ setCopied(true);
1387
+ setTimeout(() => setCopied(false), 2e3);
1388
+ });
1389
+ }
1390
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-col gap-1", children: [
1391
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-caption text-muted-foreground", children: "Or the link below to fill out the loan application directly." }),
1392
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center gap-1.5", children: [
1393
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Link2, { className: "size-4 shrink-0 text-muted-foreground" }),
1394
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1395
+ "a",
1396
+ {
1397
+ href,
1398
+ target: "_blank",
1399
+ rel: "noreferrer",
1400
+ className: "min-w-0 flex-1 truncate text-body-small text-primary underline-offset-2 hover:underline",
1401
+ children: url
1402
+ }
1403
+ ),
1404
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1405
+ "button",
1406
+ {
1407
+ type: "button",
1408
+ onClick: handleCopy,
1409
+ className: "shrink-0 rounded p-1 text-muted-foreground transition-colors hover:text-foreground",
1410
+ "aria-label": "Copy link",
1411
+ children: copied ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Check, { className: "size-4 text-success-text" }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Copy, { className: "size-4" })
1412
+ }
1413
+ )
1414
+ ] })
1415
+ ] });
1416
+ }
1378
1417
  function LeadCard({
1379
1418
  customerName,
1380
1419
  customerPhone,
@@ -1397,13 +1436,13 @@ function LeadCard({
1397
1436
  children: [
1398
1437
  /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
1399
1438
  /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
1400
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-sm font-semibold text-foreground", children: customerName }),
1401
- customerPhone && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1402
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1439
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-label-medium text-foreground", children: customerName }),
1440
+ customerPhone && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
1441
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Phone, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
1403
1442
  customerPhone
1404
1443
  ] }),
1405
- customerEmail && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1406
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
1444
+ customerEmail && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-caption text-muted-foreground", children: [
1445
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Mail, { className: "size-3.5 shrink-0", "aria-hidden": "true" }),
1407
1446
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "truncate", children: customerEmail })
1408
1447
  ] })
1409
1448
  ] }),
@@ -1442,23 +1481,7 @@ function LeadCard({
1442
1481
  children: "Send Loan Application Request"
1443
1482
  }
1444
1483
  ),
1445
- loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
1446
- "Or the link below to fill out the loan application directly.",
1447
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("br", {}),
1448
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1449
- "a",
1450
- {
1451
- href: `https://${loanApplicationUrl.replace(
1452
- /^https?:\/\//,
1453
- ""
1454
- )}`,
1455
- target: "_blank",
1456
- rel: "noreferrer",
1457
- className: "text-primary underline-offset-2 hover:underline",
1458
- children: loanApplicationUrl
1459
- }
1460
- )
1461
- ] })
1484
+ loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(LoanApplicationLink, { url: loanApplicationUrl })
1462
1485
  ] })
1463
1486
  ]
1464
1487
  }
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  PipelineBoard
3
- } from "../../chunk-E5EDZQ5J.mjs";
4
- import "../../chunk-3CGM3QXQ.mjs";
5
- import "../../chunk-54MTIKNC.mjs";
6
- import "../../chunk-2WCIORP7.mjs";
3
+ } from "../../chunk-ZA44WICP.mjs";
4
+ import "../../chunk-AKWN5ZQG.mjs";
5
+ import "../../chunk-YV7XF32X.mjs";
6
+ import "../../chunk-EXI64H46.mjs";
7
7
  import "../../chunk-JPGL36WQ.mjs";
8
8
  import "../../chunk-IKXYTCSB.mjs";
9
9
  import "../../chunk-JVMXMFBB.mjs";
10
10
  import "../../chunk-PNSYFE3K.mjs";
11
11
  import "../../chunk-H5DTKPJ2.mjs";
12
12
  import "../../chunk-2GIYVERS.mjs";
13
- import "../../chunk-WL6WVV47.mjs";
13
+ import "../../chunk-X6RC5UWB.mjs";
14
14
  import "../../chunk-LHWJQNLG.mjs";
15
15
  import "../../chunk-OWFQSXVD.mjs";
16
16
  import "../../chunk-6QAFGZC2.mjs";
@@ -155,7 +155,7 @@ Slot.displayName = "Slot";
155
155
  // src/components/ui/badge.tsx
156
156
  var import_jsx_runtime = require("react/jsx-runtime");
157
157
  var badgeVariants = (0, import_class_variance_authority.cva)(
158
- "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",
158
+ "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",
159
159
  {
160
160
  variants: {
161
161
  variant: {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  TaskCheckItem
3
- } from "../../chunk-2WCIORP7.mjs";
3
+ } from "../../chunk-EXI64H46.mjs";
4
4
  import "../../chunk-IKXYTCSB.mjs";
5
5
  import "../../chunk-PNSYFE3K.mjs";
6
- import "../../chunk-WL6WVV47.mjs";
6
+ import "../../chunk-X6RC5UWB.mjs";
7
7
  import "../../chunk-R4HCRDU5.mjs";
8
8
  import "../../chunk-AFML43VJ.mjs";
9
9
  import "../../chunk-WNQUEZJF.mjs";
@@ -156,7 +156,7 @@ Slot.displayName = "Slot";
156
156
  // src/components/ui/badge.tsx
157
157
  var import_jsx_runtime = require("react/jsx-runtime");
158
158
  var badgeVariants = (0, import_class_variance_authority.cva)(
159
- "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",
159
+ "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",
160
160
  {
161
161
  variants: {
162
162
  variant: {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Badge
3
- } from "../../chunk-WL6WVV47.mjs";
3
+ } from "../../chunk-X6RC5UWB.mjs";
4
4
  import {
5
5
  Accordion,
6
6
  AccordionContent,
@@ -162,7 +162,7 @@ Slot.displayName = "Slot";
162
162
  // src/components/ui/badge.tsx
163
163
  var import_jsx_runtime = require("react/jsx-runtime");
164
164
  var badgeVariants = (0, import_class_variance_authority.cva)(
165
- "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",
165
+ "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",
166
166
  {
167
167
  variants: {
168
168
  variant: {
@@ -5,9 +5,9 @@ import {
5
5
  ResourceEmailTemplateCard,
6
6
  ResourceModal,
7
7
  ResourceVideoCard
8
- } from "../../chunk-VWZS32ZQ.mjs";
8
+ } from "../../chunk-XYWEGBAA.mjs";
9
9
  import "../../chunk-LI2CTS5O.mjs";
10
- import "../../chunk-WL6WVV47.mjs";
10
+ import "../../chunk-X6RC5UWB.mjs";
11
11
  import "../../chunk-XYSRRDBH.mjs";
12
12
  import "../../chunk-FRCTOAKZ.mjs";
13
13
  import "../../chunk-NOOEKOWY.mjs";