@wealthx/shadcn 1.5.5 → 1.5.7

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 (95) hide show
  1. package/.turbo/turbo-build.log +164 -158
  2. package/CHANGELOG.md +12 -0
  3. package/dist/{chunk-2LLFNGJZ.mjs → chunk-3OOUI5TO.mjs} +1 -1
  4. package/dist/{chunk-AUEUTZIC.mjs → chunk-3QAQQBCM.mjs} +2 -2
  5. package/dist/chunk-3Z75IKFO.mjs +34 -0
  6. package/dist/{chunk-RAKBWNQH.mjs → chunk-5WCIGJ3E.mjs} +26 -65
  7. package/dist/chunk-65PZNG4Y.mjs +129 -0
  8. package/dist/{chunk-D447W45Z.mjs → chunk-7OLKVKJF.mjs} +41 -49
  9. package/dist/{chunk-UEREFDAE.mjs → chunk-AZGLSIHF.mjs} +1 -1
  10. package/dist/{chunk-QRVEI6J3.mjs → chunk-BQBSYM2I.mjs} +1 -3
  11. package/dist/{chunk-BFB3UH7V.mjs → chunk-C2QMHKLT.mjs} +1 -1
  12. package/dist/chunk-CEEVYRQA.mjs +61 -0
  13. package/dist/{chunk-VJ3GC7W3.mjs → chunk-CXGZSIQN.mjs} +4 -30
  14. package/dist/{chunk-VLELWBEW.mjs → chunk-E2BNCA6L.mjs} +1 -1
  15. package/dist/{chunk-46Q4335I.mjs → chunk-F73QFUZH.mjs} +10 -20
  16. package/dist/{chunk-Q35PNFJ7.mjs → chunk-FBNEIYSE.mjs} +1 -1
  17. package/dist/{chunk-HO6S3ECM.mjs → chunk-G4WLCKFV.mjs} +1 -1
  18. package/dist/{chunk-ODO6BUOF.mjs → chunk-HRHXZIX5.mjs} +1 -3
  19. package/dist/{chunk-IXR4BQSQ.mjs → chunk-I6QVWQCD.mjs} +1 -1
  20. package/dist/{chunk-PV7PNA6K.mjs → chunk-IKDTOCSY.mjs} +2 -4
  21. package/dist/{chunk-Q5SGEIJV.mjs → chunk-IXKE6LHN.mjs} +1 -1
  22. package/dist/{chunk-OL65UQHQ.mjs → chunk-JCH2BG24.mjs} +26 -60
  23. package/dist/{chunk-PV3Y7QGK.mjs → chunk-LHWJQNLG.mjs} +3 -3
  24. package/dist/{chunk-JTG5R5YV.mjs → chunk-MS4PDUSU.mjs} +284 -58
  25. package/dist/{chunk-VFH632TB.mjs → chunk-SDNG4XL6.mjs} +1 -1
  26. package/dist/{chunk-DFL5CV75.mjs → chunk-T6MMCOX6.mjs} +1 -1
  27. package/dist/{chunk-6TX73WG7.mjs → chunk-TCE5L44O.mjs} +3 -2
  28. package/dist/{chunk-HROG643K.mjs → chunk-W5QJ57PU.mjs} +1 -1
  29. package/dist/{chunk-EW72FINW.mjs → chunk-XVZGXPIX.mjs} +1 -1
  30. package/dist/components/ui/about-you-form.mjs +3 -3
  31. package/dist/components/ui/add-column-modal.js +56 -227
  32. package/dist/components/ui/add-column-modal.mjs +1 -2
  33. package/dist/components/ui/ai-conversations.js +278 -58
  34. package/dist/components/ui/ai-conversations.mjs +1 -1
  35. package/dist/components/ui/appointment-action-dialogs.mjs +3 -3
  36. package/dist/components/ui/appointment-availability-settings.js +2 -28
  37. package/dist/components/ui/appointment-availability-settings.mjs +4 -4
  38. package/dist/components/ui/appointment-book-dialog.js +11 -21
  39. package/dist/components/ui/appointment-book-dialog.mjs +3 -3
  40. package/dist/components/ui/appointment-calendar-view.mjs +2 -2
  41. package/dist/components/ui/appointment-detail-sheet.mjs +4 -4
  42. package/dist/components/ui/appointment-upcoming-card.mjs +3 -3
  43. package/dist/components/ui/bank-statement-generate-dialog.mjs +4 -4
  44. package/dist/components/ui/calendar.mjs +2 -2
  45. package/dist/components/ui/dashboard-transactions-table.mjs +1 -1
  46. package/dist/components/ui/date-picker.mjs +3 -3
  47. package/dist/components/ui/financial-cards.mjs +2 -2
  48. package/dist/components/ui/financial-sections.mjs +3 -3
  49. package/dist/components/ui/integration-card.js +326 -0
  50. package/dist/components/ui/integration-card.mjs +11 -0
  51. package/dist/components/ui/kanban-column.js +151 -243
  52. package/dist/components/ui/kanban-column.mjs +3 -4
  53. package/dist/components/ui/loan-application-cards.mjs +1 -1
  54. package/dist/components/ui/onboarding-layout.js +65 -4
  55. package/dist/components/ui/onboarding-layout.mjs +6 -4
  56. package/dist/components/ui/opportunity-card.js +126 -216
  57. package/dist/components/ui/opportunity-card.mjs +2 -3
  58. package/dist/components/ui/opportunity-edit-modals.mjs +4 -4
  59. package/dist/components/ui/opportunity-summary-tab.mjs +6 -6
  60. package/dist/components/ui/pipeline-board.js +167 -261
  61. package/dist/components/ui/pipeline-board.mjs +4 -5
  62. package/dist/components/ui/pipeline-chart.js +128 -55
  63. package/dist/components/ui/pipeline-chart.mjs +2 -1
  64. package/dist/components/ui/pipeline-dialogs.mjs +4 -4
  65. package/dist/components/ui/savings-goal-modal.mjs +3 -3
  66. package/dist/components/ui/selectable-card.js +163 -0
  67. package/dist/components/ui/selectable-card.mjs +9 -0
  68. package/dist/components/ui/sidebar-nav.js +2 -4
  69. package/dist/components/ui/sidebar-nav.mjs +1 -1
  70. package/dist/components/ui/signup-shell.js +3 -2
  71. package/dist/components/ui/signup-shell.mjs +2 -2
  72. package/dist/components/ui/stepper.js +3 -2
  73. package/dist/components/ui/stepper.mjs +1 -1
  74. package/dist/index.js +2122 -1881
  75. package/dist/index.mjs +56 -46
  76. package/dist/styles.css +1 -1
  77. package/package.json +11 -1
  78. package/src/components/index.tsx +26 -2
  79. package/src/components/ui/add-column-modal.tsx +9 -58
  80. package/src/components/ui/ai-conversations.tsx +308 -42
  81. package/src/components/ui/appointment-availability-settings.tsx +2 -35
  82. package/src/components/ui/appointment-book-dialog.tsx +25 -48
  83. package/src/components/ui/integration-card.tsx +88 -0
  84. package/src/components/ui/kanban-column.tsx +0 -7
  85. package/src/components/ui/onboarding-layout.tsx +102 -1
  86. package/src/components/ui/opportunity-card.tsx +5 -53
  87. package/src/components/ui/pipeline-board.tsx +0 -3
  88. package/src/components/ui/pipeline-chart.tsx +47 -53
  89. package/src/components/ui/selectable-card.tsx +37 -0
  90. package/src/components/ui/sidebar-nav.tsx +0 -2
  91. package/src/components/ui/stepper.tsx +3 -2
  92. package/src/lib/format-date.ts +6 -6
  93. package/src/styles/styles-css.ts +1 -1
  94. package/tsup.config.ts +2 -0
  95. package/dist/chunk-2P7HP7LR.mjs +0 -68
