@wealthx/shadcn 1.5.14 → 1.5.16
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 +80 -80
- package/CHANGELOG.md +12 -0
- package/dist/{chunk-AKWN5ZQG.mjs → chunk-A43XIVO6.mjs} +57 -29
- package/dist/{chunk-ZA44WICP.mjs → chunk-FGHM34AV.mjs} +38 -31
- package/dist/{chunk-EB626HVW.mjs → chunk-LRQSY3TP.mjs} +33 -0
- package/dist/{chunk-J7KQON2N.mjs → chunk-RKHKBEE6.mjs} +1 -1
- package/dist/components/ui/ai-conversations.js +32 -0
- package/dist/components/ui/ai-conversations.mjs +1 -1
- package/dist/components/ui/appointment-book-dialog.js +1 -1
- package/dist/components/ui/appointment-book-dialog.mjs +1 -1
- package/dist/components/ui/kanban-column.js +123 -43
- package/dist/components/ui/kanban-column.mjs +2 -1
- package/dist/components/ui/pipeline-board.js +173 -86
- package/dist/components/ui/pipeline-board.mjs +3 -2
- package/dist/index.js +120 -59
- package/dist/index.mjs +4 -4
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/components/ui/ai-conversations.tsx +45 -0
- package/src/components/ui/appointment-book-dialog.tsx +1 -1
- package/src/components/ui/kanban-column.tsx +78 -37
- package/src/components/ui/pipeline-board.tsx +73 -49
- package/src/styles/styles-css.ts +1 -1
package/dist/index.js
CHANGED
|
@@ -3105,6 +3105,31 @@ var MEETING_LABEL = {
|
|
|
3105
3105
|
phone: "Phone Call",
|
|
3106
3106
|
"in-person": "In Person"
|
|
3107
3107
|
};
|
|
3108
|
+
var MEETING_DETAIL_ICON = {
|
|
3109
|
+
video: import_lucide_react6.Link2,
|
|
3110
|
+
phone: import_lucide_react6.PhoneCall,
|
|
3111
|
+
"in-person": import_lucide_react6.Navigation
|
|
3112
|
+
};
|
|
3113
|
+
function MeetingDetailRow({
|
|
3114
|
+
meetingType,
|
|
3115
|
+
detail
|
|
3116
|
+
}) {
|
|
3117
|
+
const DetailIcon = MEETING_DETAIL_ICON[meetingType];
|
|
3118
|
+
const isLink = detail.startsWith("http");
|
|
3119
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3120
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DetailIcon, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
3121
|
+
isLink ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
3122
|
+
"a",
|
|
3123
|
+
{
|
|
3124
|
+
href: detail,
|
|
3125
|
+
target: "_blank",
|
|
3126
|
+
rel: "noopener noreferrer",
|
|
3127
|
+
className: "text-sm text-primary underline underline-offset-2 break-all hover:text-primary/80",
|
|
3128
|
+
children: detail
|
|
3129
|
+
}
|
|
3130
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-sm text-muted-foreground break-all", children: detail })
|
|
3131
|
+
] });
|
|
3132
|
+
}
|
|
3108
3133
|
function AppointmentSection({
|
|
3109
3134
|
appointment,
|
|
3110
3135
|
contactId,
|
|
@@ -3124,6 +3149,13 @@ function AppointmentSection({
|
|
|
3124
3149
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(AppointmentIcon, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
3125
3150
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-sm text-muted-foreground", children: MEETING_LABEL[appointment.meetingType] })
|
|
3126
3151
|
] }),
|
|
3152
|
+
appointment.meetingDetail && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
3153
|
+
MeetingDetailRow,
|
|
3154
|
+
{
|
|
3155
|
+
meetingType: appointment.meetingType,
|
|
3156
|
+
detail: appointment.meetingDetail
|
|
3157
|
+
}
|
|
3158
|
+
),
|
|
3127
3159
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
3128
3160
|
"span",
|
|
3129
3161
|
{
|
|
@@ -9233,7 +9265,7 @@ function AppointmentBookDialog({
|
|
|
9233
9265
|
] })
|
|
9234
9266
|
] }),
|
|
9235
9267
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Separator, {}),
|
|
9236
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex flex-col gap-4", children: [
|
|
9268
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex flex-col gap-4 overflow-y-auto max-h-[calc(90vh-200px)]", children: [
|
|
9237
9269
|
!isClientMode && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
|
|
9238
9270
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Label, { children: "Client" }),
|
|
9239
9271
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
@@ -19361,9 +19393,6 @@ function LeadCard({
|
|
|
19361
19393
|
|
|
19362
19394
|
// src/components/ui/kanban-column.tsx
|
|
19363
19395
|
var import_jsx_runtime96 = require("react/jsx-runtime");
|
|
19364
|
-
function formatTotalValue(value) {
|
|
19365
|
-
return formatCurrency(value);
|
|
19366
|
-
}
|
|
19367
19396
|
function growthColor(growth) {
|
|
19368
19397
|
return growth > 0 ? "var(--color-success-text)" : "var(--color-destructive-text)";
|
|
19369
19398
|
}
|
|
@@ -19379,6 +19408,7 @@ function KanbanColumn({
|
|
|
19379
19408
|
loaderRef,
|
|
19380
19409
|
onEditColumn,
|
|
19381
19410
|
onDeleteColumn,
|
|
19411
|
+
onAddLead,
|
|
19382
19412
|
onTaskToggle,
|
|
19383
19413
|
onMarkAsDone,
|
|
19384
19414
|
onMoveToNextStage,
|
|
@@ -19432,34 +19462,58 @@ function KanbanColumn({
|
|
|
19432
19462
|
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex flex-col gap-2 border-b border-border bg-background px-3 py-3", children: [
|
|
19433
19463
|
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
19434
19464
|
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("h2", { className: "text-sm font-semibold text-foreground", children: [
|
|
19435
|
-
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "text-muted-foreground", children: stage.count }),
|
|
19436
|
-
" ",
|
|
19437
|
-
stage.name
|
|
19438
|
-
] }),
|
|
19439
|
-
hasMenu && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(DropdownMenu, { children: [
|
|
19440
19465
|
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
19441
|
-
|
|
19466
|
+
"span",
|
|
19442
19467
|
{
|
|
19443
|
-
className: cn(
|
|
19444
|
-
|
|
19445
|
-
|
|
19446
|
-
),
|
|
19447
|
-
"aria-label": "Column actions",
|
|
19448
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react53.MoreVertical, { className: "size-4" })
|
|
19468
|
+
className: cn(!stage.countColor && "text-muted-foreground"),
|
|
19469
|
+
style: stage.countColor ? { color: stage.countColor } : void 0,
|
|
19470
|
+
children: stage.count
|
|
19449
19471
|
}
|
|
19450
19472
|
),
|
|
19451
|
-
|
|
19452
|
-
|
|
19453
|
-
|
|
19454
|
-
|
|
19455
|
-
|
|
19456
|
-
|
|
19457
|
-
|
|
19458
|
-
|
|
19459
|
-
|
|
19460
|
-
|
|
19461
|
-
|
|
19462
|
-
|
|
19473
|
+
" ",
|
|
19474
|
+
stage.name
|
|
19475
|
+
] }),
|
|
19476
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "flex items-center gap-0.5", children: [
|
|
19477
|
+
onAddLead && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(Tooltip, { children: [
|
|
19478
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
19479
|
+
"button",
|
|
19480
|
+
{
|
|
19481
|
+
className: cn(
|
|
19482
|
+
buttonVariants({ variant: "ghost", size: "icon" }),
|
|
19483
|
+
"size-7 shrink-0"
|
|
19484
|
+
),
|
|
19485
|
+
onClick: onAddLead,
|
|
19486
|
+
"aria-label": "Add lead",
|
|
19487
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react53.Plus, { className: "size-4" })
|
|
19488
|
+
}
|
|
19489
|
+
) }),
|
|
19490
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(TooltipContent, { children: "Add lead" })
|
|
19491
|
+
] }) }),
|
|
19492
|
+
hasMenu && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(DropdownMenu, { children: [
|
|
19493
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
19494
|
+
DropdownMenuTrigger,
|
|
19495
|
+
{
|
|
19496
|
+
className: cn(
|
|
19497
|
+
buttonVariants({ variant: "ghost", size: "icon" }),
|
|
19498
|
+
"-mr-1 size-7 shrink-0"
|
|
19499
|
+
),
|
|
19500
|
+
"aria-label": "Column actions",
|
|
19501
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_lucide_react53.MoreVertical, { className: "size-4" })
|
|
19502
|
+
}
|
|
19503
|
+
),
|
|
19504
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
19505
|
+
onEditColumn && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(DropdownMenuItem, { onClick: onEditColumn, children: "Edit column settings" }),
|
|
19506
|
+
!isDefault && onDeleteColumn && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_jsx_runtime96.Fragment, { children: [
|
|
19507
|
+
onEditColumn && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(DropdownMenuSeparator, {}),
|
|
19508
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
19509
|
+
DropdownMenuItem,
|
|
19510
|
+
{
|
|
19511
|
+
onClick: onDeleteColumn,
|
|
19512
|
+
className: "text-destructive focus:text-destructive",
|
|
19513
|
+
children: "Delete column"
|
|
19514
|
+
}
|
|
19515
|
+
)
|
|
19516
|
+
] })
|
|
19463
19517
|
] })
|
|
19464
19518
|
] })
|
|
19465
19519
|
] })
|
|
@@ -19476,7 +19530,7 @@ function KanbanColumn({
|
|
|
19476
19530
|
]
|
|
19477
19531
|
}
|
|
19478
19532
|
) : /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", {}),
|
|
19479
|
-
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "text-
|
|
19533
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "text-sm font-bold tabular-nums text-foreground", children: formatCurrency(stage.totalValue) })
|
|
19480
19534
|
] })
|
|
19481
19535
|
] }),
|
|
19482
19536
|
/* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
|
|
@@ -23161,6 +23215,37 @@ function PipelineBoard({
|
|
|
23161
23215
|
className
|
|
23162
23216
|
}) {
|
|
23163
23217
|
const hasToolbar = onSearchChange || filterOptions.length > 0 && onFilterChange;
|
|
23218
|
+
const pinnedCols = columns.filter((c) => c.isPinned);
|
|
23219
|
+
const scrollableCols = columns.filter((c) => !c.isPinned);
|
|
23220
|
+
const renderColumn = (col) => /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
23221
|
+
KanbanColumn,
|
|
23222
|
+
{
|
|
23223
|
+
stage: col.stage,
|
|
23224
|
+
opportunities: col.opportunities,
|
|
23225
|
+
isDragging: col.isDragging,
|
|
23226
|
+
isDropTarget: col.isDropTarget,
|
|
23227
|
+
isDefault: col.isDefault,
|
|
23228
|
+
isLoading: col.isLoading,
|
|
23229
|
+
isLoadingMore: col.isLoadingMore,
|
|
23230
|
+
hasMore: col.hasMore,
|
|
23231
|
+
loaderRef: col.loaderRef,
|
|
23232
|
+
onEditColumn: !col.isPinned && onEditColumn ? () => onEditColumn(col.stage.id) : void 0,
|
|
23233
|
+
onDeleteColumn: onDeleteColumn && !col.isDefault && !col.isPinned ? () => onDeleteColumn(col.stage.id) : void 0,
|
|
23234
|
+
onCardDrop: onMoveCard ? (cardId) => onMoveCard(cardId, col.key) : void 0,
|
|
23235
|
+
onCardClick,
|
|
23236
|
+
onTaskToggle,
|
|
23237
|
+
onMarkAsDone,
|
|
23238
|
+
onMoveToNextStage,
|
|
23239
|
+
onSendLoanApplication: col.onSendLoanApplication,
|
|
23240
|
+
onViewDetails,
|
|
23241
|
+
onChangePriority,
|
|
23242
|
+
onPutOnHold,
|
|
23243
|
+
onDeleteOpportunity,
|
|
23244
|
+
onAddLead: col.onAddLead,
|
|
23245
|
+
submittingOpportunityId
|
|
23246
|
+
},
|
|
23247
|
+
col.key
|
|
23248
|
+
);
|
|
23164
23249
|
return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
|
|
23165
23250
|
"div",
|
|
23166
23251
|
{
|
|
@@ -23180,36 +23265,12 @@ function PipelineBoard({
|
|
|
23180
23265
|
onRefresh
|
|
23181
23266
|
}
|
|
23182
23267
|
),
|
|
23183
|
-
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "flex flex-1
|
|
23184
|
-
|
|
23185
|
-
|
|
23186
|
-
|
|
23187
|
-
|
|
23188
|
-
|
|
23189
|
-
isDragging: col.isDragging,
|
|
23190
|
-
isDropTarget: col.isDropTarget,
|
|
23191
|
-
isDefault: col.isDefault,
|
|
23192
|
-
isLoading: col.isLoading,
|
|
23193
|
-
isLoadingMore: col.isLoadingMore,
|
|
23194
|
-
hasMore: col.hasMore,
|
|
23195
|
-
loaderRef: col.loaderRef,
|
|
23196
|
-
onEditColumn: onEditColumn ? () => onEditColumn(col.stage.id) : void 0,
|
|
23197
|
-
onDeleteColumn: onDeleteColumn && !col.isDefault ? () => onDeleteColumn(col.stage.id) : void 0,
|
|
23198
|
-
onCardDrop: onMoveCard ? (cardId) => onMoveCard(cardId, col.key) : void 0,
|
|
23199
|
-
onCardClick,
|
|
23200
|
-
onTaskToggle,
|
|
23201
|
-
onMarkAsDone,
|
|
23202
|
-
onMoveToNextStage,
|
|
23203
|
-
onSendLoanApplication: col.onSendLoanApplication,
|
|
23204
|
-
onViewDetails,
|
|
23205
|
-
onChangePriority,
|
|
23206
|
-
onPutOnHold,
|
|
23207
|
-
onDeleteOpportunity,
|
|
23208
|
-
submittingOpportunityId
|
|
23209
|
-
},
|
|
23210
|
-
col.key
|
|
23211
|
-
)),
|
|
23212
|
-
columns.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("p", { className: "text-sm text-muted-foreground", children: "No columns to display." }) })
|
|
23268
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "flex flex-1 overflow-hidden", children: [
|
|
23269
|
+
pinnedCols.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "flex shrink-0 gap-3 border-r border-border p-4", children: pinnedCols.map(renderColumn) }),
|
|
23270
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "flex flex-1 gap-3 overflow-x-auto p-4", children: [
|
|
23271
|
+
scrollableCols.map(renderColumn),
|
|
23272
|
+
columns.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("p", { className: "text-sm text-muted-foreground", children: "No columns to display." }) })
|
|
23273
|
+
] })
|
|
23213
23274
|
] })
|
|
23214
23275
|
]
|
|
23215
23276
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -71,7 +71,7 @@ import {
|
|
|
71
71
|
} from "./chunk-KFH36NKF.mjs";
|
|
72
72
|
import {
|
|
73
73
|
PipelineBoard
|
|
74
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-FGHM34AV.mjs";
|
|
75
75
|
import {
|
|
76
76
|
PipelineChart
|
|
77
77
|
} from "./chunk-PCULNQWA.mjs";
|
|
@@ -117,7 +117,7 @@ import {
|
|
|
117
117
|
} from "./chunk-PUJ42INK.mjs";
|
|
118
118
|
import {
|
|
119
119
|
KanbanColumn
|
|
120
|
-
} from "./chunk-
|
|
120
|
+
} from "./chunk-A43XIVO6.mjs";
|
|
121
121
|
import {
|
|
122
122
|
LeadCard,
|
|
123
123
|
OpportunityCard
|
|
@@ -364,7 +364,7 @@ import {
|
|
|
364
364
|
} from "./chunk-R2ON6CAN.mjs";
|
|
365
365
|
import {
|
|
366
366
|
AppointmentBookDialog
|
|
367
|
-
} from "./chunk-
|
|
367
|
+
} from "./chunk-RKHKBEE6.mjs";
|
|
368
368
|
import {
|
|
369
369
|
RadioGroup,
|
|
370
370
|
RadioGroupCard,
|
|
@@ -516,7 +516,7 @@ import {
|
|
|
516
516
|
ConversationStatusChip,
|
|
517
517
|
ConversationsPage,
|
|
518
518
|
LeadInfoPanel
|
|
519
|
-
} from "./chunk-
|
|
519
|
+
} from "./chunk-LRQSY3TP.mjs";
|
|
520
520
|
import {
|
|
521
521
|
Tooltip,
|
|
522
522
|
TooltipContent,
|