@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.
- package/.turbo/turbo-build.log +157 -157
- package/CHANGELOG.md +12 -0
- package/dist/{chunk-AANINK2B.mjs → chunk-2KNQZG5S.mjs} +1 -1
- package/dist/chunk-3KLJ4XRE.mjs +375 -0
- package/dist/{chunk-6U4NQGVM.mjs → chunk-4X4MGYHE.mjs} +2 -2
- package/dist/{chunk-CEEVYRQA.mjs → chunk-67DGIPQ4.mjs} +1 -1
- package/dist/{chunk-7UIL5UN3.mjs → chunk-7II6QRCZ.mjs} +1 -1
- package/dist/{chunk-W5QJ57PU.mjs → chunk-7LN5OGC2.mjs} +1 -1
- package/dist/{chunk-ZXEUBBHJ.mjs → chunk-7TMPOZDE.mjs} +1 -1
- package/dist/{chunk-AHSCWXYJ.mjs → chunk-AJUAJC5O.mjs} +1 -1
- package/dist/{chunk-3CGM3QXQ.mjs → chunk-AKWN5ZQG.mjs} +2 -2
- package/dist/{chunk-FRT3S72S.mjs → chunk-CQ7HKBEX.mjs} +1 -1
- package/dist/{chunk-E2BNCA6L.mjs → chunk-EHQL64B7.mjs} +1 -1
- package/dist/{chunk-2WCIORP7.mjs → chunk-EXI64H46.mjs} +1 -1
- package/dist/{chunk-BBXSNDS3.mjs → chunk-FQYFPHDO.mjs} +1 -1
- package/dist/{chunk-3VZ6CYY2.mjs → chunk-GAXNO4JB.mjs} +1 -1
- package/dist/{chunk-3WGFIFP6.mjs → chunk-I4P7RXAE.mjs} +1 -1
- package/dist/{chunk-TAFL4WDY.mjs → chunk-IODGRCQG.mjs} +17 -10
- package/dist/{chunk-GS47ZSSA.mjs → chunk-J7KQON2N.mjs} +20 -5
- package/dist/{chunk-IQGKOT7A.mjs → chunk-K35TFQUB.mjs} +1 -1
- package/dist/{chunk-4DO3WM7V.mjs → chunk-K4VWSDJJ.mjs} +1 -1
- package/dist/{chunk-KWD6GANL.mjs → chunk-MPA2HV5U.mjs} +1 -1
- package/dist/{chunk-5LZZYODG.mjs → chunk-QHAMVWDG.mjs} +19 -1
- package/dist/{chunk-XUCDPAVI.mjs → chunk-R6U246E4.mjs} +2 -2
- package/dist/{chunk-VCDGLN25.mjs → chunk-S6AYZJYO.mjs} +47 -21
- package/dist/{chunk-WL6WVV47.mjs → chunk-X6RC5UWB.mjs} +1 -1
- package/dist/{chunk-4BHDDLWK.mjs → chunk-XAS6KBIG.mjs} +2 -2
- package/dist/{chunk-VWZS32ZQ.mjs → chunk-XYWEGBAA.mjs} +1 -1
- package/dist/{chunk-54MTIKNC.mjs → chunk-YV7XF32X.mjs} +49 -24
- package/dist/{chunk-E5EDZQ5J.mjs → chunk-ZA44WICP.mjs} +1 -1
- package/dist/{chunk-54TRNCID.mjs → chunk-ZMTCMP2G.mjs} +8 -8
- package/dist/components/ui/advisor-card.js +144 -55
- package/dist/components/ui/advisor-card.mjs +5 -2
- package/dist/components/ui/agent-evaluation-toast.js +1 -1
- package/dist/components/ui/agent-evaluation-toast.mjs +2 -2
- package/dist/components/ui/ai-assistant-drawer.js +1 -1
- package/dist/components/ui/ai-assistant-drawer.mjs +2 -2
- package/dist/components/ui/ai-builder.js +1 -1
- package/dist/components/ui/ai-builder.mjs +2 -2
- package/dist/components/ui/ai-conversations.js +1 -1
- package/dist/components/ui/ai-conversations.mjs +3 -3
- package/dist/components/ui/appointment-action-dialogs.js +1 -1
- package/dist/components/ui/appointment-action-dialogs.mjs +3 -3
- package/dist/components/ui/appointment-book-dialog.js +19 -4
- package/dist/components/ui/appointment-book-dialog.mjs +3 -3
- package/dist/components/ui/appointment-calendar-view.js +17 -10
- package/dist/components/ui/appointment-calendar-view.mjs +2 -2
- package/dist/components/ui/appointment-detail-sheet.js +1 -1
- package/dist/components/ui/appointment-detail-sheet.mjs +4 -4
- package/dist/components/ui/appointment-gmail-connect.js +1 -1
- package/dist/components/ui/appointment-gmail-connect.mjs +2 -2
- package/dist/components/ui/appointment-time-slot-picker.js +1 -1
- package/dist/components/ui/appointment-time-slot-picker.mjs +2 -2
- package/dist/components/ui/appointment-upcoming-card.js +1 -1
- package/dist/components/ui/appointment-upcoming-card.mjs +3 -3
- package/dist/components/ui/badge.js +1 -1
- package/dist/components/ui/badge.mjs +1 -1
- package/dist/components/ui/chat-widget-primitives.js +1 -1
- package/dist/components/ui/chat-widget-primitives.mjs +2 -2
- package/dist/components/ui/chat-widget.js +1 -1
- package/dist/components/ui/chat-widget.mjs +3 -3
- package/dist/components/ui/chip.js +1 -1
- package/dist/components/ui/chip.mjs +2 -2
- package/dist/components/ui/contact-alert-dialog/index.js +19 -1
- package/dist/components/ui/contact-alert-dialog/index.mjs +1 -1
- package/dist/components/ui/dashboard-transactions-table.js +1 -1
- package/dist/components/ui/dashboard-transactions-table.mjs +2 -2
- package/dist/components/ui/financial-cards.js +1 -1
- package/dist/components/ui/financial-cards.mjs +2 -2
- package/dist/components/ui/financial-sections.js +1 -1
- package/dist/components/ui/financial-sections.mjs +3 -3
- package/dist/components/ui/income-summary-component.js +1 -1
- package/dist/components/ui/income-summary-component.mjs +1 -1
- package/dist/components/ui/integration-card.js +1 -1
- package/dist/components/ui/integration-card.mjs +2 -2
- package/dist/components/ui/kanban-column.js +46 -23
- package/dist/components/ui/kanban-column.mjs +4 -4
- package/dist/components/ui/loan-applicant-information.js +1 -1
- package/dist/components/ui/loan-applicant-information.mjs +1 -1
- package/dist/components/ui/loan-application-badge.js +1 -1
- package/dist/components/ui/loan-application-badge.mjs +2 -2
- package/dist/components/ui/opportunity-card.js +46 -23
- package/dist/components/ui/opportunity-card.mjs +3 -3
- package/dist/components/ui/opportunity-summary-tab.js +1 -1
- package/dist/components/ui/opportunity-summary-tab.mjs +3 -3
- package/dist/components/ui/pipeline-board.js +46 -23
- package/dist/components/ui/pipeline-board.mjs +5 -5
- package/dist/components/ui/pipeline-primitives.js +1 -1
- package/dist/components/ui/pipeline-primitives.mjs +2 -2
- package/dist/components/ui/property-asset-card.js +1 -1
- package/dist/components/ui/property-asset-card.mjs +1 -1
- package/dist/components/ui/resource-center.js +1 -1
- package/dist/components/ui/resource-center.mjs +2 -2
- package/dist/components/ui/share-details-dialog.js +326 -30
- package/dist/components/ui/share-details-dialog.mjs +4 -1
- package/dist/components/ui/stage-timeline.js +1 -1
- package/dist/components/ui/stage-timeline.mjs +3 -3
- package/dist/index.js +473 -197
- package/dist/index.mjs +44 -42
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/components/index.tsx +4 -0
- package/src/components/ui/advisor-card.tsx +75 -25
- package/src/components/ui/appointment-book-dialog.tsx +26 -3
- package/src/components/ui/appointment-calendar-view.tsx +7 -6
- package/src/components/ui/appointment-time-slot-picker.tsx +1 -0
- package/src/components/ui/badge.tsx +1 -1
- package/src/components/ui/contact-alert-dialog/contact-alert-dialog.tsx +19 -1
- package/src/components/ui/opportunity-card.tsx +56 -20
- package/src/components/ui/share-details-dialog.tsx +251 -0
- package/src/styles/styles-css.ts +1 -1
- package/dist/chunk-OZ2R6ERP.mjs +0 -174
|
@@ -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__ */
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
71
|
-
/* @__PURE__ */ jsx("p", { className: "text-
|
|
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-
|
|
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-
|
|
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__ */
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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: "
|
|
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-
|
|
192
|
-
/* @__PURE__ */ jsx("p", { className: "text-
|
|
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-
|
|
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-
|
|
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-
|
|
25
|
+
} from "./chunk-X6RC5UWB.mjs";
|
|
26
26
|
import {
|
|
27
27
|
Calendar
|
|
28
28
|
} from "./chunk-FBNEIYSE.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TaskCheckItem
|
|
3
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
600
|
-
customerPhone && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5 text-
|
|
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-
|
|
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__ */
|
|
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,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-
|
|
39
|
+
} from "./chunk-X6RC5UWB.mjs";
|
|
40
40
|
import {
|
|
41
41
|
ToggleGroup,
|
|
42
42
|
ToggleGroupItem
|