@wealthx/shadcn 1.5.9 → 1.5.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/.turbo/turbo-build.log +157 -157
  2. package/CHANGELOG.md +12 -0
  3. package/dist/{chunk-AANINK2B.mjs → chunk-2KNQZG5S.mjs} +1 -1
  4. package/dist/chunk-3KLJ4XRE.mjs +375 -0
  5. package/dist/{chunk-6U4NQGVM.mjs → chunk-4X4MGYHE.mjs} +2 -2
  6. package/dist/{chunk-CEEVYRQA.mjs → chunk-67DGIPQ4.mjs} +1 -1
  7. package/dist/{chunk-7UIL5UN3.mjs → chunk-7II6QRCZ.mjs} +1 -1
  8. package/dist/{chunk-W5QJ57PU.mjs → chunk-7LN5OGC2.mjs} +1 -1
  9. package/dist/{chunk-ZXEUBBHJ.mjs → chunk-7TMPOZDE.mjs} +1 -1
  10. package/dist/{chunk-AHSCWXYJ.mjs → chunk-AJUAJC5O.mjs} +1 -1
  11. package/dist/{chunk-3CGM3QXQ.mjs → chunk-AKWN5ZQG.mjs} +2 -2
  12. package/dist/{chunk-FRT3S72S.mjs → chunk-CQ7HKBEX.mjs} +1 -1
  13. package/dist/{chunk-E2BNCA6L.mjs → chunk-EHQL64B7.mjs} +1 -1
  14. package/dist/{chunk-2WCIORP7.mjs → chunk-EXI64H46.mjs} +1 -1
  15. package/dist/{chunk-BBXSNDS3.mjs → chunk-FQYFPHDO.mjs} +1 -1
  16. package/dist/{chunk-3VZ6CYY2.mjs → chunk-GAXNO4JB.mjs} +1 -1
  17. package/dist/{chunk-3WGFIFP6.mjs → chunk-I4P7RXAE.mjs} +1 -1
  18. package/dist/{chunk-TAFL4WDY.mjs → chunk-IODGRCQG.mjs} +17 -10
  19. package/dist/{chunk-GS47ZSSA.mjs → chunk-J7KQON2N.mjs} +20 -5
  20. package/dist/{chunk-IQGKOT7A.mjs → chunk-K35TFQUB.mjs} +1 -1
  21. package/dist/{chunk-4DO3WM7V.mjs → chunk-K4VWSDJJ.mjs} +1 -1
  22. package/dist/{chunk-KWD6GANL.mjs → chunk-MPA2HV5U.mjs} +1 -1
  23. package/dist/{chunk-5LZZYODG.mjs → chunk-QHAMVWDG.mjs} +19 -1
  24. package/dist/{chunk-XUCDPAVI.mjs → chunk-R6U246E4.mjs} +2 -2
  25. package/dist/{chunk-VCDGLN25.mjs → chunk-S6AYZJYO.mjs} +47 -21
  26. package/dist/{chunk-WL6WVV47.mjs → chunk-X6RC5UWB.mjs} +1 -1
  27. package/dist/{chunk-4BHDDLWK.mjs → chunk-XAS6KBIG.mjs} +2 -2
  28. package/dist/{chunk-VWZS32ZQ.mjs → chunk-XYWEGBAA.mjs} +1 -1
  29. package/dist/{chunk-54MTIKNC.mjs → chunk-YV7XF32X.mjs} +49 -24
  30. package/dist/{chunk-E5EDZQ5J.mjs → chunk-ZA44WICP.mjs} +1 -1
  31. package/dist/{chunk-54TRNCID.mjs → chunk-ZMTCMP2G.mjs} +8 -8
  32. package/dist/components/ui/advisor-card.js +144 -55
  33. package/dist/components/ui/advisor-card.mjs +5 -2
  34. package/dist/components/ui/agent-evaluation-toast.js +1 -1
  35. package/dist/components/ui/agent-evaluation-toast.mjs +2 -2
  36. package/dist/components/ui/ai-assistant-drawer.js +1 -1
  37. package/dist/components/ui/ai-assistant-drawer.mjs +2 -2
  38. package/dist/components/ui/ai-builder.js +1 -1
  39. package/dist/components/ui/ai-builder.mjs +2 -2
  40. package/dist/components/ui/ai-conversations.js +1 -1
  41. package/dist/components/ui/ai-conversations.mjs +3 -3
  42. package/dist/components/ui/appointment-action-dialogs.js +1 -1
  43. package/dist/components/ui/appointment-action-dialogs.mjs +3 -3
  44. package/dist/components/ui/appointment-book-dialog.js +19 -4
  45. package/dist/components/ui/appointment-book-dialog.mjs +3 -3
  46. package/dist/components/ui/appointment-calendar-view.js +17 -10
  47. package/dist/components/ui/appointment-calendar-view.mjs +2 -2
  48. package/dist/components/ui/appointment-detail-sheet.js +1 -1
  49. package/dist/components/ui/appointment-detail-sheet.mjs +4 -4
  50. package/dist/components/ui/appointment-gmail-connect.js +1 -1
  51. package/dist/components/ui/appointment-gmail-connect.mjs +2 -2
  52. package/dist/components/ui/appointment-time-slot-picker.js +1 -1
  53. package/dist/components/ui/appointment-time-slot-picker.mjs +2 -2
  54. package/dist/components/ui/appointment-upcoming-card.js +1 -1
  55. package/dist/components/ui/appointment-upcoming-card.mjs +3 -3
  56. package/dist/components/ui/badge.js +1 -1
  57. package/dist/components/ui/badge.mjs +1 -1
  58. package/dist/components/ui/chat-widget-primitives.js +1 -1
  59. package/dist/components/ui/chat-widget-primitives.mjs +2 -2
  60. package/dist/components/ui/chat-widget.js +1 -1
  61. package/dist/components/ui/chat-widget.mjs +3 -3
  62. package/dist/components/ui/chip.js +1 -1
  63. package/dist/components/ui/chip.mjs +2 -2
  64. package/dist/components/ui/contact-alert-dialog/index.js +19 -1
  65. package/dist/components/ui/contact-alert-dialog/index.mjs +1 -1
  66. package/dist/components/ui/dashboard-transactions-table.js +1 -1
  67. package/dist/components/ui/dashboard-transactions-table.mjs +2 -2
  68. package/dist/components/ui/financial-cards.js +1 -1
  69. package/dist/components/ui/financial-cards.mjs +2 -2
  70. package/dist/components/ui/financial-sections.js +1 -1
  71. package/dist/components/ui/financial-sections.mjs +3 -3
  72. package/dist/components/ui/income-summary-component.js +1 -1
  73. package/dist/components/ui/income-summary-component.mjs +1 -1
  74. package/dist/components/ui/integration-card.js +1 -1
  75. package/dist/components/ui/integration-card.mjs +2 -2
  76. package/dist/components/ui/kanban-column.js +46 -23
  77. package/dist/components/ui/kanban-column.mjs +4 -4
  78. package/dist/components/ui/loan-applicant-information.js +1 -1
  79. package/dist/components/ui/loan-applicant-information.mjs +1 -1
  80. package/dist/components/ui/loan-application-badge.js +1 -1
  81. package/dist/components/ui/loan-application-badge.mjs +2 -2
  82. package/dist/components/ui/opportunity-card.js +46 -23
  83. package/dist/components/ui/opportunity-card.mjs +3 -3
  84. package/dist/components/ui/opportunity-summary-tab.js +1 -1
  85. package/dist/components/ui/opportunity-summary-tab.mjs +3 -3
  86. package/dist/components/ui/pipeline-board.js +46 -23
  87. package/dist/components/ui/pipeline-board.mjs +5 -5
  88. package/dist/components/ui/pipeline-primitives.js +1 -1
  89. package/dist/components/ui/pipeline-primitives.mjs +2 -2
  90. package/dist/components/ui/property-asset-card.js +1 -1
  91. package/dist/components/ui/property-asset-card.mjs +1 -1
  92. package/dist/components/ui/resource-center.js +1 -1
  93. package/dist/components/ui/resource-center.mjs +2 -2
  94. package/dist/components/ui/share-details-dialog.js +326 -30
  95. package/dist/components/ui/share-details-dialog.mjs +4 -1
  96. package/dist/components/ui/stage-timeline.js +1 -1
  97. package/dist/components/ui/stage-timeline.mjs +3 -3
  98. package/dist/index.js +473 -197
  99. package/dist/index.mjs +44 -42
  100. package/dist/styles.css +1 -1
  101. package/package.json +1 -1
  102. package/src/components/index.tsx +4 -0
  103. package/src/components/ui/advisor-card.tsx +75 -25
  104. package/src/components/ui/appointment-book-dialog.tsx +26 -3
  105. package/src/components/ui/appointment-calendar-view.tsx +7 -6
  106. package/src/components/ui/appointment-time-slot-picker.tsx +1 -0
  107. package/src/components/ui/badge.tsx +1 -1
  108. package/src/components/ui/contact-alert-dialog/contact-alert-dialog.tsx +19 -1
  109. package/src/components/ui/opportunity-card.tsx +56 -20
  110. package/src/components/ui/share-details-dialog.tsx +251 -0
  111. package/src/styles/styles-css.ts +1 -1
  112. package/dist/chunk-OZ2R6ERP.mjs +0 -174
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @wealthx/shadcn
2
2
 
