@wealthx/shadcn 1.5.6 → 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.
- package/.turbo/turbo-build.log +141 -135
- package/CHANGELOG.md +6 -0
- package/dist/{chunk-2LLFNGJZ.mjs → chunk-3OOUI5TO.mjs} +1 -1
- package/dist/{chunk-AUEUTZIC.mjs → chunk-3QAQQBCM.mjs} +2 -2
- package/dist/chunk-3Z75IKFO.mjs +34 -0
- package/dist/{chunk-RAKBWNQH.mjs → chunk-5WCIGJ3E.mjs} +26 -65
- package/dist/chunk-65PZNG4Y.mjs +129 -0
- package/dist/{chunk-D447W45Z.mjs → chunk-7OLKVKJF.mjs} +41 -49
- package/dist/{chunk-UEREFDAE.mjs → chunk-AZGLSIHF.mjs} +1 -1
- package/dist/{chunk-QRVEI6J3.mjs → chunk-BQBSYM2I.mjs} +1 -3
- package/dist/{chunk-BFB3UH7V.mjs → chunk-C2QMHKLT.mjs} +1 -1
- package/dist/chunk-CEEVYRQA.mjs +61 -0
- package/dist/{chunk-VJ3GC7W3.mjs → chunk-CXGZSIQN.mjs} +4 -30
- package/dist/{chunk-VLELWBEW.mjs → chunk-E2BNCA6L.mjs} +1 -1
- package/dist/{chunk-46Q4335I.mjs → chunk-F73QFUZH.mjs} +10 -20
- package/dist/{chunk-Q35PNFJ7.mjs → chunk-FBNEIYSE.mjs} +1 -1
- package/dist/{chunk-HO6S3ECM.mjs → chunk-G4WLCKFV.mjs} +1 -1
- package/dist/{chunk-ODO6BUOF.mjs → chunk-HRHXZIX5.mjs} +1 -3
- package/dist/{chunk-IXR4BQSQ.mjs → chunk-I6QVWQCD.mjs} +1 -1
- package/dist/{chunk-Q5SGEIJV.mjs → chunk-IXKE6LHN.mjs} +1 -1
- package/dist/{chunk-OL65UQHQ.mjs → chunk-JCH2BG24.mjs} +26 -60
- package/dist/{chunk-PV3Y7QGK.mjs → chunk-LHWJQNLG.mjs} +3 -3
- package/dist/{chunk-JTG5R5YV.mjs → chunk-MS4PDUSU.mjs} +284 -58
- package/dist/{chunk-VFH632TB.mjs → chunk-SDNG4XL6.mjs} +1 -1
- package/dist/{chunk-DFL5CV75.mjs → chunk-T6MMCOX6.mjs} +1 -1
- package/dist/{chunk-6TX73WG7.mjs → chunk-TCE5L44O.mjs} +3 -2
- package/dist/{chunk-HROG643K.mjs → chunk-W5QJ57PU.mjs} +1 -1
- package/dist/{chunk-EW72FINW.mjs → chunk-XVZGXPIX.mjs} +1 -1
- package/dist/components/ui/about-you-form.mjs +3 -3
- package/dist/components/ui/add-column-modal.js +56 -227
- package/dist/components/ui/add-column-modal.mjs +1 -2
- package/dist/components/ui/ai-conversations.js +278 -58
- package/dist/components/ui/ai-conversations.mjs +1 -1
- package/dist/components/ui/appointment-action-dialogs.mjs +3 -3
- package/dist/components/ui/appointment-availability-settings.js +2 -28
- package/dist/components/ui/appointment-availability-settings.mjs +4 -4
- package/dist/components/ui/appointment-book-dialog.js +11 -21
- package/dist/components/ui/appointment-book-dialog.mjs +3 -3
- package/dist/components/ui/appointment-calendar-view.mjs +2 -2
- package/dist/components/ui/appointment-detail-sheet.mjs +4 -4
- package/dist/components/ui/appointment-upcoming-card.mjs +3 -3
- package/dist/components/ui/bank-statement-generate-dialog.mjs +4 -4
- package/dist/components/ui/calendar.mjs +2 -2
- package/dist/components/ui/dashboard-transactions-table.mjs +1 -1
- package/dist/components/ui/date-picker.mjs +3 -3
- package/dist/components/ui/financial-cards.mjs +2 -2
- package/dist/components/ui/financial-sections.mjs +3 -3
- package/dist/components/ui/integration-card.js +326 -0
- package/dist/components/ui/integration-card.mjs +11 -0
- package/dist/components/ui/kanban-column.js +151 -243
- package/dist/components/ui/kanban-column.mjs +3 -4
- package/dist/components/ui/loan-application-cards.mjs +1 -1
- package/dist/components/ui/onboarding-layout.js +65 -4
- package/dist/components/ui/onboarding-layout.mjs +6 -4
- package/dist/components/ui/opportunity-card.js +126 -216
- package/dist/components/ui/opportunity-card.mjs +2 -3
- package/dist/components/ui/opportunity-edit-modals.mjs +4 -4
- package/dist/components/ui/opportunity-summary-tab.mjs +6 -6
- package/dist/components/ui/pipeline-board.js +167 -261
- package/dist/components/ui/pipeline-board.mjs +4 -5
- package/dist/components/ui/pipeline-chart.js +128 -55
- package/dist/components/ui/pipeline-chart.mjs +2 -1
- package/dist/components/ui/pipeline-dialogs.mjs +4 -4
- package/dist/components/ui/savings-goal-modal.mjs +3 -3
- package/dist/components/ui/selectable-card.js +163 -0
- package/dist/components/ui/selectable-card.mjs +9 -0
- package/dist/components/ui/signup-shell.js +3 -2
- package/dist/components/ui/signup-shell.mjs +2 -2
- package/dist/components/ui/stepper.js +3 -2
- package/dist/components/ui/stepper.mjs +1 -1
- package/dist/index.js +2121 -1878
- package/dist/index.mjs +56 -46
- package/dist/styles.css +1 -1
- package/package.json +11 -1
- package/src/components/index.tsx +13 -1
- package/src/components/ui/add-column-modal.tsx +9 -58
- package/src/components/ui/ai-conversations.tsx +308 -42
- package/src/components/ui/appointment-availability-settings.tsx +2 -35
- package/src/components/ui/appointment-book-dialog.tsx +25 -48
- package/src/components/ui/integration-card.tsx +88 -0
- package/src/components/ui/kanban-column.tsx +0 -7
- package/src/components/ui/onboarding-layout.tsx +102 -1
- package/src/components/ui/opportunity-card.tsx +5 -53
- package/src/components/ui/pipeline-board.tsx +0 -3
- package/src/components/ui/pipeline-chart.tsx +47 -53
- package/src/components/ui/selectable-card.tsx +37 -0
- package/src/components/ui/stepper.tsx +3 -2
- package/src/lib/format-date.ts +6 -6
- package/src/styles/styles-css.ts +1 -1
- package/tsup.config.ts +2 -0
- package/dist/chunk-2P7HP7LR.mjs +0 -68
|
@@ -40,10 +40,10 @@ import {
|
|
|
40
40
|
} from "./chunk-WL6WVV47.mjs";
|
|
41
41
|
import {
|
|
42
42
|
Calendar
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-FBNEIYSE.mjs";
|
|
44
44
|
import {
|
|
45
45
|
formatDateLong
|
|
46
|
-
} from "./chunk-
|
|
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:
|
|
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:
|
|
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,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
LeadCard,
|
|
3
3
|
OpportunityCard
|
|
4
|
-
} from "./chunk-
|
|
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
|
|
@@ -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
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
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
|
-
|
|
30
|
+
const d = typeof date === "string" ? safeParse(date) : date;
|
|
31
|
+
return format(d, "EEEE, d MMMM yyyy");
|
|
32
32
|
} catch (e) {
|
|
33
|
-
return
|
|
33
|
+
return String(date);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
function formatWeekdayShort(date) {
|