@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
|
@@ -211,7 +211,7 @@ Slot.displayName = "Slot";
|
|
|
211
211
|
// src/components/ui/badge.tsx
|
|
212
212
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
213
213
|
var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
214
|
-
"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-
|
|
214
|
+
"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",
|
|
215
215
|
{
|
|
216
216
|
variants: {
|
|
217
217
|
variant: {
|
|
@@ -1244,15 +1244,19 @@ function ChatComposer({
|
|
|
1244
1244
|
mode,
|
|
1245
1245
|
channel: channelProp = "chat",
|
|
1246
1246
|
onChannelChange,
|
|
1247
|
+
isEmailIntegrated = false,
|
|
1247
1248
|
contactEmail = "",
|
|
1248
1249
|
inputValue = "",
|
|
1249
1250
|
onInputChange,
|
|
1250
1251
|
onSend,
|
|
1252
|
+
onSendEmail,
|
|
1251
1253
|
onTakeOver,
|
|
1252
1254
|
onLetAiHandle,
|
|
1253
1255
|
className
|
|
1254
1256
|
}) {
|
|
1255
|
-
const [channel, setChannel] = import_react3.default.useState(
|
|
1257
|
+
const [channel, setChannel] = import_react3.default.useState(
|
|
1258
|
+
isEmailIntegrated ? channelProp : "chat"
|
|
1259
|
+
);
|
|
1256
1260
|
const [emailTo, setEmailTo] = import_react3.default.useState(contactEmail);
|
|
1257
1261
|
const [emailCc, setEmailCc] = import_react3.default.useState("");
|
|
1258
1262
|
const [showCc, setShowCc] = import_react3.default.useState(false);
|
|
@@ -1302,7 +1306,7 @@ function ChatComposer({
|
|
|
1302
1306
|
className
|
|
1303
1307
|
),
|
|
1304
1308
|
children: [
|
|
1305
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "border-b border-border px-3 py-2", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1309
|
+
isEmailIntegrated && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "border-b border-border px-3 py-2", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1306
1310
|
Tabs,
|
|
1307
1311
|
{
|
|
1308
1312
|
value: channel,
|
|
@@ -1437,7 +1441,12 @@ function ChatComposer({
|
|
|
1437
1441
|
Button,
|
|
1438
1442
|
{
|
|
1439
1443
|
size: "sm",
|
|
1440
|
-
onClick: () =>
|
|
1444
|
+
onClick: () => onSendEmail == null ? void 0 : onSendEmail({
|
|
1445
|
+
content: inputValue,
|
|
1446
|
+
to: emailTo,
|
|
1447
|
+
cc: emailCc,
|
|
1448
|
+
subject: emailSubject
|
|
1449
|
+
}),
|
|
1441
1450
|
disabled: !inputValue.trim() || !emailTo.trim(),
|
|
1442
1451
|
children: [
|
|
1443
1452
|
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Send, { className: "mr-1.5 size-3.5" }),
|
|
@@ -1492,9 +1501,11 @@ function ChatThread({
|
|
|
1492
1501
|
isAiTyping = false,
|
|
1493
1502
|
channel,
|
|
1494
1503
|
onChannelChange,
|
|
1504
|
+
isEmailIntegrated,
|
|
1495
1505
|
inputValue,
|
|
1496
1506
|
onInputChange,
|
|
1497
1507
|
onSend,
|
|
1508
|
+
onSendEmail,
|
|
1498
1509
|
onTakeOver,
|
|
1499
1510
|
onLetAiHandle,
|
|
1500
1511
|
onReopen,
|
|
@@ -1502,12 +1513,53 @@ function ChatThread({
|
|
|
1502
1513
|
onUnmarkUrgent,
|
|
1503
1514
|
onArchive,
|
|
1504
1515
|
onAssignToAdvisor,
|
|
1516
|
+
hasMoreMessages,
|
|
1517
|
+
isLoadingMoreMessages,
|
|
1518
|
+
onLoadMoreMessages,
|
|
1505
1519
|
onBack,
|
|
1506
1520
|
onShowLeadInfo,
|
|
1507
1521
|
className
|
|
1508
1522
|
}) {
|
|
1509
1523
|
const aiIsHandling = mode === "ai";
|
|
1510
1524
|
const isClosed = status === "closed";
|
|
1525
|
+
const scrollRef = import_react3.default.useRef(null);
|
|
1526
|
+
const preLoadScrollHeightRef = import_react3.default.useRef(null);
|
|
1527
|
+
const handleScroll = (e) => {
|
|
1528
|
+
if (!hasMoreMessages || isLoadingMoreMessages || !onLoadMoreMessages) {
|
|
1529
|
+
return;
|
|
1530
|
+
}
|
|
1531
|
+
if (e.currentTarget.scrollTop <= 80) {
|
|
1532
|
+
preLoadScrollHeightRef.current = e.currentTarget.scrollHeight;
|
|
1533
|
+
onLoadMoreMessages();
|
|
1534
|
+
}
|
|
1535
|
+
};
|
|
1536
|
+
const prevLastMessageIdRef = import_react3.default.useRef(void 0);
|
|
1537
|
+
const prevContactIdRef = import_react3.default.useRef(contact.id);
|
|
1538
|
+
import_react3.default.useLayoutEffect(() => {
|
|
1539
|
+
var _a, _b;
|
|
1540
|
+
const el = scrollRef.current;
|
|
1541
|
+
if (!el) return;
|
|
1542
|
+
if (preLoadScrollHeightRef.current !== null) {
|
|
1543
|
+
el.scrollTop = el.scrollHeight - preLoadScrollHeightRef.current;
|
|
1544
|
+
preLoadScrollHeightRef.current = null;
|
|
1545
|
+
prevLastMessageIdRef.current = (_a = messages[messages.length - 1]) == null ? void 0 : _a.id;
|
|
1546
|
+
prevContactIdRef.current = contact.id;
|
|
1547
|
+
return;
|
|
1548
|
+
}
|
|
1549
|
+
const currentLastId = (_b = messages[messages.length - 1]) == null ? void 0 : _b.id;
|
|
1550
|
+
const contactChanged = prevContactIdRef.current !== contact.id;
|
|
1551
|
+
const tailChanged = prevLastMessageIdRef.current !== currentLastId;
|
|
1552
|
+
if (contactChanged || tailChanged) {
|
|
1553
|
+
el.scrollTop = el.scrollHeight;
|
|
1554
|
+
}
|
|
1555
|
+
prevLastMessageIdRef.current = currentLastId;
|
|
1556
|
+
prevContactIdRef.current = contact.id;
|
|
1557
|
+
}, [contact.id, messages]);
|
|
1558
|
+
import_react3.default.useLayoutEffect(() => {
|
|
1559
|
+
if (!isAiTyping) return;
|
|
1560
|
+
const el = scrollRef.current;
|
|
1561
|
+
if (el) el.scrollTop = el.scrollHeight;
|
|
1562
|
+
}, [isAiTyping]);
|
|
1511
1563
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: cn("flex flex-col bg-background", className), children: [
|
|
1512
1564
|
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
1513
1565
|
"div",
|
|
@@ -1597,9 +1649,12 @@ function ChatThread({
|
|
|
1597
1649
|
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
1598
1650
|
"div",
|
|
1599
1651
|
{
|
|
1652
|
+
ref: scrollRef,
|
|
1653
|
+
onScroll: handleScroll,
|
|
1600
1654
|
className: "flex flex-1 flex-col gap-4 overflow-y-auto p-4",
|
|
1601
1655
|
tabIndex: 0,
|
|
1602
1656
|
children: [
|
|
1657
|
+
isLoadingMoreMessages && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "flex justify-center py-1 text-caption text-muted-foreground", children: "Loading older messages..." }),
|
|
1603
1658
|
messages.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex flex-1 flex-col items-center justify-center gap-2 text-muted-foreground", children: [
|
|
1604
1659
|
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.MessageSquare, { className: "size-8 opacity-30" }),
|
|
1605
1660
|
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "text-sm", children: "No messages yet" })
|
|
@@ -1637,10 +1692,12 @@ function ChatThread({
|
|
|
1637
1692
|
mode,
|
|
1638
1693
|
channel,
|
|
1639
1694
|
onChannelChange,
|
|
1695
|
+
isEmailIntegrated,
|
|
1640
1696
|
contactEmail: contact.email,
|
|
1641
1697
|
inputValue,
|
|
1642
1698
|
onInputChange,
|
|
1643
1699
|
onSend,
|
|
1700
|
+
onSendEmail,
|
|
1644
1701
|
onTakeOver,
|
|
1645
1702
|
onLetAiHandle
|
|
1646
1703
|
}
|
|
@@ -1991,11 +2048,15 @@ function ConversationsPage({
|
|
|
1991
2048
|
onChannelFilterChange,
|
|
1992
2049
|
channel,
|
|
1993
2050
|
onChannelChange,
|
|
2051
|
+
isEmailIntegrated,
|
|
1994
2052
|
inputValue,
|
|
1995
2053
|
internalNotes,
|
|
1996
2054
|
showLeadPanel = true,
|
|
1997
2055
|
hasMore,
|
|
1998
2056
|
isLoadingMore,
|
|
2057
|
+
hasMoreMessages,
|
|
2058
|
+
isLoadingMoreMessages,
|
|
2059
|
+
onLoadMoreMessages,
|
|
1999
2060
|
isAiTyping,
|
|
2000
2061
|
notesSaveStatus,
|
|
2001
2062
|
onSelectConversation,
|
|
@@ -2004,6 +2065,7 @@ function ConversationsPage({
|
|
|
2004
2065
|
onFilterChange,
|
|
2005
2066
|
onInputChange,
|
|
2006
2067
|
onSend,
|
|
2068
|
+
onSendEmail,
|
|
2007
2069
|
onTakeOver,
|
|
2008
2070
|
onLetAiHandle,
|
|
2009
2071
|
onReopen,
|
|
@@ -2072,9 +2134,11 @@ function ConversationsPage({
|
|
|
2072
2134
|
isAiTyping,
|
|
2073
2135
|
channel,
|
|
2074
2136
|
onChannelChange,
|
|
2137
|
+
isEmailIntegrated,
|
|
2075
2138
|
inputValue,
|
|
2076
2139
|
onInputChange,
|
|
2077
2140
|
onSend,
|
|
2141
|
+
onSendEmail,
|
|
2078
2142
|
onTakeOver,
|
|
2079
2143
|
onLetAiHandle,
|
|
2080
2144
|
onReopen,
|
|
@@ -2082,6 +2146,9 @@ function ConversationsPage({
|
|
|
2082
2146
|
onUnmarkUrgent,
|
|
2083
2147
|
onArchive,
|
|
2084
2148
|
onAssignToAdvisor,
|
|
2149
|
+
hasMoreMessages,
|
|
2150
|
+
isLoadingMoreMessages,
|
|
2151
|
+
onLoadMoreMessages,
|
|
2085
2152
|
onBack: () => setMobilePanel("list"),
|
|
2086
2153
|
onShowLeadInfo: () => setMobilePanel("lead"),
|
|
2087
2154
|
className: cn(
|
|
@@ -9,15 +9,15 @@ import {
|
|
|
9
9
|
ConversationStatusChip,
|
|
10
10
|
ConversationsPage,
|
|
11
11
|
LeadInfoPanel
|
|
12
|
-
} from "../../chunk-
|
|
13
|
-
import "../../chunk-H5DTKPJ2.mjs";
|
|
12
|
+
} from "../../chunk-EB626HVW.mjs";
|
|
14
13
|
import "../../chunk-3S6KVFF5.mjs";
|
|
15
14
|
import "../../chunk-WE4YKBDE.mjs";
|
|
15
|
+
import "../../chunk-H5DTKPJ2.mjs";
|
|
16
16
|
import "../../chunk-2GIYVERS.mjs";
|
|
17
17
|
import "../../chunk-BS75ICOO.mjs";
|
|
18
18
|
import "../../chunk-LI2CTS5O.mjs";
|
|
19
19
|
import "../../chunk-H6NQTIF4.mjs";
|
|
20
|
-
import "../../chunk-
|
|
20
|
+
import "../../chunk-X6RC5UWB.mjs";
|
|
21
21
|
import "../../chunk-OWFQSXVD.mjs";
|
|
22
22
|
import "../../chunk-6QAFGZC2.mjs";
|
|
23
23
|
import "../../chunk-LBTHZSBT.mjs";
|
|
@@ -864,7 +864,7 @@ var import_lucide_react4 = require("lucide-react");
|
|
|
864
864
|
var import_class_variance_authority2 = require("class-variance-authority");
|
|
865
865
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
866
866
|
var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
867
|
-
"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-
|
|
867
|
+
"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",
|
|
868
868
|
{
|
|
869
869
|
variants: {
|
|
870
870
|
variant: {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AppointmentConfirmDialog,
|
|
3
3
|
AppointmentRescheduleDialog
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-2KNQZG5S.mjs";
|
|
5
|
+
import "../../chunk-CQ7HKBEX.mjs";
|
|
6
6
|
import "../../chunk-2GIYVERS.mjs";
|
|
7
7
|
import "../../chunk-BS75ICOO.mjs";
|
|
8
8
|
import "../../chunk-LI2CTS5O.mjs";
|
|
9
|
-
import "../../chunk-
|
|
9
|
+
import "../../chunk-X6RC5UWB.mjs";
|
|
10
10
|
import "../../chunk-CEYEK3TI.mjs";
|
|
11
11
|
import "../../chunk-FBNEIYSE.mjs";
|
|
12
12
|
import "../../chunk-LHWJQNLG.mjs";
|
|
@@ -1264,7 +1264,7 @@ function Textarea(_a) {
|
|
|
1264
1264
|
var import_class_variance_authority3 = require("class-variance-authority");
|
|
1265
1265
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1266
1266
|
var badgeVariants = (0, import_class_variance_authority3.cva)(
|
|
1267
|
-
"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-
|
|
1267
|
+
"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",
|
|
1268
1268
|
{
|
|
1269
1269
|
variants: {
|
|
1270
1270
|
variant: {
|
|
@@ -1448,6 +1448,19 @@ var FORMAT_OPTIONS = [
|
|
|
1448
1448
|
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.MapPin, { className: "h-4 w-4" })
|
|
1449
1449
|
}
|
|
1450
1450
|
];
|
|
1451
|
+
var CLIENT_FORMAT_OPTIONS = [
|
|
1452
|
+
{ value: "call", label: "Call", icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Phone, { className: "h-4 w-4" }) },
|
|
1453
|
+
{
|
|
1454
|
+
value: "online",
|
|
1455
|
+
label: "Online Meeting",
|
|
1456
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Video, { className: "h-4 w-4" })
|
|
1457
|
+
},
|
|
1458
|
+
{
|
|
1459
|
+
value: "offline",
|
|
1460
|
+
label: "Offline Meeting",
|
|
1461
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.MapPin, { className: "h-4 w-4" })
|
|
1462
|
+
}
|
|
1463
|
+
];
|
|
1451
1464
|
function MeetingFormatSection({
|
|
1452
1465
|
format: format2,
|
|
1453
1466
|
onFormatChange,
|
|
@@ -1457,10 +1470,11 @@ function MeetingFormatSection({
|
|
|
1457
1470
|
onCustomAddressChange,
|
|
1458
1471
|
advisorOfficeAddress,
|
|
1459
1472
|
clientHomeAddress,
|
|
1460
|
-
isClientMode
|
|
1473
|
+
isClientMode,
|
|
1474
|
+
formatOptions
|
|
1461
1475
|
}) {
|
|
1462
1476
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
1463
|
-
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "flex gap-2", children:
|
|
1477
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "flex gap-2", children: formatOptions.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1464
1478
|
Toggle,
|
|
1465
1479
|
{
|
|
1466
1480
|
variant: "outline",
|
|
@@ -1753,7 +1767,8 @@ function AppointmentBookDialog({
|
|
|
1753
1767
|
onCustomAddressChange: setCustomAddress,
|
|
1754
1768
|
advisorOfficeAddress,
|
|
1755
1769
|
clientHomeAddress,
|
|
1756
|
-
isClientMode
|
|
1770
|
+
isClientMode,
|
|
1771
|
+
formatOptions: isClientMode ? CLIENT_FORMAT_OPTIONS : FORMAT_OPTIONS
|
|
1757
1772
|
}
|
|
1758
1773
|
)
|
|
1759
1774
|
] }),
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AppointmentBookDialog
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-J7KQON2N.mjs";
|
|
4
4
|
import "../../chunk-JTK6VJXY.mjs";
|
|
5
5
|
import "../../chunk-MXP2RX2V.mjs";
|
|
6
6
|
import "../../chunk-ISUA7DSB.mjs";
|
|
7
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-CQ7HKBEX.mjs";
|
|
8
8
|
import "../../chunk-USOVLDGS.mjs";
|
|
9
9
|
import "../../chunk-2GIYVERS.mjs";
|
|
10
10
|
import "../../chunk-BS75ICOO.mjs";
|
|
11
11
|
import "../../chunk-LI2CTS5O.mjs";
|
|
12
12
|
import "../../chunk-H6NQTIF4.mjs";
|
|
13
|
-
import "../../chunk-
|
|
13
|
+
import "../../chunk-X6RC5UWB.mjs";
|
|
14
14
|
import "../../chunk-FBNEIYSE.mjs";
|
|
15
15
|
import "../../chunk-LHWJQNLG.mjs";
|
|
16
16
|
import "../../chunk-P7CEBZM6.mjs";
|
|
@@ -198,7 +198,7 @@ Slot.displayName = "Slot";
|
|
|
198
198
|
// src/components/ui/badge.tsx
|
|
199
199
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
200
200
|
var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
201
|
-
"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-
|
|
201
|
+
"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",
|
|
202
202
|
{
|
|
203
203
|
variants: {
|
|
204
204
|
variant: {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AppointmentCalendarView
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-IODGRCQG.mjs";
|
|
4
4
|
import "../../chunk-WE4YKBDE.mjs";
|
|
5
5
|
import "../../chunk-2GIYVERS.mjs";
|
|
6
6
|
import "../../chunk-H6NQTIF4.mjs";
|
|
7
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-X6RC5UWB.mjs";
|
|
8
8
|
import "../../chunk-LHWJQNLG.mjs";
|
|
9
9
|
import "../../chunk-NOOEKOWY.mjs";
|
|
10
10
|
import "../../chunk-R4HCRDU5.mjs";
|
|
@@ -199,7 +199,7 @@ Slot.displayName = "Slot";
|
|
|
199
199
|
// src/components/ui/badge.tsx
|
|
200
200
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
201
201
|
var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
202
|
-
"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-
|
|
202
|
+
"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",
|
|
203
203
|
{
|
|
204
204
|
variants: {
|
|
205
205
|
variant: {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AppointmentDetailSheet
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-R6U246E4.mjs";
|
|
4
|
+
import "../../chunk-2KNQZG5S.mjs";
|
|
5
|
+
import "../../chunk-CQ7HKBEX.mjs";
|
|
6
6
|
import "../../chunk-NCMV3LTP.mjs";
|
|
7
7
|
import "../../chunk-2GIYVERS.mjs";
|
|
8
8
|
import "../../chunk-BS75ICOO.mjs";
|
|
9
9
|
import "../../chunk-LI2CTS5O.mjs";
|
|
10
10
|
import "../../chunk-H6NQTIF4.mjs";
|
|
11
|
-
import "../../chunk-
|
|
11
|
+
import "../../chunk-X6RC5UWB.mjs";
|
|
12
12
|
import "../../chunk-CEYEK3TI.mjs";
|
|
13
13
|
import "../../chunk-FBNEIYSE.mjs";
|
|
14
14
|
import "../../chunk-LHWJQNLG.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-
|
|
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,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AppointmentGmailConnect
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-7TMPOZDE.mjs";
|
|
4
4
|
import "../../chunk-2GIYVERS.mjs";
|
|
5
|
-
import "../../chunk-
|
|
5
|
+
import "../../chunk-X6RC5UWB.mjs";
|
|
6
6
|
import "../../chunk-LBTHZSBT.mjs";
|
|
7
7
|
import "../../chunk-NOOEKOWY.mjs";
|
|
8
8
|
import "../../chunk-R4HCRDU5.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-
|
|
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,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AppointmentSlotSection,
|
|
3
3
|
AppointmentTimeSlotPicker
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-CQ7HKBEX.mjs";
|
|
5
|
+
import "../../chunk-X6RC5UWB.mjs";
|
|
6
6
|
import "../../chunk-6QAFGZC2.mjs";
|
|
7
7
|
import "../../chunk-R4HCRDU5.mjs";
|
|
8
8
|
import "../../chunk-AFML43VJ.mjs";
|
|
@@ -200,7 +200,7 @@ Slot.displayName = "Slot";
|
|
|
200
200
|
// src/components/ui/badge.tsx
|
|
201
201
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
202
202
|
var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
203
|
-
"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-
|
|
203
|
+
"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",
|
|
204
204
|
{
|
|
205
205
|
variants: {
|
|
206
206
|
variant: {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AppointmentUpcomingCard
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-XAS6KBIG.mjs";
|
|
4
|
+
import "../../chunk-CQ7HKBEX.mjs";
|
|
5
5
|
import "../../chunk-2GIYVERS.mjs";
|
|
6
6
|
import "../../chunk-BS75ICOO.mjs";
|
|
7
7
|
import "../../chunk-LI2CTS5O.mjs";
|
|
8
8
|
import "../../chunk-H6NQTIF4.mjs";
|
|
9
|
-
import "../../chunk-
|
|
9
|
+
import "../../chunk-X6RC5UWB.mjs";
|
|
10
10
|
import "../../chunk-FBNEIYSE.mjs";
|
|
11
11
|
import "../../chunk-LHWJQNLG.mjs";
|
|
12
12
|
import "../../chunk-P7CEBZM6.mjs";
|
|
@@ -151,7 +151,7 @@ Slot.displayName = "Slot";
|
|
|
151
151
|
// src/components/ui/badge.tsx
|
|
152
152
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
153
153
|
var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
154
|
-
"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-
|
|
154
|
+
"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",
|
|
155
155
|
{
|
|
156
156
|
variants: {
|
|
157
157
|
variant: {
|
|
@@ -65,6 +65,11 @@ module.exports = __toCommonJS(bank_statement_generate_dialog_exports);
|
|
|
65
65
|
var import_react5 = require("react");
|
|
66
66
|
var import_date_fns3 = require("date-fns");
|
|
67
67
|
|
|
68
|
+
// src/components/ui/button.tsx
|
|
69
|
+
var import_react = require("react");
|
|
70
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
71
|
+
var import_lucide_react = require("lucide-react");
|
|
72
|
+
|
|
68
73
|
// src/lib/utils.ts
|
|
69
74
|
var import_clsx = require("clsx");
|
|
70
75
|
var import_tailwind_merge = require("tailwind-merge");
|
|
@@ -104,11 +109,6 @@ function cn(...inputs) {
|
|
|
104
109
|
return twMerge((0, import_clsx.clsx)(inputs));
|
|
105
110
|
}
|
|
106
111
|
|
|
107
|
-
// src/components/ui/button.tsx
|
|
108
|
-
var import_react = require("react");
|
|
109
|
-
var import_class_variance_authority = require("class-variance-authority");
|
|
110
|
-
var import_lucide_react = require("lucide-react");
|
|
111
|
-
|
|
112
112
|
// src/lib/slot.tsx
|
|
113
113
|
var React = __toESM(require("react"));
|
|
114
114
|
function mergeRefs(...refs) {
|
|
@@ -1278,6 +1278,10 @@ function ToggleGroupItem(_a) {
|
|
|
1278
1278
|
|
|
1279
1279
|
// src/components/ui/bank-statement-generate-dialog.tsx
|
|
1280
1280
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1281
|
+
var APPLICANT_TYPE_LABELS = {
|
|
1282
|
+
primary: "Main applicant",
|
|
1283
|
+
secondary: "Co-applicant"
|
|
1284
|
+
};
|
|
1281
1285
|
function toIsoDate(date) {
|
|
1282
1286
|
return date.toISOString().slice(0, 10);
|
|
1283
1287
|
}
|
|
@@ -1301,8 +1305,10 @@ function BankStatementGenerateDialog({
|
|
|
1301
1305
|
}) {
|
|
1302
1306
|
const [statementName, setStatementName] = (0, import_react5.useState)("Bank Statement 1");
|
|
1303
1307
|
const [rangePreset, setRangePreset] = (0, import_react5.useState)(90);
|
|
1304
|
-
const [fromDate, setFromDate] = (0, import_react5.useState)(
|
|
1305
|
-
|
|
1308
|
+
const [fromDate, setFromDate] = (0, import_react5.useState)(
|
|
1309
|
+
() => presetToDateRange(90).from
|
|
1310
|
+
);
|
|
1311
|
+
const [toDate, setToDate] = (0, import_react5.useState)(() => presetToDateRange(90).to);
|
|
1306
1312
|
const [applicantType, setApplicantType] = (0, import_react5.useState)("");
|
|
1307
1313
|
const [selectedAccountIds, setSelectedAccountIds] = (0, import_react5.useState)([]);
|
|
1308
1314
|
(0, import_react5.useEffect)(() => {
|
|
@@ -1331,6 +1337,11 @@ function BankStatementGenerateDialog({
|
|
|
1331
1337
|
setToDate(to);
|
|
1332
1338
|
}
|
|
1333
1339
|
};
|
|
1340
|
+
const handlePresetChange = (val) => {
|
|
1341
|
+
if (val.length === 0) return;
|
|
1342
|
+
const raw = val[0];
|
|
1343
|
+
applyPreset(raw === "custom" ? "custom" : Number(raw));
|
|
1344
|
+
};
|
|
1334
1345
|
const areAllSelected = bankAccounts.length > 0 && selectedAccountIds.length === bankAccounts.length;
|
|
1335
1346
|
const isSomeSelected = selectedAccountIds.length > 0 && !areAllSelected;
|
|
1336
1347
|
const handleToggleAccount = (id) => {
|
|
@@ -1366,7 +1377,8 @@ function BankStatementGenerateDialog({
|
|
|
1366
1377
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Dialog, { open, onOpenChange: (o) => !o && onClose(), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1367
1378
|
DialogContent,
|
|
1368
1379
|
{
|
|
1369
|
-
|
|
1380
|
+
size: "3xl",
|
|
1381
|
+
className,
|
|
1370
1382
|
"data-slot": "bank-statement-generate-dialog",
|
|
1371
1383
|
children: [
|
|
1372
1384
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DialogHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DialogTitle, { children: "Generate Bank Statement" }) }),
|
|
@@ -1390,15 +1402,7 @@ function BankStatementGenerateDialog({
|
|
|
1390
1402
|
type: "single",
|
|
1391
1403
|
variant: "outline",
|
|
1392
1404
|
value: [String(rangePreset)],
|
|
1393
|
-
onValueChange:
|
|
1394
|
-
if (val.length === 0) return;
|
|
1395
|
-
const raw = val[0];
|
|
1396
|
-
if (raw === "custom") {
|
|
1397
|
-
applyPreset("custom");
|
|
1398
|
-
} else {
|
|
1399
|
-
applyPreset(Number(raw));
|
|
1400
|
-
}
|
|
1401
|
-
},
|
|
1405
|
+
onValueChange: handlePresetChange,
|
|
1402
1406
|
className: "w-full",
|
|
1403
1407
|
children: [
|
|
1404
1408
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ToggleGroupItem, { value: "90", className: "flex-1", children: "3 Months" }),
|
|
@@ -1434,11 +1438,12 @@ function BankStatementGenerateDialog({
|
|
|
1434
1438
|
{
|
|
1435
1439
|
value: applicantType,
|
|
1436
1440
|
onValueChange: (v) => handleApplicantTypeChange(v),
|
|
1441
|
+
items: APPLICANT_TYPE_LABELS,
|
|
1437
1442
|
children: [
|
|
1438
1443
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectValue, { placeholder: "Applicant Type" }) }),
|
|
1439
1444
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(SelectContent, { children: [
|
|
1440
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectItem, { value: "primary", children:
|
|
1441
|
-
hasCoApplicant && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectItem, { value: "secondary", children:
|
|
1445
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectItem, { value: "primary", children: APPLICANT_TYPE_LABELS.primary }),
|
|
1446
|
+
hasCoApplicant && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectItem, { value: "secondary", children: APPLICANT_TYPE_LABELS.secondary })
|
|
1442
1447
|
] })
|
|
1443
1448
|
]
|
|
1444
1449
|
}
|
|
@@ -1464,33 +1469,43 @@ function BankStatementGenerateDialog({
|
|
|
1464
1469
|
] }) }),
|
|
1465
1470
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TableBody, { children: bankAccounts.map((account) => {
|
|
1466
1471
|
var _a, _b;
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1472
|
+
const isSelected = selectedAccountIds.includes(
|
|
1473
|
+
account.id
|
|
1474
|
+
);
|
|
1475
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1476
|
+
TableRow,
|
|
1477
|
+
{
|
|
1478
|
+
"data-state": isSelected ? "selected" : void 0,
|
|
1479
|
+
children: [
|
|
1480
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1481
|
+
Checkbox,
|
|
1482
|
+
{
|
|
1483
|
+
checked: isSelected,
|
|
1484
|
+
onCheckedChange: () => handleToggleAccount(account.id),
|
|
1485
|
+
"aria-label": `Select ${account.name}`
|
|
1486
|
+
}
|
|
1487
|
+
) }),
|
|
1488
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
1489
|
+
account.institutionLogo && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1490
|
+
"img",
|
|
1491
|
+
{
|
|
1492
|
+
src: account.institutionLogo,
|
|
1493
|
+
alt: (_a = account.institutionName) != null ? _a : "",
|
|
1494
|
+
className: "size-8 object-cover"
|
|
1495
|
+
}
|
|
1496
|
+
),
|
|
1497
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "text-body-medium font-semibold", children: account.name || account.institutionName || "\u2014" })
|
|
1498
|
+
] }) }),
|
|
1499
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "text-body-medium", children: (_b = account.accountNo) != null ? _b : "\u2014" }) }),
|
|
1500
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "text-body-medium", children: periodLabel }) }),
|
|
1501
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "text-body-medium", children: account.lastUpdated ? (0, import_date_fns3.format)(
|
|
1502
|
+
(0, import_date_fns3.parseISO)(account.lastUpdated),
|
|
1503
|
+
"dd MMM yyyy"
|
|
1504
|
+
) : "\u2014" }) })
|
|
1505
|
+
]
|
|
1506
|
+
},
|
|
1507
|
+
account.id
|
|
1508
|
+
);
|
|
1494
1509
|
}) })
|
|
1495
1510
|
] })
|
|
1496
1511
|
] })
|