@wealthx/shadcn 1.5.19 → 1.5.20
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 +148 -148
- package/CHANGELOG.md +6 -0
- package/dist/{chunk-PUGQVHQL.mjs → chunk-2SDEURIQ.mjs} +2 -2
- package/dist/{chunk-STDCXTUU.mjs → chunk-3S4XQTAL.mjs} +2 -2
- package/dist/{chunk-ANERULZS.mjs → chunk-4UCRTTVL.mjs} +1 -1
- package/dist/{chunk-6LWCFAB4.mjs → chunk-57QES5LX.mjs} +1 -1
- package/dist/{chunk-KICT4VQL.mjs → chunk-5G2M45CA.mjs} +1 -1
- package/dist/{chunk-K3XP5ETH.mjs → chunk-66NM4AX2.mjs} +2 -2
- package/dist/{chunk-LWYMZHN7.mjs → chunk-6HTE24TP.mjs} +3 -3
- package/dist/{chunk-SSUK6C2K.mjs → chunk-6WRDXE7A.mjs} +1 -1
- package/dist/{chunk-RPOIXMHW.mjs → chunk-AADJ5IT6.mjs} +1 -1
- package/dist/{chunk-DKH35J4U.mjs → chunk-BWG7AX6X.mjs} +2 -2
- package/dist/{chunk-UBHBIWIA.mjs → chunk-DK55HZPN.mjs} +2 -2
- package/dist/{chunk-2UA4CPE5.mjs → chunk-DWJHPNFL.mjs} +1 -1
- package/dist/{chunk-WZFBLRNP.mjs → chunk-ETT5JAXF.mjs} +2 -2
- package/dist/{chunk-GDBM2GL5.mjs → chunk-F3MIRXRF.mjs} +1 -1
- package/dist/{chunk-G7YCLJ53.mjs → chunk-G6RCC2SF.mjs} +2 -2
- package/dist/{chunk-TUC2BNUR.mjs → chunk-IG7JBQZO.mjs} +2 -2
- package/dist/{chunk-GAXNO4JB.mjs → chunk-INGYBZGU.mjs} +1 -1
- package/dist/{chunk-UXWNUMQA.mjs → chunk-IT3QJF3D.mjs} +1 -1
- package/dist/{chunk-45V7X563.mjs → chunk-JGUC3KCA.mjs} +2 -2
- package/dist/{chunk-C4ESZLGT.mjs → chunk-K4GJTP6N.mjs} +1 -1
- package/dist/{chunk-USOVLDGS.mjs → chunk-K6VCC2MK.mjs} +13 -1
- package/dist/{chunk-5BU7TNB4.mjs → chunk-NEMWMXGL.mjs} +2 -2
- package/dist/{chunk-B3CTBLIY.mjs → chunk-NTIFG5A7.mjs} +2 -2
- package/dist/{chunk-33VT74R4.mjs → chunk-OFQFD2E2.mjs} +1 -1
- package/dist/{chunk-LI2CTS5O.mjs → chunk-OIETBBXQ.mjs} +4 -2
- package/dist/{chunk-XNX3XJ2F.mjs → chunk-QJ3RSZF4.mjs} +1 -1
- package/dist/{chunk-3NJPNSJG.mjs → chunk-RGHKARAK.mjs} +1 -1
- package/dist/{chunk-RFWP2325.mjs → chunk-RJHE3V4M.mjs} +1 -1
- package/dist/{chunk-SH5L5VG6.mjs → chunk-RVDBYV2B.mjs} +1 -1
- package/dist/{chunk-SU6TPDEU.mjs → chunk-SET6GFGL.mjs} +1 -1
- package/dist/{chunk-JJSA772M.mjs → chunk-WIDZVCH3.mjs} +1 -1
- package/dist/components/ui/add-column-modal.js +4 -2
- package/dist/components/ui/add-column-modal.mjs +2 -2
- package/dist/components/ui/add-lead-modal.js +13 -6
- package/dist/components/ui/add-lead-modal.mjs +4 -4
- package/dist/components/ui/ai-builder.js +4 -2
- package/dist/components/ui/ai-builder.mjs +2 -2
- package/dist/components/ui/ai-conversations.js +4 -2
- package/dist/components/ui/ai-conversations.mjs +2 -2
- package/dist/components/ui/appointment-action-dialogs.js +4 -2
- package/dist/components/ui/appointment-action-dialogs.mjs +2 -2
- package/dist/components/ui/appointment-availability-settings.js +10 -3
- package/dist/components/ui/appointment-availability-settings.mjs +3 -3
- package/dist/components/ui/appointment-book-dialog.js +10 -3
- package/dist/components/ui/appointment-book-dialog.mjs +3 -3
- package/dist/components/ui/appointment-detail-sheet.js +4 -2
- package/dist/components/ui/appointment-detail-sheet.mjs +3 -3
- package/dist/components/ui/appointment-upcoming-card.js +4 -2
- package/dist/components/ui/appointment-upcoming-card.mjs +2 -2
- package/dist/components/ui/backoffice-signup-steps.js +6 -1
- package/dist/components/ui/backoffice-signup-steps.mjs +3 -3
- package/dist/components/ui/bank-statement-generate-dialog.js +13 -6
- package/dist/components/ui/bank-statement-generate-dialog.mjs +4 -4
- package/dist/components/ui/bank-statement-pdf-viewer.js +4 -2
- package/dist/components/ui/bank-statement-pdf-viewer.mjs +2 -2
- package/dist/components/ui/category-edit-dialog.js +4 -2
- package/dist/components/ui/category-edit-dialog.mjs +2 -2
- package/dist/components/ui/contact-alert-dialog/index.js +22 -15
- package/dist/components/ui/contact-alert-dialog/index.mjs +3 -3
- package/dist/components/ui/create-contact-modal.js +25 -18
- package/dist/components/ui/create-contact-modal.mjs +3 -3
- package/dist/components/ui/csv-import-modal.js +4 -2
- package/dist/components/ui/csv-import-modal.mjs +2 -2
- package/dist/components/ui/dashboard-transactions-table.js +4 -2
- package/dist/components/ui/dashboard-transactions-table.mjs +2 -2
- package/dist/components/ui/data-table.js +13 -8
- package/dist/components/ui/data-table.mjs +3 -3
- package/dist/components/ui/dialog.js +4 -2
- package/dist/components/ui/dialog.mjs +1 -1
- package/dist/components/ui/document-checklist-template.js +6 -1
- package/dist/components/ui/document-checklist-template.mjs +2 -2
- package/dist/components/ui/file-preview-dialog.js +13 -6
- package/dist/components/ui/file-preview-dialog.mjs +3 -3
- package/dist/components/ui/frontend-signup-steps.js +4 -0
- package/dist/components/ui/frontend-signup-steps.mjs +3 -3
- package/dist/components/ui/opportunity-edit-modals.js +54 -47
- package/dist/components/ui/opportunity-edit-modals.mjs +3 -3
- package/dist/components/ui/opportunity-summary-tab.js +59 -52
- package/dist/components/ui/opportunity-summary-tab.mjs +4 -4
- package/dist/components/ui/pagination.js +6 -1
- package/dist/components/ui/pagination.mjs +2 -2
- package/dist/components/ui/pipeline-dialogs.js +24 -17
- package/dist/components/ui/pipeline-dialogs.mjs +3 -3
- package/dist/components/ui/property-report-dialog.js +4 -2
- package/dist/components/ui/property-report-dialog.mjs +2 -2
- package/dist/components/ui/resource-center/index.js +4 -2
- package/dist/components/ui/resource-center/index.mjs +2 -2
- package/dist/components/ui/review-alerts-dialog.js +4 -2
- package/dist/components/ui/review-alerts-dialog.mjs +2 -2
- package/dist/components/ui/savings-goal-modal.js +4 -2
- package/dist/components/ui/savings-goal-modal.mjs +1 -1
- package/dist/components/ui/select.js +24 -1
- package/dist/components/ui/select.mjs +3 -1
- package/dist/components/ui/share-details-dialog.js +4 -2
- package/dist/components/ui/share-details-dialog.mjs +2 -2
- package/dist/components/ui/signup-form-primitives.js +6 -1
- package/dist/components/ui/signup-form-primitives.mjs +2 -2
- package/dist/index.js +160 -145
- package/dist/index.mjs +32 -30
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/components/index.tsx +2 -0
- package/src/components/ui/dialog.tsx +4 -2
- package/src/components/ui/select.tsx +34 -1
- package/src/styles/styles-css.ts +1 -1
package/dist/index.js
CHANGED
|
@@ -381,6 +381,7 @@ __export(index_exports, {
|
|
|
381
381
|
SelectGroup: () => SelectGroup,
|
|
382
382
|
SelectItem: () => SelectItem,
|
|
383
383
|
SelectLabel: () => SelectLabel,
|
|
384
|
+
SelectPortalProvider: () => SelectPortalProvider,
|
|
384
385
|
SelectScrollDownButton: () => SelectScrollDownButton,
|
|
385
386
|
SelectScrollUpButton: () => SelectScrollUpButton,
|
|
386
387
|
SelectSeparator: () => SelectSeparator,
|
|
@@ -1092,7 +1093,7 @@ function DialogOverlay(_a) {
|
|
|
1092
1093
|
__spreadValues({
|
|
1093
1094
|
className: cn(
|
|
1094
1095
|
// WealthX: foreground/50 scrim (matches Figma — foreground token at 50% opacity)
|
|
1095
|
-
"fixed inset-0 z-50 bg-foreground/50 data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:fill-mode-forwards data-open:animate-in data-open:fade-in-0",
|
|
1096
|
+
"fixed inset-0 z-50 bg-foreground/50 pointer-events-auto data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:fill-mode-forwards data-open:animate-in data-open:fade-in-0",
|
|
1096
1097
|
className
|
|
1097
1098
|
),
|
|
1098
1099
|
"data-slot": "dialog-overlay"
|
|
@@ -1143,7 +1144,9 @@ function DialogContent(_a) {
|
|
|
1143
1144
|
// max-w-[calc(100%-2rem)] acts as a viewport-edge guard on all sizes.
|
|
1144
1145
|
// Fixed max-width is applied via inline style (sizeStyle) to avoid
|
|
1145
1146
|
// Tailwind v4 class-scanning gaps with dynamic class lookups.
|
|
1146
|
-
|
|
1147
|
+
// pointer-events-auto: Vaul Drawer (Radix DismissableLayer) sets body{pointer-events:none}
|
|
1148
|
+
// when open — dialog portals to body and must override that on its own element.
|
|
1149
|
+
"fixed left-[50%] z-50 grid max-w-[calc(100%-2rem)] translate-x-[-50%] gap-4 border bg-background p-6 duration-200 outline-none pointer-events-auto data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:zoom-out-95 data-ending-style:fill-mode-forwards data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95",
|
|
1147
1150
|
// "auto" → hug content (with min-width floor); fixed sizes → fill to max-width
|
|
1148
1151
|
isAuto ? "w-auto" : "w-full",
|
|
1149
1152
|
align === "center" ? "top-[50%] translate-y-[-50%]" : "top-4 translate-y-0",
|
|
@@ -5133,7 +5136,7 @@ function showAgentEvaluationToast(data) {
|
|
|
5133
5136
|
}
|
|
5134
5137
|
|
|
5135
5138
|
// src/components/ui/add-lead-modal.tsx
|
|
5136
|
-
var
|
|
5139
|
+
var React11 = __toESM(require("react"));
|
|
5137
5140
|
var import_lucide_react16 = require("lucide-react");
|
|
5138
5141
|
|
|
5139
5142
|
// src/components/ui/checkbox.tsx
|
|
@@ -5375,9 +5378,19 @@ function TableCaption(_a) {
|
|
|
5375
5378
|
var import_lucide_react15 = require("lucide-react");
|
|
5376
5379
|
|
|
5377
5380
|
// src/components/ui/select.tsx
|
|
5381
|
+
var React10 = __toESM(require("react"));
|
|
5378
5382
|
var import_lucide_react14 = require("lucide-react");
|
|
5379
5383
|
var import_select = require("@base-ui/react/select");
|
|
5380
5384
|
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
5385
|
+
var SelectPortalContext = React10.createContext(
|
|
5386
|
+
void 0
|
|
5387
|
+
);
|
|
5388
|
+
function SelectPortalProvider({
|
|
5389
|
+
container,
|
|
5390
|
+
children
|
|
5391
|
+
}) {
|
|
5392
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SelectPortalContext.Provider, { value: container, children });
|
|
5393
|
+
}
|
|
5381
5394
|
function Select(_a) {
|
|
5382
5395
|
var props = __objRest(_a, []);
|
|
5383
5396
|
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_select.Select.Root, __spreadValues({ "data-slot": "select" }, props));
|
|
@@ -5428,7 +5441,8 @@ function SelectContent(_a) {
|
|
|
5428
5441
|
"style"
|
|
5429
5442
|
]);
|
|
5430
5443
|
const themeVars = useThemeVars();
|
|
5431
|
-
|
|
5444
|
+
const portalContainer = React10.useContext(SelectPortalContext);
|
|
5445
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_select.Select.Portal, { container: portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
5432
5446
|
import_select.Select.Positioner,
|
|
5433
5447
|
{
|
|
5434
5448
|
className: "z-[200]",
|
|
@@ -5822,8 +5836,8 @@ function AddLeadModal({
|
|
|
5822
5836
|
onAdd,
|
|
5823
5837
|
className
|
|
5824
5838
|
}) {
|
|
5825
|
-
const [selectedIds, setSelectedIds] =
|
|
5826
|
-
|
|
5839
|
+
const [selectedIds, setSelectedIds] = React11.useState(/* @__PURE__ */ new Set());
|
|
5840
|
+
React11.useEffect(() => {
|
|
5827
5841
|
if (open) setSelectedIds(/* @__PURE__ */ new Set());
|
|
5828
5842
|
}, [open]);
|
|
5829
5843
|
const allPageSelected = contacts.length > 0 && contacts.every((c) => selectedIds.has(c.id));
|
|
@@ -5968,7 +5982,7 @@ function AddLeadModal({
|
|
|
5968
5982
|
}
|
|
5969
5983
|
|
|
5970
5984
|
// src/components/ui/ai-assistant-drawer.tsx
|
|
5971
|
-
var
|
|
5985
|
+
var React12 = __toESM(require("react"));
|
|
5972
5986
|
var import_lucide_react18 = require("lucide-react");
|
|
5973
5987
|
|
|
5974
5988
|
// src/components/ui/sheet.tsx
|
|
@@ -6198,26 +6212,26 @@ function AiAssistantDrawer({
|
|
|
6198
6212
|
className
|
|
6199
6213
|
}) {
|
|
6200
6214
|
var _a;
|
|
6201
|
-
const [inputValue, setInputValue] =
|
|
6202
|
-
const messagesEndRef =
|
|
6203
|
-
const textareaRef =
|
|
6215
|
+
const [inputValue, setInputValue] = React12.useState("");
|
|
6216
|
+
const messagesEndRef = React12.useRef(null);
|
|
6217
|
+
const textareaRef = React12.useRef(null);
|
|
6204
6218
|
const suggestions = taskSuggestions != null ? taskSuggestions : DEFAULT_SUGGESTIONS;
|
|
6205
6219
|
const hasMessages = messages.length > 0;
|
|
6206
6220
|
const canSend = inputValue.trim().length > 0 && !isStreaming && !isLoading;
|
|
6207
|
-
|
|
6221
|
+
React12.useEffect(() => {
|
|
6208
6222
|
if (!messagesEndRef.current) return;
|
|
6209
6223
|
messagesEndRef.current.scrollIntoView({
|
|
6210
6224
|
behavior: "smooth",
|
|
6211
6225
|
block: "nearest"
|
|
6212
6226
|
});
|
|
6213
6227
|
}, [messages.length]);
|
|
6214
|
-
|
|
6228
|
+
React12.useEffect(() => {
|
|
6215
6229
|
const el = textareaRef.current;
|
|
6216
6230
|
if (!el) return;
|
|
6217
6231
|
el.style.height = "auto";
|
|
6218
6232
|
el.style.height = `${Math.min(el.scrollHeight, 120)}px`;
|
|
6219
6233
|
}, [inputValue]);
|
|
6220
|
-
const handleSend =
|
|
6234
|
+
const handleSend = React12.useCallback(() => {
|
|
6221
6235
|
const text = inputValue.trim();
|
|
6222
6236
|
if (!text || !canSend) return;
|
|
6223
6237
|
onSendMessage == null ? void 0 : onSendMessage(text);
|
|
@@ -7651,7 +7665,7 @@ function AlertDialogCancel(_a) {
|
|
|
7651
7665
|
var import_react12 = __toESM(require("react"));
|
|
7652
7666
|
|
|
7653
7667
|
// src/components/ui/date-picker.tsx
|
|
7654
|
-
var
|
|
7668
|
+
var React14 = __toESM(require("react"));
|
|
7655
7669
|
var import_date_fns2 = require("date-fns");
|
|
7656
7670
|
var import_lucide_react21 = require("lucide-react");
|
|
7657
7671
|
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
@@ -7664,7 +7678,7 @@ function DatePicker({
|
|
|
7664
7678
|
className,
|
|
7665
7679
|
calendarProps
|
|
7666
7680
|
}) {
|
|
7667
|
-
const [open, setOpen] =
|
|
7681
|
+
const [open, setOpen] = React14.useState(false);
|
|
7668
7682
|
function handleDaySelect(day) {
|
|
7669
7683
|
if (!day) {
|
|
7670
7684
|
onChange == null ? void 0 : onChange(void 0);
|
|
@@ -8505,14 +8519,14 @@ function AppointmentRescheduleDialog({
|
|
|
8505
8519
|
var import_react14 = __toESM(require("react"));
|
|
8506
8520
|
|
|
8507
8521
|
// src/components/ui/form-primitives.tsx
|
|
8508
|
-
var
|
|
8522
|
+
var React18 = __toESM(require("react"));
|
|
8509
8523
|
var import_lucide_react24 = require("lucide-react");
|
|
8510
8524
|
|
|
8511
8525
|
// src/components/ui/slider.tsx
|
|
8512
|
-
var
|
|
8526
|
+
var React17 = __toESM(require("react"));
|
|
8513
8527
|
var import_slider = require("@base-ui/react/slider");
|
|
8514
8528
|
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
8515
|
-
var Slider =
|
|
8529
|
+
var Slider = React17.forwardRef(
|
|
8516
8530
|
({
|
|
8517
8531
|
className,
|
|
8518
8532
|
value,
|
|
@@ -8600,13 +8614,13 @@ function CurrencyInputWithSlider({
|
|
|
8600
8614
|
onValueChange,
|
|
8601
8615
|
className
|
|
8602
8616
|
}) {
|
|
8603
|
-
const [internalValue, setInternalValue] =
|
|
8617
|
+
const [internalValue, setInternalValue] = React18.useState(defaultValue);
|
|
8604
8618
|
const numericValue = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
8605
|
-
const [inputText, setInputText] =
|
|
8619
|
+
const [inputText, setInputText] = React18.useState(
|
|
8606
8620
|
formatNumberToCurrency(numericValue)
|
|
8607
8621
|
);
|
|
8608
|
-
const [isFocused, setIsFocused] =
|
|
8609
|
-
|
|
8622
|
+
const [isFocused, setIsFocused] = React18.useState(false);
|
|
8623
|
+
React18.useEffect(() => {
|
|
8610
8624
|
if (!isFocused) {
|
|
8611
8625
|
setInputText(formatNumberToCurrency(numericValue));
|
|
8612
8626
|
}
|
|
@@ -8676,7 +8690,7 @@ function ConcernScale({
|
|
|
8676
8690
|
className
|
|
8677
8691
|
}) {
|
|
8678
8692
|
var _a;
|
|
8679
|
-
const [internalValue, setInternalValue] =
|
|
8693
|
+
const [internalValue, setInternalValue] = React18.useState(defaultValue);
|
|
8680
8694
|
const selected = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
8681
8695
|
const handleValueChange = (val) => {
|
|
8682
8696
|
const n = val ? Number(val) : 0;
|
|
@@ -8762,13 +8776,13 @@ function AddressAutocomplete({
|
|
|
8762
8776
|
onSelect,
|
|
8763
8777
|
className
|
|
8764
8778
|
}) {
|
|
8765
|
-
const [internalValue, setInternalValue] =
|
|
8779
|
+
const [internalValue, setInternalValue] = React18.useState("");
|
|
8766
8780
|
const inputValue = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
8767
|
-
const [open, setOpen] =
|
|
8768
|
-
const [activeIndex, setActiveIndex] =
|
|
8769
|
-
const containerRef =
|
|
8770
|
-
const listRef =
|
|
8771
|
-
const filtered =
|
|
8781
|
+
const [open, setOpen] = React18.useState(false);
|
|
8782
|
+
const [activeIndex, setActiveIndex] = React18.useState(-1);
|
|
8783
|
+
const containerRef = React18.useRef(null);
|
|
8784
|
+
const listRef = React18.useRef(null);
|
|
8785
|
+
const filtered = React18.useMemo(() => {
|
|
8772
8786
|
if (!inputValue.trim()) return suggestions.slice(0, 5);
|
|
8773
8787
|
const q = inputValue.toLowerCase();
|
|
8774
8788
|
return suggestions.filter((s) => s.label.toLowerCase().includes(q)).slice(0, 5);
|
|
@@ -8798,7 +8812,7 @@ function AddressAutocomplete({
|
|
|
8798
8812
|
setOpen(false);
|
|
8799
8813
|
}
|
|
8800
8814
|
};
|
|
8801
|
-
|
|
8815
|
+
React18.useEffect(() => {
|
|
8802
8816
|
const handler = (e) => {
|
|
8803
8817
|
if (containerRef.current && !containerRef.current.contains(e.target)) {
|
|
8804
8818
|
setOpen(false);
|
|
@@ -8875,7 +8889,7 @@ function OwnershipSplit({
|
|
|
8875
8889
|
onOwnersChange,
|
|
8876
8890
|
className
|
|
8877
8891
|
}) {
|
|
8878
|
-
const [internalOwners, setInternalOwners] =
|
|
8892
|
+
const [internalOwners, setInternalOwners] = React18.useState(DEFAULT_OWNERS);
|
|
8879
8893
|
const owners = controlledOwners !== void 0 ? controlledOwners : internalOwners;
|
|
8880
8894
|
const setOwners = (updated) => {
|
|
8881
8895
|
if (controlledOwners === void 0) setInternalOwners(updated);
|
|
@@ -13505,7 +13519,7 @@ function Chip(_a) {
|
|
|
13505
13519
|
}
|
|
13506
13520
|
|
|
13507
13521
|
// src/components/ui/color-picker.tsx
|
|
13508
|
-
var
|
|
13522
|
+
var React30 = __toESM(require("react"));
|
|
13509
13523
|
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
13510
13524
|
var COLOR_PICKER_PRESETS = [
|
|
13511
13525
|
// Blues
|
|
@@ -13583,8 +13597,8 @@ function ColorPickerContent({
|
|
|
13583
13597
|
onChange,
|
|
13584
13598
|
presets = COLOR_PICKER_PRESETS
|
|
13585
13599
|
}) {
|
|
13586
|
-
const [hexInput, setHexInput] =
|
|
13587
|
-
|
|
13600
|
+
const [hexInput, setHexInput] = React30.useState(value);
|
|
13601
|
+
React30.useEffect(() => {
|
|
13588
13602
|
setHexInput(value);
|
|
13589
13603
|
}, [value]);
|
|
13590
13604
|
function handleHexInputChange(e) {
|
|
@@ -13671,10 +13685,10 @@ function ColorPicker({
|
|
|
13671
13685
|
className
|
|
13672
13686
|
}) {
|
|
13673
13687
|
const isControlled = controlledValue !== void 0;
|
|
13674
|
-
const [internalValue, setInternalValue] =
|
|
13688
|
+
const [internalValue, setInternalValue] = React30.useState(defaultValue);
|
|
13675
13689
|
const color = isControlled ? controlledValue : internalValue;
|
|
13676
|
-
const [open, setOpen] =
|
|
13677
|
-
|
|
13690
|
+
const [open, setOpen] = React30.useState(false);
|
|
13691
|
+
React30.useEffect(() => {
|
|
13678
13692
|
if (disabled) setOpen(false);
|
|
13679
13693
|
}, [disabled]);
|
|
13680
13694
|
function handleChange(newColor) {
|
|
@@ -14081,7 +14095,7 @@ function SelectedFile({
|
|
|
14081
14095
|
}
|
|
14082
14096
|
|
|
14083
14097
|
// src/components/ui/create-contact-modal.tsx
|
|
14084
|
-
var
|
|
14098
|
+
var React31 = __toESM(require("react"));
|
|
14085
14099
|
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
14086
14100
|
function Field2({
|
|
14087
14101
|
id,
|
|
@@ -14113,8 +14127,8 @@ function CreateContactModal({
|
|
|
14113
14127
|
className
|
|
14114
14128
|
}) {
|
|
14115
14129
|
var _a, _b;
|
|
14116
|
-
const [form, setForm] =
|
|
14117
|
-
|
|
14130
|
+
const [form, setForm] = React31.useState(EMPTY_FORM);
|
|
14131
|
+
React31.useEffect(() => {
|
|
14118
14132
|
if (open) setForm(EMPTY_FORM);
|
|
14119
14133
|
}, [open]);
|
|
14120
14134
|
function set(field, value) {
|
|
@@ -14270,7 +14284,7 @@ function DeleteContactComponent({
|
|
|
14270
14284
|
}
|
|
14271
14285
|
|
|
14272
14286
|
// src/components/ui/review-alerts-dialog.tsx
|
|
14273
|
-
var
|
|
14287
|
+
var React32 = __toESM(require("react"));
|
|
14274
14288
|
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
14275
14289
|
var SEVERITY_CONFIG = {
|
|
14276
14290
|
NEED_ACTION: { dot: "bg-destructive", text: "text-destructive" },
|
|
@@ -14284,10 +14298,10 @@ function ReviewAlertsDialog({
|
|
|
14284
14298
|
onSave,
|
|
14285
14299
|
className
|
|
14286
14300
|
}) {
|
|
14287
|
-
const [markDone, setMarkDone] =
|
|
14288
|
-
const [snooze, setSnooze] =
|
|
14301
|
+
const [markDone, setMarkDone] = React32.useState(false);
|
|
14302
|
+
const [snooze, setSnooze] = React32.useState(false);
|
|
14289
14303
|
const activeAlert = alerts.find((a) => !a.dismissed && !a.snoozedUntil);
|
|
14290
|
-
|
|
14304
|
+
React32.useEffect(() => {
|
|
14291
14305
|
if (open) {
|
|
14292
14306
|
setMarkDone(false);
|
|
14293
14307
|
setSnooze(false);
|
|
@@ -14376,7 +14390,7 @@ function ReviewAlertsDialog({
|
|
|
14376
14390
|
}
|
|
14377
14391
|
|
|
14378
14392
|
// src/components/ui/contact-alert-dialog/contact-alert-dialog.tsx
|
|
14379
|
-
var
|
|
14393
|
+
var React34 = __toESM(require("react"));
|
|
14380
14394
|
var import_lucide_react42 = require("lucide-react");
|
|
14381
14395
|
var import_ui4 = require("@react-awesome-query-builder/ui");
|
|
14382
14396
|
|
|
@@ -14628,7 +14642,7 @@ function isTreeValid(tree) {
|
|
|
14628
14642
|
}
|
|
14629
14643
|
|
|
14630
14644
|
// src/components/ui/contact-alert-dialog/builder-ui.tsx
|
|
14631
|
-
var
|
|
14645
|
+
var React33 = __toESM(require("react"));
|
|
14632
14646
|
var import_lucide_react41 = require("lucide-react");
|
|
14633
14647
|
var import_accordion2 = require("@base-ui/react/accordion");
|
|
14634
14648
|
var import_ui3 = require("@react-awesome-query-builder/ui");
|
|
@@ -15120,11 +15134,11 @@ function CustomBuilderUI({
|
|
|
15120
15134
|
const rootId = (_a = treeJson == null ? void 0 : treeJson.id) != null ? _a : "root";
|
|
15121
15135
|
const conjunction = (_c = (_b = treeJson == null ? void 0 : treeJson.properties) == null ? void 0 : _b.conjunction) != null ? _c : "AND";
|
|
15122
15136
|
const children = (_d = treeJson == null ? void 0 : treeJson.children1) != null ? _d : [];
|
|
15123
|
-
const longestFieldLabel =
|
|
15137
|
+
const longestFieldLabel = React33.useMemo(
|
|
15124
15138
|
() => longestOf(fields.map((f) => f.label)),
|
|
15125
15139
|
[fields]
|
|
15126
15140
|
);
|
|
15127
|
-
const longestOperatorLabel =
|
|
15141
|
+
const longestOperatorLabel = React33.useMemo(
|
|
15128
15142
|
() => longestOf(allOperatorLabels(fields)),
|
|
15129
15143
|
[fields]
|
|
15130
15144
|
);
|
|
@@ -15234,7 +15248,7 @@ function ContactAlertQueryBuilder({
|
|
|
15234
15248
|
fields = ALERT_QUERY_FIELDS,
|
|
15235
15249
|
className
|
|
15236
15250
|
}) {
|
|
15237
|
-
const defaultOpenItems =
|
|
15251
|
+
const defaultOpenItems = React34.useMemo(() => {
|
|
15238
15252
|
var _a;
|
|
15239
15253
|
const json = import_ui4.Utils.getTree(value);
|
|
15240
15254
|
return ((_a = json == null ? void 0 : json.children1) != null ? _a : []).map((c) => {
|
|
@@ -15242,7 +15256,7 @@ function ContactAlertQueryBuilder({
|
|
|
15242
15256
|
return (_a2 = c.id) != null ? _a2 : "";
|
|
15243
15257
|
}).filter(Boolean);
|
|
15244
15258
|
}, []);
|
|
15245
|
-
const renderBuilder =
|
|
15259
|
+
const renderBuilder = React34.useCallback(
|
|
15246
15260
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15247
15261
|
(props) => /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
15248
15262
|
CustomBuilderUI,
|
|
@@ -15279,15 +15293,15 @@ function ContactAlertDialog({
|
|
|
15279
15293
|
isLoading = false,
|
|
15280
15294
|
className
|
|
15281
15295
|
}) {
|
|
15282
|
-
const [name, setName] =
|
|
15283
|
-
const [severity, setSeverity] =
|
|
15284
|
-
const [tree, setTree] =
|
|
15296
|
+
const [name, setName] = React34.useState(initialName);
|
|
15297
|
+
const [severity, setSeverity] = React34.useState(initialSeverity);
|
|
15298
|
+
const [tree, setTree] = React34.useState(
|
|
15285
15299
|
() => createAlertTree(initialQuery)
|
|
15286
15300
|
);
|
|
15287
|
-
const [shareAcrossCompany, setShareAcrossCompany] =
|
|
15301
|
+
const [shareAcrossCompany, setShareAcrossCompany] = React34.useState(
|
|
15288
15302
|
initialShareAcrossCompany
|
|
15289
15303
|
);
|
|
15290
|
-
|
|
15304
|
+
React34.useEffect(() => {
|
|
15291
15305
|
if (open) {
|
|
15292
15306
|
setName(initialName);
|
|
15293
15307
|
setSeverity(initialSeverity);
|
|
@@ -15295,7 +15309,7 @@ function ContactAlertDialog({
|
|
|
15295
15309
|
setShareAcrossCompany(initialShareAcrossCompany);
|
|
15296
15310
|
}
|
|
15297
15311
|
}, [open]);
|
|
15298
|
-
const hasValidRule =
|
|
15312
|
+
const hasValidRule = React34.useMemo(() => isTreeValid(tree), [tree]);
|
|
15299
15313
|
const canSave = name.trim().length > 0 && hasValidRule && !isLoading;
|
|
15300
15314
|
function handleSave() {
|
|
15301
15315
|
if (!canSave) return;
|
|
@@ -15395,7 +15409,7 @@ function ContactAlertDialog({
|
|
|
15395
15409
|
}
|
|
15396
15410
|
|
|
15397
15411
|
// src/components/ui/share-details-dialog.tsx
|
|
15398
|
-
var
|
|
15412
|
+
var React35 = __toESM(require("react"));
|
|
15399
15413
|
var import_lucide_react43 = require("lucide-react");
|
|
15400
15414
|
var import_jsx_runtime78 = require("react/jsx-runtime");
|
|
15401
15415
|
function Field3({
|
|
@@ -15421,7 +15435,7 @@ function ShareDetailsDialog({
|
|
|
15421
15435
|
isSendingEmail = false,
|
|
15422
15436
|
className
|
|
15423
15437
|
}) {
|
|
15424
|
-
const [copied, setCopied] =
|
|
15438
|
+
const [copied, setCopied] = React35.useState(false);
|
|
15425
15439
|
function handleCopy() {
|
|
15426
15440
|
navigator.clipboard.writeText(shareUrl).catch(() => {
|
|
15427
15441
|
});
|
|
@@ -15481,9 +15495,9 @@ function EmailTemplateDialog({
|
|
|
15481
15495
|
isSending = false,
|
|
15482
15496
|
className
|
|
15483
15497
|
}) {
|
|
15484
|
-
const [subject, setSubject] =
|
|
15485
|
-
const [body, setBody] =
|
|
15486
|
-
|
|
15498
|
+
const [subject, setSubject] = React35.useState(defaultSubject);
|
|
15499
|
+
const [body, setBody] = React35.useState(defaultBody);
|
|
15500
|
+
React35.useEffect(() => {
|
|
15487
15501
|
if (open) {
|
|
15488
15502
|
setSubject(defaultSubject);
|
|
15489
15503
|
setBody(defaultBody);
|
|
@@ -15550,14 +15564,14 @@ function ShareContactDialog({
|
|
|
15550
15564
|
isSending = false,
|
|
15551
15565
|
className
|
|
15552
15566
|
}) {
|
|
15553
|
-
const [tab, setTab] =
|
|
15554
|
-
const [search, setSearch] =
|
|
15555
|
-
const [selectedId, setSelectedId] =
|
|
15556
|
-
const [internalNotes, setInternalNotes] =
|
|
15557
|
-
const [firstName, setFirstName] =
|
|
15558
|
-
const [lastName, setLastName] =
|
|
15559
|
-
const [email, setEmail] =
|
|
15560
|
-
const [externalNotes, setExternalNotes] =
|
|
15567
|
+
const [tab, setTab] = React35.useState("internal");
|
|
15568
|
+
const [search, setSearch] = React35.useState("");
|
|
15569
|
+
const [selectedId, setSelectedId] = React35.useState(null);
|
|
15570
|
+
const [internalNotes, setInternalNotes] = React35.useState("");
|
|
15571
|
+
const [firstName, setFirstName] = React35.useState("");
|
|
15572
|
+
const [lastName, setLastName] = React35.useState("");
|
|
15573
|
+
const [email, setEmail] = React35.useState("");
|
|
15574
|
+
const [externalNotes, setExternalNotes] = React35.useState("");
|
|
15561
15575
|
function reset() {
|
|
15562
15576
|
setTab("internal");
|
|
15563
15577
|
setSearch("");
|
|
@@ -15733,7 +15747,7 @@ function ShareContactDialog({
|
|
|
15733
15747
|
}
|
|
15734
15748
|
|
|
15735
15749
|
// src/components/ui/file-preview-dialog.tsx
|
|
15736
|
-
var
|
|
15750
|
+
var React36 = __toESM(require("react"));
|
|
15737
15751
|
var import_lucide_react44 = require("lucide-react");
|
|
15738
15752
|
|
|
15739
15753
|
// src/components/ui/progress.tsx
|
|
@@ -15851,8 +15865,8 @@ function FilePreviewDialog({
|
|
|
15851
15865
|
staffSelector,
|
|
15852
15866
|
className
|
|
15853
15867
|
}) {
|
|
15854
|
-
const [page, setPage] =
|
|
15855
|
-
|
|
15868
|
+
const [page, setPage] = React36.useState(0);
|
|
15869
|
+
React36.useEffect(() => {
|
|
15856
15870
|
setPage(0);
|
|
15857
15871
|
}, [rows.length]);
|
|
15858
15872
|
const totalPages = Math.ceil(rows.length / pageSize);
|
|
@@ -16017,7 +16031,7 @@ function FilePreviewDialog({
|
|
|
16017
16031
|
}
|
|
16018
16032
|
|
|
16019
16033
|
// src/components/ui/data-table.tsx
|
|
16020
|
-
var
|
|
16034
|
+
var React37 = __toESM(require("react"));
|
|
16021
16035
|
var import_react_table = require("@tanstack/react-table");
|
|
16022
16036
|
var import_lucide_react45 = require("lucide-react");
|
|
16023
16037
|
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
@@ -16256,20 +16270,20 @@ function DataTable({
|
|
|
16256
16270
|
onColumnFiltersChange: onColumnFiltersChangeProp
|
|
16257
16271
|
}) {
|
|
16258
16272
|
var _a;
|
|
16259
|
-
const [internalSorting, setInternalSorting] =
|
|
16273
|
+
const [internalSorting, setInternalSorting] = React37.useState(
|
|
16260
16274
|
[]
|
|
16261
16275
|
);
|
|
16262
|
-
const [internalColumnFilters, setInternalColumnFilters] =
|
|
16263
|
-
const [internalPagination, setInternalPagination] =
|
|
16276
|
+
const [internalColumnFilters, setInternalColumnFilters] = React37.useState([]);
|
|
16277
|
+
const [internalPagination, setInternalPagination] = React37.useState({
|
|
16264
16278
|
pageIndex: 0,
|
|
16265
16279
|
pageSize: (_a = pageSizeOptions[0]) != null ? _a : 10
|
|
16266
16280
|
});
|
|
16267
|
-
const [columnVisibility, setColumnVisibility] =
|
|
16268
|
-
const [rowSelection, setRowSelection] =
|
|
16281
|
+
const [columnVisibility, setColumnVisibility] = React37.useState({});
|
|
16282
|
+
const [rowSelection, setRowSelection] = React37.useState({});
|
|
16269
16283
|
const sorting = controlledSorting != null ? controlledSorting : internalSorting;
|
|
16270
16284
|
const columnFilters = controlledColumnFilters != null ? controlledColumnFilters : internalColumnFilters;
|
|
16271
16285
|
const pagination = controlledPagination != null ? controlledPagination : internalPagination;
|
|
16272
|
-
const resolvedColumns =
|
|
16286
|
+
const resolvedColumns = React37.useMemo(() => {
|
|
16273
16287
|
if (!enableRowSelection) return userColumns;
|
|
16274
16288
|
return [getSelectionColumn(), ...userColumns];
|
|
16275
16289
|
}, [userColumns, enableRowSelection]);
|
|
@@ -16359,7 +16373,7 @@ function DataTable({
|
|
|
16359
16373
|
}
|
|
16360
16374
|
|
|
16361
16375
|
// src/components/ui/applicant-document-checklist.tsx
|
|
16362
|
-
var
|
|
16376
|
+
var React38 = __toESM(require("react"));
|
|
16363
16377
|
var import_lucide_react46 = require("lucide-react");
|
|
16364
16378
|
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
16365
16379
|
function StatusIcon({ status }) {
|
|
@@ -16375,14 +16389,14 @@ function ApplicantDocumentChecklist({
|
|
|
16375
16389
|
onRemove,
|
|
16376
16390
|
className
|
|
16377
16391
|
}) {
|
|
16378
|
-
const inputRefs =
|
|
16392
|
+
const inputRefs = React38.useRef({});
|
|
16379
16393
|
function handleFileChange(itemId, e) {
|
|
16380
16394
|
var _a;
|
|
16381
16395
|
const file = (_a = e.target.files) == null ? void 0 : _a[0];
|
|
16382
16396
|
if (file) onUpload == null ? void 0 : onUpload(itemId, file);
|
|
16383
16397
|
e.target.value = "";
|
|
16384
16398
|
}
|
|
16385
|
-
const { uploadedCount, totalRequired } =
|
|
16399
|
+
const { uploadedCount, totalRequired } = React38.useMemo(() => {
|
|
16386
16400
|
let uploaded = 0;
|
|
16387
16401
|
let required = 0;
|
|
16388
16402
|
for (const i of items) {
|
|
@@ -16972,7 +16986,7 @@ function ExpenseBarChart({
|
|
|
16972
16986
|
}
|
|
16973
16987
|
|
|
16974
16988
|
// src/components/ui/financial-cards.tsx
|
|
16975
|
-
var
|
|
16989
|
+
var React40 = __toESM(require("react"));
|
|
16976
16990
|
var import_lucide_react48 = require("lucide-react");
|
|
16977
16991
|
|
|
16978
16992
|
// src/components/ui/financial-primitives.tsx
|
|
@@ -17135,7 +17149,7 @@ function PropertyCard({
|
|
|
17135
17149
|
interestCharged,
|
|
17136
17150
|
principlePaidOff
|
|
17137
17151
|
}) {
|
|
17138
|
-
const [expanded, setExpanded] =
|
|
17152
|
+
const [expanded, setExpanded] = React40.useState(false);
|
|
17139
17153
|
return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
|
|
17140
17154
|
"div",
|
|
17141
17155
|
{
|
|
@@ -18610,7 +18624,7 @@ function IncomeBarChart({
|
|
|
18610
18624
|
}
|
|
18611
18625
|
|
|
18612
18626
|
// src/components/ui/input-otp.tsx
|
|
18613
|
-
var
|
|
18627
|
+
var React43 = __toESM(require("react"));
|
|
18614
18628
|
var import_input_otp = require("input-otp");
|
|
18615
18629
|
var import_lucide_react50 = require("lucide-react");
|
|
18616
18630
|
var import_jsx_runtime91 = require("react/jsx-runtime");
|
|
@@ -18657,7 +18671,7 @@ function InputOTPSlot(_a) {
|
|
|
18657
18671
|
"className"
|
|
18658
18672
|
]);
|
|
18659
18673
|
var _a2;
|
|
18660
|
-
const inputOTPContext =
|
|
18674
|
+
const inputOTPContext = React43.useContext(import_input_otp.OTPInputContext);
|
|
18661
18675
|
const { char, hasFakeCaret, isActive } = (_a2 = inputOTPContext.slots[index]) != null ? _a2 : {};
|
|
18662
18676
|
return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(
|
|
18663
18677
|
"div",
|
|
@@ -18754,7 +18768,7 @@ function SelectableCard({
|
|
|
18754
18768
|
}
|
|
18755
18769
|
|
|
18756
18770
|
// src/components/ui/kanban-column.tsx
|
|
18757
|
-
var
|
|
18771
|
+
var React44 = __toESM(require("react"));
|
|
18758
18772
|
var import_lucide_react53 = require("lucide-react");
|
|
18759
18773
|
|
|
18760
18774
|
// src/components/ui/opportunity-card.tsx
|
|
@@ -19511,7 +19525,7 @@ function KanbanColumn({
|
|
|
19511
19525
|
const themeVars = useThemeVars();
|
|
19512
19526
|
const accentColor = (_a = stage.accentColor) != null ? _a : "var(--color-border)";
|
|
19513
19527
|
const hasMenu = onEditColumn || !isDefault && onDeleteColumn;
|
|
19514
|
-
const [isDragOver, setIsDragOver] =
|
|
19528
|
+
const [isDragOver, setIsDragOver] = React44.useState(false);
|
|
19515
19529
|
function handleDragOver(e) {
|
|
19516
19530
|
if (!onCardDrop) return;
|
|
19517
19531
|
e.preventDefault();
|
|
@@ -19687,15 +19701,15 @@ function KanbanColumn({
|
|
|
19687
19701
|
}
|
|
19688
19702
|
|
|
19689
19703
|
// src/components/ui/stepper.tsx
|
|
19690
|
-
var
|
|
19704
|
+
var React45 = __toESM(require("react"));
|
|
19691
19705
|
var import_lucide_react54 = require("lucide-react");
|
|
19692
19706
|
var import_jsx_runtime97 = require("react/jsx-runtime");
|
|
19693
|
-
var StepperContext =
|
|
19707
|
+
var StepperContext = React45.createContext({
|
|
19694
19708
|
activeStep: 0,
|
|
19695
19709
|
orientation: "horizontal",
|
|
19696
19710
|
totalSteps: 0
|
|
19697
19711
|
});
|
|
19698
|
-
var StepContext =
|
|
19712
|
+
var StepContext = React45.createContext({
|
|
19699
19713
|
index: 0,
|
|
19700
19714
|
isActive: false,
|
|
19701
19715
|
isCompleted: false,
|
|
@@ -19708,7 +19722,7 @@ function Stepper({
|
|
|
19708
19722
|
className,
|
|
19709
19723
|
children
|
|
19710
19724
|
}) {
|
|
19711
|
-
const totalSteps =
|
|
19725
|
+
const totalSteps = React45.Children.count(children);
|
|
19712
19726
|
return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(StepperContext.Provider, { value: { activeStep, orientation, totalSteps }, children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
19713
19727
|
"div",
|
|
19714
19728
|
{
|
|
@@ -19718,9 +19732,9 @@ function Stepper({
|
|
|
19718
19732
|
orientation === "horizontal" ? "flex w-full items-start" : "flex flex-col",
|
|
19719
19733
|
className
|
|
19720
19734
|
),
|
|
19721
|
-
children:
|
|
19735
|
+
children: React45.Children.map(
|
|
19722
19736
|
children,
|
|
19723
|
-
(step, index) =>
|
|
19737
|
+
(step, index) => React45.isValidElement(step) ? React45.cloneElement(
|
|
19724
19738
|
step,
|
|
19725
19739
|
{ _index: index }
|
|
19726
19740
|
) : step
|
|
@@ -19729,7 +19743,7 @@ function Stepper({
|
|
|
19729
19743
|
) });
|
|
19730
19744
|
}
|
|
19731
19745
|
function Step({ _index = 0, error, className, children }) {
|
|
19732
|
-
const { activeStep, orientation, totalSteps } =
|
|
19746
|
+
const { activeStep, orientation, totalSteps } = React45.useContext(StepperContext);
|
|
19733
19747
|
const isActive = _index === activeStep;
|
|
19734
19748
|
const isCompleted = _index < activeStep;
|
|
19735
19749
|
const isFirst = _index === 0;
|
|
@@ -19757,8 +19771,8 @@ function Step({ _index = 0, error, className, children }) {
|
|
|
19757
19771
|
);
|
|
19758
19772
|
}
|
|
19759
19773
|
function StepIndicator({ error, className }) {
|
|
19760
|
-
const { orientation } =
|
|
19761
|
-
const { index, isActive, isCompleted, isFirst, isLast } =
|
|
19774
|
+
const { orientation } = React45.useContext(StepperContext);
|
|
19775
|
+
const { index, isActive, isCompleted, isFirst, isLast } = React45.useContext(StepContext);
|
|
19762
19776
|
const filled = isActive || isCompleted;
|
|
19763
19777
|
const circle = /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
19764
19778
|
"div",
|
|
@@ -19830,8 +19844,8 @@ function StepLabel({
|
|
|
19830
19844
|
error,
|
|
19831
19845
|
className
|
|
19832
19846
|
}) {
|
|
19833
|
-
const { orientation } =
|
|
19834
|
-
const { isActive, isCompleted, isLast } =
|
|
19847
|
+
const { orientation } = React45.useContext(StepperContext);
|
|
19848
|
+
const { isActive, isCompleted, isLast } = React45.useContext(StepContext);
|
|
19835
19849
|
const subtext = typeof error === "string" ? error : description;
|
|
19836
19850
|
return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
|
|
19837
19851
|
"div",
|
|
@@ -19871,7 +19885,7 @@ function StepLabel({
|
|
|
19871
19885
|
);
|
|
19872
19886
|
}
|
|
19873
19887
|
function StepContent({ className, children }) {
|
|
19874
|
-
const { isActive } =
|
|
19888
|
+
const { isActive } = React45.useContext(StepContext);
|
|
19875
19889
|
if (!isActive) return null;
|
|
19876
19890
|
return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { "data-slot": "step-content", className: cn("pb-4 pt-2", className), children });
|
|
19877
19891
|
}
|
|
@@ -19994,7 +20008,7 @@ function OnboardingLayout({
|
|
|
19994
20008
|
}
|
|
19995
20009
|
|
|
19996
20010
|
// src/components/ui/opportunity-edit-modals.tsx
|
|
19997
|
-
var
|
|
20011
|
+
var React46 = __toESM(require("react"));
|
|
19998
20012
|
var import_lucide_react55 = require("lucide-react");
|
|
19999
20013
|
|
|
20000
20014
|
// src/lib/opportunity-constants.ts
|
|
@@ -20357,9 +20371,9 @@ function EditLoanScenarioModal({
|
|
|
20357
20371
|
container,
|
|
20358
20372
|
className
|
|
20359
20373
|
}) {
|
|
20360
|
-
const [form, setForm] =
|
|
20361
|
-
const initialSnapshot =
|
|
20362
|
-
|
|
20374
|
+
const [form, setForm] = React46.useState(__spreadValues(__spreadValues({}, LOAN_SCENARIO_DEFAULTS), initialData));
|
|
20375
|
+
const initialSnapshot = React46.useRef("");
|
|
20376
|
+
React46.useEffect(() => {
|
|
20363
20377
|
if (open) {
|
|
20364
20378
|
const data = __spreadValues(__spreadValues({}, LOAN_SCENARIO_DEFAULTS), initialData);
|
|
20365
20379
|
setForm(data);
|
|
@@ -20619,11 +20633,11 @@ function EditAssetsModal({
|
|
|
20619
20633
|
container,
|
|
20620
20634
|
className
|
|
20621
20635
|
}) {
|
|
20622
|
-
const [items, setItems] =
|
|
20636
|
+
const [items, setItems] = React46.useState(
|
|
20623
20637
|
initialItems.length > 0 ? initialItems : [makeDefaultAssetItem()]
|
|
20624
20638
|
);
|
|
20625
|
-
const initialSnapshot =
|
|
20626
|
-
|
|
20639
|
+
const initialSnapshot = React46.useRef("");
|
|
20640
|
+
React46.useEffect(() => {
|
|
20627
20641
|
if (open) {
|
|
20628
20642
|
const data = initialItems.length > 0 ? initialItems : [makeDefaultAssetItem()];
|
|
20629
20643
|
setItems(data);
|
|
@@ -20916,11 +20930,11 @@ function EditDebtsModal({
|
|
|
20916
20930
|
container,
|
|
20917
20931
|
className
|
|
20918
20932
|
}) {
|
|
20919
|
-
const [items, setItems] =
|
|
20933
|
+
const [items, setItems] = React46.useState(
|
|
20920
20934
|
initialItems.length > 0 ? initialItems : [makeDefaultDebtItem()]
|
|
20921
20935
|
);
|
|
20922
|
-
const initialSnapshot =
|
|
20923
|
-
|
|
20936
|
+
const initialSnapshot = React46.useRef("");
|
|
20937
|
+
React46.useEffect(() => {
|
|
20924
20938
|
if (open) {
|
|
20925
20939
|
const data = initialItems.length > 0 ? initialItems : [makeDefaultDebtItem()];
|
|
20926
20940
|
setItems(data);
|
|
@@ -21242,9 +21256,9 @@ function EditAboutApplicantModal({
|
|
|
21242
21256
|
container,
|
|
21243
21257
|
className
|
|
21244
21258
|
}) {
|
|
21245
|
-
const [form, setForm] =
|
|
21246
|
-
const initialSnapshot =
|
|
21247
|
-
|
|
21259
|
+
const [form, setForm] = React46.useState(__spreadValues(__spreadValues({}, ABOUT_APPLICANT_DEFAULTS), initialData));
|
|
21260
|
+
const initialSnapshot = React46.useRef("");
|
|
21261
|
+
React46.useEffect(() => {
|
|
21248
21262
|
if (open) {
|
|
21249
21263
|
const data = __spreadValues(__spreadValues({}, ABOUT_APPLICANT_DEFAULTS), initialData);
|
|
21250
21264
|
setForm(data);
|
|
@@ -21516,7 +21530,7 @@ function EditIncomeModal({
|
|
|
21516
21530
|
container,
|
|
21517
21531
|
className
|
|
21518
21532
|
}) {
|
|
21519
|
-
const defaultItems =
|
|
21533
|
+
const defaultItems = React46.useMemo(
|
|
21520
21534
|
() => {
|
|
21521
21535
|
var _a;
|
|
21522
21536
|
return ((_a = initialData == null ? void 0 : initialData.items) == null ? void 0 : _a.length) ? initialData.items : [makeDefaultIncomeItem()];
|
|
@@ -21524,9 +21538,9 @@ function EditIncomeModal({
|
|
|
21524
21538
|
[]
|
|
21525
21539
|
// eslint-disable-line react-hooks/exhaustive-deps
|
|
21526
21540
|
);
|
|
21527
|
-
const [items, setItems] =
|
|
21528
|
-
const initialSnapshot =
|
|
21529
|
-
|
|
21541
|
+
const [items, setItems] = React46.useState(defaultItems);
|
|
21542
|
+
const initialSnapshot = React46.useRef("");
|
|
21543
|
+
React46.useEffect(() => {
|
|
21530
21544
|
var _a;
|
|
21531
21545
|
if (open) {
|
|
21532
21546
|
const data = ((_a = initialData == null ? void 0 : initialData.items) == null ? void 0 : _a.length) ? initialData.items : [makeDefaultIncomeItem()];
|
|
@@ -21743,7 +21757,7 @@ function EditExpensesModal({
|
|
|
21743
21757
|
container,
|
|
21744
21758
|
className
|
|
21745
21759
|
}) {
|
|
21746
|
-
const defaultItems =
|
|
21760
|
+
const defaultItems = React46.useMemo(
|
|
21747
21761
|
() => {
|
|
21748
21762
|
var _a;
|
|
21749
21763
|
return ((_a = initialData == null ? void 0 : initialData.items) == null ? void 0 : _a.length) ? initialData.items : [makeDefaultExpenseItem()];
|
|
@@ -21751,9 +21765,9 @@ function EditExpensesModal({
|
|
|
21751
21765
|
[]
|
|
21752
21766
|
// eslint-disable-line react-hooks/exhaustive-deps
|
|
21753
21767
|
);
|
|
21754
|
-
const [items, setItems] =
|
|
21755
|
-
const initialSnapshot =
|
|
21756
|
-
|
|
21768
|
+
const [items, setItems] = React46.useState(defaultItems);
|
|
21769
|
+
const initialSnapshot = React46.useRef("");
|
|
21770
|
+
React46.useEffect(() => {
|
|
21757
21771
|
var _a;
|
|
21758
21772
|
if (open) {
|
|
21759
21773
|
const data = ((_a = initialData == null ? void 0 : initialData.items) == null ? void 0 : _a.length) ? initialData.items : [makeDefaultExpenseItem()];
|
|
@@ -21886,7 +21900,7 @@ function EditExpensesModal({
|
|
|
21886
21900
|
}
|
|
21887
21901
|
|
|
21888
21902
|
// src/components/ui/opportunity-summary-tab.tsx
|
|
21889
|
-
var
|
|
21903
|
+
var React47 = __toESM(require("react"));
|
|
21890
21904
|
var import_react33 = require("react");
|
|
21891
21905
|
var import_lucide_react56 = require("lucide-react");
|
|
21892
21906
|
var import_jsx_runtime100 = require("react/jsx-runtime");
|
|
@@ -22273,7 +22287,7 @@ function OpportunitySummaryTab({
|
|
|
22273
22287
|
var _a2;
|
|
22274
22288
|
return (_a2 = docStatusOverrides[doc.id]) != null ? _a2 : doc.status;
|
|
22275
22289
|
}
|
|
22276
|
-
const checklistProgress =
|
|
22290
|
+
const checklistProgress = React47.useMemo(() => {
|
|
22277
22291
|
var _a2, _b2;
|
|
22278
22292
|
const map = /* @__PURE__ */ new Map();
|
|
22279
22293
|
for (const doc of documents) {
|
|
@@ -22291,7 +22305,7 @@ function OpportunitySummaryTab({
|
|
|
22291
22305
|
}
|
|
22292
22306
|
return Array.from(map.entries()).map(([name, data]) => __spreadValues({ name }, data));
|
|
22293
22307
|
}, [documents, docStatusOverrides]);
|
|
22294
|
-
const groupedDocs =
|
|
22308
|
+
const groupedDocs = React47.useMemo(() => {
|
|
22295
22309
|
var _a2;
|
|
22296
22310
|
if (documents.length <= 5 || !documents.some((d) => d.checklistItem))
|
|
22297
22311
|
return null;
|
|
@@ -22767,7 +22781,7 @@ function OpportunitySummaryTab({
|
|
|
22767
22781
|
}
|
|
22768
22782
|
|
|
22769
22783
|
// src/components/ui/sidebar-nav.tsx
|
|
22770
|
-
var
|
|
22784
|
+
var React48 = __toESM(require("react"));
|
|
22771
22785
|
var import_lucide_react57 = require("lucide-react");
|
|
22772
22786
|
var import_accordion8 = require("@base-ui/react/accordion");
|
|
22773
22787
|
var import_jsx_runtime101 = require("react/jsx-runtime");
|
|
@@ -22868,8 +22882,8 @@ function CollapsibleNavItem({
|
|
|
22868
22882
|
var _a, _b;
|
|
22869
22883
|
const Icon = item.icon;
|
|
22870
22884
|
const hasActiveChild = (_b = (_a = item.subItems) == null ? void 0 : _a.some((sub) => sub.isActive)) != null ? _b : false;
|
|
22871
|
-
const [open, setOpen] =
|
|
22872
|
-
|
|
22885
|
+
const [open, setOpen] = React48.useState(hasActiveChild);
|
|
22886
|
+
React48.useEffect(() => {
|
|
22873
22887
|
if (hasActiveChild) setOpen(true);
|
|
22874
22888
|
}, [hasActiveChild]);
|
|
22875
22889
|
if (collapsed) {
|
|
@@ -22978,13 +22992,13 @@ function SidebarNav({
|
|
|
22978
22992
|
onCollapsedChange,
|
|
22979
22993
|
className
|
|
22980
22994
|
}) {
|
|
22981
|
-
const [userMenuOpen, setUserMenuOpen] =
|
|
22982
|
-
const navScrollRef =
|
|
22983
|
-
const expandedScrollRef =
|
|
22984
|
-
|
|
22995
|
+
const [userMenuOpen, setUserMenuOpen] = React48.useState(false);
|
|
22996
|
+
const navScrollRef = React48.useRef(null);
|
|
22997
|
+
const expandedScrollRef = React48.useRef(0);
|
|
22998
|
+
React48.useEffect(() => {
|
|
22985
22999
|
if (collapsed) setUserMenuOpen(false);
|
|
22986
23000
|
}, [collapsed]);
|
|
22987
|
-
|
|
23001
|
+
React48.useLayoutEffect(() => {
|
|
22988
23002
|
const nav = navScrollRef.current;
|
|
22989
23003
|
if (!nav) return;
|
|
22990
23004
|
if (!collapsed) {
|
|
@@ -23363,7 +23377,7 @@ function PipelineBoard({
|
|
|
23363
23377
|
}
|
|
23364
23378
|
|
|
23365
23379
|
// src/components/ui/pipeline-chart.tsx
|
|
23366
|
-
var
|
|
23380
|
+
var React49 = __toESM(require("react"));
|
|
23367
23381
|
var import_jsx_runtime104 = require("react/jsx-runtime");
|
|
23368
23382
|
function formatValue(v) {
|
|
23369
23383
|
return formatCurrencyAbbrev(v);
|
|
@@ -23381,7 +23395,7 @@ function PipelineChart({
|
|
|
23381
23395
|
className
|
|
23382
23396
|
}) {
|
|
23383
23397
|
const themeVars = useThemeVars();
|
|
23384
|
-
const [activeId, setActiveId] =
|
|
23398
|
+
const [activeId, setActiveId] = React49.useState(null);
|
|
23385
23399
|
const nonEmpty = stages.filter((s) => s.value > 0);
|
|
23386
23400
|
const total = nonEmpty.reduce((sum, s) => sum + s.value, 0);
|
|
23387
23401
|
if (total === 0 || stages.length === 0) {
|
|
@@ -23474,7 +23488,7 @@ function PipelineChart({
|
|
|
23474
23488
|
}
|
|
23475
23489
|
|
|
23476
23490
|
// src/components/ui/pipeline-dialogs.tsx
|
|
23477
|
-
var
|
|
23491
|
+
var React50 = __toESM(require("react"));
|
|
23478
23492
|
var import_date_fns4 = require("date-fns");
|
|
23479
23493
|
var import_jsx_runtime105 = require("react/jsx-runtime");
|
|
23480
23494
|
function DeleteOpportunityDialog({
|
|
@@ -23588,10 +23602,10 @@ function PutOnHoldDialog({
|
|
|
23588
23602
|
onSave,
|
|
23589
23603
|
className
|
|
23590
23604
|
}) {
|
|
23591
|
-
const [duration, setDuration] =
|
|
23592
|
-
const [customDate, setCustomDate] =
|
|
23593
|
-
const today =
|
|
23594
|
-
const resolvedDate =
|
|
23605
|
+
const [duration, setDuration] = React50.useState("90");
|
|
23606
|
+
const [customDate, setCustomDate] = React50.useState();
|
|
23607
|
+
const today = React50.useMemo(() => (0, import_date_fns4.startOfDay)(/* @__PURE__ */ new Date()), []);
|
|
23608
|
+
const resolvedDate = React50.useMemo(() => {
|
|
23595
23609
|
if (duration === "custom") return customDate;
|
|
23596
23610
|
return (0, import_date_fns4.addDays)(today, parseInt(duration, 10));
|
|
23597
23611
|
}, [duration, customDate, today]);
|
|
@@ -23600,7 +23614,7 @@ function PutOnHoldDialog({
|
|
|
23600
23614
|
if (!resolvedDate) return;
|
|
23601
23615
|
onSave((0, import_date_fns4.format)(resolvedDate, "yyyy-MM-dd"));
|
|
23602
23616
|
}
|
|
23603
|
-
|
|
23617
|
+
React50.useEffect(() => {
|
|
23604
23618
|
if (open) {
|
|
23605
23619
|
setDuration("90");
|
|
23606
23620
|
setCustomDate(void 0);
|
|
@@ -26214,7 +26228,7 @@ function ApplicationMobileLayout({
|
|
|
26214
26228
|
}
|
|
26215
26229
|
|
|
26216
26230
|
// src/components/ui/income-work-details.tsx
|
|
26217
|
-
var
|
|
26231
|
+
var React60 = __toESM(require("react"));
|
|
26218
26232
|
|
|
26219
26233
|
// src/components/ui/loan-option-group.tsx
|
|
26220
26234
|
var import_jsx_runtime126 = require("react/jsx-runtime");
|
|
@@ -26506,10 +26520,10 @@ function IncomeWorkDetails({
|
|
|
26506
26520
|
onConnectMore,
|
|
26507
26521
|
className
|
|
26508
26522
|
}) {
|
|
26509
|
-
const [openItems, setOpenItems] =
|
|
26523
|
+
const [openItems, setOpenItems] = React60.useState(
|
|
26510
26524
|
sources.length > 0 ? [sources[0].id] : []
|
|
26511
26525
|
);
|
|
26512
|
-
|
|
26526
|
+
React60.useEffect(() => {
|
|
26513
26527
|
setOpenItems((current) => {
|
|
26514
26528
|
const currentSet = new Set(current);
|
|
26515
26529
|
const newIds = sources.map((s) => s.id).filter((id) => !currentSet.has(id));
|
|
@@ -26680,7 +26694,7 @@ function LoanEntryShell({
|
|
|
26680
26694
|
}
|
|
26681
26695
|
|
|
26682
26696
|
// src/components/ui/loan-wizard-shell.tsx
|
|
26683
|
-
var
|
|
26697
|
+
var React61 = __toESM(require("react"));
|
|
26684
26698
|
var import_jsx_runtime130 = require("react/jsx-runtime");
|
|
26685
26699
|
function LoanWizardShell({
|
|
26686
26700
|
logo,
|
|
@@ -26720,7 +26734,7 @@ function LoanWizardShell({
|
|
|
26720
26734
|
] }),
|
|
26721
26735
|
/* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { className: "flex shrink-0 items-center justify-between px-4 py-8 sm:px-8 sm:py-12 lg:px-[200px]", children: [
|
|
26722
26736
|
/* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
26723
|
-
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)("h1", { className: "text-2xl font-bold text-foreground lg:text-[38px] lg:leading-tight", children: heroTitle.split("\n").map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
|
|
26737
|
+
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)("h1", { className: "text-2xl font-bold text-foreground lg:text-[38px] lg:leading-tight", children: heroTitle.split("\n").map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(React61.Fragment, { children: [
|
|
26724
26738
|
line,
|
|
26725
26739
|
i < heroTitle.split("\n").length - 1 && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("br", {})
|
|
26726
26740
|
] }, i)) }),
|
|
@@ -27579,6 +27593,7 @@ function EditorPlaceholder() {
|
|
|
27579
27593
|
SelectGroup,
|
|
27580
27594
|
SelectItem,
|
|
27581
27595
|
SelectLabel,
|
|
27596
|
+
SelectPortalProvider,
|
|
27582
27597
|
SelectScrollDownButton,
|
|
27583
27598
|
SelectScrollUpButton,
|
|
27584
27599
|
SelectSeparator,
|