@@ -3,7 +3,7 @@ import {
3
3
  DebtCard,
4
4
  OtherLiabilityCard,
5
5
  PropertyCard
6
- } from "./chunk-HROG643K.mjs";
6
+ } from "./chunk-W5QJ57PU.mjs";
7
7
  import {
8
8
  FinancialCardHeader,
9
9
  FinancialDetailField,
@@ -40,10 +40,10 @@ import {
40
40
  } from "./chunk-WL6WVV47.mjs";
41
41
  import {
42
42
  Calendar
43
- } from "./chunk-Q35PNFJ7.mjs";
43
+ } from "./chunk-FBNEIYSE.mjs";
44
44
  import {
45
45
  formatDateLong
46
- } from "./chunk-PV3Y7QGK.mjs";
46
+ } from "./chunk-LHWJQNLG.mjs";
47
47
  import {
48
48
  Label
49
49
  } from "./chunk-P7CEBZM6.mjs";
@@ -127,13 +127,9 @@ var FORMAT_OPTIONS = [
127
127
  icon: /* @__PURE__ */ jsx(MapPin, { className: "h-4 w-4" })
128
128
  }
129
129
  ];
130
- var FORMAT_CALL = FORMAT_OPTIONS[0];
131
- var FORMAT_OFFLINE = FORMAT_OPTIONS[3];
132
- var ONLINE_MEETING_ICON = /* @__PURE__ */ jsx(Video, { className: "h-4 w-4" });
133
130
  function MeetingFormatSection({
134
131
  format,
135
132
  onFormatChange,
136
- options = FORMAT_OPTIONS,
137
133
  offlineLocation,
138
134
  onOfflineLocationChange,
139
135
  customAddress,
@@ -143,7 +139,7 @@ function MeetingFormatSection({
143
139
  isClientMode
144
140
  }) {
145
141
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
146
- /* @__PURE__ */ jsx("div", { className: "flex gap-2", children: options.map((opt) => /* @__PURE__ */ jsxs(
142
+ /* @__PURE__ */ jsx("div", { className: "flex gap-2", children: FORMAT_OPTIONS.map((opt) => /* @__PURE__ */ jsxs(
147
143
  Toggle,
148
144
  {
149
145
  variant: "outline",
@@ -275,15 +271,6 @@ function AppointmentBookDialog({
275
271
  var _a, _b, _c;
276
272
  const isClientMode = clients.length === 0;
277
273
  const showGuestForm = isClientMode && !((guestInfo == null ? void 0 : guestInfo.name) && (guestInfo == null ? void 0 : guestInfo.email));
278
- const visibleFormatOptions = isClientMode && defaultMeetingFormat ? [
279
- FORMAT_CALL,
280
- {
281
- value: defaultMeetingFormat,
282
- label: "Online Meeting",
283
- icon: ONLINE_MEETING_ICON
284
- },
285
- FORMAT_OFFLINE
286
- ] : FORMAT_OPTIONS;
287
274
  const disabledDayOfWeek = React.useMemo(
288
275
  () => schedule == null ? void 0 : schedule.filter((d) => !d.enabled).map((d) => DAY_MAP[d.day]).filter((n) => n !== void 0),
289
276
  [schedule]
@@ -347,7 +334,7 @@ function AppointmentBookDialog({
347
334
  }
348
335
  onOpenChange(next);
349
336
  };
350
- return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsx(DialogContent, { size: "2xl", children: submittedBooking ? /* @__PURE__ */ jsx(
337
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsx(DialogContent, { size: "2xl", align: "top", children: submittedBooking ? /* @__PURE__ */ jsx(
351
338
  BookingConfirmationScreen,
352
339
  {
353
340
  booking: submittedBooking,
@@ -432,14 +419,13 @@ function AppointmentBookDialog({
432
419
  )
433
420
  ] })
434
421
  ] }),
435
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
422
+ !(isClientMode && defaultMeetingFormat) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
436
423
  /* @__PURE__ */ jsx(Label, { children: "Meeting format" }),
437
424
  /* @__PURE__ */ jsx(
438
425
  MeetingFormatSection,
439
426
  {
440
427
  format: meetingFormat,
441
428
  onFormatChange: setMeetingFormat,
442
- options: visibleFormatOptions,
443
429
  offlineLocation,
444
430
  onOfflineLocationChange: setOfflineLocation,
445
431
  customAddress,
@@ -505,7 +491,11 @@ function AppointmentBookDialog({
505
491
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
506
492
  /* @__PURE__ */ jsx(Label, { children: "Time slot" }),
507
493
  date ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", children: [
508
- /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: formatDateLong(date) }),
494
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: date.toLocaleDateString("en-AU", {
495
+ weekday: "long",
496
+ day: "numeric",
497
+ month: "long"
498
+ }) }),
509
499
  /* @__PURE__ */ jsx(
510
500
  AppointmentSlotSection,
511
501
  {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  formatDateShort
3
- } from "./chunk-PV3Y7QGK.mjs";
3
+ } from "./chunk-LHWJQNLG.mjs";
4
4
  import {
5
5
  Button,
6
6
  buttonVariants
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AppointmentConfirmDialog,
3
3
  AppointmentRescheduleDialog
4
- } from "./chunk-2LLFNGJZ.mjs";
4
+ } from "./chunk-3OOUI5TO.mjs";
5
5
  import {
6
6
  Sheet,
7
7
  SheetContent
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  LeadCard,
3
3
  OpportunityCard
4
- } from "./chunk-RAKBWNQH.mjs";
4
+ } from "./chunk-5WCIGJ3E.mjs";
5
5
  import {
6
6
  Spinner
7
7
  } from "./chunk-JVMXMFBB.mjs";
@@ -61,7 +61,6 @@ function KanbanColumn({
61
61
  onCardClick,
62
62
  onViewDetails,
63
63
  onChangePriority,
64
- onLaunchAssistant,
65
64
  onPutOnHold,
66
65
  onDeleteOpportunity,
67
66
  onCardDrop,
@@ -199,7 +198,6 @@ function KanbanColumn({
199
198
  onMoveToNextStage: onMoveToNextStage ? () => onMoveToNextStage(opp.id) : void 0,
200
199
  onViewDetails: onViewDetails ? () => onViewDetails(opp.id) : void 0,
201
200
  onChangePriority: onChangePriority ? () => onChangePriority(opp.id) : void 0,
202
- onLaunchAssistant: onLaunchAssistant ? () => onLaunchAssistant(opp.id) : void 0,
203
201
  onPutOnHold: onPutOnHold ? () => onPutOnHold(opp.id) : void 0,
204
202
  onDelete: onDeleteOpportunity ? () => onDeleteOpportunity(opp.id) : void 0,
205
203
  isSubmitting: submittingOpportunityId === opp.id
@@ -32,7 +32,7 @@ import {
32
32
  } from "./chunk-NCUH54IZ.mjs";
33
33
  import {
34
34
  DatePicker
35
- } from "./chunk-BFB3UH7V.mjs";
35
+ } from "./chunk-C2QMHKLT.mjs";
36
36
  import {
37
37
  ToggleGroup,
38
38
  ToggleGroupItem
@@ -278,8 +278,7 @@ function SidebarNav({
278
278
  className: cn(
279
279
  "h-8 w-auto object-contain object-left px-5 transition-opacity duration-200",
280
280
  collapsed ? "opacity-0" : "opacity-100"
281
- ),
282
- style: { filter: "brightness(0) invert(1)" }
281
+ )
283
282
  }
284
283
  ),
285
284
  logoCollapsed && /* @__PURE__ */ jsx(
@@ -290,8 +289,7 @@ function SidebarNav({
290
289
  className: cn(
291
290
  "absolute inset-y-0 left-0 right-0 m-auto h-8 w-8 object-contain transition-opacity duration-200",
292
291
  collapsed ? "opacity-100" : "opacity-0"
293
- ),
294
- style: { filter: "brightness(0) invert(1)" }
292
+ )
295
293
  }
296
294
  )
297
295
  ] }),
@@ -32,7 +32,7 @@ import {
32
32
  } from "./chunk-NCUH54IZ.mjs";
33
33
  import {
34
34
  DatePicker
35
- } from "./chunk-BFB3UH7V.mjs";
35
+ } from "./chunk-C2QMHKLT.mjs";
36
36
  import {
37
37
  Label
38
38
  } from "./chunk-P7CEBZM6.mjs";
@@ -1,9 +1,3 @@
1
- import {
2
- Select,
3
- SelectContent,
4
- SelectItem,
5
- SelectTrigger
6
- } from "./chunk-TAX3KL66.mjs";
7
1
  import {
8
2
  Separator
9
3
  } from "./chunk-2GIYVERS.mjs";
@@ -40,7 +34,6 @@ function AddColumnModal({
40
34
  onOpenChange,
41
35
  onSave,
42
36
  editData,
43
- aiAgents = [],
44
37
  loading = false,
45
38
  className
46
39
  }) {
@@ -76,10 +69,7 @@ function AddColumnModal({
76
69
  const isValid = name.trim().length > 0 && !daysError && !hasDuplicateTasks && tasks.every((t) => t.name.trim().length > 0);
77
70
  function addTask() {
78
71
  if (tasks.length >= MAX_TASKS) return;
79
- setTasks((prev) => [
80
- ...prev,
81
- { id: nextId.current++, name: "", aiAgentId: null }
82
- ]);
72
+ setTasks((prev) => [...prev, { id: nextId.current++, name: "" }]);
83
73
  }
84
74
  function removeTask(id) {
85
75
  setTasks((prev) => prev.filter((t) => t.id !== id));
@@ -172,55 +162,31 @@ function AddColumnModal({
172
162
  )
173
163
  ] }),
174
164
  tasks.length === 0 && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "No tasks yet. Tasks will be created for each new opportunity added to this column." }),
175
- /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: tasks.map((task) => {
176
- var _a2, _b2, _c;
177
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
178
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
179
- /* @__PURE__ */ jsx(
180
- Input,
181
- {
182
- value: task.name,
183
- onChange: (e) => updateTask(task.id, { name: e.target.value }),
184
- placeholder: "Task name",
185
- className: "flex-1",
186
- disabled: loading
187
- }
188
- ),
189
- /* @__PURE__ */ jsx(
190
- Button,
191
- {
192
- type: "button",
193
- variant: "ghost",
194
- size: "icon",
195
- onClick: () => removeTask(task.id),
196
- disabled: loading,
197
- className: "size-9 shrink-0 text-muted-foreground hover:text-destructive",
198
- "aria-label": "Remove task",
199
- children: /* @__PURE__ */ jsx(Trash2, { className: "size-4" })
200
- }
201
- )
202
- ] }),
203
- aiAgents.length > 0 && /* @__PURE__ */ jsxs(
204
- Select,
205
- {
206
- value: (_a2 = task.aiAgentId) != null ? _a2 : void 0,
207
- onValueChange: (v) => updateTask(task.id, { aiAgentId: v || null }),
208
- children: [
209
- /* @__PURE__ */ jsx(SelectTrigger, { size: "sm", className: "w-full", children: /* @__PURE__ */ jsx(
210
- "span",
211
- {
212
- className: cn(
213
- !task.aiAgentId && "text-muted-foreground"
214
- ),
215
- children: task.aiAgentId ? (_c = (_b2 = aiAgents.find((a) => a.id === task.aiAgentId)) == null ? void 0 : _b2.name) != null ? _c : task.aiAgentId : "Select agent"
216
- }
217
- ) }),
218
- /* @__PURE__ */ jsx(SelectContent, { children: aiAgents.map((agent) => /* @__PURE__ */ jsx(SelectItem, { value: agent.id, children: agent.name }, agent.id)) })
219
- ]
220
- }
221
- )
222
- ] }, task.id);
223
- }) }),
165
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: tasks.map((task) => /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-1.5", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
166
+ /* @__PURE__ */ jsx(
167
+ Input,
168
+ {
169
+ value: task.name,
170
+ onChange: (e) => updateTask(task.id, { name: e.target.value }),
171
+ placeholder: "Task name",
172
+ className: "flex-1",
173
+ disabled: loading
174
+ }
175
+ ),
176
+ /* @__PURE__ */ jsx(
177
+ Button,
178
+ {
179
+ type: "button",
180
+ variant: "ghost",
181
+ size: "icon",
182
+ onClick: () => removeTask(task.id),
183
+ disabled: loading,
184
+ className: "size-9 shrink-0 text-muted-foreground hover:text-destructive",
185
+ "aria-label": "Remove task",
186
+ children: /* @__PURE__ */ jsx(Trash2, { className: "size-4" })
187
+ }
188
+ )
189
+ ] }) }, task.id)) }),
224
190
  hasDuplicateTasks && /* @__PURE__ */ jsx("p", { className: "text-xs text-destructive", children: "Task names must be unique." })
225
191
  ] })
226
192
  ] }),
@@ -26,11 +26,11 @@ function formatDateWithWeekday(iso) {
26
26
  }
27
27
  }
28
28
  function formatDateLong(date) {
29
- const d = typeof date === "string" ? safeParse(date) : date;
30
29
  try {
31
- return format(d, "EEEE, d MMMM");
30
+ const d = typeof date === "string" ? safeParse(date) : date;
31
+ return format(d, "EEEE, d MMMM yyyy");
32
32
  } catch (e) {
33
- return d.toLocaleDateString();
33
+ return String(date);
34
34
  }
35
35
  }
36
36
  function formatWeekdayShort(date) {