@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
|
@@ -853,66 +853,8 @@ function Progress(_a) {
|
|
|
853
853
|
);
|
|
854
854
|
}
|
|
855
855
|
|
|
856
|
-
// src/components/ui/tooltip.tsx
|
|
857
|
-
var import_tooltip = require("@base-ui/react/tooltip");
|
|
858
|
-
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
859
|
-
function TooltipProvider(_a) {
|
|
860
|
-
var _b = _a, {
|
|
861
|
-
delay = 0
|
|
862
|
-
} = _b, props = __objRest(_b, [
|
|
863
|
-
"delay"
|
|
864
|
-
]);
|
|
865
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
866
|
-
import_tooltip.Tooltip.Provider,
|
|
867
|
-
__spreadValues({
|
|
868
|
-
"data-slot": "tooltip-provider",
|
|
869
|
-
delay
|
|
870
|
-
}, props)
|
|
871
|
-
);
|
|
872
|
-
}
|
|
873
|
-
function Tooltip(_a) {
|
|
874
|
-
var props = __objRest(_a, []);
|
|
875
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_tooltip.Tooltip.Root, __spreadValues({ "data-slot": "tooltip" }, props));
|
|
876
|
-
}
|
|
877
|
-
function TooltipTrigger(_a) {
|
|
878
|
-
var props = __objRest(_a, []);
|
|
879
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_tooltip.Tooltip.Trigger, __spreadValues({ "data-slot": "tooltip-trigger" }, props));
|
|
880
|
-
}
|
|
881
|
-
function TooltipContent(_a) {
|
|
882
|
-
var _b = _a, {
|
|
883
|
-
className,
|
|
884
|
-
sideOffset = 8,
|
|
885
|
-
side,
|
|
886
|
-
children,
|
|
887
|
-
style
|
|
888
|
-
} = _b, props = __objRest(_b, [
|
|
889
|
-
"className",
|
|
890
|
-
"sideOffset",
|
|
891
|
-
"side",
|
|
892
|
-
"children",
|
|
893
|
-
"style"
|
|
894
|
-
]);
|
|
895
|
-
const themeVars = useThemeVars();
|
|
896
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_tooltip.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_tooltip.Tooltip.Positioner, { sideOffset, side, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
897
|
-
import_tooltip.Tooltip.Popup,
|
|
898
|
-
__spreadProps(__spreadValues({
|
|
899
|
-
className: cn(
|
|
900
|
-
"relative z-50 w-fit animate-in overflow-visible bg-brand-secondary px-3 py-1.5 text-caption text-balance text-brand-secondary-foreground fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:zoom-out-95 data-ending-style:fill-mode-forwards",
|
|
901
|
-
className
|
|
902
|
-
),
|
|
903
|
-
"data-slot": "tooltip-content",
|
|
904
|
-
style: __spreadValues(__spreadValues({}, themeVars), style)
|
|
905
|
-
}, props), {
|
|
906
|
-
children: [
|
|
907
|
-
children,
|
|
908
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_tooltip.Tooltip.Arrow, { className: "z-50 size-2.5 rotate-45 bg-brand-secondary data-[side=bottom]:-top-1 data-[side=left]:-right-1 data-[side=right]:-left-1 data-[side=top]:-bottom-1" })
|
|
909
|
-
]
|
|
910
|
-
})
|
|
911
|
-
) }) });
|
|
912
|
-
}
|
|
913
|
-
|
|
914
856
|
// src/components/ui/opportunity-card.tsx
|
|
915
|
-
var
|
|
857
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
916
858
|
var PRIORITY_COLORS = {
|
|
917
859
|
HIGH: "var(--color-destructive)",
|
|
918
860
|
MEDIUM: "var(--color-warning)",
|
|
@@ -959,7 +901,6 @@ function TaskViewCard({
|
|
|
959
901
|
onDragStart,
|
|
960
902
|
className
|
|
961
903
|
}) {
|
|
962
|
-
var _a;
|
|
963
904
|
const resolvedPriority = resolvePriority(
|
|
964
905
|
daysSinceColumnChanged,
|
|
965
906
|
warningDays,
|
|
@@ -971,8 +912,6 @@ function TaskViewCard({
|
|
|
971
912
|
const totalCount = tasks.length;
|
|
972
913
|
const hasTasks = totalCount > 0;
|
|
973
914
|
const allDone = hasTasks && completedCount === totalCount;
|
|
974
|
-
const nextPendingTask = tasks.find((t) => !t.completed);
|
|
975
|
-
const agentName = (_a = nextPendingTask == null ? void 0 : nextPendingTask.aiAgentName) != null ? _a : null;
|
|
976
915
|
const [subtasksExpanded, setSubtasksExpanded] = (0, import_react5.useState)(false);
|
|
977
916
|
const hasMenu = onViewDetails || onChangePriority || onPutOnHold || onDelete;
|
|
978
917
|
const stopProp = (e) => {
|
|
@@ -986,35 +925,23 @@ function TaskViewCard({
|
|
|
986
925
|
].filter(Boolean).join(" \xB7 ");
|
|
987
926
|
let taskHeader;
|
|
988
927
|
if (allDone) {
|
|
989
|
-
taskHeader = /* @__PURE__ */ (0,
|
|
928
|
+
taskHeader = /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
990
929
|
"p",
|
|
991
930
|
{
|
|
992
931
|
className: "flex items-center gap-1.5 text-sm font-semibold",
|
|
993
932
|
style: { color: "var(--color-success-text)" },
|
|
994
933
|
children: [
|
|
995
|
-
/* @__PURE__ */ (0,
|
|
934
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Check, { className: "size-3.5 shrink-0" }),
|
|
996
935
|
"All tasks complete"
|
|
997
936
|
]
|
|
998
937
|
}
|
|
999
938
|
);
|
|
1000
939
|
} else if (nextTask) {
|
|
1001
|
-
taskHeader = /* @__PURE__ */ (0,
|
|
1002
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-1.5", children: [
|
|
1003
|
-
agentName && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1004
|
-
import_lucide_react6.Bot,
|
|
1005
|
-
{
|
|
1006
|
-
className: "size-3.5 shrink-0 text-primary",
|
|
1007
|
-
"aria-hidden": "true"
|
|
1008
|
-
}
|
|
1009
|
-
),
|
|
1010
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "truncate text-sm font-semibold leading-snug", children: nextTask })
|
|
1011
|
-
] }),
|
|
1012
|
-
agentName && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "mt-0.5 text-xs text-muted-foreground", children: agentName })
|
|
1013
|
-
] });
|
|
940
|
+
taskHeader = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "truncate text-sm font-semibold leading-snug", children: nextTask });
|
|
1014
941
|
} else {
|
|
1015
|
-
taskHeader = /* @__PURE__ */ (0,
|
|
942
|
+
taskHeader = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-xs text-muted-foreground", children: "No tasks defined for this stage" });
|
|
1016
943
|
}
|
|
1017
|
-
return /* @__PURE__ */ (0,
|
|
944
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
1018
945
|
"div",
|
|
1019
946
|
{
|
|
1020
947
|
className: cn(
|
|
@@ -1029,9 +956,9 @@ function TaskViewCard({
|
|
|
1029
956
|
onDragStart,
|
|
1030
957
|
onClick: onCardClick,
|
|
1031
958
|
children: [
|
|
1032
|
-
/* @__PURE__ */ (0,
|
|
1033
|
-
/* @__PURE__ */ (0,
|
|
1034
|
-
/* @__PURE__ */ (0,
|
|
959
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-start gap-2", children: [
|
|
960
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "min-w-0 flex-1", children: taskHeader }),
|
|
961
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1035
962
|
"span",
|
|
1036
963
|
{
|
|
1037
964
|
role: "img",
|
|
@@ -1041,13 +968,13 @@ function TaskViewCard({
|
|
|
1041
968
|
}
|
|
1042
969
|
)
|
|
1043
970
|
] }),
|
|
1044
|
-
hasTasks && /* @__PURE__ */ (0,
|
|
1045
|
-
/* @__PURE__ */ (0,
|
|
971
|
+
hasTasks && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
972
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "shrink-0 tabular-nums text-xs text-muted-foreground", children: [
|
|
1046
973
|
completedCount,
|
|
1047
974
|
"/",
|
|
1048
975
|
totalCount
|
|
1049
976
|
] }),
|
|
1050
|
-
/* @__PURE__ */ (0,
|
|
977
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1051
978
|
Progress,
|
|
1052
979
|
{
|
|
1053
980
|
value: completedCount / totalCount * 100,
|
|
@@ -1058,7 +985,7 @@ function TaskViewCard({
|
|
|
1058
985
|
}
|
|
1059
986
|
)
|
|
1060
987
|
] }),
|
|
1061
|
-
hasTasks && /* @__PURE__ */ (0,
|
|
988
|
+
hasTasks && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
1062
989
|
"div",
|
|
1063
990
|
{
|
|
1064
991
|
className: "space-y-1 border-t border-border pt-2",
|
|
@@ -1066,18 +993,18 @@ function TaskViewCard({
|
|
|
1066
993
|
role: "presentation",
|
|
1067
994
|
onKeyDown: (e) => e.stopPropagation(),
|
|
1068
995
|
children: [
|
|
1069
|
-
/* @__PURE__ */ (0,
|
|
996
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
1070
997
|
"button",
|
|
1071
998
|
{
|
|
1072
999
|
type: "button",
|
|
1073
1000
|
onClick: () => setSubtasksExpanded((v) => !v),
|
|
1074
1001
|
className: "flex w-full items-center justify-between text-xs text-muted-foreground hover:text-foreground",
|
|
1075
1002
|
children: [
|
|
1076
|
-
/* @__PURE__ */ (0,
|
|
1077
|
-
subtasksExpanded ? /* @__PURE__ */ (0,
|
|
1003
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1", children: [
|
|
1004
|
+
subtasksExpanded ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.ChevronDown, { className: "size-3" }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.ChevronRight, { className: "size-3" }),
|
|
1078
1005
|
"Subtasks"
|
|
1079
1006
|
] }),
|
|
1080
|
-
/* @__PURE__ */ (0,
|
|
1007
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { children: [
|
|
1081
1008
|
completedCount,
|
|
1082
1009
|
" / ",
|
|
1083
1010
|
totalCount
|
|
@@ -1085,12 +1012,11 @@ function TaskViewCard({
|
|
|
1085
1012
|
]
|
|
1086
1013
|
}
|
|
1087
1014
|
),
|
|
1088
|
-
subtasksExpanded && /* @__PURE__ */ (0,
|
|
1015
|
+
subtasksExpanded && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("ul", { className: "space-y-1.5 pt-1", children: tasks.map((task) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1089
1016
|
TaskCheckItem,
|
|
1090
1017
|
{
|
|
1091
1018
|
title: task.title,
|
|
1092
1019
|
completed: task.completed,
|
|
1093
|
-
aiAgentName: task.aiAgentName,
|
|
1094
1020
|
onToggle: () => onTaskToggle == null ? void 0 : onTaskToggle(task.id),
|
|
1095
1021
|
size: "xs"
|
|
1096
1022
|
},
|
|
@@ -1099,14 +1025,14 @@ function TaskViewCard({
|
|
|
1099
1025
|
]
|
|
1100
1026
|
}
|
|
1101
1027
|
),
|
|
1102
|
-
/* @__PURE__ */ (0,
|
|
1103
|
-
/* @__PURE__ */ (0,
|
|
1104
|
-
daysSinceColumnChanged !== void 0 && /* @__PURE__ */ (0,
|
|
1028
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "truncate text-xs text-muted-foreground", children: dealRef }),
|
|
1029
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center gap-1.5", onClick: stopProp, children: [
|
|
1030
|
+
daysSinceColumnChanged !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Badge, { variant: "secondary", className: "px-1.5 text-[10px] font-normal", children: [
|
|
1105
1031
|
daysSinceColumnChanged,
|
|
1106
1032
|
"d"
|
|
1107
1033
|
] }),
|
|
1108
|
-
hasMenu && /* @__PURE__ */ (0,
|
|
1109
|
-
/* @__PURE__ */ (0,
|
|
1034
|
+
hasMenu && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "ml-auto", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(DropdownMenu, { children: [
|
|
1035
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1110
1036
|
DropdownMenuTrigger,
|
|
1111
1037
|
{
|
|
1112
1038
|
className: cn(
|
|
@@ -1114,23 +1040,23 @@ function TaskViewCard({
|
|
|
1114
1040
|
"size-7 shrink-0"
|
|
1115
1041
|
),
|
|
1116
1042
|
"aria-label": "Opportunity actions",
|
|
1117
|
-
children: /* @__PURE__ */ (0,
|
|
1043
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.MoreVertical, { className: "size-4" })
|
|
1118
1044
|
}
|
|
1119
1045
|
),
|
|
1120
|
-
/* @__PURE__ */ (0,
|
|
1121
|
-
onViewDetails && /* @__PURE__ */ (0,
|
|
1122
|
-
onChangePriority && /* @__PURE__ */ (0,
|
|
1123
|
-
onPutOnHold && /* @__PURE__ */ (0,
|
|
1124
|
-
onDelete && /* @__PURE__ */ (0,
|
|
1125
|
-
/* @__PURE__ */ (0,
|
|
1126
|
-
/* @__PURE__ */ (0,
|
|
1046
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
1047
|
+
onViewDetails && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuItem, { onClick: onViewDetails, children: "View details" }),
|
|
1048
|
+
onChangePriority && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuItem, { onClick: onChangePriority, children: "Change priority" }),
|
|
1049
|
+
onPutOnHold && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuItem, { onClick: onPutOnHold, children: "Put on hold" }),
|
|
1050
|
+
onDelete && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
|
|
1051
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuSeparator, {}),
|
|
1052
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuItem, { onClick: onDelete, variant: "destructive", children: "Delete" })
|
|
1127
1053
|
] })
|
|
1128
1054
|
] })
|
|
1129
1055
|
] }) })
|
|
1130
1056
|
] }),
|
|
1131
|
-
allDone && onMoveToNextStage && /* @__PURE__ */ (0,
|
|
1132
|
-
/* @__PURE__ */ (0,
|
|
1133
|
-
/* @__PURE__ */ (0,
|
|
1057
|
+
allDone && onMoveToNextStage && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { onClick: stopProp, children: [
|
|
1058
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Separator, {}),
|
|
1059
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1134
1060
|
Button,
|
|
1135
1061
|
{
|
|
1136
1062
|
variant: "outline",
|
|
@@ -1142,9 +1068,9 @@ function TaskViewCard({
|
|
|
1142
1068
|
}
|
|
1143
1069
|
) })
|
|
1144
1070
|
] }),
|
|
1145
|
-
!allDone && nextTask && onMarkAsDone && /* @__PURE__ */ (0,
|
|
1146
|
-
/* @__PURE__ */ (0,
|
|
1147
|
-
/* @__PURE__ */ (0,
|
|
1071
|
+
!allDone && nextTask && onMarkAsDone && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { onClick: stopProp, children: [
|
|
1072
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Separator, {}),
|
|
1073
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1148
1074
|
Button,
|
|
1149
1075
|
{
|
|
1150
1076
|
variant: "default",
|
|
@@ -1183,7 +1109,6 @@ function OpportunityCard({
|
|
|
1183
1109
|
onTaskToggle,
|
|
1184
1110
|
onMarkAsDone,
|
|
1185
1111
|
onMoveToNextStage,
|
|
1186
|
-
onLaunchAssistant,
|
|
1187
1112
|
onChangePriority,
|
|
1188
1113
|
onDelete,
|
|
1189
1114
|
onPutOnHold,
|
|
@@ -1194,7 +1119,7 @@ function OpportunityCard({
|
|
|
1194
1119
|
viewMode = "deal"
|
|
1195
1120
|
}) {
|
|
1196
1121
|
if (viewMode === "task") {
|
|
1197
|
-
return /* @__PURE__ */ (0,
|
|
1122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1198
1123
|
TaskViewCard,
|
|
1199
1124
|
{
|
|
1200
1125
|
customerName,
|
|
@@ -1241,7 +1166,7 @@ function OpportunityCard({
|
|
|
1241
1166
|
const stopProp = (e) => {
|
|
1242
1167
|
e.stopPropagation();
|
|
1243
1168
|
};
|
|
1244
|
-
return /* @__PURE__ */ (0,
|
|
1169
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
1245
1170
|
"div",
|
|
1246
1171
|
{
|
|
1247
1172
|
className: cn(
|
|
@@ -1256,19 +1181,19 @@ function OpportunityCard({
|
|
|
1256
1181
|
onDragStart,
|
|
1257
1182
|
onClick: onCardClick,
|
|
1258
1183
|
children: [
|
|
1259
|
-
onHoldTo && /* @__PURE__ */ (0,
|
|
1184
|
+
onHoldTo && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
1260
1185
|
"div",
|
|
1261
1186
|
{
|
|
1262
1187
|
className: "flex items-center gap-1.5 rounded border border-warning/30 bg-warning/10 px-2 py-1 text-xs font-medium",
|
|
1263
1188
|
style: { color: "var(--color-warning-text)" },
|
|
1264
1189
|
children: [
|
|
1265
|
-
/* @__PURE__ */ (0,
|
|
1190
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Clock, { className: "size-3 shrink-0" }),
|
|
1266
1191
|
"On hold until ",
|
|
1267
1192
|
formatDateDayMonth(onHoldTo)
|
|
1268
1193
|
]
|
|
1269
1194
|
}
|
|
1270
1195
|
),
|
|
1271
|
-
isModifyCompletedLoan && /* @__PURE__ */ (0,
|
|
1196
|
+
isModifyCompletedLoan && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1272
1197
|
"div",
|
|
1273
1198
|
{
|
|
1274
1199
|
className: "flex items-center gap-1.5 rounded border border-info/30 bg-info/10 px-2 py-1 text-xs font-medium",
|
|
@@ -1276,81 +1201,64 @@ function OpportunityCard({
|
|
|
1276
1201
|
children: "Modify completed loan"
|
|
1277
1202
|
}
|
|
1278
1203
|
),
|
|
1279
|
-
/* @__PURE__ */ (0,
|
|
1280
|
-
/* @__PURE__ */ (0,
|
|
1281
|
-
(loanPurposeLabel || loanType) && /* @__PURE__ */ (0,
|
|
1282
|
-
/* @__PURE__ */ (0,
|
|
1204
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
|
|
1205
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
1206
|
+
(loanPurposeLabel || loanType) && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Badge, { variant: "outline", className: "self-start", children: loanPurposeLabel != null ? loanPurposeLabel : formatLoanType(loanType) }),
|
|
1207
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-base font-bold tabular-nums text-foreground", children: formatCurrency(amount) })
|
|
1283
1208
|
] }),
|
|
1284
|
-
/* @__PURE__ */ (0,
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
) }),
|
|
1298
|
-
/* @__PURE__ */ (0,
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
{
|
|
1304
|
-
className: cn(
|
|
1305
|
-
buttonVariants({ variant: "ghost", size: "icon" }),
|
|
1306
|
-
"size-7 shrink-0"
|
|
1307
|
-
),
|
|
1308
|
-
"aria-label": "Opportunity actions",
|
|
1309
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react6.MoreVertical, { className: "size-4" })
|
|
1310
|
-
}
|
|
1311
|
-
),
|
|
1312
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
1313
|
-
onViewDetails && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuItem, { onClick: onViewDetails, children: "View details" }),
|
|
1314
|
-
onChangePriority && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuItem, { onClick: onChangePriority, children: "Change priority" }),
|
|
1315
|
-
onPutOnHold && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuItem, { onClick: onPutOnHold, children: "Put on hold" }),
|
|
1316
|
-
onDelete && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
1317
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuSeparator, {}),
|
|
1318
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuItem, { onClick: onDelete, variant: "destructive", children: "Delete" })
|
|
1319
|
-
] })
|
|
1209
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex items-center gap-1 -mr-1 -mt-1", onClick: stopProp, children: hasMenu && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(DropdownMenu, { children: [
|
|
1210
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1211
|
+
DropdownMenuTrigger,
|
|
1212
|
+
{
|
|
1213
|
+
className: cn(
|
|
1214
|
+
buttonVariants({ variant: "ghost", size: "icon" }),
|
|
1215
|
+
"size-7 shrink-0"
|
|
1216
|
+
),
|
|
1217
|
+
"aria-label": "Opportunity actions",
|
|
1218
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.MoreVertical, { className: "size-4" })
|
|
1219
|
+
}
|
|
1220
|
+
),
|
|
1221
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
1222
|
+
onViewDetails && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuItem, { onClick: onViewDetails, children: "View details" }),
|
|
1223
|
+
onChangePriority && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuItem, { onClick: onChangePriority, children: "Change priority" }),
|
|
1224
|
+
onPutOnHold && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuItem, { onClick: onPutOnHold, children: "Put on hold" }),
|
|
1225
|
+
onDelete && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
|
|
1226
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuSeparator, {}),
|
|
1227
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuItem, { onClick: onDelete, variant: "destructive", children: "Delete" })
|
|
1320
1228
|
] })
|
|
1321
1229
|
] })
|
|
1322
|
-
] })
|
|
1230
|
+
] }) })
|
|
1323
1231
|
] }),
|
|
1324
|
-
/* @__PURE__ */ (0,
|
|
1325
|
-
/* @__PURE__ */ (0,
|
|
1326
|
-
/* @__PURE__ */ (0,
|
|
1327
|
-
/* @__PURE__ */ (0,
|
|
1328
|
-
additionalContacts && additionalContacts > 0 ? /* @__PURE__ */ (0,
|
|
1329
|
-
/* @__PURE__ */ (0,
|
|
1232
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Separator, {}),
|
|
1233
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
1234
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
1235
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "truncate text-sm font-semibold text-foreground", children: customerName }),
|
|
1236
|
+
additionalContacts && additionalContacts > 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Badge, { variant: "secondary", className: "shrink-0 gap-1", children: [
|
|
1237
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Users, { className: "size-3", "aria-hidden": "true" }),
|
|
1330
1238
|
"Joint"
|
|
1331
|
-
] }) : /* @__PURE__ */ (0,
|
|
1332
|
-
/* @__PURE__ */ (0,
|
|
1239
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Badge, { variant: "secondary", className: "shrink-0 gap-1", children: [
|
|
1240
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.User, { className: "size-3", "aria-hidden": "true" }),
|
|
1333
1241
|
"Individual"
|
|
1334
1242
|
] })
|
|
1335
1243
|
] }),
|
|
1336
|
-
customerPhone && /* @__PURE__ */ (0,
|
|
1337
|
-
/* @__PURE__ */ (0,
|
|
1244
|
+
customerPhone && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
|
|
1245
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
1338
1246
|
customerPhone
|
|
1339
1247
|
] }),
|
|
1340
|
-
customerEmail && /* @__PURE__ */ (0,
|
|
1341
|
-
/* @__PURE__ */ (0,
|
|
1342
|
-
/* @__PURE__ */ (0,
|
|
1248
|
+
customerEmail && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
|
|
1249
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
1250
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "truncate", children: customerEmail })
|
|
1343
1251
|
] })
|
|
1344
1252
|
] }),
|
|
1345
|
-
/* @__PURE__ */ (0,
|
|
1346
|
-
/* @__PURE__ */ (0,
|
|
1347
|
-
/* @__PURE__ */ (0,
|
|
1348
|
-
/* @__PURE__ */ (0,
|
|
1253
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Separator, {}),
|
|
1254
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
1255
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
|
|
1256
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Calendar, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
1349
1257
|
formatDateShort(date)
|
|
1350
1258
|
] }),
|
|
1351
|
-
/* @__PURE__ */ (0,
|
|
1352
|
-
daysSinceColumnChanged !== void 0 && /* @__PURE__ */ (0,
|
|
1353
|
-
/* @__PURE__ */ (0,
|
|
1259
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5", children: [
|
|
1260
|
+
daysSinceColumnChanged !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
|
|
1261
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1354
1262
|
import_lucide_react6.Clock,
|
|
1355
1263
|
{
|
|
1356
1264
|
className: "size-3 shrink-0",
|
|
@@ -1358,7 +1266,7 @@ function OpportunityCard({
|
|
|
1358
1266
|
"aria-hidden": "true"
|
|
1359
1267
|
}
|
|
1360
1268
|
),
|
|
1361
|
-
/* @__PURE__ */ (0,
|
|
1269
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
1362
1270
|
"span",
|
|
1363
1271
|
{
|
|
1364
1272
|
className: "text-xs font-medium tabular-nums",
|
|
@@ -1370,7 +1278,7 @@ function OpportunityCard({
|
|
|
1370
1278
|
}
|
|
1371
1279
|
)
|
|
1372
1280
|
] }),
|
|
1373
|
-
/* @__PURE__ */ (0,
|
|
1281
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1374
1282
|
"span",
|
|
1375
1283
|
{
|
|
1376
1284
|
role: "img",
|
|
@@ -1382,8 +1290,8 @@ function OpportunityCard({
|
|
|
1382
1290
|
] })
|
|
1383
1291
|
] }),
|
|
1384
1292
|
hasTasks && // stopPropagation: accordion expand/collapse + task checkboxes must not bubble to onCardClick
|
|
1385
|
-
/* @__PURE__ */ (0,
|
|
1386
|
-
/* @__PURE__ */ (0,
|
|
1293
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { onClick: stopProp, children: [
|
|
1294
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1387
1295
|
"div",
|
|
1388
1296
|
{
|
|
1389
1297
|
className: "flex gap-0.5",
|
|
@@ -1392,7 +1300,7 @@ function OpportunityCard({
|
|
|
1392
1300
|
"aria-valuemin": 0,
|
|
1393
1301
|
"aria-valuemax": tasks.length,
|
|
1394
1302
|
"aria-label": `${completedCount} of ${tasks.length} tasks complete`,
|
|
1395
|
-
children: tasks.map((t, i) => /* @__PURE__ */ (0,
|
|
1303
|
+
children: tasks.map((t, i) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1396
1304
|
"div",
|
|
1397
1305
|
{
|
|
1398
1306
|
className: cn(
|
|
@@ -1404,43 +1312,42 @@ function OpportunityCard({
|
|
|
1404
1312
|
))
|
|
1405
1313
|
}
|
|
1406
1314
|
),
|
|
1407
|
-
/* @__PURE__ */ (0,
|
|
1408
|
-
/* @__PURE__ */ (0,
|
|
1315
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Accordion, { type: "single", collapsible: true, className: "-mx-4", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(AccordionItem, { value: "tasks", className: "border-0", children: [
|
|
1316
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(AccordionTrigger, { className: "px-4 py-1.5 text-xs font-normal text-muted-foreground hover:no-underline hover:text-foreground [&>svg]:size-3.5", children: [
|
|
1409
1317
|
"Tasks (",
|
|
1410
1318
|
completedCount,
|
|
1411
1319
|
"/",
|
|
1412
1320
|
tasks.length,
|
|
1413
1321
|
")"
|
|
1414
1322
|
] }),
|
|
1415
|
-
/* @__PURE__ */ (0,
|
|
1323
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(AccordionContent, { className: "px-4", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex flex-col", children: tasks.map((task) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1416
1324
|
TaskCheckItem,
|
|
1417
1325
|
{
|
|
1418
1326
|
title: task.title,
|
|
1419
1327
|
completed: task.completed,
|
|
1420
|
-
aiAgentName: task.aiAgentName,
|
|
1421
1328
|
onToggle: onTaskToggle ? () => onTaskToggle(task.id) : void 0,
|
|
1422
1329
|
disabled: isSubmitting
|
|
1423
1330
|
},
|
|
1424
1331
|
task.id
|
|
1425
1332
|
)) }) })
|
|
1426
1333
|
] }) }),
|
|
1427
|
-
nextTask && /* @__PURE__ */ (0,
|
|
1428
|
-
/* @__PURE__ */ (0,
|
|
1334
|
+
nextTask && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-start gap-1.5 border border-primary/30 bg-primary/5 px-2 py-1.5 text-xs", children: [
|
|
1335
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1429
1336
|
import_lucide_react6.ArrowRight,
|
|
1430
1337
|
{
|
|
1431
1338
|
className: "mt-0.5 size-3 shrink-0 text-primary",
|
|
1432
1339
|
"aria-hidden": "true"
|
|
1433
1340
|
}
|
|
1434
1341
|
),
|
|
1435
|
-
/* @__PURE__ */ (0,
|
|
1436
|
-
/* @__PURE__ */ (0,
|
|
1342
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "font-medium", children: "Next:" }),
|
|
1343
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-muted-foreground", children: nextTask })
|
|
1437
1344
|
] })
|
|
1438
1345
|
] }),
|
|
1439
1346
|
hasActions && // stopPropagation: button clicks must not bubble to onCardClick
|
|
1440
|
-
/* @__PURE__ */ (0,
|
|
1441
|
-
/* @__PURE__ */ (0,
|
|
1442
|
-
(onMoveToNextStage || onMarkAsDone) && /* @__PURE__ */ (0,
|
|
1443
|
-
onMoveToNextStage && /* @__PURE__ */ (0,
|
|
1347
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { onClick: stopProp, children: [
|
|
1348
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Separator, {}),
|
|
1349
|
+
(onMoveToNextStage || onMarkAsDone) && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex gap-2 pt-2", children: [
|
|
1350
|
+
onMoveToNextStage && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1444
1351
|
Button,
|
|
1445
1352
|
{
|
|
1446
1353
|
variant: "outline",
|
|
@@ -1451,7 +1358,7 @@ function OpportunityCard({
|
|
|
1451
1358
|
children: "Move to next stage"
|
|
1452
1359
|
}
|
|
1453
1360
|
),
|
|
1454
|
-
onMarkAsDone && /* @__PURE__ */ (0,
|
|
1361
|
+
onMarkAsDone && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1455
1362
|
Button,
|
|
1456
1363
|
{
|
|
1457
1364
|
variant: "default",
|
|
@@ -1478,7 +1385,7 @@ function LeadCard({
|
|
|
1478
1385
|
isSubmitting = false,
|
|
1479
1386
|
className
|
|
1480
1387
|
}) {
|
|
1481
|
-
return /* @__PURE__ */ (0,
|
|
1388
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
1482
1389
|
"div",
|
|
1483
1390
|
{
|
|
1484
1391
|
className: cn(
|
|
@@ -1488,20 +1395,20 @@ function LeadCard({
|
|
|
1488
1395
|
),
|
|
1489
1396
|
"data-slot": "lead-card",
|
|
1490
1397
|
children: [
|
|
1491
|
-
/* @__PURE__ */ (0,
|
|
1492
|
-
/* @__PURE__ */ (0,
|
|
1493
|
-
/* @__PURE__ */ (0,
|
|
1494
|
-
customerPhone && /* @__PURE__ */ (0,
|
|
1495
|
-
/* @__PURE__ */ (0,
|
|
1398
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
|
|
1399
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
1400
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-sm font-semibold text-foreground", children: customerName }),
|
|
1401
|
+
customerPhone && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
|
|
1402
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Phone, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
1496
1403
|
customerPhone
|
|
1497
1404
|
] }),
|
|
1498
|
-
customerEmail && /* @__PURE__ */ (0,
|
|
1499
|
-
/* @__PURE__ */ (0,
|
|
1500
|
-
/* @__PURE__ */ (0,
|
|
1405
|
+
customerEmail && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
|
|
1406
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Mail, { className: "size-3 shrink-0", "aria-hidden": "true" }),
|
|
1407
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "truncate", children: customerEmail })
|
|
1501
1408
|
] })
|
|
1502
1409
|
] }),
|
|
1503
|
-
onDelete && /* @__PURE__ */ (0,
|
|
1504
|
-
/* @__PURE__ */ (0,
|
|
1410
|
+
onDelete && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(DropdownMenu, { children: [
|
|
1411
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1505
1412
|
DropdownMenuTrigger,
|
|
1506
1413
|
{
|
|
1507
1414
|
className: cn(
|
|
@@ -1509,10 +1416,10 @@ function LeadCard({
|
|
|
1509
1416
|
"-mr-1 -mt-1 size-7 shrink-0"
|
|
1510
1417
|
),
|
|
1511
1418
|
"aria-label": "Lead actions",
|
|
1512
|
-
children: /* @__PURE__ */ (0,
|
|
1419
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.MoreVertical, { className: "size-4" })
|
|
1513
1420
|
}
|
|
1514
1421
|
),
|
|
1515
|
-
/* @__PURE__ */ (0,
|
|
1422
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropdownMenuContent, { align: "end", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1516
1423
|
DropdownMenuItem,
|
|
1517
1424
|
{
|
|
1518
1425
|
onClick: onDelete,
|
|
@@ -1522,9 +1429,9 @@ function LeadCard({
|
|
|
1522
1429
|
) })
|
|
1523
1430
|
] })
|
|
1524
1431
|
] }),
|
|
1525
|
-
/* @__PURE__ */ (0,
|
|
1526
|
-
onSendLoanApplication && /* @__PURE__ */ (0,
|
|
1527
|
-
/* @__PURE__ */ (0,
|
|
1432
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Separator, {}),
|
|
1433
|
+
onSendLoanApplication && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
1434
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1528
1435
|
Button,
|
|
1529
1436
|
{
|
|
1530
1437
|
variant: "outline",
|
|
@@ -1535,13 +1442,16 @@ function LeadCard({
|
|
|
1535
1442
|
children: "Send Loan Application Request"
|
|
1536
1443
|
}
|
|
1537
1444
|
),
|
|
1538
|
-
loanApplicationUrl && /* @__PURE__ */ (0,
|
|
1445
|
+
loanApplicationUrl && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
|
|
1539
1446
|
"Or the link below to fill out the loan application directly.",
|
|
1540
|
-
/* @__PURE__ */ (0,
|
|
1541
|
-
/* @__PURE__ */ (0,
|
|
1447
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("br", {}),
|
|
1448
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1542
1449
|
"a",
|
|
1543
1450
|
{
|
|
1544
|
-
href: `https://${loanApplicationUrl.replace(
|
|
1451
|
+
href: `https://${loanApplicationUrl.replace(
|
|
1452
|
+
/^https?:\/\//,
|
|
1453
|
+
""
|
|
1454
|
+
)}`,
|
|
1545
1455
|
target: "_blank",
|
|
1546
1456
|
rel: "noreferrer",
|
|
1547
1457
|
className: "text-primary underline-offset-2 hover:underline",
|
|
@@ -1556,7 +1466,7 @@ function LeadCard({
|
|
|
1556
1466
|
}
|
|
1557
1467
|
|
|
1558
1468
|
// src/components/ui/kanban-column.tsx
|
|
1559
|
-
var
|
|
1469
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1560
1470
|
function formatTotalValue(value) {
|
|
1561
1471
|
return formatCurrency(value);
|
|
1562
1472
|
}
|
|
@@ -1582,7 +1492,6 @@ function KanbanColumn({
|
|
|
1582
1492
|
onCardClick,
|
|
1583
1493
|
onViewDetails,
|
|
1584
1494
|
onChangePriority,
|
|
1585
|
-
onLaunchAssistant,
|
|
1586
1495
|
onPutOnHold,
|
|
1587
1496
|
onDeleteOpportunity,
|
|
1588
1497
|
onCardDrop,
|
|
@@ -1612,7 +1521,7 @@ function KanbanColumn({
|
|
|
1612
1521
|
const cardId = e.dataTransfer.getData("text/plain");
|
|
1613
1522
|
if (cardId) onCardDrop(cardId);
|
|
1614
1523
|
}
|
|
1615
|
-
return /* @__PURE__ */ (0,
|
|
1524
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
1616
1525
|
"div",
|
|
1617
1526
|
{
|
|
1618
1527
|
className: cn(
|
|
@@ -1626,15 +1535,15 @@ function KanbanColumn({
|
|
|
1626
1535
|
}),
|
|
1627
1536
|
"data-slot": "kanban-column",
|
|
1628
1537
|
children: [
|
|
1629
|
-
/* @__PURE__ */ (0,
|
|
1630
|
-
/* @__PURE__ */ (0,
|
|
1631
|
-
/* @__PURE__ */ (0,
|
|
1632
|
-
/* @__PURE__ */ (0,
|
|
1538
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex flex-col gap-2 border-b border-border bg-background px-3 py-3", children: [
|
|
1539
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
1540
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("h2", { className: "text-sm font-semibold text-foreground", children: [
|
|
1541
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-muted-foreground", children: stage.count }),
|
|
1633
1542
|
" ",
|
|
1634
1543
|
stage.name
|
|
1635
1544
|
] }),
|
|
1636
|
-
hasMenu && /* @__PURE__ */ (0,
|
|
1637
|
-
/* @__PURE__ */ (0,
|
|
1545
|
+
hasMenu && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(DropdownMenu, { children: [
|
|
1546
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1638
1547
|
DropdownMenuTrigger,
|
|
1639
1548
|
{
|
|
1640
1549
|
className: cn(
|
|
@@ -1642,14 +1551,14 @@ function KanbanColumn({
|
|
|
1642
1551
|
"-mr-1 size-7 shrink-0"
|
|
1643
1552
|
),
|
|
1644
1553
|
"aria-label": "Column actions",
|
|
1645
|
-
children: /* @__PURE__ */ (0,
|
|
1554
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react7.MoreVertical, { className: "size-4" })
|
|
1646
1555
|
}
|
|
1647
1556
|
),
|
|
1648
|
-
/* @__PURE__ */ (0,
|
|
1649
|
-
onEditColumn && /* @__PURE__ */ (0,
|
|
1650
|
-
!isDefault && onDeleteColumn && /* @__PURE__ */ (0,
|
|
1651
|
-
onEditColumn && /* @__PURE__ */ (0,
|
|
1652
|
-
/* @__PURE__ */ (0,
|
|
1557
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
1558
|
+
onEditColumn && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuItem, { onClick: onEditColumn, children: "Edit column settings" }),
|
|
1559
|
+
!isDefault && onDeleteColumn && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
1560
|
+
onEditColumn && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuSeparator, {}),
|
|
1561
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1653
1562
|
DropdownMenuItem,
|
|
1654
1563
|
{
|
|
1655
1564
|
onClick: onDeleteColumn,
|
|
@@ -1661,8 +1570,8 @@ function KanbanColumn({
|
|
|
1661
1570
|
] })
|
|
1662
1571
|
] })
|
|
1663
1572
|
] }),
|
|
1664
|
-
/* @__PURE__ */ (0,
|
|
1665
|
-
stage.growth != null ? /* @__PURE__ */ (0,
|
|
1573
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
1574
|
+
stage.growth != null ? /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
1666
1575
|
Badge,
|
|
1667
1576
|
{
|
|
1668
1577
|
variant: "outline",
|
|
@@ -1672,11 +1581,11 @@ function KanbanColumn({
|
|
|
1672
1581
|
stage.growth
|
|
1673
1582
|
]
|
|
1674
1583
|
}
|
|
1675
|
-
) : /* @__PURE__ */ (0,
|
|
1676
|
-
/* @__PURE__ */ (0,
|
|
1584
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", {}),
|
|
1585
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-xs font-medium tabular-nums text-muted-foreground", children: formatTotalValue(stage.totalValue) })
|
|
1677
1586
|
] })
|
|
1678
1587
|
] }),
|
|
1679
|
-
/* @__PURE__ */ (0,
|
|
1588
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
1680
1589
|
"div",
|
|
1681
1590
|
{
|
|
1682
1591
|
className: cn(
|
|
@@ -1687,13 +1596,13 @@ function KanbanColumn({
|
|
|
1687
1596
|
onDragLeave: handleDragLeave,
|
|
1688
1597
|
onDrop: handleDrop,
|
|
1689
1598
|
children: [
|
|
1690
|
-
(isDropTarget || isDragOver) && /* @__PURE__ */ (0,
|
|
1599
|
+
(isDropTarget || isDragOver) && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "border border-dashed border-primary/40 bg-primary/5 px-3 py-2 text-center text-xs text-primary", children: [
|
|
1691
1600
|
"Drop here \u2192 ",
|
|
1692
1601
|
stage.name
|
|
1693
1602
|
] }),
|
|
1694
|
-
isLoading ? /* @__PURE__ */ (0,
|
|
1603
|
+
isLoading ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "flex flex-1 items-center justify-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Spinner, { className: "size-5 text-muted-foreground" }) }) : opportunities.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "flex flex-1 items-center justify-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "text-xs text-muted-foreground", children: "No opportunities in this stage" }) }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
1695
1604
|
opportunities.map(
|
|
1696
|
-
(opp) => onSendLoanApplication ? /* @__PURE__ */ (0,
|
|
1605
|
+
(opp) => onSendLoanApplication ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1697
1606
|
LeadCard,
|
|
1698
1607
|
{
|
|
1699
1608
|
id: opp.id,
|
|
@@ -1706,7 +1615,7 @@ function KanbanColumn({
|
|
|
1706
1615
|
isSubmitting: submittingOpportunityId === opp.id
|
|
1707
1616
|
},
|
|
1708
1617
|
opp.id
|
|
1709
|
-
) : /* @__PURE__ */ (0,
|
|
1618
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1710
1619
|
OpportunityCard,
|
|
1711
1620
|
__spreadProps(__spreadValues({}, opp), {
|
|
1712
1621
|
draggable: !!onCardDrop,
|
|
@@ -1720,7 +1629,6 @@ function KanbanColumn({
|
|
|
1720
1629
|
onMoveToNextStage: onMoveToNextStage ? () => onMoveToNextStage(opp.id) : void 0,
|
|
1721
1630
|
onViewDetails: onViewDetails ? () => onViewDetails(opp.id) : void 0,
|
|
1722
1631
|
onChangePriority: onChangePriority ? () => onChangePriority(opp.id) : void 0,
|
|
1723
|
-
onLaunchAssistant: onLaunchAssistant ? () => onLaunchAssistant(opp.id) : void 0,
|
|
1724
1632
|
onPutOnHold: onPutOnHold ? () => onPutOnHold(opp.id) : void 0,
|
|
1725
1633
|
onDelete: onDeleteOpportunity ? () => onDeleteOpportunity(opp.id) : void 0,
|
|
1726
1634
|
isSubmitting: submittingOpportunityId === opp.id
|
|
@@ -1728,12 +1636,12 @@ function KanbanColumn({
|
|
|
1728
1636
|
opp.id
|
|
1729
1637
|
)
|
|
1730
1638
|
),
|
|
1731
|
-
hasMore && /* @__PURE__ */ (0,
|
|
1639
|
+
hasMore && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1732
1640
|
"div",
|
|
1733
1641
|
{
|
|
1734
1642
|
ref: loaderRef,
|
|
1735
1643
|
className: "flex min-h-[50px] items-center justify-center",
|
|
1736
|
-
children: isLoadingMore && /* @__PURE__ */ (0,
|
|
1644
|
+
children: isLoadingMore && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Spinner, { className: "size-5 text-muted-foreground" })
|
|
1737
1645
|
}
|
|
1738
1646
|
)
|
|
1739
1647
|
] })
|
|
@@ -1746,7 +1654,7 @@ function KanbanColumn({
|
|
|
1746
1654
|
}
|
|
1747
1655
|
|
|
1748
1656
|
// src/components/ui/pipeline-board.tsx
|
|
1749
|
-
var
|
|
1657
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1750
1658
|
function Toolbar({
|
|
1751
1659
|
searchValue,
|
|
1752
1660
|
onSearchChange,
|
|
@@ -1755,10 +1663,10 @@ function Toolbar({
|
|
|
1755
1663
|
onFilterChange,
|
|
1756
1664
|
onRefresh
|
|
1757
1665
|
}) {
|
|
1758
|
-
return /* @__PURE__ */ (0,
|
|
1759
|
-
/* @__PURE__ */ (0,
|
|
1760
|
-
/* @__PURE__ */ (0,
|
|
1761
|
-
/* @__PURE__ */ (0,
|
|
1666
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex flex-wrap items-center gap-3 border-b border-border bg-background px-4 py-3", children: [
|
|
1667
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "relative w-56 shrink-0", children: [
|
|
1668
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react8.Search, { className: "absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" }),
|
|
1669
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1762
1670
|
Input,
|
|
1763
1671
|
{
|
|
1764
1672
|
placeholder: "Search opportunities\u2026",
|
|
@@ -1767,7 +1675,7 @@ function Toolbar({
|
|
|
1767
1675
|
className: "h-8 pl-8 text-sm"
|
|
1768
1676
|
}
|
|
1769
1677
|
),
|
|
1770
|
-
searchValue && /* @__PURE__ */ (0,
|
|
1678
|
+
searchValue && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1771
1679
|
Button,
|
|
1772
1680
|
{
|
|
1773
1681
|
type: "button",
|
|
@@ -1776,11 +1684,11 @@ function Toolbar({
|
|
|
1776
1684
|
onClick: () => onSearchChange(""),
|
|
1777
1685
|
className: "absolute right-2 top-1/2 size-6 -translate-y-1/2 text-muted-foreground hover:text-foreground",
|
|
1778
1686
|
"aria-label": "Clear search",
|
|
1779
|
-
children: /* @__PURE__ */ (0,
|
|
1687
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react8.X, { className: "size-3.5" })
|
|
1780
1688
|
}
|
|
1781
1689
|
)
|
|
1782
1690
|
] }),
|
|
1783
|
-
filterOptions.length > 0 && /* @__PURE__ */ (0,
|
|
1691
|
+
filterOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1784
1692
|
ToggleGroup,
|
|
1785
1693
|
{
|
|
1786
1694
|
type: "multiple",
|
|
@@ -1793,10 +1701,10 @@ function Toolbar({
|
|
|
1793
1701
|
const toggled = (_a = newValues.find((v) => !activeFilters.includes(v))) != null ? _a : activeFilters.find((v) => !newValues.includes(v));
|
|
1794
1702
|
if (toggled) onFilterChange(toggled);
|
|
1795
1703
|
},
|
|
1796
|
-
children: filterOptions.map((option) => /* @__PURE__ */ (0,
|
|
1704
|
+
children: filterOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ToggleGroupItem, { value: option, children: option }, option))
|
|
1797
1705
|
}
|
|
1798
1706
|
),
|
|
1799
|
-
onRefresh && /* @__PURE__ */ (0,
|
|
1707
|
+
onRefresh && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1800
1708
|
Button,
|
|
1801
1709
|
{
|
|
1802
1710
|
type: "button",
|
|
@@ -1805,7 +1713,7 @@ function Toolbar({
|
|
|
1805
1713
|
onClick: onRefresh,
|
|
1806
1714
|
className: "ml-auto text-muted-foreground hover:text-foreground",
|
|
1807
1715
|
"aria-label": "Refresh board",
|
|
1808
|
-
children: /* @__PURE__ */ (0,
|
|
1716
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react8.RefreshCw, { className: "size-4" })
|
|
1809
1717
|
}
|
|
1810
1718
|
)
|
|
1811
1719
|
] });
|
|
@@ -1827,20 +1735,19 @@ function PipelineBoard({
|
|
|
1827
1735
|
onMoveToNextStage,
|
|
1828
1736
|
onViewDetails,
|
|
1829
1737
|
onChangePriority,
|
|
1830
|
-
onLaunchAssistant,
|
|
1831
1738
|
onPutOnHold,
|
|
1832
1739
|
onDeleteOpportunity,
|
|
1833
1740
|
submittingOpportunityId,
|
|
1834
1741
|
className
|
|
1835
1742
|
}) {
|
|
1836
1743
|
const hasToolbar = onSearchChange || filterOptions.length > 0 && onFilterChange;
|
|
1837
|
-
return /* @__PURE__ */ (0,
|
|
1744
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1838
1745
|
"div",
|
|
1839
1746
|
{
|
|
1840
1747
|
className: cn("flex h-full flex-col bg-muted/20", className),
|
|
1841
1748
|
"data-slot": "pipeline-board",
|
|
1842
1749
|
children: [
|
|
1843
|
-
hasToolbar && /* @__PURE__ */ (0,
|
|
1750
|
+
hasToolbar && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1844
1751
|
Toolbar,
|
|
1845
1752
|
{
|
|
1846
1753
|
searchValue,
|
|
@@ -1853,8 +1760,8 @@ function PipelineBoard({
|
|
|
1853
1760
|
onRefresh
|
|
1854
1761
|
}
|
|
1855
1762
|
),
|
|
1856
|
-
/* @__PURE__ */ (0,
|
|
1857
|
-
columns.map((col) => /* @__PURE__ */ (0,
|
|
1763
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex flex-1 gap-3 overflow-x-auto p-4", children: [
|
|
1764
|
+
columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1858
1765
|
KanbanColumn,
|
|
1859
1766
|
{
|
|
1860
1767
|
stage: col.stage,
|
|
@@ -1876,14 +1783,13 @@ function PipelineBoard({
|
|
|
1876
1783
|
onSendLoanApplication: col.onSendLoanApplication,
|
|
1877
1784
|
onViewDetails,
|
|
1878
1785
|
onChangePriority,
|
|
1879
|
-
onLaunchAssistant,
|
|
1880
1786
|
onPutOnHold,
|
|
1881
1787
|
onDeleteOpportunity,
|
|
1882
1788
|
submittingOpportunityId
|
|
1883
1789
|
},
|
|
1884
1790
|
col.key
|
|
1885
1791
|
)),
|
|
1886
|
-
columns.length === 0 && /* @__PURE__ */ (0,
|
|
1792
|
+
columns.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-sm text-muted-foreground", children: "No columns to display." }) })
|
|
1887
1793
|
] })
|
|
1888
1794
|
]
|
|
1889
1795
|
}
|