3
+ ## 1.5.11
4
+
5
+ ### Patch Changes
6
+
7
+ - 3b3d677: Update to loan-crm, account-page, backoffice-contact, my-advisor-page, frontend-pages, broker-queue, co-broker-workspace, onboarding-pages
8
+
9
+ ## 1.5.10
10
+
11
+ ### Patch Changes
12
+
13
+ - 2e2ffe4: Update appointment style
14
+
3
15
  ## 1.5.9
4
16
 
5
17
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AppointmentSlotSection
3
- } from "./chunk-FRT3S72S.mjs";
3
+ } from "./chunk-CQ7HKBEX.mjs";
4
4
  import {
5
5
  Separator
6
6
  } from "./chunk-2GIYVERS.mjs";
@@ -0,0 +1,375 @@
1
+ import {
2
+ Spinner
3
+ } from "./chunk-JVMXMFBB.mjs";
4
+ import {
5
+ Tabs,
6
+ TabsContent,
7
+ TabsList,
8
+ TabsTrigger
9
+ } from "./chunk-WE4YKBDE.mjs";
10
+ import {
11
+ Textarea
12
+ } from "./chunk-BS75ICOO.mjs";
13
+ import {
14
+ Dialog,
15
+ DialogContent,
16
+ DialogFooter,
17
+ DialogHeader,
18
+ DialogTitle
19
+ } from "./chunk-LI2CTS5O.mjs";
20
+ import {
21
+ Label
22
+ } from "./chunk-P7CEBZM6.mjs";
23
+ import {
24
+ Input
25
+ } from "./chunk-LBTHZSBT.mjs";
26
+ import {
27
+ Button
28
+ } from "./chunk-NOOEKOWY.mjs";
29
+ import {
30
+ cn
31
+ } from "./chunk-AFML43VJ.mjs";
32
+
33
+ // src/components/ui/share-details-dialog.tsx
34
+ import * as React from "react";
35
+ import { CheckIcon, CopyIcon } from "lucide-react";
36
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
37
+ function Field({
38
+ id,
39
+ label,
40
+ required,
41
+ children
42
+ }) {
43
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
44
+ /* @__PURE__ */ jsxs(Label, { htmlFor: id, children: [
45
+ label,
46
+ required && /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-destructive", children: "*" })
47
+ ] }),
48
+ children
49
+ ] });
50
+ }
51
+ function ShareDetailsDialog({
52
+ open,
53
+ onOpenChange,
54
+ contactName,
55
+ shareUrl,
56
+ onEmailLink,
57
+ isSendingEmail = false,
58
+ className
59
+ }) {
60
+ const [copied, setCopied] = React.useState(false);
61
+ function handleCopy() {
62
+ navigator.clipboard.writeText(shareUrl).catch(() => {
63
+ });
64
+ setCopied(true);
65
+ setTimeout(() => setCopied(false), 2e3);
66
+ }
67
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { size: "md", className, children: [
68
+ /* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: "Share Contact Details" }) }),
69
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground", children: [
70
+ "Share a secure link to",
71
+ " ",
72
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: contactName }),
73
+ "'s financial summary report."
74
+ ] }),
75
+ /* @__PURE__ */ jsxs(Field, { label: "Shareable link", children: [
76
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
77
+ /* @__PURE__ */ jsx(
78
+ Input,
79
+ {
80
+ readOnly: true,
81
+ value: shareUrl,
82
+ className: "flex-1 font-mono text-xs text-muted-foreground",
83
+ onClick: (e) => e.target.select()
84
+ }
85
+ ),
86
+ /* @__PURE__ */ jsx(
87
+ Button,
88
+ {
89
+ variant: "outline",
90
+ size: "icon",
91
+ onClick: handleCopy,
92
+ "aria-label": copied ? "Copied" : "Copy link",
93
+ className: "shrink-0",
94
+ children: copied ? /* @__PURE__ */ jsx(CheckIcon, { className: "size-4 text-success" }) : /* @__PURE__ */ jsx(CopyIcon, { className: "size-4" })
95
+ }
96
+ )
97
+ ] }),
98
+ copied && /* @__PURE__ */ jsx("p", { className: "text-xs text-success", children: "Link copied to clipboard!" })
99
+ ] }),
100
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [
101
+ /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => onOpenChange(false), children: "Close" }),
102
+ onEmailLink && /* @__PURE__ */ jsx(Button, { onClick: onEmailLink, disabled: isSendingEmail, children: isSendingEmail ? /* @__PURE__ */ jsxs(Fragment, { children: [
103
+ /* @__PURE__ */ jsx(Spinner, { className: "size-3.5" }),
104
+ "Sending\u2026"
105
+ ] }) : "Email link" })
106
+ ] })
107
+ ] }) });
108
+ }
109
+ function EmailTemplateDialog({
110
+ open,
111
+ onOpenChange,
112
+ contactName,
113
+ contactEmail,
114
+ defaultSubject = "",
115
+ defaultBody = "",
116
+ onSend,
117
+ isSending = false,
118
+ className
119
+ }) {
120
+ const [subject, setSubject] = React.useState(defaultSubject);
121
+ const [body, setBody] = React.useState(defaultBody);
122
+ React.useEffect(() => {
123
+ if (open) {
124
+ setSubject(defaultSubject);
125
+ setBody(defaultBody);
126
+ }
127
+ }, [open, defaultSubject, defaultBody]);
128
+ const canSend = subject.trim() !== "" && body.trim() !== "" && !isSending;
129
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: isSending ? void 0 : onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { size: "lg", className, children: [
130
+ /* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: "Send Email" }) }),
131
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
132
+ /* @__PURE__ */ jsx(Field, { label: "To", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border border-border bg-muted/40 px-3 py-2 text-sm", children: [
133
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: contactName }),
134
+ /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
135
+ "<",
136
+ contactEmail,
137
+ ">"
138
+ ] })
139
+ ] }) }),
140
+ /* @__PURE__ */ jsx(Field, { id: "etd-subject", label: "Subject", required: true, children: /* @__PURE__ */ jsx(
141
+ Input,
142
+ {
143
+ id: "etd-subject",
144
+ placeholder: "Email subject",
145
+ value: subject,
146
+ onChange: (e) => setSubject(e.target.value),
147
+ disabled: isSending
148
+ }
149
+ ) }),
150
+ /* @__PURE__ */ jsx(Field, { id: "etd-body", label: "Message", required: true, children: /* @__PURE__ */ jsx(
151
+ Textarea,
152
+ {
153
+ id: "etd-body",
154
+ rows: 8,
155
+ placeholder: "Write your message here\u2026",
156
+ value: body,
157
+ onChange: (e) => setBody(e.target.value),
158
+ disabled: isSending
159
+ }
160
+ ) })
161
+ ] }),
162
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [
163
+ /* @__PURE__ */ jsx(
164
+ Button,
165
+ {
166
+ variant: "outline",
167
+ onClick: () => onOpenChange(false),
168
+ disabled: isSending,
169
+ children: "Cancel"
170
+ }
171
+ ),
172
+ /* @__PURE__ */ jsx(Button, { onClick: () => onSend({ subject, body }), disabled: !canSend, children: isSending ? /* @__PURE__ */ jsxs(Fragment, { children: [
173
+ /* @__PURE__ */ jsx(Spinner, { className: "size-3.5" }),
174
+ "Sending\u2026"
175
+ ] }) : "Send Email" })
176
+ ] })
177
+ ] }) });
178
+ }
179
+ function ShareContactDialog({
180
+ open,
181
+ onOpenChange,
182
+ contactName,
183
+ internalAdvisors,
184
+ onShareInternal,
185
+ onShareExternal,
186
+ isSending = false,
187
+ className
188
+ }) {
189
+ const [tab, setTab] = React.useState("internal");
190
+ const [search, setSearch] = React.useState("");
191
+ const [selectedId, setSelectedId] = React.useState(null);
192
+ const [internalNotes, setInternalNotes] = React.useState("");
193
+ const [firstName, setFirstName] = React.useState("");
194
+ const [lastName, setLastName] = React.useState("");
195
+ const [email, setEmail] = React.useState("");
196
+ const [externalNotes, setExternalNotes] = React.useState("");
197
+ function reset() {
198
+ setTab("internal");
199
+ setSearch("");
200
+ setSelectedId(null);
201
+ setInternalNotes("");
202
+ setFirstName("");
203
+ setLastName("");
204
+ setEmail("");
205
+ setExternalNotes("");
206
+ }
207
+ function handleOpenChange(v) {
208
+ if (!v) reset();
209
+ onOpenChange(v);
210
+ }
211
+ const filtered = internalAdvisors.filter((a) => {
212
+ const q = search.toLowerCase();
213
+ return a.name.toLowerCase().includes(q) || a.role.toLowerCase().includes(q);
214
+ });
215
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: isSending ? void 0 : handleOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { size: "md", className, children: [
216
+ /* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: "Share Contact's Information" }) }),
217
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground", children: [
218
+ "Share",
219
+ " ",
220
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: contactName }),
221
+ "'s information with an advisor."
222
+ ] }),
223
+ /* @__PURE__ */ jsxs(Tabs, { value: tab, onValueChange: setTab, children: [
224
+ /* @__PURE__ */ jsxs(TabsList, { className: "w-full", children: [
225
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "internal", className: "flex-1", children: "Internal Advisor" }),
226
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "external", className: "flex-1", children: "External / Referral" })
227
+ ] }),
228
+ /* @__PURE__ */ jsxs(TabsContent, { value: "internal", className: "mt-4 flex flex-col gap-4", children: [
229
+ /* @__PURE__ */ jsx(Field, { label: "Search Advisor", children: /* @__PURE__ */ jsx(
230
+ Input,
231
+ {
232
+ placeholder: "Search by name or role\u2026",
233
+ value: search,
234
+ onChange: (e) => setSearch(e.target.value)
235
+ }
236
+ ) }),
237
+ /* @__PURE__ */ jsx("div", { className: "max-h-[200px] overflow-y-auto border border-border divide-y divide-border", children: filtered.length === 0 ? /* @__PURE__ */ jsx("p", { className: "px-3 py-4 text-center text-sm text-muted-foreground", children: "No advisors found." }) : filtered.map((a) => {
238
+ const isSelected = selectedId === a.id;
239
+ return /* @__PURE__ */ jsxs(
240
+ "button",
241
+ {
242
+ type: "button",
243
+ onClick: () => setSelectedId(a.id),
244
+ className: cn(
245
+ "flex w-full items-center gap-3 px-3 py-2.5 text-left transition-colors hover:bg-muted/40",
246
+ isSelected && "bg-primary/5"
247
+ ),
248
+ children: [
249
+ /* @__PURE__ */ jsx(
250
+ "div",
251
+ {
252
+ className: cn(
253
+ "flex size-4 shrink-0 items-center justify-center rounded-full border-2",
254
+ isSelected ? "border-primary" : "border-border bg-background"
255
+ ),
256
+ children: isSelected && /* @__PURE__ */ jsx("div", { className: "size-2 rounded-full bg-primary" })
257
+ }
258
+ ),
259
+ /* @__PURE__ */ jsxs("div", { children: [
260
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: a.name }),
261
+ /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
262
+ a.role,
263
+ " \xB7 ",
264
+ a.practice
265
+ ] })
266
+ ] })
267
+ ]
268
+ },
269
+ a.id
270
+ );
271
+ }) }),
272
+ /* @__PURE__ */ jsx(Field, { id: "sc-int-notes", label: "Notes", children: /* @__PURE__ */ jsx(
273
+ Textarea,
274
+ {
275
+ id: "sc-int-notes",
276
+ placeholder: "Optional message for the advisor\u2026",
277
+ rows: 3,
278
+ value: internalNotes,
279
+ onChange: (e) => setInternalNotes(e.target.value),
280
+ disabled: isSending
281
+ }
282
+ ) })
283
+ ] }),
284
+ /* @__PURE__ */ jsxs(TabsContent, { value: "external", className: "mt-4 flex flex-col gap-4", children: [
285
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
286
+ /* @__PURE__ */ jsx(Field, { id: "sc-first", label: "First Name", children: /* @__PURE__ */ jsx(
287
+ Input,
288
+ {
289
+ id: "sc-first",
290
+ placeholder: "First name",
291
+ value: firstName,
292
+ onChange: (e) => setFirstName(e.target.value),
293
+ disabled: isSending
294
+ }
295
+ ) }),
296
+ /* @__PURE__ */ jsx(Field, { id: "sc-last", label: "Last Name", children: /* @__PURE__ */ jsx(
297
+ Input,
298
+ {
299
+ id: "sc-last",
300
+ placeholder: "Last name",
301
+ value: lastName,
302
+ onChange: (e) => setLastName(e.target.value),
303
+ disabled: isSending
304
+ }
305
+ ) })
306
+ ] }),
307
+ /* @__PURE__ */ jsx(Field, { id: "sc-email", label: "Email", required: true, children: /* @__PURE__ */ jsx(
308
+ Input,
309
+ {
310
+ id: "sc-email",
311
+ type: "email",
312
+ placeholder: "advisor@company.com.au",
313
+ value: email,
314
+ onChange: (e) => setEmail(e.target.value),
315
+ disabled: isSending
316
+ }
317
+ ) }),
318
+ /* @__PURE__ */ jsx(Field, { id: "sc-ext-notes", label: "Notes", children: /* @__PURE__ */ jsx(
319
+ Textarea,
320
+ {
321
+ id: "sc-ext-notes",
322
+ placeholder: "Optional message\u2026",
323
+ rows: 3,
324
+ value: externalNotes,
325
+ onChange: (e) => setExternalNotes(e.target.value),
326
+ disabled: isSending
327
+ }
328
+ ) })
329
+ ] })
330
+ ] }),
331
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [
332
+ /* @__PURE__ */ jsx(
333
+ Button,
334
+ {
335
+ variant: "outline",
336
+ onClick: () => handleOpenChange(false),
337
+ disabled: isSending,
338
+ children: "Cancel"
339
+ }
340
+ ),
341
+ tab === "internal" ? /* @__PURE__ */ jsx(
342
+ Button,
343
+ {
344
+ onClick: () => onShareInternal(selectedId, internalNotes),
345
+ disabled: !selectedId || isSending,
346
+ children: isSending ? /* @__PURE__ */ jsxs(Fragment, { children: [
347
+ /* @__PURE__ */ jsx(Spinner, { className: "size-3.5" }),
348
+ "Sharing\u2026"
349
+ ] }) : "Share Contact"
350
+ }
351
+ ) : /* @__PURE__ */ jsx(
352
+ Button,
353
+ {
354
+ onClick: () => onShareExternal({
355
+ firstName,
356
+ lastName,
357
+ email,
358
+ notes: externalNotes
359
+ }),
360
+ disabled: !email || isSending,
361
+ children: isSending ? /* @__PURE__ */ jsxs(Fragment, { children: [
362
+ /* @__PURE__ */ jsx(Spinner, { className: "size-3.5" }),
363
+ "Sending\u2026"
364
+ ] }) : "Send Invite"
365
+ }
366
+ )
367
+ ] })
368
+ ] }) });
369
+ }
370
+
371
+ export {
372
+ ShareDetailsDialog,
373
+ EmailTemplateDialog,
374
+ ShareContactDialog
375
+ };
@@ -13,7 +13,7 @@ import {
13
13
  ExpensesCard,
14
14
  IncomeCard,
15
15
  PropertyCard
16
- } from "./chunk-W5QJ57PU.mjs";
16
+ } from "./chunk-7LN5OGC2.mjs";
17
17
  import {
18
18
  FinancialDetailField,
19
19
  FinancialLineItem,
@@ -38,7 +38,7 @@ import {
38
38
  } from "./chunk-WE4YKBDE.mjs";
39
39
  import {
40
40
  Badge
41
- } from "./chunk-WL6WVV47.mjs";
41
+ } from "./chunk-X6RC5UWB.mjs";
42
42
  import {
43
43
  formatCurrency
44
44
  } from "./chunk-MN5NYQCL.mjs";
