@fluid-app/portal-sdk 0.1.46 → 0.1.47
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/{CarouselWidget-Bx5jrthO.cjs → CarouselWidget-BRauT5r7.cjs} +2 -2
- package/dist/{CarouselWidget-Bx5jrthO.cjs.map → CarouselWidget-BRauT5r7.cjs.map} +1 -1
- package/dist/{CarouselWidget-C04z7JxO.mjs → CarouselWidget-C7vsjw7r.mjs} +2 -2
- package/dist/{CarouselWidget-C04z7JxO.mjs.map → CarouselWidget-C7vsjw7r.mjs.map} +1 -1
- package/dist/{CarouselWidget-BcnZwnIh.cjs → CarouselWidget-CE12yIQt.cjs} +2 -2
- package/dist/{ChartWidget-WaLM-zc-.mjs → ChartWidget-BqidaXNw.mjs} +2 -2
- package/dist/{ChartWidget-WaLM-zc-.mjs.map → ChartWidget-BqidaXNw.mjs.map} +1 -1
- package/dist/{ChartWidget-_jzD434L.cjs → ChartWidget-DQvxMlax.cjs} +2 -2
- package/dist/{ChartWidget-DWWeWN0Q.cjs → ChartWidget-pFCP3KBK.cjs} +2 -2
- package/dist/{ChartWidget-DWWeWN0Q.cjs.map → ChartWidget-pFCP3KBK.cjs.map} +1 -1
- package/dist/{ContactsScreen-C0I1_D_a.cjs → ContactsScreen-9G2HgNsy.cjs} +375 -39
- package/dist/ContactsScreen-9G2HgNsy.cjs.map +1 -0
- package/dist/{ContactsScreen-DO7EwobV.cjs → ContactsScreen-BmM91s6y.cjs} +8 -8
- package/dist/{ContactsScreen-B4FZ0Qeu.mjs → ContactsScreen-Cx3DlL9d.mjs} +8 -8
- package/dist/{ContactsScreen-CoFB7EM3.mjs → ContactsScreen-VftTRDXR.mjs} +376 -40
- package/dist/ContactsScreen-VftTRDXR.mjs.map +1 -0
- package/dist/{FluidProvider-DzrMOFXn.cjs → FluidProvider-CsIC3HL2.cjs} +9 -9
- package/dist/{FluidProvider-DzrMOFXn.cjs.map → FluidProvider-CsIC3HL2.cjs.map} +1 -1
- package/dist/{FluidProvider-iYl6DSax.mjs → FluidProvider-Dj4ToywG.mjs} +9 -9
- package/dist/{FluidProvider-iYl6DSax.mjs.map → FluidProvider-Dj4ToywG.mjs.map} +1 -1
- package/dist/{LinkWidget-DFApxWIK.cjs → LinkWidget-CHTbeWcV.cjs} +2 -2
- package/dist/{LinkWidget-CJKveS10.cjs → LinkWidget-Dk_01CMC.cjs} +2 -2
- package/dist/{LinkWidget-CJKveS10.cjs.map → LinkWidget-Dk_01CMC.cjs.map} +1 -1
- package/dist/{LinkWidget-NR2OqU4Y.mjs → LinkWidget-sDGQRCy9.mjs} +2 -2
- package/dist/{LinkWidget-NR2OqU4Y.mjs.map → LinkWidget-sDGQRCy9.mjs.map} +1 -1
- package/dist/{MessagingScreen-CUBOR0qo.cjs → MessagingScreen-4tFoITCO.cjs} +4 -4
- package/dist/{MessagingScreen-CUBOR0qo.cjs.map → MessagingScreen-4tFoITCO.cjs.map} +1 -1
- package/dist/{MessagingScreen-kP-1EJZ5.mjs → MessagingScreen-C24TYBXX.mjs} +8 -8
- package/dist/{MessagingScreen-CfbkE7H-.cjs → MessagingScreen-D5xc9XPU.cjs} +7 -7
- package/dist/{MessagingScreen-DgvqyD7k.mjs → MessagingScreen-DbJPeyhA.mjs} +5 -5
- package/dist/{MessagingScreen-DgvqyD7k.mjs.map → MessagingScreen-DbJPeyhA.mjs.map} +1 -1
- package/dist/{MySiteScreen-jE2m5qP6.cjs → MySiteScreen-Bjt-TIOI.cjs} +7 -7
- package/dist/{MySiteScreen-CvyqpzJd.mjs → MySiteScreen-CgsOL37h.mjs} +3 -3
- package/dist/{MySiteScreen-CvyqpzJd.mjs.map → MySiteScreen-CgsOL37h.mjs.map} +1 -1
- package/dist/{MySiteScreen-DUMMPU6X.mjs → MySiteScreen-CsdcTxTp.mjs} +7 -7
- package/dist/{MySiteScreen-NJSRcmI-.cjs → MySiteScreen-ohuek6np.cjs} +3 -3
- package/dist/{MySiteScreen-NJSRcmI-.cjs.map → MySiteScreen-ohuek6np.cjs.map} +1 -1
- package/dist/{OrdersScreen-BTJAhLgs.mjs → OrdersScreen-BZEcJ0Hb.mjs} +8 -8
- package/dist/{OrdersScreen-B2ErpU4b.mjs → OrdersScreen-Bhll_o_2.mjs} +4 -4
- package/dist/{OrdersScreen-B2ErpU4b.mjs.map → OrdersScreen-Bhll_o_2.mjs.map} +1 -1
- package/dist/{OrdersScreen-CE0GMwfC.cjs → OrdersScreen-DZBPD4Qu.cjs} +8 -8
- package/dist/{OrdersScreen-DvqljQVk.cjs → OrdersScreen-mRGgujQ-.cjs} +4 -4
- package/dist/{OrdersScreen-DvqljQVk.cjs.map → OrdersScreen-mRGgujQ-.cjs.map} +1 -1
- package/dist/{ProductsScreen-CBVy5Zyi.mjs → ProductsScreen-9c89IHiX.mjs} +4 -4
- package/dist/{ProductsScreen-CBVy5Zyi.mjs.map → ProductsScreen-9c89IHiX.mjs.map} +1 -1
- package/dist/{ProductsScreen-DdX6HMHt.cjs → ProductsScreen-BtgPVLUi.cjs} +4 -4
- package/dist/{ProductsScreen-DdX6HMHt.cjs.map → ProductsScreen-BtgPVLUi.cjs.map} +1 -1
- package/dist/{ProductsScreen-HIV2lQ9Z.cjs → ProductsScreen-CYs8q165.cjs} +8 -8
- package/dist/{ProductsScreen-Bb5icf74.mjs → ProductsScreen-Dy-cmEiB.mjs} +9 -9
- package/dist/{ProfileScreen-LmGvJwTb.cjs → ProfileScreen-CLM8iOmL.cjs} +4 -4
- package/dist/{ProfileScreen-LmGvJwTb.cjs.map → ProfileScreen-CLM8iOmL.cjs.map} +1 -1
- package/dist/{ProfileScreen-DAFrOHW1.cjs → ProfileScreen-DCCZN8zU.cjs} +7 -7
- package/dist/{ProfileScreen-BpJ41w20.mjs → ProfileScreen-DPtpl6j3.mjs} +7 -7
- package/dist/{ProfileScreen-r8ceJSGs.mjs → ProfileScreen-s8S3JVIE.mjs} +4 -4
- package/dist/{ProfileScreen-r8ceJSGs.mjs.map → ProfileScreen-s8S3JVIE.mjs.map} +1 -1
- package/dist/{ShareablesScreen-CBw3gH0u.cjs → ShareablesScreen-BN3uztrI.cjs} +8 -8
- package/dist/{ShareablesScreen-Dfa0LM6R.cjs → ShareablesScreen-D1Ouqir1.cjs} +4 -4
- package/dist/{ShareablesScreen-Dfa0LM6R.cjs.map → ShareablesScreen-D1Ouqir1.cjs.map} +1 -1
- package/dist/{ShareablesScreen-0JcyLc7i.mjs → ShareablesScreen-DR6219-z.mjs} +4 -4
- package/dist/{ShareablesScreen-0JcyLc7i.mjs.map → ShareablesScreen-DR6219-z.mjs.map} +1 -1
- package/dist/{ShareablesScreen-Riod6fjb.mjs → ShareablesScreen-nhOckVQr.mjs} +9 -9
- package/dist/{ShopScreen-DMDSD4gF.mjs → ShopScreen-CUaZmX4U.mjs} +5 -5
- package/dist/{ShopScreen-DMDSD4gF.mjs.map → ShopScreen-CUaZmX4U.mjs.map} +1 -1
- package/dist/{ShopScreen-CET9016G.cjs → ShopScreen-D8hz0Io1.cjs} +7 -7
- package/dist/{ShopScreen-C73ARj6e.cjs → ShopScreen-Ds7FGtOi.cjs} +5 -5
- package/dist/{ShopScreen-C73ARj6e.cjs.map → ShopScreen-Ds7FGtOi.cjs.map} +1 -1
- package/dist/{ShopScreen-Ddrw43gs.mjs → ShopScreen-Dz-gzUFw.mjs} +7 -7
- package/dist/{SubscriptionsScreen-CPXCoeeu.cjs → SubscriptionsScreen-Bt6RDwDB.cjs} +8 -8
- package/dist/{SubscriptionsScreen-BMjdIyWT.mjs → SubscriptionsScreen-CX3uLV-Y.mjs} +8 -8
- package/dist/{SubscriptionsScreen-CpvMZaU0.cjs → SubscriptionsScreen-sixWFqS0.cjs} +5 -5
- package/dist/{SubscriptionsScreen-CpvMZaU0.cjs.map → SubscriptionsScreen-sixWFqS0.cjs.map} +1 -1
- package/dist/{SubscriptionsScreen-BLrScFQV.mjs → SubscriptionsScreen-wfQjDMiz.mjs} +5 -5
- package/dist/{SubscriptionsScreen-BLrScFQV.mjs.map → SubscriptionsScreen-wfQjDMiz.mjs.map} +1 -1
- package/dist/{TableWidget-aZUcob2U.mjs → TableWidget-DF5i7arL.mjs} +2 -2
- package/dist/{TableWidget-aZUcob2U.mjs.map → TableWidget-DF5i7arL.mjs.map} +1 -1
- package/dist/{TableWidget-DFWfQIWv.cjs → TableWidget-DFpr7R3o.cjs} +2 -2
- package/dist/{TableWidget-DFWfQIWv.cjs.map → TableWidget-DFpr7R3o.cjs.map} +1 -1
- package/dist/{TableWidget-WB7hx4Hb.cjs → TableWidget-blS7QRfo.cjs} +2 -2
- package/dist/{es-CE6ELtdT.mjs → es-D5TTjbe7.mjs} +2 -2
- package/dist/{es-CE6ELtdT.mjs.map → es-D5TTjbe7.mjs.map} +1 -1
- package/dist/index.cjs +38 -38
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +39 -39
- package/dist/{products-DOCuAQDz.mjs → products-BHmOUNfQ.mjs} +3 -3
- package/dist/{products-DOCuAQDz.mjs.map → products-BHmOUNfQ.mjs.map} +1 -1
- package/dist/{products-zutaVs48.cjs → products-jXnAQoTU.cjs} +3 -3
- package/dist/{products-zutaVs48.cjs.map → products-jXnAQoTU.cjs.map} +1 -1
- package/dist/{src-Dd1iRW7j.mjs → src-BtBYwiNS.mjs} +2 -2
- package/dist/{src-Dd1iRW7j.mjs.map → src-BtBYwiNS.mjs.map} +1 -1
- package/dist/{src-CIhTbou2.mjs → src-CnrUO5fh.mjs} +4 -4
- package/dist/{src-CIhTbou2.mjs.map → src-CnrUO5fh.mjs.map} +1 -1
- package/dist/{src-CXGrnE7x.cjs → src-CpNCyVxq.cjs} +3 -3
- package/dist/{src-CXGrnE7x.cjs.map → src-CpNCyVxq.cjs.map} +1 -1
- package/dist/{src-CWGmmrLZ.cjs → src-Da7I1fqK.cjs} +17 -3
- package/dist/src-Da7I1fqK.cjs.map +1 -0
- package/dist/{src-COTid97-.cjs → src-DecFyd_1.cjs} +2 -2
- package/dist/{src-COTid97-.cjs.map → src-DecFyd_1.cjs.map} +1 -1
- package/dist/{src-BVkLGnwV.mjs → src-DvSsESTu.mjs} +12 -4
- package/dist/src-DvSsESTu.mjs.map +1 -0
- package/dist/{use-account-clients-BOwgvZok.cjs → use-account-clients-C0ioK2n_.cjs} +2 -2
- package/dist/{use-account-clients-BOwgvZok.cjs.map → use-account-clients-C0ioK2n_.cjs.map} +1 -1
- package/dist/{use-account-clients-EEcG-B1B.mjs → use-account-clients-D9HGyaK9.mjs} +2 -2
- package/dist/{use-account-clients-EEcG-B1B.mjs.map → use-account-clients-D9HGyaK9.mjs.map} +1 -1
- package/dist/{use-customer-account-TLWo3z05.mjs → use-customer-account-BwXCw2H3.mjs} +3 -3
- package/dist/{use-customer-account-TLWo3z05.mjs.map → use-customer-account-BwXCw2H3.mjs.map} +1 -1
- package/dist/{use-customer-account-BxoVi8ak.cjs → use-customer-account-CRcU8yDx.cjs} +3 -3
- package/dist/{use-customer-account-BxoVi8ak.cjs.map → use-customer-account-CRcU8yDx.cjs.map} +1 -1
- package/dist/{use-fluid-api-CU_r0Gu9.cjs → use-fluid-api-Bb3qgqYS.cjs} +2 -2
- package/dist/{use-fluid-api-CU_r0Gu9.cjs.map → use-fluid-api-Bb3qgqYS.cjs.map} +1 -1
- package/dist/{use-fluid-api-DH8hTTPQ.mjs → use-fluid-api-Chd3dSwr.mjs} +2 -2
- package/dist/{use-fluid-api-DH8hTTPQ.mjs.map → use-fluid-api-Chd3dSwr.mjs.map} +1 -1
- package/package.json +15 -15
- package/dist/ContactsScreen-C0I1_D_a.cjs.map +0 -1
- package/dist/ContactsScreen-CoFB7EM3.mjs.map +0 -1
- package/dist/src-BVkLGnwV.mjs.map +0 -1
- package/dist/src-CWGmmrLZ.cjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require("./chunk-DAgNkxik.cjs");
|
|
2
|
-
require("./FluidProvider-
|
|
2
|
+
require("./FluidProvider-CsIC3HL2.cjs");
|
|
3
3
|
require("./error-state-CGCSDJIJ.cjs");
|
|
4
4
|
require("./ScreenRenderer-C-H-ju1C.cjs");
|
|
5
5
|
require("./WidgetInteractionContext-ywxCBIMm.cjs");
|
|
@@ -11,16 +11,16 @@ require("./BulletListWidget-BUMq15V1.cjs");
|
|
|
11
11
|
require("./CalendarWidget-DLkcnQVx.cjs");
|
|
12
12
|
require("./CardWidget-B4cJHq6g.cjs");
|
|
13
13
|
require("./purify.es-CmsCRU2T.cjs");
|
|
14
|
-
require("./src-
|
|
14
|
+
require("./src-Da7I1fqK.cjs");
|
|
15
15
|
require("./scroll-arrows-Dw7eLYdG.cjs");
|
|
16
16
|
require("./MediaRenderer-CEV-eeB-.cjs");
|
|
17
|
-
require("./CarouselWidget-
|
|
17
|
+
require("./CarouselWidget-BRauT5r7.cjs");
|
|
18
18
|
require("./CatchUpWidget-CFL4REYX.cjs");
|
|
19
|
-
require("./ChartWidget-
|
|
19
|
+
require("./ChartWidget-pFCP3KBK.cjs");
|
|
20
20
|
require("./LayoutWidget-CsdItxHF.cjs");
|
|
21
21
|
require("./ContainerWidget-DZXzmDZl.cjs");
|
|
22
22
|
require("./ImageWidget-DwM4H6SC.cjs");
|
|
23
|
-
require("./LinkWidget-
|
|
23
|
+
require("./LinkWidget-Dk_01CMC.cjs");
|
|
24
24
|
require("./ListWidget-D8yMrpa5.cjs");
|
|
25
25
|
require("./MySiteWidget-DeAwyK5y.cjs");
|
|
26
26
|
require("./NestedWidget-CZuN2QY2.cjs");
|
|
@@ -28,12 +28,12 @@ require("./QuickShareWidget-CIfXUWCx.cjs");
|
|
|
28
28
|
require("./RecentActivityWidget-kRfjO1IV.cjs");
|
|
29
29
|
require("./SeparatorWidget-BUXIxV-F.cjs");
|
|
30
30
|
require("./SpacerWidget-DW_7QXrs.cjs");
|
|
31
|
-
require("./TableWidget-
|
|
31
|
+
require("./TableWidget-DFpr7R3o.cjs");
|
|
32
32
|
require("./ToDoWidget-GmeRwP_0.cjs");
|
|
33
33
|
require("./VideoWidget-CN8nMeGP.cjs");
|
|
34
|
-
require("./src-
|
|
34
|
+
require("./src-DecFyd_1.cjs");
|
|
35
35
|
require("./dist-CtcLRHrv.cjs");
|
|
36
|
-
const require_ContactsScreen = require("./ContactsScreen-
|
|
36
|
+
const require_ContactsScreen = require("./ContactsScreen-9G2HgNsy.cjs");
|
|
37
37
|
require("./dist-BUWkpuUk.cjs");
|
|
38
38
|
exports.ContactsScreen = require_ContactsScreen.ContactsScreen;
|
|
39
39
|
exports.contactsScreenPropertySchema = require_ContactsScreen.contactsScreenPropertySchema;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./FluidProvider-
|
|
1
|
+
import "./FluidProvider-Dj4ToywG.mjs";
|
|
2
2
|
import "./error-state-BGEvTYIh.mjs";
|
|
3
3
|
import "./ScreenRenderer-Dt-Qrx9w.mjs";
|
|
4
4
|
import "./WidgetInteractionContext-DAN31Alw.mjs";
|
|
@@ -10,16 +10,16 @@ import "./BulletListWidget-riFNn47D.mjs";
|
|
|
10
10
|
import "./CalendarWidget-B9I__jsL.mjs";
|
|
11
11
|
import "./CardWidget-CzRI-odk.mjs";
|
|
12
12
|
import "./purify.es-CKZbQnR8.mjs";
|
|
13
|
-
import "./src-
|
|
13
|
+
import "./src-DvSsESTu.mjs";
|
|
14
14
|
import "./scroll-arrows-E2JL1tu6.mjs";
|
|
15
15
|
import "./MediaRenderer-CI67k-ti.mjs";
|
|
16
|
-
import "./CarouselWidget-
|
|
16
|
+
import "./CarouselWidget-C7vsjw7r.mjs";
|
|
17
17
|
import "./CatchUpWidget-Cb0B0G90.mjs";
|
|
18
|
-
import "./ChartWidget-
|
|
18
|
+
import "./ChartWidget-BqidaXNw.mjs";
|
|
19
19
|
import "./LayoutWidget-pS3AMhD7.mjs";
|
|
20
20
|
import "./ContainerWidget-PNfcrIfV.mjs";
|
|
21
21
|
import "./ImageWidget-CvRlDtEa.mjs";
|
|
22
|
-
import "./LinkWidget-
|
|
22
|
+
import "./LinkWidget-sDGQRCy9.mjs";
|
|
23
23
|
import "./ListWidget-Dl2vSYmI.mjs";
|
|
24
24
|
import "./MySiteWidget-CD1fK3lT.mjs";
|
|
25
25
|
import "./NestedWidget-DjZumiak.mjs";
|
|
@@ -27,11 +27,11 @@ import "./QuickShareWidget-CvdvBmEn.mjs";
|
|
|
27
27
|
import "./RecentActivityWidget-uegOsG5c.mjs";
|
|
28
28
|
import "./SeparatorWidget-CkFIxxkI.mjs";
|
|
29
29
|
import "./SpacerWidget-CilIbCTV.mjs";
|
|
30
|
-
import "./TableWidget-
|
|
30
|
+
import "./TableWidget-DF5i7arL.mjs";
|
|
31
31
|
import "./ToDoWidget-iiVItJrO.mjs";
|
|
32
32
|
import "./VideoWidget-BAxtPtq5.mjs";
|
|
33
|
-
import "./src-
|
|
33
|
+
import "./src-BtBYwiNS.mjs";
|
|
34
34
|
import "./dist-NMbUD0qE.mjs";
|
|
35
|
-
import { n as contactsScreenPropertySchema, t as ContactsScreen } from "./ContactsScreen-
|
|
35
|
+
import { n as contactsScreenPropertySchema, t as ContactsScreen } from "./ContactsScreen-VftTRDXR.mjs";
|
|
36
36
|
import "./dist-_HuMD-TB.mjs";
|
|
37
37
|
export { ContactsScreen, contactsScreenPropertySchema };
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { J as createFetchClient, n as useFluidContext } from "./FluidProvider-
|
|
1
|
+
import { J as createFetchClient, n as useFluidContext } from "./FluidProvider-Dj4ToywG.mjs";
|
|
2
2
|
import { t as parseApiErrors } from "./parse-api-errors-Dy2gL1eC.mjs";
|
|
3
|
-
import { $t as
|
|
4
|
-
import { i as PaginationFooter } from "./src-
|
|
3
|
+
import { $t as AlertDialogAction, A as SelectContent, C as SheetContent, E as SheetTitle, G as Label, I as Input, J as DropdownMenuItem, Jt as Badge, K as DropdownMenu, M as SelectTrigger, N as SelectValue, Qt as AlertDialog, S as Sheet, St as CardTitle, T as SheetHeader, X as DropdownMenuSeparator, Xt as AvatarFallback, Y as DropdownMenuLabel, Yt as Avatar, Zt as AvatarImage, bt as CardContent, c as TabsList, d as TableBody, en as AlertDialogCancel, et as DropdownMenuTrigger, f as TableCell, h as TableRow, hn as cn, i as TooltipTrigger, in as AlertDialogHeader, j as SelectItem, k as Select, l as TabsTrigger, m as TableHeader, mn as useZodForm, n as TooltipContent, nn as AlertDialogDescription, o as Tabs, on as AlertDialogTitle, p as TableHead, q as DropdownMenuContent, r as TooltipProvider, rn as AlertDialogFooter, s as TabsContent, sn as Button, t as Tooltip, tn as AlertDialogContent, u as Table$1, vt as Card, w as SheetFooter, x as Skeleton, xt as CardHeader, y as fluidToast } from "./src-DvSsESTu.mjs";
|
|
4
|
+
import { i as PaginationFooter } from "./src-BtBYwiNS.mjs";
|
|
5
5
|
import { a as useEditor, n as Heading, o as Placeholder, r as EditorContent, t as StarterKit } from "./dist-NMbUD0qE.mjs";
|
|
6
6
|
import { n as TextAlign, t as Underline } from "./dist-_HuMD-TB.mjs";
|
|
7
7
|
import { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
|
|
8
8
|
import { keepPreviousData, useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
9
9
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
10
10
|
import { z } from "zod";
|
|
11
|
-
import { AlignCenter, AlignJustify, AlignLeft, AlignRight, ArrowLeft, Bell, Building, Calendar, CalendarDays, ChevronLeft, ChevronRight, CircleCheck, ClipboardList, EllipsisVertical, Eye, List, ListChecks, ListOrdered, Mail, MessageCircle, Paperclip, Pen, Pencil, Phone, Play, Plus, Repeat2, Rocket, Search, Share2, ShoppingCart, SquareCheckBig, Star, StickyNote, Trash2, Trophy, User, UserPlus, X } from "lucide-react";
|
|
11
|
+
import { AlignCenter, AlignJustify, AlignLeft, AlignRight, ArrowLeft, ArrowUpDown, Bell, Building, Calendar, CalendarDays, ChevronLeft, ChevronRight, CircleCheck, ClipboardList, EllipsisVertical, Eye, List, ListChecks, ListOrdered, Mail, MessageCircle, Paperclip, Pen, Pencil, Phone, Play, Plus, Repeat2, Rocket, Search, Share2, ShoppingCart, SquareCheckBig, Star, StickyNote, Trash2, Trophy, User, UserPlus, X } from "lucide-react";
|
|
12
12
|
import { zodResolver } from "@hookform/resolvers/zod";
|
|
13
13
|
import { FormProvider, useController, useForm, useFormContext, useWatch } from "react-hook-form";
|
|
14
14
|
//#region ../../contacts/ui/src/shared/components/contacts/statusBadge.tsx
|
|
@@ -38,21 +38,233 @@ function StatusBadge({ status, label, className }) {
|
|
|
38
38
|
}
|
|
39
39
|
//#endregion
|
|
40
40
|
//#region ../../contacts/ui/src/shared/components/contacts/allContacts/contactsTable.tsx
|
|
41
|
+
function getInitials(fullName) {
|
|
42
|
+
const trimmed = fullName?.trim();
|
|
43
|
+
if (!trimmed) return "?";
|
|
44
|
+
const parts = trimmed.split(/\s+/).filter(Boolean);
|
|
45
|
+
if (parts.length >= 2) {
|
|
46
|
+
const a = parts[0]?.[0];
|
|
47
|
+
const b = parts[1]?.[0];
|
|
48
|
+
return `${a ?? ""}${b ?? ""}`.toUpperCase() || "?";
|
|
49
|
+
}
|
|
50
|
+
return trimmed.slice(0, 2).toUpperCase();
|
|
51
|
+
}
|
|
52
|
+
function dedupeGroupLabels(labels) {
|
|
53
|
+
const seen = /* @__PURE__ */ new Set();
|
|
54
|
+
const out = [];
|
|
55
|
+
for (const label of labels) {
|
|
56
|
+
const key = label.toLowerCase();
|
|
57
|
+
if (seen.has(key)) continue;
|
|
58
|
+
seen.add(key);
|
|
59
|
+
out.push(label);
|
|
60
|
+
}
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
/** Pull a display label from one API group/tag object or string. */
|
|
64
|
+
function labelFromGroupLikeItem(item) {
|
|
65
|
+
if (typeof item === "string") return item.trim();
|
|
66
|
+
if (!item || typeof item !== "object") return "";
|
|
67
|
+
const o = item;
|
|
68
|
+
for (const k of [
|
|
69
|
+
"name",
|
|
70
|
+
"title",
|
|
71
|
+
"label",
|
|
72
|
+
"display_name"
|
|
73
|
+
]) {
|
|
74
|
+
const v = o[k];
|
|
75
|
+
if (typeof v === "string" && v.trim()) return v.trim();
|
|
76
|
+
}
|
|
77
|
+
return "";
|
|
78
|
+
}
|
|
79
|
+
function labelsFromGroupArray(value) {
|
|
80
|
+
if (!Array.isArray(value) || value.length === 0) return [];
|
|
81
|
+
return dedupeGroupLabels(value.map(labelFromGroupLikeItem).filter(Boolean));
|
|
82
|
+
}
|
|
83
|
+
function labelsFromMetadata(m) {
|
|
84
|
+
for (const key of [
|
|
85
|
+
"contact_groups",
|
|
86
|
+
"contactGroups",
|
|
87
|
+
"groups",
|
|
88
|
+
"labels",
|
|
89
|
+
"tags",
|
|
90
|
+
"segments"
|
|
91
|
+
]) {
|
|
92
|
+
const found = labelsFromGroupArray(m[key]);
|
|
93
|
+
if (found.length > 0) return found;
|
|
94
|
+
}
|
|
95
|
+
for (const key of [
|
|
96
|
+
"group_name",
|
|
97
|
+
"contact_group",
|
|
98
|
+
"group"
|
|
99
|
+
]) {
|
|
100
|
+
const v = m[key];
|
|
101
|
+
if (typeof v === "string" && v.trim()) return [v.trim()];
|
|
102
|
+
const one = labelFromGroupLikeItem(v);
|
|
103
|
+
if (one) return [one];
|
|
104
|
+
}
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
function firstNonEmptyGroupList(...candidates) {
|
|
108
|
+
for (const c of candidates) {
|
|
109
|
+
const labels = labelsFromGroupArray(c);
|
|
110
|
+
if (labels.length > 0) return labels;
|
|
111
|
+
}
|
|
112
|
+
return [];
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Ordered group labels for badges. Prefer plural/array sources before singular
|
|
116
|
+
* `contact_group` so we don't drop additional groups when the API sends both.
|
|
117
|
+
*/
|
|
118
|
+
function resolveContactGroupLabels(contact) {
|
|
119
|
+
const raw = contact;
|
|
120
|
+
const fromPlural = firstNonEmptyGroupList(raw.contact_groups, raw.contactGroups, raw.groups, raw.labels, raw.tags, raw.segments);
|
|
121
|
+
if (fromPlural.length > 0) return fromPlural;
|
|
122
|
+
const direct = raw.group;
|
|
123
|
+
if (typeof direct === "string" && direct.trim()) return [direct.trim()];
|
|
124
|
+
const nested = raw.contact_group;
|
|
125
|
+
const singleNested = labelFromGroupLikeItem(nested);
|
|
126
|
+
if (singleNested) return [singleNested];
|
|
127
|
+
const meta = contact.metadata;
|
|
128
|
+
if (meta && typeof meta === "object") {
|
|
129
|
+
const fromMeta = labelsFromMetadata(meta);
|
|
130
|
+
if (fromMeta.length > 0) return fromMeta;
|
|
131
|
+
}
|
|
132
|
+
const lead = contact.lead_type;
|
|
133
|
+
if (lead && String(lead).trim()) return [String(lead).replaceAll("_", " ")];
|
|
134
|
+
return [];
|
|
135
|
+
}
|
|
136
|
+
function RepContactCard({ contact, selected, onToggleSelect, onRowClick, onEditContact, setSelectedContacts, setOpenDeleteModal }) {
|
|
137
|
+
const groupLabels = resolveContactGroupLabels(contact);
|
|
138
|
+
const groupTitle = groupLabels.length > 0 ? groupLabels.join(", ") : void 0;
|
|
139
|
+
return /* @__PURE__ */ jsx(Card, {
|
|
140
|
+
className: cn("border-border hover:bg-accent/30 h-[100px] w-full flex-col items-start justify-center gap-0 py-0 shadow-sm transition-colors", selected && "bg-accent/40 border-primary/25 ring-primary/20 ring-1"),
|
|
141
|
+
children: /* @__PURE__ */ jsx(CardContent, {
|
|
142
|
+
className: "w-full px-3 py-0",
|
|
143
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
144
|
+
className: "flex items-center gap-2 sm:gap-3",
|
|
145
|
+
children: [
|
|
146
|
+
/* @__PURE__ */ jsx("div", {
|
|
147
|
+
className: "flex shrink-0 items-center",
|
|
148
|
+
onClick: (e) => e.stopPropagation(),
|
|
149
|
+
children: /* @__PURE__ */ jsx("input", {
|
|
150
|
+
type: "checkbox",
|
|
151
|
+
checked: selected,
|
|
152
|
+
onChange: () => onToggleSelect(contact.id),
|
|
153
|
+
"aria-label": `Select ${contact.full_name}`,
|
|
154
|
+
className: "accent-primary h-3.5 w-3.5 rounded sm:h-4 sm:w-4"
|
|
155
|
+
})
|
|
156
|
+
}),
|
|
157
|
+
/* @__PURE__ */ jsxs("button", {
|
|
158
|
+
type: "button",
|
|
159
|
+
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",
|
|
160
|
+
onClick: () => onRowClick?.(contact),
|
|
161
|
+
children: [
|
|
162
|
+
/* @__PURE__ */ jsxs(Avatar, {
|
|
163
|
+
className: "size-12 shrink-0",
|
|
164
|
+
children: [contact.avatar_url ? /* @__PURE__ */ jsx(AvatarImage, {
|
|
165
|
+
src: contact.avatar_url,
|
|
166
|
+
alt: contact.full_name || "Contact"
|
|
167
|
+
}) : null, /* @__PURE__ */ jsx(AvatarFallback, {
|
|
168
|
+
className: "border-border text-foreground bg-accent ring-border/80 text-xs font-semibold ring-1",
|
|
169
|
+
children: getInitials(contact.full_name)
|
|
170
|
+
})]
|
|
171
|
+
}),
|
|
172
|
+
/* @__PURE__ */ jsx("span", {
|
|
173
|
+
className: "max-w-[32%] min-w-0 shrink truncate text-sm leading-tight font-semibold sm:max-w-none sm:flex-[1.15]",
|
|
174
|
+
title: contact.full_name,
|
|
175
|
+
children: contact.full_name || "—"
|
|
176
|
+
}),
|
|
177
|
+
/* @__PURE__ */ jsx("span", {
|
|
178
|
+
className: "text-muted-foreground min-w-0 flex-[1.35] truncate text-xs leading-tight",
|
|
179
|
+
title: contact.email ?? void 0,
|
|
180
|
+
children: contact.email || "—"
|
|
181
|
+
}),
|
|
182
|
+
/* @__PURE__ */ jsx("span", {
|
|
183
|
+
className: "text-muted-foreground min-w-0 flex-[0.95] truncate text-xs leading-tight",
|
|
184
|
+
title: contact.phone ?? void 0,
|
|
185
|
+
children: contact.phone || "—"
|
|
186
|
+
}),
|
|
187
|
+
/* @__PURE__ */ jsxs("span", {
|
|
188
|
+
className: "text-muted-foreground flex min-w-0 flex-[0.95] items-center gap-1 text-xs leading-tight",
|
|
189
|
+
title: groupTitle,
|
|
190
|
+
children: [groupLabels.length > 0 ? groupLabels.slice(0, 2).map((label, index) => /* @__PURE__ */ jsx(Badge, {
|
|
191
|
+
variant: "secondary",
|
|
192
|
+
className: "max-w-[min(100%,10rem)] shrink truncate font-normal capitalize",
|
|
193
|
+
title: label,
|
|
194
|
+
children: label
|
|
195
|
+
}, `${contact.id}-group-${index}-${label}`)) : "—", groupLabels.length > 2 && /* @__PURE__ */ jsxs("span", {
|
|
196
|
+
className: "text-muted-foreground shrink-0 text-[10px]",
|
|
197
|
+
children: ["+", groupLabels.length - 2]
|
|
198
|
+
})]
|
|
199
|
+
})
|
|
200
|
+
]
|
|
201
|
+
}),
|
|
202
|
+
/* @__PURE__ */ jsx("div", {
|
|
203
|
+
className: "flex shrink-0 items-center",
|
|
204
|
+
onClick: (e) => e.stopPropagation(),
|
|
205
|
+
children: /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
|
|
206
|
+
asChild: true,
|
|
207
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
208
|
+
variant: "ghost",
|
|
209
|
+
size: "icon-xs",
|
|
210
|
+
"aria-label": "Contact actions",
|
|
211
|
+
children: /* @__PURE__ */ jsx(EllipsisVertical, { className: "h-4 w-4" })
|
|
212
|
+
})
|
|
213
|
+
}), /* @__PURE__ */ jsxs(DropdownMenuContent, {
|
|
214
|
+
align: "end",
|
|
215
|
+
children: [onEditContact && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
216
|
+
onClick: () => onEditContact(contact),
|
|
217
|
+
children: [/* @__PURE__ */ jsx(Pencil, { className: "h-3.5 w-3.5" }), "Edit"]
|
|
218
|
+
}), /* @__PURE__ */ jsx(DropdownMenuSeparator, {})] }), /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
219
|
+
className: "text-destructive",
|
|
220
|
+
onClick: () => {
|
|
221
|
+
setSelectedContacts([contact]);
|
|
222
|
+
setOpenDeleteModal(true);
|
|
223
|
+
},
|
|
224
|
+
children: [/* @__PURE__ */ jsx(Trash2, { className: "h-3.5 w-3.5" }), "Delete"]
|
|
225
|
+
})]
|
|
226
|
+
})] })
|
|
227
|
+
})
|
|
228
|
+
]
|
|
229
|
+
})
|
|
230
|
+
})
|
|
231
|
+
});
|
|
232
|
+
}
|
|
41
233
|
const TABS = [
|
|
42
234
|
"All",
|
|
43
235
|
"Leads",
|
|
44
236
|
"Customers"
|
|
45
237
|
];
|
|
238
|
+
function getSortComparable(contact, field) {
|
|
239
|
+
if (field === "name") return contact.full_name ?? "";
|
|
240
|
+
return contact.email ?? "";
|
|
241
|
+
}
|
|
46
242
|
const PAGE_SIZE = 25;
|
|
47
|
-
|
|
243
|
+
const CONTACT_SORT_COLUMNS = [{
|
|
244
|
+
id: "name",
|
|
245
|
+
name: "Name"
|
|
246
|
+
}, {
|
|
247
|
+
id: "email",
|
|
248
|
+
name: "Email"
|
|
249
|
+
}];
|
|
250
|
+
function ContactsTable({ listContacts, queryKeyPrefix, setSelectedContacts, setOpenDeleteModal, onEditContact, onRowClick, resetKey, tableLayout }) {
|
|
251
|
+
const isMemberLayout = tableLayout === "members";
|
|
48
252
|
const [currentPage, setCurrentPage] = useState(1);
|
|
49
253
|
const [searchTerm, setSearchTerm] = useState("");
|
|
50
254
|
const [activeTab, setActiveTab] = useState("All");
|
|
255
|
+
const [currentSort, setCurrentSort] = useState({
|
|
256
|
+
id: "name",
|
|
257
|
+
desc: false
|
|
258
|
+
});
|
|
51
259
|
const [selectedIds, setSelectedIds] = useState(/* @__PURE__ */ new Set());
|
|
52
260
|
useEffect(() => {
|
|
53
261
|
setCurrentPage(1);
|
|
54
262
|
setSelectedIds(/* @__PURE__ */ new Set());
|
|
55
|
-
}, [
|
|
263
|
+
}, [
|
|
264
|
+
searchTerm,
|
|
265
|
+
activeTab,
|
|
266
|
+
currentSort
|
|
267
|
+
]);
|
|
56
268
|
useEffect(() => {
|
|
57
269
|
setSelectedIds(/* @__PURE__ */ new Set());
|
|
58
270
|
}, [currentPage]);
|
|
@@ -64,19 +276,34 @@ function ContactsTable({ listContacts, queryKeyPrefix, setSelectedContacts, setO
|
|
|
64
276
|
queryKey: [queryKeyPrefix, {
|
|
65
277
|
searchTerm,
|
|
66
278
|
currentPage,
|
|
67
|
-
activeTab
|
|
279
|
+
activeTab,
|
|
280
|
+
sortField: currentSort.id,
|
|
281
|
+
sortDesc: currentSort.desc
|
|
68
282
|
}],
|
|
69
283
|
queryFn: () => listContacts({
|
|
70
284
|
search_query: searchTerm || void 0,
|
|
71
285
|
page: currentPage,
|
|
72
286
|
per_page: PAGE_SIZE,
|
|
73
|
-
...resolvedStatus ? { status: resolvedStatus } : {}
|
|
74
|
-
|
|
287
|
+
...resolvedStatus ? { status: resolvedStatus } : {},
|
|
288
|
+
sort_by: currentSort.id,
|
|
289
|
+
sort_direction: currentSort.desc ? "desc" : "asc"
|
|
290
|
+
}),
|
|
291
|
+
placeholderData: keepPreviousData
|
|
75
292
|
});
|
|
76
293
|
const items = useMemo(() => data?.contacts ?? [], [data?.contacts]);
|
|
294
|
+
const displayItems = useMemo(() => {
|
|
295
|
+
const sortField = currentSort.id;
|
|
296
|
+
const sortDir = currentSort.desc ? "desc" : "asc";
|
|
297
|
+
return [...items].sort((a, b) => {
|
|
298
|
+
const av = getSortComparable(a, sortField).toLowerCase();
|
|
299
|
+
const bv = getSortComparable(b, sortField).toLowerCase();
|
|
300
|
+
const cmp = av.localeCompare(bv, void 0, { sensitivity: "base" });
|
|
301
|
+
return sortDir === "asc" ? cmp : -cmp;
|
|
302
|
+
});
|
|
303
|
+
}, [items, currentSort]);
|
|
77
304
|
const totalItems = data?.meta?.total_count ?? 0;
|
|
78
305
|
const totalPages = Math.max(1, Math.ceil(totalItems / PAGE_SIZE));
|
|
79
|
-
const allSelected =
|
|
306
|
+
const allSelected = displayItems.length > 0 && displayItems.every((c) => selectedIds.has(c.id));
|
|
80
307
|
const someSelected = selectedIds.size > 0 && !allSelected;
|
|
81
308
|
const selectAllRef = useRef(null);
|
|
82
309
|
useEffect(() => {
|
|
@@ -85,11 +312,11 @@ function ContactsTable({ listContacts, queryKeyPrefix, setSelectedContacts, setO
|
|
|
85
312
|
const toggleSelectAll = useCallback(() => {
|
|
86
313
|
setSelectedIds((prev) => {
|
|
87
314
|
const next = new Set(prev);
|
|
88
|
-
if (allSelected) for (const item of
|
|
89
|
-
else for (const item of
|
|
315
|
+
if (allSelected) for (const item of displayItems) next.delete(item.id);
|
|
316
|
+
else for (const item of displayItems) next.add(item.id);
|
|
90
317
|
return next;
|
|
91
318
|
});
|
|
92
|
-
}, [allSelected,
|
|
319
|
+
}, [allSelected, displayItems]);
|
|
93
320
|
const toggleSelect = useCallback((id) => {
|
|
94
321
|
setSelectedIds((prev) => {
|
|
95
322
|
const next = new Set(prev);
|
|
@@ -99,13 +326,13 @@ function ContactsTable({ listContacts, queryKeyPrefix, setSelectedContacts, setO
|
|
|
99
326
|
});
|
|
100
327
|
}, []);
|
|
101
328
|
const handleBulkDelete = useCallback(() => {
|
|
102
|
-
const selected =
|
|
329
|
+
const selected = displayItems.filter((c) => selectedIds.has(c.id));
|
|
103
330
|
if (selected.length > 0) {
|
|
104
331
|
setSelectedContacts(selected);
|
|
105
332
|
setOpenDeleteModal(true);
|
|
106
333
|
}
|
|
107
334
|
}, [
|
|
108
|
-
|
|
335
|
+
displayItems,
|
|
109
336
|
selectedIds,
|
|
110
337
|
setSelectedContacts,
|
|
111
338
|
setOpenDeleteModal
|
|
@@ -116,18 +343,55 @@ function ContactsTable({ listContacts, queryKeyPrefix, setSelectedContacts, setO
|
|
|
116
343
|
/* @__PURE__ */ jsxs("div", {
|
|
117
344
|
className: "flex flex-col gap-2 p-3 sm:flex-row sm:items-center sm:justify-between",
|
|
118
345
|
children: [/* @__PURE__ */ jsx("div", {
|
|
119
|
-
className: "flex items-center gap-
|
|
120
|
-
children:
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
346
|
+
className: "flex flex-wrap items-center gap-2 sm:gap-3",
|
|
347
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
348
|
+
className: "flex items-center gap-1",
|
|
349
|
+
children: TABS.map((tab) => /* @__PURE__ */ jsx(Button, {
|
|
350
|
+
variant: "ghost",
|
|
351
|
+
size: "sm",
|
|
352
|
+
onClick: () => setActiveTab(tab),
|
|
353
|
+
className: cn("rounded-md text-xs", activeTab === tab && "bg-accent font-bold"),
|
|
354
|
+
children: tab
|
|
355
|
+
}, tab))
|
|
356
|
+
})
|
|
357
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
358
|
+
className: "flex min-w-0 flex-1 items-center justify-end gap-2 sm:max-w-none",
|
|
359
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
360
|
+
className: "shrink-0",
|
|
361
|
+
children: /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
|
|
362
|
+
asChild: true,
|
|
363
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
364
|
+
variant: "ghost",
|
|
365
|
+
size: "icon-xs",
|
|
366
|
+
"aria-label": "Sort contacts",
|
|
367
|
+
children: /* @__PURE__ */ jsx(ArrowUpDown, { className: "h-4 w-4" })
|
|
368
|
+
})
|
|
369
|
+
}), /* @__PURE__ */ jsxs(DropdownMenuContent, {
|
|
370
|
+
align: "end",
|
|
371
|
+
className: "w-48",
|
|
372
|
+
children: [
|
|
373
|
+
/* @__PURE__ */ jsx(DropdownMenuLabel, {
|
|
374
|
+
className: "text-xs font-medium",
|
|
375
|
+
children: "Sort by"
|
|
376
|
+
}),
|
|
377
|
+
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
|
|
378
|
+
CONTACT_SORT_COLUMNS.map((col) => /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
379
|
+
onClick: () => setCurrentSort((prev) => ({
|
|
380
|
+
id: col.id,
|
|
381
|
+
desc: prev.id === col.id ? !prev.desc : false
|
|
382
|
+
})),
|
|
383
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
384
|
+
className: "flex-1",
|
|
385
|
+
children: col.name
|
|
386
|
+
}), currentSort.id === col.id && /* @__PURE__ */ jsx("span", {
|
|
387
|
+
className: "text-muted-foreground text-xs",
|
|
388
|
+
children: currentSort.desc ? "↓" : "↑"
|
|
389
|
+
})]
|
|
390
|
+
}, col.id))
|
|
391
|
+
]
|
|
392
|
+
})] })
|
|
393
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
394
|
+
className: "relative min-w-0 flex-1 sm:w-auto sm:min-w-[220px] sm:flex-initial",
|
|
131
395
|
children: [/* @__PURE__ */ jsx("div", {
|
|
132
396
|
className: "pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3",
|
|
133
397
|
children: /* @__PURE__ */ jsx(Search, { className: "text-muted-foreground h-4 w-4" })
|
|
@@ -138,10 +402,81 @@ function ContactsTable({ listContacts, queryKeyPrefix, setSelectedContacts, setO
|
|
|
138
402
|
className: "h-8 w-full pl-10 text-sm",
|
|
139
403
|
placeholder: "Search contacts..."
|
|
140
404
|
})]
|
|
141
|
-
})
|
|
405
|
+
})]
|
|
142
406
|
})]
|
|
143
407
|
}),
|
|
144
|
-
/* @__PURE__ */
|
|
408
|
+
isMemberLayout ? /* @__PURE__ */ jsxs("div", {
|
|
409
|
+
className: "space-y-3 p-3",
|
|
410
|
+
children: [!isLoading && items.length > 0 ? /* @__PURE__ */ jsxs("div", {
|
|
411
|
+
className: "bg-muted/40 border-border flex flex-wrap items-center justify-between gap-2 rounded-lg border px-3 py-2",
|
|
412
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
413
|
+
className: "flex items-center gap-3",
|
|
414
|
+
children: [/* @__PURE__ */ jsx("input", {
|
|
415
|
+
ref: selectAllRef,
|
|
416
|
+
type: "checkbox",
|
|
417
|
+
checked: allSelected,
|
|
418
|
+
onChange: toggleSelectAll,
|
|
419
|
+
"aria-label": allSelected ? "Deselect all" : "Select all on this page",
|
|
420
|
+
className: "accent-primary h-4 w-4 shrink-0 rounded"
|
|
421
|
+
}), selectedIds.size > 0 ? /* @__PURE__ */ jsxs("span", {
|
|
422
|
+
className: "text-foreground text-sm font-medium",
|
|
423
|
+
children: [selectedIds.size, " selected"]
|
|
424
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
425
|
+
className: "text-muted-foreground text-sm",
|
|
426
|
+
children: "Select all"
|
|
427
|
+
})]
|
|
428
|
+
}), selectedIds.size > 0 ? /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
|
|
429
|
+
asChild: true,
|
|
430
|
+
children: /* @__PURE__ */ jsxs(Button, {
|
|
431
|
+
variant: "ghost",
|
|
432
|
+
size: "sm",
|
|
433
|
+
className: "h-8 gap-1 text-xs",
|
|
434
|
+
children: [/* @__PURE__ */ jsx(EllipsisVertical, { className: "h-4 w-4" }), "Actions"]
|
|
435
|
+
})
|
|
436
|
+
}), /* @__PURE__ */ jsx(DropdownMenuContent, {
|
|
437
|
+
align: "end",
|
|
438
|
+
children: /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
439
|
+
className: "text-destructive",
|
|
440
|
+
onClick: handleBulkDelete,
|
|
441
|
+
children: [
|
|
442
|
+
/* @__PURE__ */ jsx(Trash2, { className: "h-3.5 w-3.5" }),
|
|
443
|
+
"Delete ",
|
|
444
|
+
selectedIds.size,
|
|
445
|
+
" ",
|
|
446
|
+
selectedIds.size === 1 ? "contact" : "contacts"
|
|
447
|
+
]
|
|
448
|
+
})
|
|
449
|
+
})] }) : null]
|
|
450
|
+
}) : null, isLoading ? Array(5).fill(0).map((_, i) => /* @__PURE__ */ jsx(Card, {
|
|
451
|
+
className: "border-border h-[100px] w-full flex-col items-start justify-center gap-0 py-0 shadow-sm",
|
|
452
|
+
children: /* @__PURE__ */ jsx(CardContent, {
|
|
453
|
+
className: "w-full px-3 py-0",
|
|
454
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
455
|
+
className: "flex items-center gap-2 sm:gap-3",
|
|
456
|
+
children: [
|
|
457
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-3.5 w-3.5 shrink-0 rounded sm:h-4 sm:w-4" }),
|
|
458
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "size-12 shrink-0 rounded-full" }),
|
|
459
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-3.5 max-w-[32%] shrink sm:max-w-none sm:flex-[1.15]" }),
|
|
460
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-3.5 min-w-0 flex-[1.35]" }),
|
|
461
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-3.5 min-w-0 flex-[0.95]" }),
|
|
462
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-3.5 min-w-0 flex-[0.95]" }),
|
|
463
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "size-7 shrink-0 rounded-md" })
|
|
464
|
+
]
|
|
465
|
+
})
|
|
466
|
+
})
|
|
467
|
+
}, `card-skel-${i}`)) : items.length === 0 ? /* @__PURE__ */ jsx("div", {
|
|
468
|
+
className: "text-muted-foreground py-10 text-center text-sm",
|
|
469
|
+
children: "No contacts found"
|
|
470
|
+
}) : displayItems.map((contact) => /* @__PURE__ */ jsx(RepContactCard, {
|
|
471
|
+
contact,
|
|
472
|
+
selected: selectedIds.has(contact.id),
|
|
473
|
+
onToggleSelect: toggleSelect,
|
|
474
|
+
onRowClick,
|
|
475
|
+
onEditContact,
|
|
476
|
+
setSelectedContacts,
|
|
477
|
+
setOpenDeleteModal
|
|
478
|
+
}, contact.id))]
|
|
479
|
+
}) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
|
|
145
480
|
className: "block md:hidden",
|
|
146
481
|
children: isLoading ? Array(5).fill(0).map((_, i) => /* @__PURE__ */ jsx("div", {
|
|
147
482
|
className: "border-border border-b p-4",
|
|
@@ -152,11 +487,11 @@ function ContactsTable({ listContacts, queryKeyPrefix, setSelectedContacts, setO
|
|
|
152
487
|
}, `skeleton-${i}`)) : items.length === 0 ? /* @__PURE__ */ jsx("div", {
|
|
153
488
|
className: "text-muted-foreground px-3 py-8 text-center text-sm",
|
|
154
489
|
children: "No contacts found"
|
|
155
|
-
}) :
|
|
490
|
+
}) : displayItems.map((contact) => /* @__PURE__ */ jsx("div", {
|
|
156
491
|
className: "border-border hover:bg-accent cursor-pointer border-b p-4 transition-colors last:border-b-0",
|
|
157
492
|
onClick: () => onRowClick?.(contact),
|
|
158
493
|
children: /* @__PURE__ */ jsxs("div", {
|
|
159
|
-
className: "flex items-center justify-between",
|
|
494
|
+
className: "flex items-center justify-between gap-3",
|
|
160
495
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
161
496
|
className: "min-w-0 flex-1",
|
|
162
497
|
children: [/* @__PURE__ */ jsx("p", {
|
|
@@ -169,8 +504,7 @@ function ContactsTable({ listContacts, queryKeyPrefix, setSelectedContacts, setO
|
|
|
169
504
|
}), contact.status && /* @__PURE__ */ jsx(StatusBadge, { status: contact.status })]
|
|
170
505
|
})
|
|
171
506
|
}, contact.id))
|
|
172
|
-
}),
|
|
173
|
-
/* @__PURE__ */ jsx("div", {
|
|
507
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
174
508
|
className: "hidden md:block",
|
|
175
509
|
children: /* @__PURE__ */ jsxs(Table$1, {
|
|
176
510
|
className: "min-w-full table-fixed",
|
|
@@ -297,7 +631,7 @@ function ContactsTable({ listContacts, queryKeyPrefix, setSelectedContacts, setO
|
|
|
297
631
|
colSpan: 7,
|
|
298
632
|
className: "text-muted-foreground px-3 py-8 text-center",
|
|
299
633
|
children: "No contacts found"
|
|
300
|
-
}) }) :
|
|
634
|
+
}) }) : displayItems.map((contact) => /* @__PURE__ */ jsxs(TableRow, {
|
|
301
635
|
className: cn("cursor-pointer", selectedIds.has(contact.id) && "bg-accent"),
|
|
302
636
|
onClick: () => onRowClick?.(contact),
|
|
303
637
|
children: [
|
|
@@ -352,10 +686,10 @@ function ContactsTable({ listContacts, queryKeyPrefix, setSelectedContacts, setO
|
|
|
352
686
|
})
|
|
353
687
|
}), /* @__PURE__ */ jsxs(DropdownMenuContent, {
|
|
354
688
|
align: "end",
|
|
355
|
-
children: [onEditContact && /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
689
|
+
children: [onEditContact && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
356
690
|
onClick: () => onEditContact(contact),
|
|
357
691
|
children: [/* @__PURE__ */ jsx(Pencil, { className: "h-3.5 w-3.5" }), "Edit"]
|
|
358
|
-
}), /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
692
|
+
}), /* @__PURE__ */ jsx(DropdownMenuSeparator, {})] }), /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
359
693
|
className: "text-destructive",
|
|
360
694
|
onClick: () => {
|
|
361
695
|
setSelectedContacts([contact]);
|
|
@@ -370,7 +704,7 @@ function ContactsTable({ listContacts, queryKeyPrefix, setSelectedContacts, setO
|
|
|
370
704
|
})
|
|
371
705
|
]
|
|
372
706
|
})
|
|
373
|
-
}),
|
|
707
|
+
})] }),
|
|
374
708
|
/* @__PURE__ */ jsx(PaginationFooter, {
|
|
375
709
|
currentPage,
|
|
376
710
|
totalPages,
|
|
@@ -394,7 +728,7 @@ const CONTACTS_QUERY_KEYS = {
|
|
|
394
728
|
};
|
|
395
729
|
//#endregion
|
|
396
730
|
//#region ../../contacts/ui/src/shared/components/contacts/allContacts/contactsPage.tsx
|
|
397
|
-
function ContactsPage({ listContacts, deleteContacts, queryKeyPrefix, header, onEditContact, onRowClick }) {
|
|
731
|
+
function ContactsPage({ listContacts, deleteContacts, queryKeyPrefix, header, onEditContact, onRowClick, tableLayout }) {
|
|
398
732
|
const [openDeleteModal, setOpenDeleteModal] = useState(false);
|
|
399
733
|
const [selectedContacts, setSelectedContacts] = useState([]);
|
|
400
734
|
const [resetKey, setResetKey] = useState(0);
|
|
@@ -433,7 +767,8 @@ function ContactsPage({ listContacts, deleteContacts, queryKeyPrefix, header, on
|
|
|
433
767
|
setOpenDeleteModal,
|
|
434
768
|
onEditContact,
|
|
435
769
|
onRowClick,
|
|
436
|
-
resetKey
|
|
770
|
+
resetKey,
|
|
771
|
+
tableLayout
|
|
437
772
|
})
|
|
438
773
|
}),
|
|
439
774
|
/* @__PURE__ */ jsx(AlertDialog, {
|
|
@@ -3702,6 +4037,7 @@ function ContactListView({ client, onNavigate, onContactSelect }) {
|
|
|
3702
4037
|
deleteContacts: useCallback((ids) => bulkDeleteUserContacts(client, { contact_ids: ids }), [client]),
|
|
3703
4038
|
queryKeyPrefix: QUERY_KEY_PREFIX,
|
|
3704
4039
|
header,
|
|
4040
|
+
tableLayout: "members",
|
|
3705
4041
|
onEditContact: handleSelectContact,
|
|
3706
4042
|
onRowClick: handleSelectContact
|
|
3707
4043
|
});
|
|
@@ -3919,4 +4255,4 @@ const contactsScreenPropertySchema = {
|
|
|
3919
4255
|
//#endregion
|
|
3920
4256
|
export { contactsScreenPropertySchema as n, ContactsScreen as t };
|
|
3921
4257
|
|
|
3922
|
-
//# sourceMappingURL=ContactsScreen-
|
|
4258
|
+
//# sourceMappingURL=ContactsScreen-VftTRDXR.mjs.map
|