@wealthx/shadcn 1.5.10 → 1.5.12
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 +114 -114
- 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-O5CP6VP6.mjs → chunk-CPM6P63C.mjs} +56 -44
- package/dist/{chunk-FRT3S72S.mjs → chunk-CQ7HKBEX.mjs} +1 -1
- package/dist/{chunk-54TRNCID.mjs → chunk-EB626HVW.mjs} +78 -11
- package/dist/{chunk-E2BNCA6L.mjs → chunk-EHQL64B7.mjs} +1 -1
- package/dist/{chunk-2WCIORP7.mjs → chunk-EXI64H46.mjs} +1 -1
- package/dist/{chunk-BBXSNDS3.mjs → chunk-FQYFPHDO.mjs} +1 -1
- package/dist/{chunk-3VZ6CYY2.mjs → chunk-GAXNO4JB.mjs} +1 -1
- package/dist/{chunk-3WGFIFP6.mjs → chunk-I4P7RXAE.mjs} +1 -1
- package/dist/{chunk-Z2BW5T7P.mjs → chunk-IODGRCQG.mjs} +1 -1
- package/dist/{chunk-GS47ZSSA.mjs → chunk-J7KQON2N.mjs} +20 -5
- package/dist/{chunk-IQGKOT7A.mjs → chunk-K35TFQUB.mjs} +1 -1
- package/dist/{chunk-4DO3WM7V.mjs → chunk-K4VWSDJJ.mjs} +1 -1
- package/dist/{chunk-KWD6GANL.mjs → chunk-MPA2HV5U.mjs} +1 -1
- package/dist/{chunk-5LZZYODG.mjs → chunk-QHAMVWDG.mjs} +19 -1
- package/dist/{chunk-XUCDPAVI.mjs → chunk-R6U246E4.mjs} +2 -2
- package/dist/{chunk-VCDGLN25.mjs → chunk-S6AYZJYO.mjs} +47 -21
- package/dist/{chunk-WL6WVV47.mjs → chunk-X6RC5UWB.mjs} +1 -1
- package/dist/{chunk-4BHDDLWK.mjs → chunk-XAS6KBIG.mjs} +2 -2
- package/dist/{chunk-VWZS32ZQ.mjs → chunk-XYWEGBAA.mjs} +1 -1
- package/dist/{chunk-54MTIKNC.mjs → chunk-YV7XF32X.mjs} +49 -24
- package/dist/{chunk-E5EDZQ5J.mjs → chunk-ZA44WICP.mjs} +1 -1
- package/dist/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 +71 -4
- package/dist/components/ui/ai-conversations.mjs +3 -3
- package/dist/components/ui/appointment-action-dialogs.js +1 -1
- package/dist/components/ui/appointment-action-dialogs.mjs +3 -3
- package/dist/components/ui/appointment-book-dialog.js +19 -4
- package/dist/components/ui/appointment-book-dialog.mjs +3 -3
- package/dist/components/ui/appointment-calendar-view.js +1 -1
- package/dist/components/ui/appointment-calendar-view.mjs +2 -2
- package/dist/components/ui/appointment-detail-sheet.js +1 -1
- package/dist/components/ui/appointment-detail-sheet.mjs +4 -4
- package/dist/components/ui/appointment-gmail-connect.js +1 -1
- package/dist/components/ui/appointment-gmail-connect.mjs +2 -2
- package/dist/components/ui/appointment-time-slot-picker.js +1 -1
- package/dist/components/ui/appointment-time-slot-picker.mjs +2 -2
- package/dist/components/ui/appointment-upcoming-card.js +1 -1
- package/dist/components/ui/appointment-upcoming-card.mjs +3 -3
- package/dist/components/ui/badge.js +1 -1
- package/dist/components/ui/badge.mjs +1 -1
- package/dist/components/ui/bank-statement-generate-dialog.js +61 -46
- package/dist/components/ui/bank-statement-generate-dialog.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 +583 -232
- package/dist/index.mjs +45 -43
- 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/ai-conversations.tsx +157 -23
- package/src/components/ui/appointment-book-dialog.tsx +26 -3
- package/src/components/ui/appointment-time-slot-picker.tsx +1 -0
- package/src/components/ui/badge.tsx +1 -1
- package/src/components/ui/bank-statement-generate-dialog.tsx +84 -61
- 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
|
@@ -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
|
|
@@ -424,15 +424,19 @@ function ChatComposer({
|
|
|
424
424
|
mode,
|
|
425
425
|
channel: channelProp = "chat",
|
|
426
426
|
onChannelChange,
|
|
427
|
+
isEmailIntegrated = false,
|
|
427
428
|
contactEmail = "",
|
|
428
429
|
inputValue = "",
|
|
429
430
|
onInputChange,
|
|
430
431
|
onSend,
|
|
432
|
+
onSendEmail,
|
|
431
433
|
onTakeOver,
|
|
432
434
|
onLetAiHandle,
|
|
433
435
|
className
|
|
434
436
|
}) {
|
|
435
|
-
const [channel, setChannel] = React.useState(
|
|
437
|
+
const [channel, setChannel] = React.useState(
|
|
438
|
+
isEmailIntegrated ? channelProp : "chat"
|
|
439
|
+
);
|
|
436
440
|
const [emailTo, setEmailTo] = React.useState(contactEmail);
|
|
437
441
|
const [emailCc, setEmailCc] = React.useState("");
|
|
438
442
|
const [showCc, setShowCc] = React.useState(false);
|
|
@@ -482,7 +486,7 @@ function ChatComposer({
|
|
|
482
486
|
className
|
|
483
487
|
),
|
|
484
488
|
children: [
|
|
485
|
-
/* @__PURE__ */ jsx("div", { className: "border-b border-border px-3 py-2", children: /* @__PURE__ */ jsx(
|
|
489
|
+
isEmailIntegrated && /* @__PURE__ */ jsx("div", { className: "border-b border-border px-3 py-2", children: /* @__PURE__ */ jsx(
|
|
486
490
|
Tabs,
|
|
487
491
|
{
|
|
488
492
|
value: channel,
|
|
@@ -617,7 +621,12 @@ function ChatComposer({
|
|
|
617
621
|
Button,
|
|
618
622
|
{
|
|
619
623
|
size: "sm",
|
|
620
|
-
onClick: () =>
|
|
624
|
+
onClick: () => onSendEmail == null ? void 0 : onSendEmail({
|
|
625
|
+
content: inputValue,
|
|
626
|
+
to: emailTo,
|
|
627
|
+
cc: emailCc,
|
|
628
|
+
subject: emailSubject
|
|
629
|
+
}),
|
|
621
630
|
disabled: !inputValue.trim() || !emailTo.trim(),
|
|
622
631
|
children: [
|
|
623
632
|
/* @__PURE__ */ jsx(Send, { className: "mr-1.5 size-3.5" }),
|
|
@@ -672,9 +681,11 @@ function ChatThread({
|
|
|
672
681
|
isAiTyping = false,
|
|
673
682
|
channel,
|
|
674
683
|
onChannelChange,
|
|
684
|
+
isEmailIntegrated,
|
|
675
685
|
inputValue,
|
|
676
686
|
onInputChange,
|
|
677
687
|
onSend,
|
|
688
|
+
onSendEmail,
|
|
678
689
|
onTakeOver,
|
|
679
690
|
onLetAiHandle,
|
|
680
691
|
onReopen,
|
|
@@ -682,12 +693,53 @@ function ChatThread({
|
|
|
682
693
|
onUnmarkUrgent,
|
|
683
694
|
onArchive,
|
|
684
695
|
onAssignToAdvisor,
|
|
696
|
+
hasMoreMessages,
|
|
697
|
+
isLoadingMoreMessages,
|
|
698
|
+
onLoadMoreMessages,
|
|
685
699
|
onBack,
|
|
686
700
|
onShowLeadInfo,
|
|
687
701
|
className
|
|
688
702
|
}) {
|
|
689
703
|
const aiIsHandling = mode === "ai";
|
|
690
704
|
const isClosed = status === "closed";
|
|
705
|
+
const scrollRef = React.useRef(null);
|
|
706
|
+
const preLoadScrollHeightRef = React.useRef(null);
|
|
707
|
+
const handleScroll = (e) => {
|
|
708
|
+
if (!hasMoreMessages || isLoadingMoreMessages || !onLoadMoreMessages) {
|
|
709
|
+
return;
|
|
710
|
+
}
|
|
711
|
+
if (e.currentTarget.scrollTop <= 80) {
|
|
712
|
+
preLoadScrollHeightRef.current = e.currentTarget.scrollHeight;
|
|
713
|
+
onLoadMoreMessages();
|
|
714
|
+
}
|
|
715
|
+
};
|
|
716
|
+
const prevLastMessageIdRef = React.useRef(void 0);
|
|
717
|
+
const prevContactIdRef = React.useRef(contact.id);
|
|
718
|
+
React.useLayoutEffect(() => {
|
|
719
|
+
var _a, _b;
|
|
720
|
+
const el = scrollRef.current;
|
|
721
|
+
if (!el) return;
|
|
722
|
+
if (preLoadScrollHeightRef.current !== null) {
|
|
723
|
+
el.scrollTop = el.scrollHeight - preLoadScrollHeightRef.current;
|
|
724
|
+
preLoadScrollHeightRef.current = null;
|
|
725
|
+
prevLastMessageIdRef.current = (_a = messages[messages.length - 1]) == null ? void 0 : _a.id;
|
|
726
|
+
prevContactIdRef.current = contact.id;
|
|
727
|
+
return;
|
|
728
|
+
}
|
|
729
|
+
const currentLastId = (_b = messages[messages.length - 1]) == null ? void 0 : _b.id;
|
|
730
|
+
const contactChanged = prevContactIdRef.current !== contact.id;
|
|
731
|
+
const tailChanged = prevLastMessageIdRef.current !== currentLastId;
|
|
732
|
+
if (contactChanged || tailChanged) {
|
|
733
|
+
el.scrollTop = el.scrollHeight;
|
|
734
|
+
}
|
|
735
|
+
prevLastMessageIdRef.current = currentLastId;
|
|
736
|
+
prevContactIdRef.current = contact.id;
|
|
737
|
+
}, [contact.id, messages]);
|
|
738
|
+
React.useLayoutEffect(() => {
|
|
739
|
+
if (!isAiTyping) return;
|
|
740
|
+
const el = scrollRef.current;
|
|
741
|
+
if (el) el.scrollTop = el.scrollHeight;
|
|
742
|
+
}, [isAiTyping]);
|
|
691
743
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col bg-background", className), children: [
|
|
692
744
|
/* @__PURE__ */ jsxs(
|
|
693
745
|
"div",
|
|
@@ -777,9 +829,12 @@ function ChatThread({
|
|
|
777
829
|
/* @__PURE__ */ jsxs(
|
|
778
830
|
"div",
|
|
779
831
|
{
|
|
832
|
+
ref: scrollRef,
|
|
833
|
+
onScroll: handleScroll,
|
|
780
834
|
className: "flex flex-1 flex-col gap-4 overflow-y-auto p-4",
|
|
781
835
|
tabIndex: 0,
|
|
782
836
|
children: [
|
|
837
|
+
isLoadingMoreMessages && /* @__PURE__ */ jsx("div", { className: "flex justify-center py-1 text-caption text-muted-foreground", children: "Loading older messages..." }),
|
|
783
838
|
messages.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "flex flex-1 flex-col items-center justify-center gap-2 text-muted-foreground", children: [
|
|
784
839
|
/* @__PURE__ */ jsx(MessageSquare, { className: "size-8 opacity-30" }),
|
|
785
840
|
/* @__PURE__ */ jsx("p", { className: "text-sm", children: "No messages yet" })
|
|
@@ -817,10 +872,12 @@ function ChatThread({
|
|
|
817
872
|
mode,
|
|
818
873
|
channel,
|
|
819
874
|
onChannelChange,
|
|
875
|
+
isEmailIntegrated,
|
|
820
876
|
contactEmail: contact.email,
|
|
821
877
|
inputValue,
|
|
822
878
|
onInputChange,
|
|
823
879
|
onSend,
|
|
880
|
+
onSendEmail,
|
|
824
881
|
onTakeOver,
|
|
825
882
|
onLetAiHandle
|
|
826
883
|
}
|
|
@@ -1171,11 +1228,15 @@ function ConversationsPage({
|
|
|
1171
1228
|
onChannelFilterChange,
|
|
1172
1229
|
channel,
|
|
1173
1230
|
onChannelChange,
|
|
1231
|
+
isEmailIntegrated,
|
|
1174
1232
|
inputValue,
|
|
1175
1233
|
internalNotes,
|
|
1176
1234
|
showLeadPanel = true,
|
|
1177
1235
|
hasMore,
|
|
1178
1236
|
isLoadingMore,
|
|
1237
|
+
hasMoreMessages,
|
|
1238
|
+
isLoadingMoreMessages,
|
|
1239
|
+
onLoadMoreMessages,
|
|
1179
1240
|
isAiTyping,
|
|
1180
1241
|
notesSaveStatus,
|
|
1181
1242
|
onSelectConversation,
|
|
@@ -1184,6 +1245,7 @@ function ConversationsPage({
|
|
|
1184
1245
|
onFilterChange,
|
|
1185
1246
|
onInputChange,
|
|
1186
1247
|
onSend,
|
|
1248
|
+
onSendEmail,
|
|
1187
1249
|
onTakeOver,
|
|
1188
1250
|
onLetAiHandle,
|
|
1189
1251
|
onReopen,
|
|
@@ -1252,9 +1314,11 @@ function ConversationsPage({
|
|
|
1252
1314
|
isAiTyping,
|
|
1253
1315
|
channel,
|
|
1254
1316
|
onChannelChange,
|
|
1317
|
+
isEmailIntegrated,
|
|
1255
1318
|
inputValue,
|
|
1256
1319
|
onInputChange,
|
|
1257
1320
|
onSend,
|
|
1321
|
+
onSendEmail,
|
|
1258
1322
|
onTakeOver,
|
|
1259
1323
|
onLetAiHandle,
|
|
1260
1324
|
onReopen,
|
|
@@ -1262,6 +1326,9 @@ function ConversationsPage({
|
|
|
1262
1326
|
onUnmarkUrgent,
|
|
1263
1327
|
onArchive,
|
|
1264
1328
|
onAssignToAdvisor,
|
|
1329
|
+
hasMoreMessages,
|
|
1330
|
+
isLoadingMoreMessages,
|
|
1331
|
+
onLoadMoreMessages,
|
|
1265
1332
|
onBack: () => setMobilePanel("list"),
|
|
1266
1333
|
onShowLeadInfo: () => setMobilePanel("lead"),
|
|
1267
1334
|
className: cn(
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./chunk-MXP2RX2V.mjs";
|
|
9
9
|
import {
|
|
10
10
|
AppointmentSlotSection
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-CQ7HKBEX.mjs";
|
|
12
12
|
import {
|
|
13
13
|
Select,
|
|
14
14
|
SelectContent,
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
} from "./chunk-H6NQTIF4.mjs";
|
|
38
38
|
import {
|
|
39
39
|
Badge
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-X6RC5UWB.mjs";
|
|
41
41
|
import {
|
|
42
42
|
Calendar
|
|
43
43
|
} from "./chunk-FBNEIYSE.mjs";
|
|
@@ -127,6 +127,19 @@ var FORMAT_OPTIONS = [
|
|
|
127
127
|
icon: /* @__PURE__ */ jsx(MapPin, { className: "h-4 w-4" })
|
|
128
128
|
}
|
|
129
129
|
];
|
|
130
|
+
var CLIENT_FORMAT_OPTIONS = [
|
|
131
|
+
{ value: "call", label: "Call", icon: /* @__PURE__ */ jsx(Phone, { className: "h-4 w-4" }) },
|
|
132
|
+
{
|
|
133
|
+
value: "online",
|
|
134
|
+
label: "Online Meeting",
|
|
135
|
+
icon: /* @__PURE__ */ jsx(Video, { className: "h-4 w-4" })
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
value: "offline",
|
|
139
|
+
label: "Offline Meeting",
|
|
140
|
+
icon: /* @__PURE__ */ jsx(MapPin, { className: "h-4 w-4" })
|
|
141
|
+
}
|
|
142
|
+
];
|
|
130
143
|
function MeetingFormatSection({
|
|
131
144
|
format,
|
|
132
145
|
onFormatChange,
|
|
@@ -136,10 +149,11 @@ function MeetingFormatSection({
|
|
|
136
149
|
onCustomAddressChange,
|
|
137
150
|
advisorOfficeAddress,
|
|
138
151
|
clientHomeAddress,
|
|
139
|
-
isClientMode
|
|
152
|
+
isClientMode,
|
|
153
|
+
formatOptions
|
|
140
154
|
}) {
|
|
141
155
|
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
142
|
-
/* @__PURE__ */ jsx("div", { className: "flex gap-2", children:
|
|
156
|
+
/* @__PURE__ */ jsx("div", { className: "flex gap-2", children: formatOptions.map((opt) => /* @__PURE__ */ jsxs(
|
|
143
157
|
Toggle,
|
|
144
158
|
{
|
|
145
159
|
variant: "outline",
|
|
@@ -432,7 +446,8 @@ function AppointmentBookDialog({
|
|
|
432
446
|
onCustomAddressChange: setCustomAddress,
|
|
433
447
|
advisorOfficeAddress,
|
|
434
448
|
clientHomeAddress,
|
|
435
|
-
isClientMode
|
|
449
|
+
isClientMode,
|
|
450
|
+
formatOptions: isClientMode ? CLIENT_FORMAT_OPTIONS : FORMAT_OPTIONS
|
|
436
451
|
}
|
|
437
452
|
)
|
|
438
453
|
] }),
|
|
@@ -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";
|