@@ -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
  Button
6
6
  } from "./chunk-NOOEKOWY.mjs";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-BS75ICOO.mjs";
11
11
  import {
12
12
  Badge
13
- } from "./chunk-WL6WVV47.mjs";
13
+ } from "./chunk-X6RC5UWB.mjs";
14
14
  import {
15
15
  Button
16
16
  } from "./chunk-NOOEKOWY.mjs";
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-JTK6VJXY.mjs";
12
12
  import {
13
13
  Badge
14
- } from "./chunk-WL6WVV47.mjs";
14
+ } from "./chunk-X6RC5UWB.mjs";
15
15
  import {
16
16
  formatDateShort
17
17
  } from "./chunk-LHWJQNLG.mjs";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-2GIYVERS.mjs";
4
4
  import {
5
5
  Badge
6
- } from "./chunk-WL6WVV47.mjs";
6
+ } from "./chunk-X6RC5UWB.mjs";
7
7
  import {
8
8
  Input
9
9
  } from "./chunk-LBTHZSBT.mjs";
@@ -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
  cn
6
6
  } from "./chunk-AFML43VJ.mjs";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  LeadCard,
3
3
  OpportunityCard
4
- } from "./chunk-54MTIKNC.mjs";
4
+ } from "./chunk-YV7XF32X.mjs";
5
5
  import {
6
6
  Spinner
7
7
  } from "./chunk-JVMXMFBB.mjs";
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-H5DTKPJ2.mjs";
15
15
  import {
16
16
  Badge
17
- } from "./chunk-WL6WVV47.mjs";
17
+ } from "./chunk-X6RC5UWB.mjs";
18
18
  import {
19
19
  useThemeVars
20
20
  } from "./chunk-XYSRRDBH.mjs";
