@fluid-app/portal-sdk 0.1.199 → 0.1.201
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/dist/{ContactsScreen-DvohvoOE.cjs → ContactsScreen-BQ6pvYOa.cjs} +291 -281
- package/dist/ContactsScreen-BQ6pvYOa.cjs.map +1 -0
- package/dist/{ContactsScreen-Cheiwaxn.cjs → ContactsScreen-Bw2GcYtk.cjs} +2 -2
- package/dist/{ContactsScreen-BtBNMZzG.mjs → ContactsScreen-BzRFTCBS.mjs} +17 -7
- package/dist/ContactsScreen-BzRFTCBS.mjs.map +1 -0
- package/dist/{FluidProvider-D177ez3m.cjs → FluidProvider-BRkRo8Wl.cjs} +12 -992
- package/dist/FluidProvider-BRkRo8Wl.cjs.map +1 -0
- package/dist/{FluidProvider-DiJy4Zve.mjs → FluidProvider-BTZAiT69.mjs} +9 -820
- package/dist/FluidProvider-BTZAiT69.mjs.map +1 -0
- package/dist/{MessagingScreen-Cu3tcpPs.mjs → MessagingScreen-Bk3Eh1dN.mjs} +2 -2
- package/dist/{MessagingScreen-Cu3tcpPs.mjs.map → MessagingScreen-Bk3Eh1dN.mjs.map} +1 -1
- package/dist/{MessagingScreen-Ysi48svi.cjs → MessagingScreen-DN2eQRxF.cjs} +6 -6
- package/dist/{MessagingScreen-gKidMcrr.cjs → MessagingScreen-DtDbS3VZ.cjs} +2 -2
- package/dist/{MessagingScreen-gKidMcrr.cjs.map → MessagingScreen-DtDbS3VZ.cjs.map} +1 -1
- package/dist/{PortalContentApiProvider-CPnqELEX.cjs → PortalContentApiProvider-BDbrZCyI.cjs} +115 -89
- package/dist/PortalContentApiProvider-BDbrZCyI.cjs.map +1 -0
- package/dist/{PortalContentApiProvider-CWRAw9kL.mjs → PortalContentApiProvider-CzLqEN5C.mjs} +116 -90
- package/dist/PortalContentApiProvider-CzLqEN5C.mjs.map +1 -0
- package/dist/{ProductsScreen-CQ5-A8AL.cjs → ProductsScreen-68jB202M.cjs} +2 -2
- package/dist/{ProductsScreen-CQ5-A8AL.cjs.map → ProductsScreen-68jB202M.cjs.map} +1 -1
- package/dist/{ProductsScreen-CexZ0gx9.mjs → ProductsScreen-BeNUsjh1.mjs} +2 -2
- package/dist/{ProductsScreen-Al6H4ujs.mjs → ProductsScreen-BidL3ZF5.mjs} +2 -2
- package/dist/{ProductsScreen-Al6H4ujs.mjs.map → ProductsScreen-BidL3ZF5.mjs.map} +1 -1
- package/dist/{ProductsScreen-BnwMOZ4-.cjs → ProductsScreen-Bq0f4pQL.cjs} +2 -2
- package/dist/{ProfileScreen-CGS7YkcT.cjs → ProfileScreen-BMNq0NEB.cjs} +6 -6
- package/dist/{ProfileScreen-hE1S_99P.mjs → ProfileScreen-D-pTegtY.mjs} +3 -3
- package/dist/{ProfileScreen-hE1S_99P.mjs.map → ProfileScreen-D-pTegtY.mjs.map} +1 -1
- package/dist/{ProfileScreen-DJZoMzE6.cjs → ProfileScreen-D5OxmzhM.cjs} +101 -101
- package/dist/{ProfileScreen-DJZoMzE6.cjs.map → ProfileScreen-D5OxmzhM.cjs.map} +1 -1
- package/dist/{QuickShareWidget-0GD4KWAr.cjs → QuickShareWidget-C_p3tPs5.cjs} +2 -2
- package/dist/QuickShareWidget-C_p3tPs5.cjs.map +1 -0
- package/dist/{QuickShareWidget-DZzrQjOx.mjs → QuickShareWidget-xKcV3ZQ5.mjs} +2 -2
- package/dist/QuickShareWidget-xKcV3ZQ5.mjs.map +1 -0
- package/dist/{ShareablesScreen-CzTU7e0l.mjs → ShareablesScreen-BRfgOnpL.mjs} +2 -2
- package/dist/{ShareablesScreen-CzTU7e0l.mjs.map → ShareablesScreen-BRfgOnpL.mjs.map} +1 -1
- package/dist/{ShareablesScreen-DujtMoAi.cjs → ShareablesScreen-BYP65ZnU.cjs} +2 -2
- package/dist/{ShareablesScreen-CmZ5CX99.cjs → ShareablesScreen-CCqADUXE.cjs} +2 -2
- package/dist/{ShareablesScreen-CmZ5CX99.cjs.map → ShareablesScreen-CCqADUXE.cjs.map} +1 -1
- package/dist/{ShareablesScreen-yscAsNpq.mjs → ShareablesScreen-YnNF0dD6.mjs} +2 -2
- package/dist/{ShopScreen-Bdo59te-.mjs → ShopScreen-BOJGcSyG.mjs} +3 -3
- package/dist/{ShopScreen-Bdo59te-.mjs.map → ShopScreen-BOJGcSyG.mjs.map} +1 -1
- package/dist/{ShopScreen-R9zk7d5d.cjs → ShopScreen-BzyBZ24D.cjs} +6 -6
- package/dist/{ShopScreen-DKlDKNom.cjs → ShopScreen-DeLp93hN.cjs} +3 -3
- package/dist/{ShopScreen-DKlDKNom.cjs.map → ShopScreen-DeLp93hN.cjs.map} +1 -1
- package/dist/{SpacerWidget-Da_sNa_X.mjs → SpacerWidget-BJFO-Xyh.mjs} +2 -2
- package/dist/SpacerWidget-BJFO-Xyh.mjs.map +1 -0
- package/dist/{SpacerWidget-CLFbkgoz.cjs → SpacerWidget-D9lOLPr5.cjs} +2 -2
- package/dist/SpacerWidget-D9lOLPr5.cjs.map +1 -0
- package/dist/{TableWidget-lKjTu7Go.cjs → TableWidget-C7qiWZc3.cjs} +1 -1
- package/dist/{TableWidget-B65hwjKS.mjs → TableWidget-DRByd9ig.mjs} +9 -9
- package/dist/TableWidget-DRByd9ig.mjs.map +1 -0
- package/dist/{TableWidget-FDbnEYZb.cjs → TableWidget-DUnz9hrD.cjs} +9 -9
- package/dist/TableWidget-DUnz9hrD.cjs.map +1 -0
- package/dist/index.cjs +68 -70
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +126 -133
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +126 -133
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +25 -25
- package/dist/src-BNcNh8fM.cjs +963 -0
- package/dist/src-BNcNh8fM.cjs.map +1 -0
- package/dist/src-BjCPR0aG.mjs +788 -0
- package/dist/src-BjCPR0aG.mjs.map +1 -0
- package/package.json +16 -16
- package/dist/ContactsScreen-BtBNMZzG.mjs.map +0 -1
- package/dist/ContactsScreen-DvohvoOE.cjs.map +0 -1
- package/dist/FluidProvider-D177ez3m.cjs.map +0 -1
- package/dist/FluidProvider-DiJy4Zve.mjs.map +0 -1
- package/dist/PortalContentApiProvider-CPnqELEX.cjs.map +0 -1
- package/dist/PortalContentApiProvider-CWRAw9kL.mjs.map +0 -1
- package/dist/QuickShareWidget-0GD4KWAr.cjs.map +0 -1
- package/dist/QuickShareWidget-DZzrQjOx.mjs.map +0 -1
- package/dist/SpacerWidget-CLFbkgoz.cjs.map +0 -1
- package/dist/SpacerWidget-Da_sNa_X.mjs.map +0 -1
- package/dist/TableWidget-B65hwjKS.mjs.map +0 -1
- package/dist/TableWidget-FDbnEYZb.cjs.map +0 -1
- package/dist/countries-api-context-Dob_AzPO.mjs +0 -13
- package/dist/countries-api-context-Dob_AzPO.mjs.map +0 -1
- package/dist/countries-api-context-G-NW4BoH.cjs +0 -25
- package/dist/countries-api-context-G-NW4BoH.cjs.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-9hOWP6kD.cjs");
|
|
2
|
-
const
|
|
2
|
+
const require_src = require("./src-BNcNh8fM.cjs");
|
|
3
3
|
const require_parse_api_errors = require("./parse-api-errors-Br4K5NuA.cjs");
|
|
4
4
|
const require_PortalTenantClientProvider = require("./PortalTenantClientProvider-CVv-4rQ9.cjs");
|
|
5
|
-
const require_src = require("./src-D57IFKXU.cjs");
|
|
5
|
+
const require_src$1 = require("./src-D57IFKXU.cjs");
|
|
6
6
|
const require_ScreenHeaderContext = require("./ScreenHeaderContext-BXgWydjB.cjs");
|
|
7
7
|
const require_dist = require("./dist-CN_rfvBt.cjs");
|
|
8
8
|
const require_SearchSort = require("./SearchSort-CUDMZIkf.cjs");
|
|
@@ -116,7 +116,7 @@ function getStatusStyle(status) {
|
|
|
116
116
|
}
|
|
117
117
|
function StatusBadge({ status, label, className }) {
|
|
118
118
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
119
|
-
className: require_src.cn("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold capitalize", getStatusStyle(status), className),
|
|
119
|
+
className: require_src$1.cn("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold capitalize", getStatusStyle(status), className),
|
|
120
120
|
children: label ?? status
|
|
121
121
|
});
|
|
122
122
|
}
|
|
@@ -220,9 +220,9 @@ function resolveContactGroupLabels(contact) {
|
|
|
220
220
|
function RepContactCard({ contact, selected, onToggleSelect, onRowClick, onEditContact, setSelectedContacts, setOpenDeleteModal, groupsByName }) {
|
|
221
221
|
const groupLabels = resolveContactGroupLabels(contact);
|
|
222
222
|
const groupTitle = groupLabels.length > 0 ? groupLabels.join(", ") : void 0;
|
|
223
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Card, {
|
|
224
|
-
className: require_src.cn("border-border hover:bg-accent/30 min-h-[100px] w-full flex-col items-start justify-center gap-0 py-3 shadow-sm transition-colors sm:py-0", selected && "bg-accent/40 border-primary/25 ring-primary/20 ring-1"),
|
|
225
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.CardContent, {
|
|
223
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Card, {
|
|
224
|
+
className: require_src$1.cn("border-border hover:bg-accent/30 min-h-[100px] w-full flex-col items-start justify-center gap-0 py-3 shadow-sm transition-colors sm:py-0", selected && "bg-accent/40 border-primary/25 ring-primary/20 ring-1"),
|
|
225
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.CardContent, {
|
|
226
226
|
className: "w-full px-3 py-0",
|
|
227
227
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
228
228
|
className: "flex items-center gap-2 sm:gap-3",
|
|
@@ -242,12 +242,12 @@ function RepContactCard({ contact, selected, onToggleSelect, onRowClick, onEditC
|
|
|
242
242
|
type: "button",
|
|
243
243
|
className: "text-foreground focus-visible:ring-ring flex min-w-0 flex-1 items-center gap-2 rounded-md text-left outline-none focus-visible:ring-2 sm:gap-3",
|
|
244
244
|
onClick: () => onRowClick?.(contact),
|
|
245
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Avatar, {
|
|
245
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Avatar, {
|
|
246
246
|
className: "size-12 shrink-0",
|
|
247
|
-
children: [contact.avatar_url ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AvatarImage, {
|
|
247
|
+
children: [contact.avatar_url ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AvatarImage, {
|
|
248
248
|
src: contact.avatar_url,
|
|
249
249
|
alt: contact.full_name || "Contact"
|
|
250
|
-
}) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AvatarFallback, {
|
|
250
|
+
}) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AvatarFallback, {
|
|
251
251
|
className: "border-border text-foreground bg-accent ring-border/80 text-xs font-semibold ring-1",
|
|
252
252
|
children: getInitials(contact.full_name)
|
|
253
253
|
})]
|
|
@@ -274,9 +274,14 @@ function RepContactCard({ contact, selected, onToggleSelect, onRowClick, onEditC
|
|
|
274
274
|
title: groupTitle,
|
|
275
275
|
children: [groupLabels.length > 0 ? groupLabels.slice(0, 2).map((label, index) => {
|
|
276
276
|
const group = groupsByName.get(label);
|
|
277
|
+
const backgroundColor = group?.avatar_background ?? "var(--color-muted)";
|
|
278
|
+
const textColor = group?.avatar_background ? require_src.getContrastingTextColor(group.avatar_background) : null;
|
|
277
279
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
278
|
-
className: "
|
|
279
|
-
style: {
|
|
280
|
+
className: require_src$1.cn("border-border inline-flex max-w-[min(100%,10rem)] shrink items-center gap-1 truncate rounded-full border px-2 py-0.5 font-normal capitalize", !textColor && "text-foreground"),
|
|
281
|
+
style: {
|
|
282
|
+
backgroundColor,
|
|
283
|
+
...textColor ? { color: textColor } : {}
|
|
284
|
+
},
|
|
280
285
|
title: label,
|
|
281
286
|
children: [group?.avatar && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: group.avatar }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
282
287
|
className: "truncate",
|
|
@@ -294,20 +299,20 @@ function RepContactCard({ contact, selected, onToggleSelect, onRowClick, onEditC
|
|
|
294
299
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
295
300
|
className: "flex shrink-0 items-center",
|
|
296
301
|
onClick: (e) => e.stopPropagation(),
|
|
297
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuTrigger, {
|
|
302
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuTrigger, {
|
|
298
303
|
asChild: true,
|
|
299
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
304
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
300
305
|
variant: "ghost",
|
|
301
306
|
size: "icon-xs",
|
|
302
307
|
"aria-label": "Contact actions",
|
|
303
308
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.EllipsisVertical, { className: "h-4 w-4" })
|
|
304
309
|
})
|
|
305
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenuContent, {
|
|
310
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenuContent, {
|
|
306
311
|
align: "end",
|
|
307
|
-
children: [onEditContact && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenuItem, {
|
|
312
|
+
children: [onEditContact && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenuItem, {
|
|
308
313
|
onClick: () => onEditContact(contact),
|
|
309
314
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Pencil, { className: "h-3.5 w-3.5" }), "Edit"]
|
|
310
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuSeparator, {})] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenuItem, {
|
|
315
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuSeparator, {})] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenuItem, {
|
|
311
316
|
className: "text-destructive",
|
|
312
317
|
onClick: () => {
|
|
313
318
|
setSelectedContacts([contact]);
|
|
@@ -458,17 +463,17 @@ function ContactsTable({ setSelectedContacts, setOpenDeleteModal, onEditContact,
|
|
|
458
463
|
className: "text-muted-foreground text-sm",
|
|
459
464
|
children: "Select all"
|
|
460
465
|
})]
|
|
461
|
-
}), selectedIds.size > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuTrigger, {
|
|
466
|
+
}), selectedIds.size > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuTrigger, {
|
|
462
467
|
asChild: true,
|
|
463
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
|
|
468
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Button, {
|
|
464
469
|
variant: "ghost",
|
|
465
470
|
size: "sm",
|
|
466
471
|
className: "h-8 gap-1 text-xs",
|
|
467
472
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.EllipsisVertical, { className: "h-4 w-4" }), "Actions"]
|
|
468
473
|
})
|
|
469
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuContent, {
|
|
474
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuContent, {
|
|
470
475
|
align: "end",
|
|
471
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenuItem, {
|
|
476
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenuItem, {
|
|
472
477
|
className: "text-destructive",
|
|
473
478
|
onClick: handleBulkDelete,
|
|
474
479
|
children: [
|
|
@@ -480,20 +485,20 @@ function ContactsTable({ setSelectedContacts, setOpenDeleteModal, onEditContact,
|
|
|
480
485
|
]
|
|
481
486
|
})
|
|
482
487
|
})] }) : null]
|
|
483
|
-
}) : null, isLoading ? Array(5).fill(0).map((_, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Card, {
|
|
488
|
+
}) : null, isLoading ? Array(5).fill(0).map((_, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Card, {
|
|
484
489
|
className: "border-border h-[100px] w-full flex-col items-start justify-center gap-0 py-0 shadow-sm",
|
|
485
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.CardContent, {
|
|
490
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.CardContent, {
|
|
486
491
|
className: "w-full px-3 py-0",
|
|
487
492
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
488
493
|
className: "flex items-center gap-2 sm:gap-3",
|
|
489
494
|
children: [
|
|
490
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-3.5 w-3.5 shrink-0 rounded sm:h-4 sm:w-4" }),
|
|
491
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "size-12 shrink-0 rounded-full" }),
|
|
492
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-3.5 max-w-[32%] shrink sm:max-w-none sm:flex-[1.15]" }),
|
|
493
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-3.5 min-w-0 flex-[1.35]" }),
|
|
494
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-3.5 min-w-0 flex-[0.95]" }),
|
|
495
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-3.5 min-w-0 flex-[0.95]" }),
|
|
496
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "size-7 shrink-0 rounded-md" })
|
|
495
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-3.5 w-3.5 shrink-0 rounded sm:h-4 sm:w-4" }),
|
|
496
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "size-12 shrink-0 rounded-full" }),
|
|
497
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-3.5 max-w-[32%] shrink sm:max-w-none sm:flex-[1.15]" }),
|
|
498
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-3.5 min-w-0 flex-[1.35]" }),
|
|
499
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-3.5 min-w-0 flex-[0.95]" }),
|
|
500
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-3.5 min-w-0 flex-[0.95]" }),
|
|
501
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "size-7 shrink-0 rounded-md" })
|
|
497
502
|
]
|
|
498
503
|
})
|
|
499
504
|
})
|
|
@@ -516,7 +521,7 @@ function ContactsTable({ setSelectedContacts, setOpenDeleteModal, onEditContact,
|
|
|
516
521
|
className: "border-border border-b p-4",
|
|
517
522
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
518
523
|
className: "space-y-2",
|
|
519
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-3/4" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-3 w-1/2" })]
|
|
524
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-4 w-3/4" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-3 w-1/2" })]
|
|
520
525
|
})
|
|
521
526
|
}, `skeleton-${i}`)) : items.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
522
527
|
className: "text-muted-foreground px-3 py-8 text-center text-sm",
|
|
@@ -540,7 +545,7 @@ function ContactsTable({ setSelectedContacts, setOpenDeleteModal, onEditContact,
|
|
|
540
545
|
}, contact.id))
|
|
541
546
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
542
547
|
className: "hidden md:block",
|
|
543
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Table, {
|
|
548
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Table, {
|
|
544
549
|
className: "min-w-full table-fixed",
|
|
545
550
|
children: [
|
|
546
551
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("colgroup", { children: [
|
|
@@ -552,10 +557,10 @@ function ContactsTable({ setSelectedContacts, setOpenDeleteModal, onEditContact,
|
|
|
552
557
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("col", { className: "w-[15%] min-w-[100px]" }),
|
|
553
558
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("col", { className: "w-[50px]" })
|
|
554
559
|
] }),
|
|
555
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableHeader, {
|
|
560
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableHeader, {
|
|
556
561
|
className: "bg-muted",
|
|
557
|
-
children: selectedIds.size > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.TableRow, { children: [
|
|
558
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableHead, {
|
|
562
|
+
children: selectedIds.size > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.TableRow, { children: [
|
|
563
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableHead, {
|
|
559
564
|
className: "px-3",
|
|
560
565
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
561
566
|
ref: selectAllRef,
|
|
@@ -566,7 +571,7 @@ function ContactsTable({ setSelectedContacts, setOpenDeleteModal, onEditContact,
|
|
|
566
571
|
className: "accent-primary h-4 w-4 rounded"
|
|
567
572
|
})
|
|
568
573
|
}),
|
|
569
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableHead, {
|
|
574
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableHead, {
|
|
570
575
|
colSpan: 5,
|
|
571
576
|
className: "px-3",
|
|
572
577
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
@@ -574,18 +579,18 @@ function ContactsTable({ setSelectedContacts, setOpenDeleteModal, onEditContact,
|
|
|
574
579
|
children: [selectedIds.size, " selected"]
|
|
575
580
|
})
|
|
576
581
|
}),
|
|
577
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableHead, {
|
|
582
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableHead, {
|
|
578
583
|
className: "px-3",
|
|
579
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuTrigger, {
|
|
584
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuTrigger, {
|
|
580
585
|
asChild: true,
|
|
581
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
586
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
582
587
|
variant: "ghost",
|
|
583
588
|
size: "icon-xs",
|
|
584
589
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.EllipsisVertical, { className: "h-4 w-4" })
|
|
585
590
|
})
|
|
586
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuContent, {
|
|
591
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuContent, {
|
|
587
592
|
align: "end",
|
|
588
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenuItem, {
|
|
593
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenuItem, {
|
|
589
594
|
className: "text-destructive",
|
|
590
595
|
onClick: handleBulkDelete,
|
|
591
596
|
children: [
|
|
@@ -598,8 +603,8 @@ function ContactsTable({ setSelectedContacts, setOpenDeleteModal, onEditContact,
|
|
|
598
603
|
})
|
|
599
604
|
})] })
|
|
600
605
|
})
|
|
601
|
-
] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.TableRow, { children: [
|
|
602
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableHead, {
|
|
606
|
+
] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.TableRow, { children: [
|
|
607
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableHead, {
|
|
603
608
|
className: "px-3",
|
|
604
609
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
605
610
|
ref: selectAllRef,
|
|
@@ -610,66 +615,66 @@ function ContactsTable({ setSelectedContacts, setOpenDeleteModal, onEditContact,
|
|
|
610
615
|
className: "accent-primary h-4 w-4 rounded"
|
|
611
616
|
})
|
|
612
617
|
}),
|
|
613
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableHead, {
|
|
618
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableHead, {
|
|
614
619
|
className: "text-muted-foreground px-3 text-xs",
|
|
615
620
|
children: "ID"
|
|
616
621
|
}),
|
|
617
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableHead, {
|
|
622
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableHead, {
|
|
618
623
|
className: "text-muted-foreground px-3 text-xs",
|
|
619
624
|
children: "Name"
|
|
620
625
|
}),
|
|
621
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableHead, {
|
|
626
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableHead, {
|
|
622
627
|
className: "text-muted-foreground px-3 text-xs",
|
|
623
628
|
children: "Email"
|
|
624
629
|
}),
|
|
625
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableHead, {
|
|
630
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableHead, {
|
|
626
631
|
className: "text-muted-foreground px-3 text-xs",
|
|
627
632
|
children: "Phone"
|
|
628
633
|
}),
|
|
629
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableHead, {
|
|
634
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableHead, {
|
|
630
635
|
className: "text-muted-foreground px-3 text-xs",
|
|
631
636
|
children: "Status"
|
|
632
637
|
}),
|
|
633
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableHead, { className: "px-3" })
|
|
638
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableHead, { className: "px-3" })
|
|
634
639
|
] })
|
|
635
640
|
}),
|
|
636
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableBody, {
|
|
641
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableBody, {
|
|
637
642
|
className: "bg-background",
|
|
638
|
-
children: isLoading ? Array(5).fill(0).map((_, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.TableRow, { children: [
|
|
639
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
643
|
+
children: isLoading ? Array(5).fill(0).map((_, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.TableRow, { children: [
|
|
644
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
640
645
|
className: "px-3 py-3",
|
|
641
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-4" })
|
|
646
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-4 w-4" })
|
|
642
647
|
}),
|
|
643
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
648
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
644
649
|
className: "px-3 py-3",
|
|
645
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-8" })
|
|
650
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-4 w-8" })
|
|
646
651
|
}),
|
|
647
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
652
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
648
653
|
className: "px-3 py-3",
|
|
649
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-24" })
|
|
654
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-4 w-24" })
|
|
650
655
|
}),
|
|
651
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
656
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
652
657
|
className: "px-3 py-3",
|
|
653
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-32" })
|
|
658
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-4 w-32" })
|
|
654
659
|
}),
|
|
655
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
660
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
656
661
|
className: "px-3 py-3",
|
|
657
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-20" })
|
|
662
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-4 w-20" })
|
|
658
663
|
}),
|
|
659
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
664
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
660
665
|
className: "px-3 py-3",
|
|
661
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-16" })
|
|
666
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-4 w-16" })
|
|
662
667
|
}),
|
|
663
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, { className: "px-3 py-3" })
|
|
664
|
-
] }, `skeleton-${i}`)) : items.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableRow, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
668
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, { className: "px-3 py-3" })
|
|
669
|
+
] }, `skeleton-${i}`)) : items.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableRow, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
665
670
|
colSpan: 7,
|
|
666
671
|
className: "text-muted-foreground px-3 py-8 text-center",
|
|
667
672
|
children: "No contacts found"
|
|
668
|
-
}) }) : displayItems.map((contact) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.TableRow, {
|
|
669
|
-
className: require_src.cn("cursor-pointer", selectedIds.has(contact.id) && "bg-accent"),
|
|
673
|
+
}) }) : displayItems.map((contact) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.TableRow, {
|
|
674
|
+
className: require_src$1.cn("cursor-pointer", selectedIds.has(contact.id) && "bg-accent"),
|
|
670
675
|
onClick: () => onRowClick?.(contact),
|
|
671
676
|
children: [
|
|
672
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
677
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
673
678
|
className: "px-3 py-3",
|
|
674
679
|
onClick: (e) => e.stopPropagation(),
|
|
675
680
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
@@ -680,11 +685,11 @@ function ContactsTable({ setSelectedContacts, setOpenDeleteModal, onEditContact,
|
|
|
680
685
|
className: "accent-primary h-4 w-4 rounded"
|
|
681
686
|
})
|
|
682
687
|
}),
|
|
683
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
688
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
684
689
|
className: "px-3 py-3 text-right",
|
|
685
690
|
children: contact.id
|
|
686
691
|
}),
|
|
687
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
692
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
688
693
|
className: "px-3 py-3",
|
|
689
694
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
690
695
|
className: "max-w-32 truncate font-semibold",
|
|
@@ -692,7 +697,7 @@ function ContactsTable({ setSelectedContacts, setOpenDeleteModal, onEditContact,
|
|
|
692
697
|
children: contact.full_name || "—"
|
|
693
698
|
})
|
|
694
699
|
}),
|
|
695
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
700
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
696
701
|
className: "px-3 py-3",
|
|
697
702
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
698
703
|
className: "max-w-32 truncate",
|
|
@@ -700,30 +705,30 @@ function ContactsTable({ setSelectedContacts, setOpenDeleteModal, onEditContact,
|
|
|
700
705
|
children: contact.email || "—"
|
|
701
706
|
})
|
|
702
707
|
}),
|
|
703
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
708
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
704
709
|
className: "px-3 py-3",
|
|
705
710
|
children: contact.phone || "—"
|
|
706
711
|
}),
|
|
707
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
712
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
708
713
|
className: "px-3 py-3",
|
|
709
714
|
children: contact.status ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StatusBadge, { status: contact.status }) : "—"
|
|
710
715
|
}),
|
|
711
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
716
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TableCell, {
|
|
712
717
|
className: "px-3 py-3",
|
|
713
718
|
onClick: (e) => e.stopPropagation(),
|
|
714
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuTrigger, {
|
|
719
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuTrigger, {
|
|
715
720
|
asChild: true,
|
|
716
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
721
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
717
722
|
variant: "ghost",
|
|
718
723
|
size: "icon-xs",
|
|
719
724
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.EllipsisVertical, { className: "h-4 w-4" })
|
|
720
725
|
})
|
|
721
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenuContent, {
|
|
726
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenuContent, {
|
|
722
727
|
align: "end",
|
|
723
|
-
children: [onEditContact && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenuItem, {
|
|
728
|
+
children: [onEditContact && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenuItem, {
|
|
724
729
|
onClick: () => onEditContact(contact),
|
|
725
730
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Pencil, { className: "h-3.5 w-3.5" }), "Edit"]
|
|
726
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuSeparator, {})] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenuItem, {
|
|
731
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuSeparator, {})] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenuItem, {
|
|
727
732
|
className: "text-destructive",
|
|
728
733
|
onClick: () => {
|
|
729
734
|
setSelectedContacts([contact]);
|
|
@@ -758,14 +763,14 @@ function ContactsPage({ deleteContacts, header, onEditContact, onRowClick, table
|
|
|
758
763
|
const deleteContactMutation = (0, _tanstack_react_query.useMutation)({
|
|
759
764
|
mutationFn: (ids) => deleteContacts(ids),
|
|
760
765
|
onSuccess: () => {
|
|
761
|
-
require_src.fluidToast({
|
|
766
|
+
require_src$1.fluidToast({
|
|
762
767
|
title: "Contacts deleted successfully",
|
|
763
768
|
type: "success"
|
|
764
769
|
});
|
|
765
770
|
queryClient.invalidateQueries({ queryKey: CONTACTS_QUERY_KEYS.all("contacts") });
|
|
766
771
|
},
|
|
767
772
|
onError: (error) => {
|
|
768
|
-
require_src.fluidToast({
|
|
773
|
+
require_src$1.fluidToast({
|
|
769
774
|
title: "Failed to delete contacts",
|
|
770
775
|
type: "error",
|
|
771
776
|
description: require_parse_api_errors.parseApiErrors(error)
|
|
@@ -790,15 +795,15 @@ function ContactsPage({ deleteContacts, header, onEditContact, onRowClick, table
|
|
|
790
795
|
tableLayout
|
|
791
796
|
})
|
|
792
797
|
}),
|
|
793
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialog, {
|
|
798
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialog, {
|
|
794
799
|
open: openDeleteModal,
|
|
795
800
|
onOpenChange: setOpenDeleteModal,
|
|
796
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogContent, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogTitle, { children: "Delete contact?" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogDescription, { children: [
|
|
801
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogContent, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogTitle, { children: "Delete contact?" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogDescription, { children: [
|
|
797
802
|
"Are you sure you want to delete",
|
|
798
803
|
" ",
|
|
799
804
|
selectedContacts.length === 1 ? "this contact" : `${selectedContacts.length} contacts`,
|
|
800
805
|
"? This action cannot be undone."
|
|
801
|
-
] })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogFooter, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogAction, {
|
|
806
|
+
] })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogFooter, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogAction, {
|
|
802
807
|
variant: "destructive",
|
|
803
808
|
onClick: () => deleteContactMutation.mutate(selectedContacts.map((c) => c.id)),
|
|
804
809
|
children: "Delete"
|
|
@@ -809,14 +814,14 @@ function ContactsPage({ deleteContacts, header, onEditContact, onRowClick, table
|
|
|
809
814
|
//#endregion
|
|
810
815
|
//#region ../../contacts/ui/src/screens/ContactsListScreen.tsx
|
|
811
816
|
function ContactsListScreen({ deleteContacts, onEditContact, onRowClick, onAddContact, tableLayout, header }) {
|
|
812
|
-
require_ScreenHeaderContext.useScreenHeaderActions((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
|
|
817
|
+
require_ScreenHeaderContext.useScreenHeaderActions((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Button, {
|
|
813
818
|
onClick: onAddContact,
|
|
814
819
|
size: "sm",
|
|
815
820
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Plus, { className: "mr-1 h-4 w-4" }), "Add Contact"]
|
|
816
821
|
}), [onAddContact]));
|
|
817
|
-
require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbList, {
|
|
822
|
+
require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbList, {
|
|
818
823
|
className: "text-lg",
|
|
819
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
|
|
824
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbPage, {
|
|
820
825
|
className: "font-semibold",
|
|
821
826
|
children: "Contacts"
|
|
822
827
|
}) })
|
|
@@ -833,26 +838,26 @@ function ContactsListScreen({ deleteContacts, onEditContact, onRowClick, onAddCo
|
|
|
833
838
|
//#region ../../contacts/ui/src/screens/ContactDetailScreen.tsx
|
|
834
839
|
function ContactDetailScreen({ contact, onNavigateToList, onDelete, isDeleting, children }) {
|
|
835
840
|
const [showDeleteDialog, setShowDeleteDialog] = (0, react.useState)(false);
|
|
836
|
-
require_ScreenHeaderContext.useScreenHeaderActions((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuTrigger, {
|
|
841
|
+
require_ScreenHeaderContext.useScreenHeaderActions((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuTrigger, {
|
|
837
842
|
asChild: true,
|
|
838
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
843
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
839
844
|
variant: "outline",
|
|
840
845
|
size: "icon",
|
|
841
846
|
className: "border-border",
|
|
842
847
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.EllipsisVertical, { className: "h-4 w-4" })
|
|
843
848
|
})
|
|
844
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuContent, {
|
|
849
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuContent, {
|
|
845
850
|
align: "end",
|
|
846
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuItem, {
|
|
851
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuItem, {
|
|
847
852
|
className: "text-destructive",
|
|
848
853
|
onClick: () => setShowDeleteDialog(true),
|
|
849
854
|
children: "Delete"
|
|
850
855
|
})
|
|
851
856
|
})] }), []));
|
|
852
|
-
require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.BreadcrumbList, {
|
|
857
|
+
require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.BreadcrumbList, {
|
|
853
858
|
className: "text-lg",
|
|
854
859
|
children: [
|
|
855
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbLink, {
|
|
860
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbLink, {
|
|
856
861
|
href: "#",
|
|
857
862
|
onClick: (e) => {
|
|
858
863
|
e.preventDefault();
|
|
@@ -860,25 +865,25 @@ function ContactDetailScreen({ contact, onNavigateToList, onDelete, isDeleting,
|
|
|
860
865
|
},
|
|
861
866
|
children: "Contacts"
|
|
862
867
|
}) }),
|
|
863
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbSeparator, {}),
|
|
864
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
|
|
868
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbSeparator, {}),
|
|
869
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbPage, {
|
|
865
870
|
className: "font-semibold",
|
|
866
871
|
children: contact?.full_name ?? "Contact"
|
|
867
872
|
}) })
|
|
868
873
|
]
|
|
869
874
|
}) }), [contact?.full_name, onNavigateToList]));
|
|
870
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [children, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialog, {
|
|
875
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [children, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialog, {
|
|
871
876
|
open: showDeleteDialog,
|
|
872
877
|
onOpenChange: setShowDeleteDialog,
|
|
873
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogContent, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogTitle, { children: "Delete Contact" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogDescription, { children: [
|
|
878
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogContent, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogTitle, { children: "Delete Contact" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogDescription, { children: [
|
|
874
879
|
"Are you sure you want to delete",
|
|
875
880
|
" ",
|
|
876
881
|
contact?.full_name ?? "this contact",
|
|
877
882
|
"? This action cannot be undone."
|
|
878
|
-
] })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogFooter, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogCancel, {
|
|
883
|
+
] })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogFooter, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogCancel, {
|
|
879
884
|
disabled: isDeleting,
|
|
880
885
|
children: "Cancel"
|
|
881
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogAction, {
|
|
886
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogAction, {
|
|
882
887
|
onClick: () => {
|
|
883
888
|
onDelete();
|
|
884
889
|
setShowDeleteDialog(false);
|
|
@@ -892,12 +897,12 @@ function ContactDetailScreen({ contact, onNavigateToList, onDelete, isDeleting,
|
|
|
892
897
|
//#endregion
|
|
893
898
|
//#region ../../contacts/ui/src/screens/ContactCreateScreen.tsx
|
|
894
899
|
function ContactCreateScreen({ onNavigateToList, onSubmit, isPending, children }) {
|
|
895
|
-
require_ScreenHeaderContext.useScreenHeaderActions((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
900
|
+
require_ScreenHeaderContext.useScreenHeaderActions((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
896
901
|
variant: "outline",
|
|
897
902
|
onClick: onNavigateToList,
|
|
898
903
|
disabled: isPending,
|
|
899
904
|
children: "Cancel"
|
|
900
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
905
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
901
906
|
onClick: onSubmit,
|
|
902
907
|
disabled: isPending,
|
|
903
908
|
children: isPending ? "Adding..." : "Add Contact"
|
|
@@ -906,10 +911,10 @@ function ContactCreateScreen({ onNavigateToList, onSubmit, isPending, children }
|
|
|
906
911
|
onSubmit,
|
|
907
912
|
isPending
|
|
908
913
|
]));
|
|
909
|
-
require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.BreadcrumbList, {
|
|
914
|
+
require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.BreadcrumbList, {
|
|
910
915
|
className: "text-lg",
|
|
911
916
|
children: [
|
|
912
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbLink, {
|
|
917
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbLink, {
|
|
913
918
|
href: "#",
|
|
914
919
|
onClick: (e) => {
|
|
915
920
|
e.preventDefault();
|
|
@@ -917,8 +922,8 @@ function ContactCreateScreen({ onNavigateToList, onSubmit, isPending, children }
|
|
|
917
922
|
},
|
|
918
923
|
children: "Contacts"
|
|
919
924
|
}) }),
|
|
920
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbSeparator, {}),
|
|
921
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
|
|
925
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbSeparator, {}),
|
|
926
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.BreadcrumbPage, {
|
|
922
927
|
className: "font-semibold",
|
|
923
928
|
children: "New Contact"
|
|
924
929
|
}) })
|
|
@@ -1097,7 +1102,7 @@ const ContactInfoCard = ({ contact, className, onEdit, showActions = false, onCr
|
|
|
1097
1102
|
contact.email
|
|
1098
1103
|
]);
|
|
1099
1104
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1100
|
-
className: require_src.cn("relative min-w-[250px] overflow-hidden rounded-2xl bg-black text-white shadow-lg", isDimmed && "pointer-events-none opacity-45 select-none", className),
|
|
1105
|
+
className: require_src$1.cn("relative min-w-[250px] overflow-hidden rounded-2xl bg-black text-white shadow-lg", isDimmed && "pointer-events-none opacity-45 select-none", className),
|
|
1101
1106
|
"aria-disabled": isDimmed || void 0,
|
|
1102
1107
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1103
1108
|
className: "absolute inset-0 opacity-70",
|
|
@@ -1141,12 +1146,12 @@ const ContactInfoCard = ({ contact, className, onEdit, showActions = false, onCr
|
|
|
1141
1146
|
})]
|
|
1142
1147
|
})]
|
|
1143
1148
|
}),
|
|
1144
|
-
showActions && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TooltipProvider, {
|
|
1149
|
+
showActions && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TooltipProvider, {
|
|
1145
1150
|
delayDuration: 100,
|
|
1146
1151
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1147
1152
|
className: "mb-6 flex flex-wrap gap-4",
|
|
1148
1153
|
children: [
|
|
1149
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Tooltip, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TooltipTrigger, {
|
|
1154
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Tooltip, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TooltipTrigger, {
|
|
1150
1155
|
asChild: true,
|
|
1151
1156
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
1152
1157
|
type: "button",
|
|
@@ -1155,8 +1160,8 @@ const ContactInfoCard = ({ contact, className, onEdit, showActions = false, onCr
|
|
|
1155
1160
|
className: "flex h-11 w-11 items-center justify-center rounded-lg bg-white/20 text-white/90 backdrop-blur-sm transition-colors hover:bg-white/30 disabled:cursor-not-allowed disabled:opacity-40",
|
|
1156
1161
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.MessageSquare, { className: "h-5 w-5" })
|
|
1157
1162
|
})
|
|
1158
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TooltipContent, { children: "Message" })] }),
|
|
1159
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Tooltip, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TooltipTrigger, {
|
|
1163
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TooltipContent, { children: "Message" })] }),
|
|
1164
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Tooltip, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TooltipTrigger, {
|
|
1160
1165
|
asChild: true,
|
|
1161
1166
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
1162
1167
|
type: "button",
|
|
@@ -1165,8 +1170,8 @@ const ContactInfoCard = ({ contact, className, onEdit, showActions = false, onCr
|
|
|
1165
1170
|
className: "flex h-11 w-11 items-center justify-center rounded-lg bg-white/20 text-white/90 backdrop-blur-sm transition-colors hover:bg-white/30 disabled:cursor-not-allowed disabled:opacity-40",
|
|
1166
1171
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ListChecks, { className: "h-5 w-5" })
|
|
1167
1172
|
})
|
|
1168
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TooltipContent, { children: "New Task" })] }),
|
|
1169
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Tooltip, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TooltipTrigger, {
|
|
1173
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TooltipContent, { children: "New Task" })] }),
|
|
1174
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Tooltip, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TooltipTrigger, {
|
|
1170
1175
|
asChild: true,
|
|
1171
1176
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
1172
1177
|
type: "button",
|
|
@@ -1175,8 +1180,8 @@ const ContactInfoCard = ({ contact, className, onEdit, showActions = false, onCr
|
|
|
1175
1180
|
className: "flex h-11 w-11 items-center justify-center rounded-lg bg-white/20 text-white/90 backdrop-blur-sm transition-colors hover:bg-white/30 disabled:cursor-not-allowed disabled:opacity-40",
|
|
1176
1181
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.StickyNote, { className: "h-5 w-5" })
|
|
1177
1182
|
})
|
|
1178
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TooltipContent, { children: "New Note" })] }),
|
|
1179
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Tooltip, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TooltipTrigger, {
|
|
1183
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TooltipContent, { children: "New Note" })] }),
|
|
1184
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Tooltip, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TooltipTrigger, {
|
|
1180
1185
|
asChild: true,
|
|
1181
1186
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
1182
1187
|
type: "button",
|
|
@@ -1185,7 +1190,7 @@ const ContactInfoCard = ({ contact, className, onEdit, showActions = false, onCr
|
|
|
1185
1190
|
className: "flex h-11 w-11 items-center justify-center rounded-lg bg-white/20 text-white/90 backdrop-blur-sm transition-colors hover:bg-white/30 disabled:cursor-not-allowed disabled:opacity-40",
|
|
1186
1191
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.CalendarDays, { className: "h-5 w-5" })
|
|
1187
1192
|
})
|
|
1188
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TooltipContent, { children: "Events (coming soon)" })] })
|
|
1193
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.TooltipContent, { children: "Events (coming soon)" })] })
|
|
1189
1194
|
]
|
|
1190
1195
|
})
|
|
1191
1196
|
}),
|
|
@@ -1278,7 +1283,7 @@ const ContactDetailsForm = ({ className, countries = DEFAULT_COUNTRIES, renderAv
|
|
|
1278
1283
|
}, [currentStatus]);
|
|
1279
1284
|
const initials = [watch("first_name")?.[0] ?? "", watch("last_name")?.[0] ?? ""].filter(Boolean).join("").toUpperCase() || "?";
|
|
1280
1285
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1281
|
-
className: require_src.cn("space-y-6", className),
|
|
1286
|
+
className: require_src$1.cn("space-y-6", className),
|
|
1282
1287
|
children: [renderAvatarPicker && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1283
1288
|
className: "flex flex-col items-center gap-3",
|
|
1284
1289
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
@@ -1298,196 +1303,196 @@ const ContactDetailsForm = ({ className, countries = DEFAULT_COUNTRIES, renderAv
|
|
|
1298
1303
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1299
1304
|
className: "grid grid-cols-1 gap-6 lg:grid-cols-2",
|
|
1300
1305
|
children: [
|
|
1301
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormField, {
|
|
1306
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormField, {
|
|
1302
1307
|
control,
|
|
1303
1308
|
name: "first_name",
|
|
1304
|
-
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.FormItem, { children: [
|
|
1305
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormLabel, {
|
|
1309
|
+
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.FormItem, { children: [
|
|
1310
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormLabel, {
|
|
1306
1311
|
className: "font-inter text-foreground font-medium",
|
|
1307
1312
|
children: "First Name"
|
|
1308
1313
|
}),
|
|
1309
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Input, {
|
|
1314
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Input, {
|
|
1310
1315
|
placeholder: "Enter first name",
|
|
1311
1316
|
...field,
|
|
1312
1317
|
value: field.value ?? "",
|
|
1313
1318
|
className: "ring-input"
|
|
1314
1319
|
}) }),
|
|
1315
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormMessage, {})
|
|
1320
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormMessage, {})
|
|
1316
1321
|
] })
|
|
1317
1322
|
}),
|
|
1318
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormField, {
|
|
1323
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormField, {
|
|
1319
1324
|
control,
|
|
1320
1325
|
name: "last_name",
|
|
1321
|
-
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.FormItem, { children: [
|
|
1322
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormLabel, {
|
|
1326
|
+
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.FormItem, { children: [
|
|
1327
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormLabel, {
|
|
1323
1328
|
className: "font-inter text-foreground font-medium",
|
|
1324
1329
|
children: "Last Name"
|
|
1325
1330
|
}),
|
|
1326
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Input, {
|
|
1331
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Input, {
|
|
1327
1332
|
placeholder: "Enter last name",
|
|
1328
1333
|
...field,
|
|
1329
1334
|
value: field.value ?? "",
|
|
1330
1335
|
className: "ring-input"
|
|
1331
1336
|
}) }),
|
|
1332
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormMessage, {})
|
|
1337
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormMessage, {})
|
|
1333
1338
|
] })
|
|
1334
1339
|
}),
|
|
1335
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormField, {
|
|
1340
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormField, {
|
|
1336
1341
|
control,
|
|
1337
1342
|
name: "email",
|
|
1338
|
-
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.FormItem, { children: [
|
|
1339
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormLabel, {
|
|
1343
|
+
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.FormItem, { children: [
|
|
1344
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormLabel, {
|
|
1340
1345
|
className: "font-inter text-foreground font-medium",
|
|
1341
1346
|
children: "Email"
|
|
1342
1347
|
}),
|
|
1343
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Input, {
|
|
1348
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Input, {
|
|
1344
1349
|
placeholder: "Enter email address",
|
|
1345
1350
|
type: "email",
|
|
1346
1351
|
...field,
|
|
1347
1352
|
value: field.value ?? "",
|
|
1348
1353
|
className: "ring-input"
|
|
1349
1354
|
}) }),
|
|
1350
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormMessage, {})
|
|
1355
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormMessage, {})
|
|
1351
1356
|
] })
|
|
1352
1357
|
}),
|
|
1353
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormField, {
|
|
1358
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormField, {
|
|
1354
1359
|
control,
|
|
1355
1360
|
name: "phone",
|
|
1356
|
-
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.FormItem, { children: [
|
|
1357
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormLabel, {
|
|
1361
|
+
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.FormItem, { children: [
|
|
1362
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormLabel, {
|
|
1358
1363
|
className: "font-inter text-foreground font-medium",
|
|
1359
1364
|
children: "Phone"
|
|
1360
1365
|
}),
|
|
1361
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Input, {
|
|
1366
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Input, {
|
|
1362
1367
|
placeholder: "Enter phone number",
|
|
1363
1368
|
...field,
|
|
1364
1369
|
value: field.value ?? "",
|
|
1365
1370
|
className: "ring-input"
|
|
1366
1371
|
}) }),
|
|
1367
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormMessage, {})
|
|
1372
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormMessage, {})
|
|
1368
1373
|
] })
|
|
1369
1374
|
}),
|
|
1370
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormField, {
|
|
1375
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormField, {
|
|
1371
1376
|
control,
|
|
1372
1377
|
name: "status",
|
|
1373
|
-
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.FormItem, { children: [
|
|
1374
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormLabel, {
|
|
1378
|
+
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.FormItem, { children: [
|
|
1379
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormLabel, {
|
|
1375
1380
|
className: "font-inter text-foreground font-medium",
|
|
1376
1381
|
children: "Status"
|
|
1377
1382
|
}),
|
|
1378
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Select, {
|
|
1383
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Select, {
|
|
1379
1384
|
value: field.value ?? "",
|
|
1380
1385
|
onValueChange: field.onChange,
|
|
1381
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectTrigger, {
|
|
1386
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.SelectTrigger, {
|
|
1382
1387
|
className: "w-full",
|
|
1383
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectValue, { placeholder: "Select status" })
|
|
1384
|
-
}) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectContent, {
|
|
1388
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.SelectValue, { placeholder: "Select status" })
|
|
1389
|
+
}) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.SelectContent, {
|
|
1385
1390
|
position: "popper",
|
|
1386
1391
|
sideOffset: 4,
|
|
1387
|
-
children: effectiveStatusOptions.map((opt) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectItem, {
|
|
1392
|
+
children: effectiveStatusOptions.map((opt) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.SelectItem, {
|
|
1388
1393
|
value: opt.value,
|
|
1389
1394
|
children: opt.name
|
|
1390
1395
|
}, opt.value))
|
|
1391
1396
|
})]
|
|
1392
1397
|
}),
|
|
1393
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormMessage, {})
|
|
1398
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormMessage, {})
|
|
1394
1399
|
] })
|
|
1395
1400
|
}),
|
|
1396
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormField, {
|
|
1401
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormField, {
|
|
1397
1402
|
control,
|
|
1398
1403
|
name: "address",
|
|
1399
|
-
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.FormItem, {
|
|
1404
|
+
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.FormItem, {
|
|
1400
1405
|
className: "lg:col-span-2",
|
|
1401
1406
|
children: [
|
|
1402
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormLabel, {
|
|
1407
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormLabel, {
|
|
1403
1408
|
className: "font-inter text-foreground font-medium",
|
|
1404
1409
|
children: "Full Address"
|
|
1405
1410
|
}),
|
|
1406
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Input, {
|
|
1411
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Input, {
|
|
1407
1412
|
placeholder: "Enter street address",
|
|
1408
1413
|
...field,
|
|
1409
1414
|
value: field.value ?? "",
|
|
1410
1415
|
className: "ring-input"
|
|
1411
1416
|
}) }),
|
|
1412
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormMessage, {})
|
|
1417
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormMessage, {})
|
|
1413
1418
|
]
|
|
1414
1419
|
})
|
|
1415
1420
|
}),
|
|
1416
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormField, {
|
|
1421
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormField, {
|
|
1417
1422
|
control,
|
|
1418
1423
|
name: "city",
|
|
1419
|
-
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.FormItem, { children: [
|
|
1420
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormLabel, {
|
|
1424
|
+
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.FormItem, { children: [
|
|
1425
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormLabel, {
|
|
1421
1426
|
className: "font-inter text-foreground font-medium",
|
|
1422
1427
|
children: "City"
|
|
1423
1428
|
}),
|
|
1424
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Input, {
|
|
1429
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Input, {
|
|
1425
1430
|
placeholder: "Enter city",
|
|
1426
1431
|
...field,
|
|
1427
1432
|
value: field.value ?? "",
|
|
1428
1433
|
className: "ring-input"
|
|
1429
1434
|
}) }),
|
|
1430
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormMessage, {})
|
|
1435
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormMessage, {})
|
|
1431
1436
|
] })
|
|
1432
1437
|
}),
|
|
1433
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormField, {
|
|
1438
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormField, {
|
|
1434
1439
|
control,
|
|
1435
1440
|
name: "state",
|
|
1436
|
-
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.FormItem, { children: [
|
|
1437
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormLabel, {
|
|
1441
|
+
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.FormItem, { children: [
|
|
1442
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormLabel, {
|
|
1438
1443
|
className: "font-inter text-foreground font-medium",
|
|
1439
1444
|
children: "State/Province"
|
|
1440
1445
|
}),
|
|
1441
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Input, {
|
|
1446
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Input, {
|
|
1442
1447
|
placeholder: "Enter state or province",
|
|
1443
1448
|
...field,
|
|
1444
1449
|
value: field.value ?? "",
|
|
1445
1450
|
className: "ring-input"
|
|
1446
1451
|
}) }),
|
|
1447
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormMessage, {})
|
|
1452
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormMessage, {})
|
|
1448
1453
|
] })
|
|
1449
1454
|
}),
|
|
1450
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormField, {
|
|
1455
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormField, {
|
|
1451
1456
|
control,
|
|
1452
1457
|
name: "postal_code",
|
|
1453
|
-
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.FormItem, { children: [
|
|
1454
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormLabel, {
|
|
1458
|
+
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.FormItem, { children: [
|
|
1459
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormLabel, {
|
|
1455
1460
|
className: "font-inter text-foreground font-medium",
|
|
1456
1461
|
children: "Postal Code"
|
|
1457
1462
|
}),
|
|
1458
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Input, {
|
|
1463
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Input, {
|
|
1459
1464
|
placeholder: "Enter postal code",
|
|
1460
1465
|
...field,
|
|
1461
1466
|
value: field.value ?? "",
|
|
1462
1467
|
className: "ring-input"
|
|
1463
1468
|
}) }),
|
|
1464
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormMessage, {})
|
|
1469
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormMessage, {})
|
|
1465
1470
|
] })
|
|
1466
1471
|
}),
|
|
1467
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormField, {
|
|
1472
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormField, {
|
|
1468
1473
|
control,
|
|
1469
1474
|
name: "country_code",
|
|
1470
|
-
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.FormItem, { children: [
|
|
1471
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormLabel, {
|
|
1475
|
+
render: ({ field }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.FormItem, { children: [
|
|
1476
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormLabel, {
|
|
1472
1477
|
className: "font-inter text-foreground font-medium",
|
|
1473
1478
|
children: "Country"
|
|
1474
1479
|
}),
|
|
1475
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Select, {
|
|
1480
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Select, {
|
|
1476
1481
|
value: field.value ?? "",
|
|
1477
1482
|
onValueChange: field.onChange,
|
|
1478
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectTrigger, {
|
|
1483
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormControl, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.SelectTrigger, {
|
|
1479
1484
|
className: "w-full",
|
|
1480
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectValue, { placeholder: "Select country" })
|
|
1481
|
-
}) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectContent, {
|
|
1485
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.SelectValue, { placeholder: "Select country" })
|
|
1486
|
+
}) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.SelectContent, {
|
|
1482
1487
|
position: "popper",
|
|
1483
1488
|
sideOffset: 4,
|
|
1484
|
-
children: countries.map((opt) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SelectItem, {
|
|
1489
|
+
children: countries.map((opt) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.SelectItem, {
|
|
1485
1490
|
value: opt.value,
|
|
1486
1491
|
children: opt.name
|
|
1487
1492
|
}, opt.value))
|
|
1488
1493
|
})]
|
|
1489
1494
|
}),
|
|
1490
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.FormMessage, {})
|
|
1495
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.FormMessage, {})
|
|
1491
1496
|
] })
|
|
1492
1497
|
})
|
|
1493
1498
|
]
|
|
@@ -1502,7 +1507,7 @@ function useDeleteContactNote(contactId, options) {
|
|
|
1502
1507
|
return (0, _tanstack_react_query.useMutation)({
|
|
1503
1508
|
mutationFn: (noteId) => api.deleteNote(noteId, contactId),
|
|
1504
1509
|
onSuccess: () => {
|
|
1505
|
-
require_src.fluidToast({
|
|
1510
|
+
require_src$1.fluidToast({
|
|
1506
1511
|
title: "Note deleted",
|
|
1507
1512
|
type: "success"
|
|
1508
1513
|
});
|
|
@@ -1510,7 +1515,7 @@ function useDeleteContactNote(contactId, options) {
|
|
|
1510
1515
|
options?.onSuccess?.();
|
|
1511
1516
|
},
|
|
1512
1517
|
onError: (error) => {
|
|
1513
|
-
require_src.fluidToast({
|
|
1518
|
+
require_src$1.fluidToast({
|
|
1514
1519
|
title: "Failed to delete note",
|
|
1515
1520
|
type: "error",
|
|
1516
1521
|
description: require_parse_api_errors.parseApiErrors(error)
|
|
@@ -1526,7 +1531,7 @@ function useCreateContactNote(contactId, options) {
|
|
|
1526
1531
|
return (0, _tanstack_react_query.useMutation)({
|
|
1527
1532
|
mutationFn: (input) => api.createNote(contactId, input),
|
|
1528
1533
|
onSuccess: () => {
|
|
1529
|
-
require_src.fluidToast({
|
|
1534
|
+
require_src$1.fluidToast({
|
|
1530
1535
|
title: "Note created",
|
|
1531
1536
|
type: "success"
|
|
1532
1537
|
});
|
|
@@ -1534,7 +1539,7 @@ function useCreateContactNote(contactId, options) {
|
|
|
1534
1539
|
options?.onSuccess?.();
|
|
1535
1540
|
},
|
|
1536
1541
|
onError: (error) => {
|
|
1537
|
-
require_src.fluidToast({
|
|
1542
|
+
require_src$1.fluidToast({
|
|
1538
1543
|
title: "Failed to create note",
|
|
1539
1544
|
type: "error",
|
|
1540
1545
|
description: require_parse_api_errors.parseApiErrors(error)
|
|
@@ -1550,7 +1555,7 @@ function useUpdateContactNote(contactId, options) {
|
|
|
1550
1555
|
return (0, _tanstack_react_query.useMutation)({
|
|
1551
1556
|
mutationFn: ({ noteId, input }) => api.updateNote(noteId, contactId, input),
|
|
1552
1557
|
onSuccess: () => {
|
|
1553
|
-
require_src.fluidToast({
|
|
1558
|
+
require_src$1.fluidToast({
|
|
1554
1559
|
title: "Note updated",
|
|
1555
1560
|
type: "success"
|
|
1556
1561
|
});
|
|
@@ -1558,7 +1563,7 @@ function useUpdateContactNote(contactId, options) {
|
|
|
1558
1563
|
options?.onSuccess?.();
|
|
1559
1564
|
},
|
|
1560
1565
|
onError: (error) => {
|
|
1561
|
-
require_src.fluidToast({
|
|
1566
|
+
require_src$1.fluidToast({
|
|
1562
1567
|
title: "Failed to update note",
|
|
1563
1568
|
type: "error",
|
|
1564
1569
|
description: require_parse_api_errors.parseApiErrors(error)
|
|
@@ -1694,7 +1699,7 @@ function NoteTaskEditor({ titlePlaceholder = "New Note", bodyPlaceholder = "Star
|
|
|
1694
1699
|
const buttonInactive = "text-muted-foreground hover:bg-muted/50";
|
|
1695
1700
|
const toolbarSeparator = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "bg-border mx-1 h-5 w-px" });
|
|
1696
1701
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1697
|
-
className: require_src.cn("border-border flex flex-col overflow-hidden rounded-lg border", className),
|
|
1702
|
+
className: require_src$1.cn("border-border flex flex-col overflow-hidden rounded-lg border", className),
|
|
1698
1703
|
children: [
|
|
1699
1704
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1700
1705
|
className: "border-border bg-muted/50 flex items-center gap-0.5 border-b px-2 py-1.5",
|
|
@@ -1703,7 +1708,7 @@ function NoteTaskEditor({ titlePlaceholder = "New Note", bodyPlaceholder = "Star
|
|
|
1703
1708
|
type: "button",
|
|
1704
1709
|
onClick: () => editor?.chain().focus().toggleBold().run(),
|
|
1705
1710
|
disabled: !editor?.can().chain().focus().toggleBold().run(),
|
|
1706
|
-
className: require_src.cn(buttonBase, "font-bold", editor?.isActive("bold") ? buttonActive : buttonInactive),
|
|
1711
|
+
className: require_src$1.cn(buttonBase, "font-bold", editor?.isActive("bold") ? buttonActive : buttonInactive),
|
|
1707
1712
|
title: "Bold",
|
|
1708
1713
|
children: "B"
|
|
1709
1714
|
}),
|
|
@@ -1711,7 +1716,7 @@ function NoteTaskEditor({ titlePlaceholder = "New Note", bodyPlaceholder = "Star
|
|
|
1711
1716
|
type: "button",
|
|
1712
1717
|
onClick: () => editor?.chain().focus().toggleItalic().run(),
|
|
1713
1718
|
disabled: !editor?.can().chain().focus().toggleItalic().run(),
|
|
1714
|
-
className: require_src.cn(buttonBase, "italic", editor?.isActive("italic") ? buttonActive : buttonInactive),
|
|
1719
|
+
className: require_src$1.cn(buttonBase, "italic", editor?.isActive("italic") ? buttonActive : buttonInactive),
|
|
1715
1720
|
title: "Italic",
|
|
1716
1721
|
children: "I"
|
|
1717
1722
|
}),
|
|
@@ -1719,7 +1724,7 @@ function NoteTaskEditor({ titlePlaceholder = "New Note", bodyPlaceholder = "Star
|
|
|
1719
1724
|
type: "button",
|
|
1720
1725
|
onClick: () => editor?.chain().focus().toggleUnderline().run(),
|
|
1721
1726
|
disabled: !editor?.can().chain().focus().toggleUnderline().run(),
|
|
1722
|
-
className: require_src.cn(buttonBase, "underline", editor?.isActive("underline") ? buttonActive : buttonInactive),
|
|
1727
|
+
className: require_src$1.cn(buttonBase, "underline", editor?.isActive("underline") ? buttonActive : buttonInactive),
|
|
1723
1728
|
title: "Underline",
|
|
1724
1729
|
children: "U"
|
|
1725
1730
|
}),
|
|
@@ -1727,28 +1732,28 @@ function NoteTaskEditor({ titlePlaceholder = "New Note", bodyPlaceholder = "Star
|
|
|
1727
1732
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
1728
1733
|
type: "button",
|
|
1729
1734
|
onClick: () => editor?.chain().focus().setTextAlign("left").run(),
|
|
1730
|
-
className: require_src.cn(buttonBase, editor?.isActive({ textAlign: "left" }) ? buttonActive : buttonInactive),
|
|
1735
|
+
className: require_src$1.cn(buttonBase, editor?.isActive({ textAlign: "left" }) ? buttonActive : buttonInactive),
|
|
1731
1736
|
title: "Align left",
|
|
1732
1737
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.AlignLeft, { className: "h-3.5 w-3.5" })
|
|
1733
1738
|
}),
|
|
1734
1739
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
1735
1740
|
type: "button",
|
|
1736
1741
|
onClick: () => editor?.chain().focus().setTextAlign("center").run(),
|
|
1737
|
-
className: require_src.cn(buttonBase, editor?.isActive({ textAlign: "center" }) ? buttonActive : buttonInactive),
|
|
1742
|
+
className: require_src$1.cn(buttonBase, editor?.isActive({ textAlign: "center" }) ? buttonActive : buttonInactive),
|
|
1738
1743
|
title: "Align center",
|
|
1739
1744
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.AlignCenter, { className: "h-3.5 w-3.5" })
|
|
1740
1745
|
}),
|
|
1741
1746
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
1742
1747
|
type: "button",
|
|
1743
1748
|
onClick: () => editor?.chain().focus().setTextAlign("right").run(),
|
|
1744
|
-
className: require_src.cn(buttonBase, editor?.isActive({ textAlign: "right" }) ? buttonActive : buttonInactive),
|
|
1749
|
+
className: require_src$1.cn(buttonBase, editor?.isActive({ textAlign: "right" }) ? buttonActive : buttonInactive),
|
|
1745
1750
|
title: "Align right",
|
|
1746
1751
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.AlignRight, { className: "h-3.5 w-3.5" })
|
|
1747
1752
|
}),
|
|
1748
1753
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
1749
1754
|
type: "button",
|
|
1750
1755
|
onClick: () => editor?.chain().focus().setTextAlign("justify").run(),
|
|
1751
|
-
className: require_src.cn(buttonBase, editor?.isActive({ textAlign: "justify" }) ? buttonActive : buttonInactive),
|
|
1756
|
+
className: require_src$1.cn(buttonBase, editor?.isActive({ textAlign: "justify" }) ? buttonActive : buttonInactive),
|
|
1752
1757
|
title: "Justify",
|
|
1753
1758
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.AlignJustify, { className: "h-3.5 w-3.5" })
|
|
1754
1759
|
}),
|
|
@@ -1756,14 +1761,14 @@ function NoteTaskEditor({ titlePlaceholder = "New Note", bodyPlaceholder = "Star
|
|
|
1756
1761
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
1757
1762
|
type: "button",
|
|
1758
1763
|
onClick: () => editor?.chain().focus().toggleBulletList().run(),
|
|
1759
|
-
className: require_src.cn(buttonBase, editor?.isActive("bulletList") ? buttonActive : buttonInactive),
|
|
1764
|
+
className: require_src$1.cn(buttonBase, editor?.isActive("bulletList") ? buttonActive : buttonInactive),
|
|
1760
1765
|
title: "Bullet list",
|
|
1761
1766
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.List, { className: "h-3.5 w-3.5" })
|
|
1762
1767
|
}),
|
|
1763
1768
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
1764
1769
|
type: "button",
|
|
1765
1770
|
onClick: () => editor?.chain().focus().toggleOrderedList().run(),
|
|
1766
|
-
className: require_src.cn(buttonBase, editor?.isActive("orderedList") ? buttonActive : buttonInactive),
|
|
1771
|
+
className: require_src$1.cn(buttonBase, editor?.isActive("orderedList") ? buttonActive : buttonInactive),
|
|
1767
1772
|
title: "Ordered list",
|
|
1768
1773
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ListOrdered, { className: "h-3.5 w-3.5" })
|
|
1769
1774
|
}),
|
|
@@ -1866,17 +1871,17 @@ function NoteTaskModal({ open, onOpenChange, mode, type, initialTitle = "", init
|
|
|
1866
1871
|
dueDate
|
|
1867
1872
|
});
|
|
1868
1873
|
};
|
|
1869
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Sheet, {
|
|
1874
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Sheet, {
|
|
1870
1875
|
open,
|
|
1871
1876
|
onOpenChange,
|
|
1872
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.SheetContent, {
|
|
1877
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.SheetContent, {
|
|
1873
1878
|
className: "flex w-full flex-col sm:max-w-lg",
|
|
1874
1879
|
children: [
|
|
1875
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SheetHeader, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.SheetTitle, { children: sheetTitle }) }),
|
|
1880
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.SheetHeader, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.SheetTitle, { children: sheetTitle }) }),
|
|
1876
1881
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1877
1882
|
className: "flex min-h-0 flex-1 flex-col gap-3",
|
|
1878
1883
|
children: [
|
|
1879
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Input, {
|
|
1884
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Input, {
|
|
1880
1885
|
placeholder: `${typeLabel} title`,
|
|
1881
1886
|
value: title,
|
|
1882
1887
|
onChange: (e) => setTitle(e.target.value),
|
|
@@ -1928,22 +1933,22 @@ function NoteTaskModal({ open, onOpenChange, mode, type, initialTitle = "", init
|
|
|
1928
1933
|
})
|
|
1929
1934
|
]
|
|
1930
1935
|
}),
|
|
1931
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.SheetFooter, {
|
|
1936
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.SheetFooter, {
|
|
1932
1937
|
className: "flex-row justify-end gap-2 border-t pt-4",
|
|
1933
1938
|
children: [
|
|
1934
|
-
mode === "edit" && onToggleComplete && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
1939
|
+
mode === "edit" && onToggleComplete && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
1935
1940
|
variant: "outline",
|
|
1936
1941
|
onClick: onToggleComplete,
|
|
1937
1942
|
disabled: isTogglePending,
|
|
1938
1943
|
className: "mr-auto",
|
|
1939
1944
|
children: isCompleted ? "Mark Incomplete" : "Mark Complete"
|
|
1940
1945
|
}),
|
|
1941
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
1946
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
1942
1947
|
variant: "outline",
|
|
1943
1948
|
onClick: () => onOpenChange(false),
|
|
1944
1949
|
children: "Cancel"
|
|
1945
1950
|
}),
|
|
1946
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
1951
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
1947
1952
|
onClick: handleSave,
|
|
1948
1953
|
disabled: !canSave,
|
|
1949
1954
|
children: isPending ? "Saving..." : "Save"
|
|
@@ -2013,7 +2018,7 @@ function NoteCard({ note, onEdit, onDelete }) {
|
|
|
2013
2018
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h4", {
|
|
2014
2019
|
className: "text-foreground line-clamp-1 text-sm font-semibold",
|
|
2015
2020
|
children: note.title
|
|
2016
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuTrigger, {
|
|
2021
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuTrigger, {
|
|
2017
2022
|
asChild: true,
|
|
2018
2023
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
2019
2024
|
type: "button",
|
|
@@ -2021,9 +2026,9 @@ function NoteCard({ note, onEdit, onDelete }) {
|
|
|
2021
2026
|
className: "text-muted-foreground inline-flex h-6 w-6 items-center justify-center rounded-md hover:opacity-70",
|
|
2022
2027
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.EllipsisVertical, { className: "h-4 w-4" })
|
|
2023
2028
|
})
|
|
2024
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuContent, {
|
|
2029
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuContent, {
|
|
2025
2030
|
align: "end",
|
|
2026
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuItem, {
|
|
2031
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuItem, {
|
|
2027
2032
|
className: "text-destructive",
|
|
2028
2033
|
onClick: (e) => {
|
|
2029
2034
|
e.stopPropagation();
|
|
@@ -2156,16 +2161,16 @@ function NotesList({ notes, isLoading, contactId, ref }) {
|
|
|
2156
2161
|
onSave: handleSave,
|
|
2157
2162
|
isPending: createNote.isPending || updateNote.isPending
|
|
2158
2163
|
}, editingNote?.id ?? "create"),
|
|
2159
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialog, {
|
|
2164
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialog, {
|
|
2160
2165
|
open: !!noteToDelete,
|
|
2161
2166
|
onOpenChange: (open) => {
|
|
2162
2167
|
if (!open) setNoteToDelete(null);
|
|
2163
2168
|
},
|
|
2164
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogContent, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogTitle, { children: "Delete Note" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogDescription, { children: [
|
|
2169
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogContent, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogTitle, { children: "Delete Note" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogDescription, { children: [
|
|
2165
2170
|
"Are you sure you want to delete \"",
|
|
2166
2171
|
noteToDelete?.title,
|
|
2167
2172
|
"\"? This action cannot be undone."
|
|
2168
|
-
] })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogFooter, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogAction, {
|
|
2173
|
+
] })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogFooter, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogAction, {
|
|
2169
2174
|
variant: "destructive",
|
|
2170
2175
|
onClick: () => {
|
|
2171
2176
|
if (noteToDelete) deleteNote.mutate(noteToDelete.id);
|
|
@@ -2187,7 +2192,7 @@ function useToggleTaskCompletion(contactId) {
|
|
|
2187
2192
|
queryClient.invalidateQueries({ queryKey: contactsKeys.tasks(contactId) });
|
|
2188
2193
|
},
|
|
2189
2194
|
onError: (error) => {
|
|
2190
|
-
require_src.fluidToast({
|
|
2195
|
+
require_src$1.fluidToast({
|
|
2191
2196
|
title: "Failed to update task",
|
|
2192
2197
|
type: "error",
|
|
2193
2198
|
description: require_parse_api_errors.parseApiErrors(error)
|
|
@@ -2203,7 +2208,7 @@ function useDeleteContactTask(contactId, options) {
|
|
|
2203
2208
|
return (0, _tanstack_react_query.useMutation)({
|
|
2204
2209
|
mutationFn: (taskId) => api.deleteTask(taskId, contactId),
|
|
2205
2210
|
onSuccess: () => {
|
|
2206
|
-
require_src.fluidToast({
|
|
2211
|
+
require_src$1.fluidToast({
|
|
2207
2212
|
title: "Task deleted",
|
|
2208
2213
|
type: "success"
|
|
2209
2214
|
});
|
|
@@ -2211,7 +2216,7 @@ function useDeleteContactTask(contactId, options) {
|
|
|
2211
2216
|
options?.onSuccess?.();
|
|
2212
2217
|
},
|
|
2213
2218
|
onError: (error) => {
|
|
2214
|
-
require_src.fluidToast({
|
|
2219
|
+
require_src$1.fluidToast({
|
|
2215
2220
|
title: "Failed to delete task",
|
|
2216
2221
|
type: "error",
|
|
2217
2222
|
description: require_parse_api_errors.parseApiErrors(error)
|
|
@@ -2227,7 +2232,7 @@ function useCreateContactTask(contactId, options) {
|
|
|
2227
2232
|
return (0, _tanstack_react_query.useMutation)({
|
|
2228
2233
|
mutationFn: (input) => api.createTask(contactId, input),
|
|
2229
2234
|
onSuccess: () => {
|
|
2230
|
-
require_src.fluidToast({
|
|
2235
|
+
require_src$1.fluidToast({
|
|
2231
2236
|
title: "Task created",
|
|
2232
2237
|
type: "success"
|
|
2233
2238
|
});
|
|
@@ -2235,7 +2240,7 @@ function useCreateContactTask(contactId, options) {
|
|
|
2235
2240
|
options?.onSuccess?.();
|
|
2236
2241
|
},
|
|
2237
2242
|
onError: (error) => {
|
|
2238
|
-
require_src.fluidToast({
|
|
2243
|
+
require_src$1.fluidToast({
|
|
2239
2244
|
title: "Failed to create task",
|
|
2240
2245
|
type: "error",
|
|
2241
2246
|
description: require_parse_api_errors.parseApiErrors(error)
|
|
@@ -2251,7 +2256,7 @@ function useUpdateContactTask(contactId, options) {
|
|
|
2251
2256
|
return (0, _tanstack_react_query.useMutation)({
|
|
2252
2257
|
mutationFn: ({ taskId, input }) => api.updateTask(taskId, contactId, input),
|
|
2253
2258
|
onSuccess: () => {
|
|
2254
|
-
require_src.fluidToast({
|
|
2259
|
+
require_src$1.fluidToast({
|
|
2255
2260
|
title: "Task updated",
|
|
2256
2261
|
type: "success"
|
|
2257
2262
|
});
|
|
@@ -2259,7 +2264,7 @@ function useUpdateContactTask(contactId, options) {
|
|
|
2259
2264
|
options?.onSuccess?.();
|
|
2260
2265
|
},
|
|
2261
2266
|
onError: (error) => {
|
|
2262
|
-
require_src.fluidToast({
|
|
2267
|
+
require_src$1.fluidToast({
|
|
2263
2268
|
title: "Failed to update task",
|
|
2264
2269
|
type: "error",
|
|
2265
2270
|
description: require_parse_api_errors.parseApiErrors(error)
|
|
@@ -2368,19 +2373,19 @@ function TaskCard({ task, toggleCompletion, onEdit, onDeleteClick }) {
|
|
|
2368
2373
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2369
2374
|
className: "flex items-start justify-between gap-2",
|
|
2370
2375
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h4", {
|
|
2371
|
-
className: require_src.cn("text-foreground line-clamp-2 font-semibold", isCompleted && "text-muted-foreground line-through"),
|
|
2376
|
+
className: require_src$1.cn("text-foreground line-clamp-2 font-semibold", isCompleted && "text-muted-foreground line-through"),
|
|
2372
2377
|
children: title
|
|
2373
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuTrigger, {
|
|
2378
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuTrigger, {
|
|
2374
2379
|
asChild: true,
|
|
2375
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
2380
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
2376
2381
|
variant: "ghost",
|
|
2377
2382
|
size: "icon-xs",
|
|
2378
2383
|
onClick: (e) => e.stopPropagation(),
|
|
2379
2384
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.EllipsisVertical, { className: "h-4 w-4" })
|
|
2380
2385
|
})
|
|
2381
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuContent, {
|
|
2386
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuContent, {
|
|
2382
2387
|
align: "end",
|
|
2383
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuItem, {
|
|
2388
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuItem, {
|
|
2384
2389
|
className: "text-destructive",
|
|
2385
2390
|
onClick: (e) => {
|
|
2386
2391
|
e.stopPropagation();
|
|
@@ -2402,8 +2407,8 @@ function TaskCard({ task, toggleCompletion, onEdit, onDeleteClick }) {
|
|
|
2402
2407
|
children: timestamp
|
|
2403
2408
|
}), task.due_at && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2404
2409
|
className: "flex items-center gap-1",
|
|
2405
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Calendar, { className: require_src.cn("h-3.5 w-3.5", isCompleted ? "text-muted-foreground" : "text-primary") }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
2406
|
-
className: require_src.cn("text-xs font-medium", isCompleted ? "text-muted-foreground" : "text-primary"),
|
|
2410
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Calendar, { className: require_src$1.cn("h-3.5 w-3.5", isCompleted ? "text-muted-foreground" : "text-primary") }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
2411
|
+
className: require_src$1.cn("text-xs font-medium", isCompleted ? "text-muted-foreground" : "text-primary"),
|
|
2407
2412
|
children: ["Due ", formatDueDate(task.due_at)]
|
|
2408
2413
|
})]
|
|
2409
2414
|
})]
|
|
@@ -2511,12 +2516,12 @@ function TaskList({ tasks, isLoading, contactId, ref }) {
|
|
|
2511
2516
|
}, { onSuccess: () => setEditingTask(null) }) : void 0,
|
|
2512
2517
|
isTogglePending: toggleCompletion.isPending
|
|
2513
2518
|
}, editingTask?.id ?? "create"),
|
|
2514
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialog, {
|
|
2519
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialog, {
|
|
2515
2520
|
open: taskToDelete !== null,
|
|
2516
2521
|
onOpenChange: (open) => {
|
|
2517
2522
|
if (!open) setTaskToDelete(null);
|
|
2518
2523
|
},
|
|
2519
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogContent, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogTitle, { children: "Delete Task" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogDescription, { children: "Are you sure you want to delete this task? This action cannot be undone." })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.AlertDialogFooter, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.AlertDialogAction, {
|
|
2524
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogContent, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogTitle, { children: "Delete Task" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogDescription, { children: "Are you sure you want to delete this task? This action cannot be undone." })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.AlertDialogFooter, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.AlertDialogAction, {
|
|
2520
2525
|
variant: "destructive",
|
|
2521
2526
|
onClick: () => {
|
|
2522
2527
|
if (taskToDelete) deleteTask.mutate(taskToDelete.id);
|
|
@@ -2642,7 +2647,7 @@ function GroupsSection({ contactTags, availableGroups = [], onManageGroups, onAd
|
|
|
2642
2647
|
return availableGroups.find((g) => g.name === tagName);
|
|
2643
2648
|
};
|
|
2644
2649
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2645
|
-
className: require_src.cn("bg-card rounded-lg border p-4 shadow-xs transition-all hover:shadow-md", disabled && "pointer-events-none opacity-45 select-none"),
|
|
2650
|
+
className: require_src$1.cn("bg-card rounded-lg border p-4 shadow-xs transition-all hover:shadow-md", disabled && "pointer-events-none opacity-45 select-none"),
|
|
2646
2651
|
"aria-disabled": disabled || void 0,
|
|
2647
2652
|
children: [
|
|
2648
2653
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -2663,16 +2668,21 @@ function GroupsSection({ contactTags, availableGroups = [], onManageGroups, onAd
|
|
|
2663
2668
|
const group = getGroupDetails(tag);
|
|
2664
2669
|
const backgroundColor = group?.avatar_background ?? "var(--color-muted)";
|
|
2665
2670
|
const emoji = group?.avatar;
|
|
2671
|
+
const textColor = group?.avatar_background ? require_src.getContrastingTextColor(group.avatar_background) : null;
|
|
2666
2672
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
2667
|
-
className: "
|
|
2668
|
-
style: {
|
|
2673
|
+
className: require_src$1.cn("border-border inline-flex items-center gap-2 rounded-full border px-3 py-1.5 text-xs", !textColor && "text-foreground"),
|
|
2674
|
+
style: {
|
|
2675
|
+
backgroundColor,
|
|
2676
|
+
...textColor ? { color: textColor } : {}
|
|
2677
|
+
},
|
|
2669
2678
|
children: [
|
|
2670
2679
|
emoji && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: emoji }),
|
|
2671
2680
|
tag,
|
|
2672
2681
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
2673
2682
|
type: "button",
|
|
2674
2683
|
onClick: () => onRemoveGroup(tag),
|
|
2675
|
-
className: "
|
|
2684
|
+
className: "bg-background/25 hover:bg-background/50 flex h-4 w-4 items-center justify-center rounded-full transition-colors",
|
|
2685
|
+
style: textColor ? { color: textColor } : void 0,
|
|
2676
2686
|
"aria-label": `Remove ${tag}`,
|
|
2677
2687
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.X, { className: "h-3 w-3" })
|
|
2678
2688
|
})
|
|
@@ -2680,18 +2690,18 @@ function GroupsSection({ contactTags, availableGroups = [], onManageGroups, onAd
|
|
|
2680
2690
|
}, tag);
|
|
2681
2691
|
})
|
|
2682
2692
|
}),
|
|
2683
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuTrigger, {
|
|
2693
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuTrigger, {
|
|
2684
2694
|
asChild: true,
|
|
2685
2695
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
2686
2696
|
type: "button",
|
|
2687
2697
|
className: "text-primary hover:text-primary/80 mt-3 flex items-center gap-2 text-sm font-medium transition-colors",
|
|
2688
2698
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Plus, { className: "h-4 w-4" }), "Add Group"]
|
|
2689
2699
|
})
|
|
2690
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenuContent, {
|
|
2700
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenuContent, {
|
|
2691
2701
|
align: "start",
|
|
2692
2702
|
className: "w-64",
|
|
2693
2703
|
children: [
|
|
2694
|
-
filteredGroups.map((group) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenuItem, {
|
|
2704
|
+
filteredGroups.map((group) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenuItem, {
|
|
2695
2705
|
onClick: () => onAddToGroup(group.name),
|
|
2696
2706
|
className: "flex cursor-pointer items-center gap-3",
|
|
2697
2707
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
@@ -2703,8 +2713,8 @@ function GroupsSection({ contactTags, availableGroups = [], onManageGroups, onAd
|
|
|
2703
2713
|
children: group.name
|
|
2704
2714
|
})]
|
|
2705
2715
|
}, group.name)),
|
|
2706
|
-
filteredGroups.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DropdownMenuSeparator, {}),
|
|
2707
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DropdownMenuItem, {
|
|
2716
|
+
filteredGroups.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DropdownMenuSeparator, {}),
|
|
2717
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DropdownMenuItem, {
|
|
2708
2718
|
onClick: onCreateNewGroup,
|
|
2709
2719
|
className: "cursor-pointer",
|
|
2710
2720
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Plus, { className: "mr-2 h-4 w-4" }), "Create New Group"]
|
|
@@ -2731,13 +2741,13 @@ function ManageGroupsModal({ open, onOpenChange, contactName, currentTags, avail
|
|
|
2731
2741
|
const handleCancel = () => {
|
|
2732
2742
|
onOpenChange(false);
|
|
2733
2743
|
};
|
|
2734
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Dialog, {
|
|
2744
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Dialog, {
|
|
2735
2745
|
open,
|
|
2736
2746
|
onOpenChange,
|
|
2737
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DialogContent, {
|
|
2747
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DialogContent, {
|
|
2738
2748
|
className: "max-w-md",
|
|
2739
2749
|
children: [
|
|
2740
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DialogHeader, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DialogTitle, { children: ["Manage Groups for ", contactName] }) }),
|
|
2750
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DialogHeader, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DialogTitle, { children: ["Manage Groups for ", contactName] }) }),
|
|
2741
2751
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2742
2752
|
className: "space-y-4 py-4",
|
|
2743
2753
|
children: [
|
|
@@ -2771,7 +2781,7 @@ function ManageGroupsModal({ open, onOpenChange, contactName, currentTags, avail
|
|
|
2771
2781
|
}, group.id);
|
|
2772
2782
|
})
|
|
2773
2783
|
})] }),
|
|
2774
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
|
|
2784
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Button, {
|
|
2775
2785
|
variant: "secondary",
|
|
2776
2786
|
size: "sm",
|
|
2777
2787
|
onClick: onCreateNewGroup,
|
|
@@ -2795,11 +2805,11 @@ function ManageGroupsModal({ open, onOpenChange, contactName, currentTags, avail
|
|
|
2795
2805
|
})
|
|
2796
2806
|
]
|
|
2797
2807
|
}),
|
|
2798
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DialogFooter, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
2808
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DialogFooter, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
2799
2809
|
variant: "outline",
|
|
2800
2810
|
onClick: handleCancel,
|
|
2801
2811
|
children: "Cancel"
|
|
2802
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
2812
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
2803
2813
|
onClick: handleSave,
|
|
2804
2814
|
children: "Save Changes"
|
|
2805
2815
|
})] })
|
|
@@ -2905,7 +2915,7 @@ function CreateGroupModal({ open, onOpenChange, onSave, existingGroupNames }) {
|
|
|
2905
2915
|
const handleSave = () => {
|
|
2906
2916
|
const trimmed = groupName.trim();
|
|
2907
2917
|
if (!trimmed) {
|
|
2908
|
-
require_src.fluidToast({
|
|
2918
|
+
require_src$1.fluidToast({
|
|
2909
2919
|
title: "Group name required",
|
|
2910
2920
|
description: "Please enter a name for the new group",
|
|
2911
2921
|
type: "error"
|
|
@@ -2913,7 +2923,7 @@ function CreateGroupModal({ open, onOpenChange, onSave, existingGroupNames }) {
|
|
|
2913
2923
|
return;
|
|
2914
2924
|
}
|
|
2915
2925
|
if (existingGroupNames.includes(trimmed)) {
|
|
2916
|
-
require_src.fluidToast({
|
|
2926
|
+
require_src$1.fluidToast({
|
|
2917
2927
|
title: "Group already exists",
|
|
2918
2928
|
description: `A group named "${trimmed}" already exists`,
|
|
2919
2929
|
type: "error"
|
|
@@ -2923,13 +2933,13 @@ function CreateGroupModal({ open, onOpenChange, onSave, existingGroupNames }) {
|
|
|
2923
2933
|
onSave(trimmed, selectedEmoji, selectedColor);
|
|
2924
2934
|
onOpenChange(false);
|
|
2925
2935
|
};
|
|
2926
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Dialog, {
|
|
2936
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Dialog, {
|
|
2927
2937
|
open,
|
|
2928
2938
|
onOpenChange,
|
|
2929
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DialogContent, {
|
|
2939
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DialogContent, {
|
|
2930
2940
|
className: "max-w-md",
|
|
2931
2941
|
children: [
|
|
2932
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DialogHeader, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.DialogTitle, { children: "Create New Group" }) }),
|
|
2942
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DialogHeader, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.DialogTitle, { children: "Create New Group" }) }),
|
|
2933
2943
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2934
2944
|
className: "space-y-6 py-4",
|
|
2935
2945
|
children: [
|
|
@@ -2946,7 +2956,7 @@ function CreateGroupModal({ open, onOpenChange, onSave, existingGroupNames }) {
|
|
|
2946
2956
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
|
|
2947
2957
|
className: "text-foreground text-sm font-medium",
|
|
2948
2958
|
children: "Group Name"
|
|
2949
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Input, {
|
|
2959
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Input, {
|
|
2950
2960
|
value: groupName,
|
|
2951
2961
|
onChange: (e) => setGroupName(e.target.value),
|
|
2952
2962
|
placeholder: "Enter group name...",
|
|
@@ -2967,7 +2977,7 @@ function CreateGroupModal({ open, onOpenChange, onSave, existingGroupNames }) {
|
|
|
2967
2977
|
children: CURATED_EMOJIS.map((emoji) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
2968
2978
|
type: "button",
|
|
2969
2979
|
onClick: () => setSelectedEmoji(emoji),
|
|
2970
|
-
className: require_src.cn("hover:bg-primary/50 flex h-9 w-9 items-center justify-center rounded-md text-lg transition-colors", selectedEmoji === emoji && "bg-primary/10 border-primary border-2"),
|
|
2980
|
+
className: require_src$1.cn("hover:bg-primary/50 flex h-9 w-9 items-center justify-center rounded-md text-lg transition-colors", selectedEmoji === emoji && "bg-primary/10 border-primary border-2"),
|
|
2971
2981
|
children: emoji
|
|
2972
2982
|
}, emoji))
|
|
2973
2983
|
})]
|
|
@@ -2982,7 +2992,7 @@ function CreateGroupModal({ open, onOpenChange, onSave, existingGroupNames }) {
|
|
|
2982
2992
|
children: COLOR_SWATCHES.map((color) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
2983
2993
|
type: "button",
|
|
2984
2994
|
onClick: () => setSelectedColor(color),
|
|
2985
|
-
className: require_src.cn("h-8 w-8 rounded-full border-2 transition-all", selectedColor === color ? "border-primary scale-110" : "border-foreground/10 hover:scale-105"),
|
|
2995
|
+
className: require_src$1.cn("h-8 w-8 rounded-full border-2 transition-all", selectedColor === color ? "border-primary scale-110" : "border-foreground/10 hover:scale-105"),
|
|
2986
2996
|
style: { backgroundColor: color },
|
|
2987
2997
|
"aria-label": `Color ${color}`
|
|
2988
2998
|
}, color))
|
|
@@ -2990,11 +3000,11 @@ function CreateGroupModal({ open, onOpenChange, onSave, existingGroupNames }) {
|
|
|
2990
3000
|
})
|
|
2991
3001
|
]
|
|
2992
3002
|
}),
|
|
2993
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.DialogFooter, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
3003
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.DialogFooter, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
2994
3004
|
variant: "outline",
|
|
2995
3005
|
onClick: () => onOpenChange(false),
|
|
2996
3006
|
children: "Cancel"
|
|
2997
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
3007
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
2998
3008
|
onClick: handleSave,
|
|
2999
3009
|
children: "Create Group"
|
|
3000
3010
|
})] })
|
|
@@ -3066,7 +3076,7 @@ function RepContactDetailView({ contact, contactId, countryOptions = DEFAULT_COU
|
|
|
3066
3076
|
const handleAddToGroup = (0, react.useCallback)((groupName) => {
|
|
3067
3077
|
const newTags = [...contactTags, groupName];
|
|
3068
3078
|
updateTags.mutate(newTags, { onSuccess: () => {
|
|
3069
|
-
require_src.fluidToast({
|
|
3079
|
+
require_src$1.fluidToast({
|
|
3070
3080
|
title: "Added to group",
|
|
3071
3081
|
description: `Contact added to "${groupName}"`,
|
|
3072
3082
|
type: "success"
|
|
@@ -3076,7 +3086,7 @@ function RepContactDetailView({ contact, contactId, countryOptions = DEFAULT_COU
|
|
|
3076
3086
|
const handleRemoveGroup = (0, react.useCallback)((groupName) => {
|
|
3077
3087
|
const newTags = contactTags.filter((g) => g !== groupName);
|
|
3078
3088
|
updateTags.mutate(newTags, { onSuccess: () => {
|
|
3079
|
-
require_src.fluidToast({
|
|
3089
|
+
require_src$1.fluidToast({
|
|
3080
3090
|
title: "Removed from group",
|
|
3081
3091
|
description: `Contact removed from "${groupName}"`,
|
|
3082
3092
|
type: "success"
|
|
@@ -3092,7 +3102,7 @@ function RepContactDetailView({ contact, contactId, countryOptions = DEFAULT_COU
|
|
|
3092
3102
|
const newTags = [...contactTags, name];
|
|
3093
3103
|
updateTags.mutate(newTags, {
|
|
3094
3104
|
onSuccess: () => {
|
|
3095
|
-
require_src.fluidToast({
|
|
3105
|
+
require_src$1.fluidToast({
|
|
3096
3106
|
title: "Group created",
|
|
3097
3107
|
description: `Contact added to "${name}"`,
|
|
3098
3108
|
type: "success"
|
|
@@ -3100,7 +3110,7 @@ function RepContactDetailView({ contact, contactId, countryOptions = DEFAULT_COU
|
|
|
3100
3110
|
setIsCreateGroupModalOpen(false);
|
|
3101
3111
|
},
|
|
3102
3112
|
onError: () => {
|
|
3103
|
-
require_src.fluidToast({
|
|
3113
|
+
require_src$1.fluidToast({
|
|
3104
3114
|
title: "Group created",
|
|
3105
3115
|
description: `Group created, but could not add contact to "${name}". Please try again.`,
|
|
3106
3116
|
type: "error"
|
|
@@ -3116,7 +3126,7 @@ function RepContactDetailView({ contact, contactId, countryOptions = DEFAULT_COU
|
|
|
3116
3126
|
]);
|
|
3117
3127
|
const handleSaveGroups = (0, react.useCallback)((selectedTags) => {
|
|
3118
3128
|
updateTags.mutate(selectedTags, { onSuccess: () => {
|
|
3119
|
-
require_src.fluidToast({
|
|
3129
|
+
require_src$1.fluidToast({
|
|
3120
3130
|
title: "Groups updated",
|
|
3121
3131
|
description: "Contact groups have been updated",
|
|
3122
3132
|
type: "success"
|
|
@@ -3130,7 +3140,7 @@ function RepContactDetailView({ contact, contactId, countryOptions = DEFAULT_COU
|
|
|
3130
3140
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3131
3141
|
className: "flex flex-col gap-6 px-4 py-4 lg:h-full lg:flex-row lg:px-6 lg:py-8",
|
|
3132
3142
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3133
|
-
className: require_src.cn("w-full space-y-6 lg:w-80 lg:overflow-y-auto", isEditingProfile && "hidden lg:block"),
|
|
3143
|
+
className: require_src$1.cn("w-full space-y-6 lg:w-80 lg:overflow-y-auto", isEditingProfile && "hidden lg:block"),
|
|
3134
3144
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ContactInfoCard, {
|
|
3135
3145
|
contact: contactInfo,
|
|
3136
3146
|
isDimmed: isEditingProfile,
|
|
@@ -3171,20 +3181,20 @@ function RepContactDetailView({ contact, contactId, countryOptions = DEFAULT_COU
|
|
|
3171
3181
|
})]
|
|
3172
3182
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3173
3183
|
className: "flex w-full flex-col gap-2 sm:w-auto sm:shrink-0 sm:flex-row sm:items-center sm:gap-3",
|
|
3174
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
|
|
3184
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
|
|
3175
3185
|
type: "button",
|
|
3176
3186
|
variant: "secondary",
|
|
3177
3187
|
onClick: () => setActiveTab("Tasks"),
|
|
3178
3188
|
disabled: isSubmitting,
|
|
3179
3189
|
className: "w-full sm:w-auto",
|
|
3180
3190
|
children: "Cancel"
|
|
3181
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
|
|
3191
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Button, {
|
|
3182
3192
|
type: "button",
|
|
3183
3193
|
onClick: onSave,
|
|
3184
3194
|
disabled: !isDirty || isSubmitting,
|
|
3185
3195
|
"aria-busy": isSubmitting,
|
|
3186
3196
|
className: "w-full sm:w-auto",
|
|
3187
|
-
children: [isSubmitting && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Spinner, { className: "size-4" }), isSubmitting ? "Saving" : "Update Contact"]
|
|
3197
|
+
children: [isSubmitting && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Spinner, { className: "size-4" }), isSubmitting ? "Saving" : "Update Contact"]
|
|
3188
3198
|
})]
|
|
3189
3199
|
})]
|
|
3190
3200
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
@@ -3192,7 +3202,7 @@ function RepContactDetailView({ contact, contactId, countryOptions = DEFAULT_COU
|
|
|
3192
3202
|
children: TABS_WITHOUT_PROFILE.map((tab) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
3193
3203
|
type: "button",
|
|
3194
3204
|
onClick: () => setActiveTab(tab),
|
|
3195
|
-
className: require_src.cn(TAB_BUTTON_CLASS, activeTab === tab ? TAB_ACTIVE_CLASS : TAB_INACTIVE_CLASS),
|
|
3205
|
+
className: require_src$1.cn(TAB_BUTTON_CLASS, activeTab === tab ? TAB_ACTIVE_CLASS : TAB_INACTIVE_CLASS),
|
|
3196
3206
|
children: tab
|
|
3197
3207
|
}, tab))
|
|
3198
3208
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -3210,7 +3220,7 @@ function RepContactDetailView({ contact, contactId, countryOptions = DEFAULT_COU
|
|
|
3210
3220
|
contactId,
|
|
3211
3221
|
ref: openNoteModalRef
|
|
3212
3222
|
}),
|
|
3213
|
-
activeTab === "Profile" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Card, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.CardContent, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
3223
|
+
activeTab === "Profile" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Card, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.CardContent, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
3214
3224
|
className: "text-muted-foreground mb-6 text-sm",
|
|
3215
3225
|
children: "Update details below. Your contact card on the left is paused while you edit."
|
|
3216
3226
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ContactDetailsForm, {
|
|
@@ -3410,18 +3420,18 @@ function OrderCardSkeleton() {
|
|
|
3410
3420
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3411
3421
|
className: "space-y-3",
|
|
3412
3422
|
children: [
|
|
3413
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-5 w-32" }),
|
|
3423
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-5 w-32" }),
|
|
3414
3424
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3415
3425
|
className: "flex gap-2",
|
|
3416
3426
|
children: [
|
|
3417
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-5 w-20 rounded-xl" }),
|
|
3418
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-5 w-16 rounded-xl" }),
|
|
3419
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-5 w-24 rounded-xl" })
|
|
3427
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-5 w-20 rounded-xl" }),
|
|
3428
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-5 w-16 rounded-xl" }),
|
|
3429
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-5 w-24 rounded-xl" })
|
|
3420
3430
|
]
|
|
3421
3431
|
}),
|
|
3422
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-28" })
|
|
3432
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-4 w-28" })
|
|
3423
3433
|
]
|
|
3424
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-6 w-16" })]
|
|
3434
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-6 w-16" })]
|
|
3425
3435
|
})
|
|
3426
3436
|
});
|
|
3427
3437
|
}
|
|
@@ -3491,7 +3501,7 @@ function ContactOrdersList({ contactId, pageSize = 10 }) {
|
|
|
3491
3501
|
className: "space-y-4",
|
|
3492
3502
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
3493
3503
|
className: "flex items-center justify-between",
|
|
3494
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-6 w-24" })
|
|
3504
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-6 w-24" })
|
|
3495
3505
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
3496
3506
|
className: "space-y-3",
|
|
3497
3507
|
children: [
|
|
@@ -3653,19 +3663,19 @@ function SubscriptionCardSkeleton() {
|
|
|
3653
3663
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3654
3664
|
className: "flex items-start gap-4",
|
|
3655
3665
|
children: [
|
|
3656
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-12 w-12 rounded-lg" }),
|
|
3666
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-12 w-12 rounded-lg" }),
|
|
3657
3667
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3658
3668
|
className: "flex-1 space-y-3",
|
|
3659
3669
|
children: [
|
|
3660
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-5 w-32" }),
|
|
3670
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-5 w-32" }),
|
|
3661
3671
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3662
3672
|
className: "flex gap-2",
|
|
3663
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-5 w-16 rounded-xl" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-5 w-24 rounded-xl" })]
|
|
3673
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-5 w-16 rounded-xl" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-5 w-24 rounded-xl" })]
|
|
3664
3674
|
}),
|
|
3665
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-40" })
|
|
3675
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-4 w-40" })
|
|
3666
3676
|
]
|
|
3667
3677
|
}),
|
|
3668
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-6 w-16" })
|
|
3678
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-6 w-16" })
|
|
3669
3679
|
]
|
|
3670
3680
|
})
|
|
3671
3681
|
});
|
|
@@ -3745,7 +3755,7 @@ function ContactSubscriptionOrdersList({ contactId, pageSize = 10 }) {
|
|
|
3745
3755
|
className: "space-y-4",
|
|
3746
3756
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
3747
3757
|
className: "flex items-center justify-between",
|
|
3748
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-6 w-32" })
|
|
3758
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-6 w-32" })
|
|
3749
3759
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
3750
3760
|
className: "space-y-3",
|
|
3751
3761
|
children: [
|
|
@@ -3829,7 +3839,7 @@ function useUpdateContactMutation(contactId, queryKeyPrefix = "contacts", option
|
|
|
3829
3839
|
return (0, _tanstack_react_query.useMutation)({
|
|
3830
3840
|
mutationFn: ({ id, data }) => api.updateContact(id, data),
|
|
3831
3841
|
onSuccess: () => {
|
|
3832
|
-
require_src.fluidToast({
|
|
3842
|
+
require_src$1.fluidToast({
|
|
3833
3843
|
title: "Contact updated successfully",
|
|
3834
3844
|
type: "success"
|
|
3835
3845
|
});
|
|
@@ -3837,7 +3847,7 @@ function useUpdateContactMutation(contactId, queryKeyPrefix = "contacts", option
|
|
|
3837
3847
|
options?.onSuccess?.();
|
|
3838
3848
|
},
|
|
3839
3849
|
onError: (error) => {
|
|
3840
|
-
require_src.fluidToast({
|
|
3850
|
+
require_src$1.fluidToast({
|
|
3841
3851
|
title: "Failed to save contact",
|
|
3842
3852
|
type: "error",
|
|
3843
3853
|
description: require_parse_api_errors.parseApiErrors(error)
|
|
@@ -3854,7 +3864,7 @@ function useDeleteContactMutation(queryKeyPrefix = "contacts", options) {
|
|
|
3854
3864
|
return (0, _tanstack_react_query.useMutation)({
|
|
3855
3865
|
mutationFn: (contactId) => api.deleteContact(contactId),
|
|
3856
3866
|
onSuccess: () => {
|
|
3857
|
-
require_src.fluidToast({
|
|
3867
|
+
require_src$1.fluidToast({
|
|
3858
3868
|
title: "Contact deleted successfully",
|
|
3859
3869
|
type: "success"
|
|
3860
3870
|
});
|
|
@@ -3862,7 +3872,7 @@ function useDeleteContactMutation(queryKeyPrefix = "contacts", options) {
|
|
|
3862
3872
|
options?.onSuccess?.();
|
|
3863
3873
|
},
|
|
3864
3874
|
onError: (error) => {
|
|
3865
|
-
require_src.fluidToast({
|
|
3875
|
+
require_src$1.fluidToast({
|
|
3866
3876
|
title: "Failed to delete contact",
|
|
3867
3877
|
type: "error",
|
|
3868
3878
|
description: require_parse_api_errors.parseApiErrors(error)
|
|
@@ -3920,7 +3930,7 @@ function useContactDetailPage(contactId, options) {
|
|
|
3920
3930
|
value: c.iso ?? c.id.toString()
|
|
3921
3931
|
})) ?? []].sort((a, b) => a.name.localeCompare(b.name)), [countries]);
|
|
3922
3932
|
const contact = data?.contact;
|
|
3923
|
-
const methods = require_src.useZodForm(editContactFormSchema, {
|
|
3933
|
+
const methods = require_src$1.useZodForm(editContactFormSchema, {
|
|
3924
3934
|
values: (0, react.useMemo)(() => {
|
|
3925
3935
|
if (!contact) return void 0;
|
|
3926
3936
|
return {
|
|
@@ -3945,7 +3955,7 @@ function useContactDetailPage(contactId, options) {
|
|
|
3945
3955
|
data: payload
|
|
3946
3956
|
});
|
|
3947
3957
|
}, (errors) => {
|
|
3948
|
-
require_src.fluidToast({
|
|
3958
|
+
require_src$1.fluidToast({
|
|
3949
3959
|
title: "Please fix the form errors before saving",
|
|
3950
3960
|
description: Object.entries(errors).map(([field, err]) => {
|
|
3951
3961
|
const msg = typeof err?.message === "string" ? err.message : "invalid";
|
|
@@ -3982,7 +3992,7 @@ function useCreateContactMutation(queryKeyPrefix = "contacts", options) {
|
|
|
3982
3992
|
return (0, _tanstack_react_query.useMutation)({
|
|
3983
3993
|
mutationFn: (data) => api.createContact(data),
|
|
3984
3994
|
onSuccess: (data) => {
|
|
3985
|
-
require_src.fluidToast({
|
|
3995
|
+
require_src$1.fluidToast({
|
|
3986
3996
|
title: "Contact created successfully",
|
|
3987
3997
|
type: "success"
|
|
3988
3998
|
});
|
|
@@ -3991,7 +4001,7 @@ function useCreateContactMutation(queryKeyPrefix = "contacts", options) {
|
|
|
3991
4001
|
},
|
|
3992
4002
|
onError: (error) => {
|
|
3993
4003
|
if (options?.onError) options.onError(error);
|
|
3994
|
-
else require_src.fluidToast({
|
|
4004
|
+
else require_src$1.fluidToast({
|
|
3995
4005
|
title: "Failed to create contact",
|
|
3996
4006
|
type: "error",
|
|
3997
4007
|
description: require_parse_api_errors.parseApiErrors(error)
|
|
@@ -4429,7 +4439,7 @@ function ContactListView({ onNavigate, onContactSelect }) {
|
|
|
4429
4439
|
});
|
|
4430
4440
|
}
|
|
4431
4441
|
function ContactDetailView({ contactId, onNavigate }) {
|
|
4432
|
-
const countriesAdapter =
|
|
4442
|
+
const countriesAdapter = require_src.useCountriesApi();
|
|
4433
4443
|
const { contact, isLoading, methods, countryOptions, isDirty, isSubmitting, isDeleting, onSave, onDelete } = useContactDetailPage(contactId, {
|
|
4434
4444
|
queryKeyPrefix: QUERY_KEY_PREFIX,
|
|
4435
4445
|
getCountries: (0, react.useCallback)(async () => {
|
|
@@ -4457,7 +4467,7 @@ function ContactDetailView({ contactId, onNavigate }) {
|
|
|
4457
4467
|
});
|
|
4458
4468
|
if (!contact) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
4459
4469
|
className: "mx-auto max-w-7xl px-4 py-4 sm:px-6 sm:py-6 lg:px-10 lg:py-8",
|
|
4460
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
|
|
4470
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Button, {
|
|
4461
4471
|
variant: "ghost",
|
|
4462
4472
|
size: "sm",
|
|
4463
4473
|
className: "mb-6",
|
|
@@ -4513,7 +4523,7 @@ const CREATE_DEFAULT_VALUES = {
|
|
|
4513
4523
|
};
|
|
4514
4524
|
function ContactCreateView({ onNavigate, onCreateContact }) {
|
|
4515
4525
|
const formRef = (0, react.useRef)(null);
|
|
4516
|
-
const countriesAdapter =
|
|
4526
|
+
const countriesAdapter = require_src.useCountriesApi();
|
|
4517
4527
|
const { data: countriesResponse } = (0, _tanstack_react_query.useQuery)({
|
|
4518
4528
|
queryKey: ["bff-store-countries"],
|
|
4519
4529
|
queryFn: () => countriesAdapter.listCountries()
|
|
@@ -4522,7 +4532,7 @@ function ContactCreateView({ onNavigate, onCreateContact }) {
|
|
|
4522
4532
|
name: c.name,
|
|
4523
4533
|
value: c.code
|
|
4524
4534
|
})).sort((a, b) => a.name.localeCompare(b.name)), [countriesResponse]);
|
|
4525
|
-
const methods = require_src.useZodForm(createContactFormSchema, { defaultValues: CREATE_DEFAULT_VALUES });
|
|
4535
|
+
const methods = require_src$1.useZodForm(createContactFormSchema, { defaultValues: CREATE_DEFAULT_VALUES });
|
|
4526
4536
|
const mutation = useCreateContactMutation(QUERY_KEY_PREFIX, { onSuccess: (data) => {
|
|
4527
4537
|
onCreateContact?.();
|
|
4528
4538
|
const newContactId = data?.contact?.id;
|
|
@@ -4604,4 +4614,4 @@ Object.defineProperty(exports, "contactsScreenPropertySchema", {
|
|
|
4604
4614
|
}
|
|
4605
4615
|
});
|
|
4606
4616
|
|
|
4607
|
-
//# sourceMappingURL=ContactsScreen-
|
|
4617
|
+
//# sourceMappingURL=ContactsScreen-BQ6pvYOa.cjs.map
|