@@ -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
  Toggle
6
6
  } from "./chunk-6QAFGZC2.mjs";
@@ -3,7 +3,7 @@ import {
3
3
  DebtCard,
4
4
  OtherLiabilityCard,
5
5
  PropertyCard
6
- } from "./chunk-W5QJ57PU.mjs";
6
+ } from "./chunk-7LN5OGC2.mjs";
7
7
  import {
8
8
  FinancialCardHeader,
9
9
  FinancialDetailField,
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-PNSYFE3K.mjs";
7
7
  import {
8
8
  Badge
9
- } from "./chunk-WL6WVV47.mjs";
9
+ } from "./chunk-X6RC5UWB.mjs";
10
10
  import {
11
11
  cn
12
12
  } from "./chunk-AFML43VJ.mjs";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-H6NQTIF4.mjs";
5
5
  import {
6
6
  Badge
7
- } from "./chunk-WL6WVV47.mjs";
7
+ } from "./chunk-X6RC5UWB.mjs";
8
8
  import {
9
9
  Input
10
10
  } from "./chunk-LBTHZSBT.mjs";
@@ -20,7 +20,7 @@ import {
20
20
  } from "./chunk-H6NQTIF4.mjs";
21
21
  import {
22
22
  Badge
23
- } from "./chunk-WL6WVV47.mjs";
23
+ } from "./chunk-X6RC5UWB.mjs";
24
24
  import {
25
25
  Button
26
26
  } from "./chunk-NOOEKOWY.mjs";
@@ -3,7 +3,7 @@ import {
3
3
  ChatWidgetInputBar,
4
4
  ChatWidgetLauncher,
5
5
  ChatWidgetMessage
6
- } from "./chunk-BBXSNDS3.mjs";
6
+ } from "./chunk-FQYFPHDO.mjs";
7
7
  import {
8
8
  Field,
9
9
  FieldError,
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-H6NQTIF4.mjs";
14
14
  import {
15
15
  Badge
16
- } from "./chunk-WL6WVV47.mjs";
16
+ } from "./chunk-X6RC5UWB.mjs";
17
17
  import {
18
18
  formatWeekdayShort
19
19
  } from "./chunk-LHWJQNLG.mjs";
@@ -391,7 +391,7 @@ function AppointmentCalendarView({
391
391
  /* @__PURE__ */ jsx(TabsTrigger, { value: "week", children: "Week" }),
392
392
  /* @__PURE__ */ jsx(TabsTrigger, { value: "month", children: "Month" })
393
393
  ] }) }),
394
- /* @__PURE__ */ jsx(TabsContent, { value: "day", className: "mt-0", children: /* @__PURE__ */ jsx(
394
+ /* @__PURE__ */ jsx(TabsContent, { value: "day", className: "mt-0 max-h-[75vh] overflow-y-auto", children: /* @__PURE__ */ jsx(
395
395
  DayView,
396
396
  {
397
397
  appointments,
@@ -401,7 +401,7 @@ function AppointmentCalendarView({
401
401
  onSelectAppointment
402
402
  }
403
403
  ) }),
404
- /* @__PURE__ */ jsx(TabsContent, { value: "week", className: "mt-0", children: /* @__PURE__ */ jsx(
404
+ /* @__PURE__ */ jsx(TabsContent, { value: "week", className: "mt-0 max-h-[75vh] overflow-y-auto", children: /* @__PURE__ */ jsx(
405
405
  WeekView,
406
406
  {
407
407
  appointments,
@@ -411,15 +411,22 @@ function AppointmentCalendarView({
411
411
  onSelectAppointment
412
412
  }
413
413
  ) }),
414
- /* @__PURE__ */ jsx(TabsContent, { value: "month", className: "mt-0", children: /* @__PURE__ */ jsx(
415
- MonthView,
414
+ /* @__PURE__ */ jsx(
415
+ TabsContent,
416
416
  {
417
- appointments,
418
- viewDate: effectiveViewDate,
419
- today,
420
- onSelectAppointment
417
+ value: "month",
418
+ className: "mt-0 max-h-[75vh] overflow-y-auto",
419
+ children: /* @__PURE__ */ jsx(
420
+ MonthView,
421
+ {
422
+ appointments,
423
+ viewDate: effectiveViewDate,
424
+ today,
425
+ onSelectAppointment
426
+ }
427
+ )
421
428
  }
422
- ) })
429
+ )
423
430
  ]
424
431
  }
425
432
  )
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-MXP2RX2V.mjs";
9
9
  import {
10
10
  AppointmentSlotSection
11
- } from "./chunk-FRT3S72S.mjs";
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-WL6WVV47.mjs";
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: FORMAT_OPTIONS.map((opt) => /* @__PURE__ */ jsxs(
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
  ] }),
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TaskCheckItem
3
- } from "./chunk-2WCIORP7.mjs";
3
+ } from "./chunk-EXI64H46.mjs";
4
4
  import {
5
5
  Progress
6
6
  } from "./chunk-JPGL36WQ.mjs";
@@ -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
  cn
6
6
  } from "./chunk-AFML43VJ.mjs";