@fluid-app/portal-sdk 0.1.235 → 0.1.237
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/{AppDownloadScreen-B0YwMqYM.cjs → AppDownloadScreen-BXnl23_d.cjs} +2 -2
- package/dist/{AppDownloadScreen-B0YwMqYM.cjs.map → AppDownloadScreen-BXnl23_d.cjs.map} +1 -1
- package/dist/{AppDownloadScreen-CT_TvZfy.mjs → AppDownloadScreen-DQR40F0y.mjs} +2 -2
- package/dist/{AppDownloadScreen-CT_TvZfy.mjs.map → AppDownloadScreen-DQR40F0y.mjs.map} +1 -1
- package/dist/{AppNavigationContext-BDs1cOuG.cjs → AppNavigationContext-C1-hd9Rw.cjs} +1 -1
- package/dist/{AppNavigationContext-BDs1cOuG.cjs.map → AppNavigationContext-C1-hd9Rw.cjs.map} +1 -1
- package/dist/{AppNavigationContext-DNod9mf6.mjs → AppNavigationContext-Dvc0yoZF.mjs} +1 -1
- package/dist/{AppNavigationContext-DNod9mf6.mjs.map → AppNavigationContext-Dvc0yoZF.mjs.map} +1 -1
- package/dist/{ContactsScreen-BaILrn_J.cjs → ContactsScreen-CH_P8WxC.cjs} +1 -1
- package/dist/{ContactsScreen-C0TixAga.mjs → ContactsScreen-CMBERzKU.mjs} +2 -2
- package/dist/{ContactsScreen-C0TixAga.mjs.map → ContactsScreen-CMBERzKU.mjs.map} +1 -1
- package/dist/{ContactsScreen-Cgpeq_3G.cjs → ContactsScreen-Cj0_VI0d.cjs} +2 -2
- package/dist/{ContactsScreen-Cgpeq_3G.cjs.map → ContactsScreen-Cj0_VI0d.cjs.map} +1 -1
- package/dist/{CustomersScreen-DJzgMofN.mjs → CustomersScreen-BJOBG5f5.mjs} +1 -1
- package/dist/{CustomersScreen-DJzgMofN.mjs.map → CustomersScreen-BJOBG5f5.mjs.map} +1 -1
- package/dist/{CustomersScreen-GROLIynQ.cjs → CustomersScreen-DW3BuhBs.cjs} +1 -1
- package/dist/{CustomersScreen-GROLIynQ.cjs.map → CustomersScreen-DW3BuhBs.cjs.map} +1 -1
- package/dist/{MessagingScreen-CAqiCGjA.cjs → MessagingScreen-40YCQbX9.cjs} +3 -3
- package/dist/{MessagingScreen-CAqiCGjA.cjs.map → MessagingScreen-40YCQbX9.cjs.map} +1 -1
- package/dist/{MessagingScreen-DNxIsd2Q.cjs → MessagingScreen-CrdiB4M3.cjs} +1 -1
- package/dist/{MessagingScreen-BzTN_FU8.mjs → MessagingScreen-RItZgONw.mjs} +3 -3
- package/dist/{MessagingScreen-BzTN_FU8.mjs.map → MessagingScreen-RItZgONw.mjs.map} +1 -1
- package/dist/{OrdersScreen-BlZgI0XT.mjs → OrdersScreen-BV3vJ7xy.mjs} +2 -2
- package/dist/{OrdersScreen-BlZgI0XT.mjs.map → OrdersScreen-BV3vJ7xy.mjs.map} +1 -1
- package/dist/{OrdersScreen-Cr_2QuUc.cjs → OrdersScreen-Cuch7aki.cjs} +1 -1
- package/dist/{OrdersScreen-BrqNjvTY.cjs → OrdersScreen-DPcp2dLW.cjs} +2 -2
- package/dist/{OrdersScreen-BrqNjvTY.cjs.map → OrdersScreen-DPcp2dLW.cjs.map} +1 -1
- package/dist/{ProfileScreen-ZN-A1RDl.cjs → ProfileScreen-CEKbhSRz.cjs} +3 -3
- package/dist/{ProfileScreen-ZN-A1RDl.cjs.map → ProfileScreen-CEKbhSRz.cjs.map} +1 -1
- package/dist/{ProfileScreen-DFkgLmNL.mjs → ProfileScreen-CeD1jq89.mjs} +3 -3
- package/dist/{ProfileScreen-DFkgLmNL.mjs.map → ProfileScreen-CeD1jq89.mjs.map} +1 -1
- package/dist/{ProfileScreen-Urnx0LDK.cjs → ProfileScreen-Dex8VHSB.cjs} +1 -1
- package/dist/{ShareablesScreen-DlrTvvXe.cjs → ShareablesScreen-Bt0E1aya.cjs} +4 -4
- package/dist/{ShareablesScreen-DlrTvvXe.cjs.map → ShareablesScreen-Bt0E1aya.cjs.map} +1 -1
- package/dist/{ShareablesScreen-CvIi80jN.mjs → ShareablesScreen-D3Hfqg9-.mjs} +4 -4
- package/dist/{ShareablesScreen-CvIi80jN.mjs.map → ShareablesScreen-D3Hfqg9-.mjs.map} +1 -1
- package/dist/{ShareablesScreen-Boi-_GvN.cjs → ShareablesScreen-LSyiDa6q.cjs} +1 -1
- package/dist/{ShopScreen-2FSVxXiE.cjs → ShopScreen-BiqZPyiB.cjs} +3 -3
- package/dist/{ShopScreen-2FSVxXiE.cjs.map → ShopScreen-BiqZPyiB.cjs.map} +1 -1
- package/dist/{ShopScreen-BxjZQ0SG.cjs → ShopScreen-Cgro0M1d.cjs} +1 -1
- package/dist/{ShopScreen-Bkuiya9D.mjs → ShopScreen-dAe71cdL.mjs} +3 -3
- package/dist/{ShopScreen-Bkuiya9D.mjs.map → ShopScreen-dAe71cdL.mjs.map} +1 -1
- package/dist/{SubscriptionsScreen-B7pAMsaf.mjs → SubscriptionsScreen-CXM2zmF7.mjs} +4 -4
- package/dist/{SubscriptionsScreen-B7pAMsaf.mjs.map → SubscriptionsScreen-CXM2zmF7.mjs.map} +1 -1
- package/dist/{SubscriptionsScreen-Cv3C3SVW.cjs → SubscriptionsScreen-DrDSwMXS.cjs} +4 -4
- package/dist/{SubscriptionsScreen-Cv3C3SVW.cjs.map → SubscriptionsScreen-DrDSwMXS.cjs.map} +1 -1
- package/dist/{SubscriptionsScreen-BbokDXZD.cjs → SubscriptionsScreen-t5wtDGfB.cjs} +1 -1
- package/dist/index.cjs +159 -172
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +10 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +159 -172
- package/dist/index.mjs.map +1 -1
- package/dist/{query-keys-D3lK70Ea.cjs → query-keys-elu0svUd.cjs} +1 -1
- package/dist/{query-keys-D3lK70Ea.cjs.map → query-keys-elu0svUd.cjs.map} +1 -1
- package/dist/{query-keys-xJy_fapN.mjs → query-keys-oQKvV4jp.mjs} +1 -1
- package/dist/{query-keys-xJy_fapN.mjs.map → query-keys-oQKvV4jp.mjs.map} +1 -1
- package/dist/{use-account-DcBCP06c.cjs → use-account-C1X-VLY-.cjs} +2 -2
- package/dist/{use-account-DcBCP06c.cjs.map → use-account-C1X-VLY-.cjs.map} +1 -1
- package/dist/{use-account-CBMPhhs7.mjs → use-account-C76sphlu.mjs} +2 -2
- package/dist/{use-account-CBMPhhs7.mjs.map → use-account-C76sphlu.mjs.map} +1 -1
- package/dist/{use-store-By_7tzrN.mjs → use-store-C2KBIS41.mjs} +1 -1
- package/dist/{use-store-By_7tzrN.mjs.map → use-store-C2KBIS41.mjs.map} +1 -1
- package/dist/{use-store-lOOUcpRT.cjs → use-store-D2S1FywW.cjs} +1 -1
- package/dist/{use-store-lOOUcpRT.cjs.map → use-store-D2S1FywW.cjs.map} +1 -1
- package/package.json +16 -16
package/dist/index.mjs
CHANGED
|
@@ -25,8 +25,8 @@ import "./MediaRenderer-CqUpv3St.mjs";
|
|
|
25
25
|
import { r as carouselWidgetPropertySchema, t as CarouselWidget } from "./CarouselWidget-CdQhlRrW.mjs";
|
|
26
26
|
import { r as catchUpWidgetPropertySchema, t as CatchUpWidget } from "./CatchUpWidget-BQjtjcGR.mjs";
|
|
27
27
|
import { At as CardTitle, C as Skeleton$1, Dn as Button, Dt as CardDescription, Fn as cn$1, Ot as CardFooter, _t as CollapsibleContent, gt as Collapsible, ht as PopoverTrigger, kt as CardHeader, mt as PopoverContent, pt as Popover, vt as CollapsibleTrigger, wt as Card, x as Toaster } from "./src-pgBBOcJa.mjs";
|
|
28
|
-
import { a as useMessagingConfig, i as createFluidFileUploader, o as useMessagingAuth, r as messagingScreenPropertySchema, t as MessagingScreen } from "./MessagingScreen-
|
|
29
|
-
import { r as subscriptionsScreenPropertySchema, t as SubscriptionsScreen } from "./SubscriptionsScreen-
|
|
28
|
+
import { a as useMessagingConfig, i as createFluidFileUploader, o as useMessagingAuth, r as messagingScreenPropertySchema, t as MessagingScreen } from "./MessagingScreen-RItZgONw.mjs";
|
|
29
|
+
import { r as subscriptionsScreenPropertySchema, t as SubscriptionsScreen } from "./SubscriptionsScreen-CXM2zmF7.mjs";
|
|
30
30
|
import { r as chartWidgetPropertySchema, t as ChartWidget } from "./ChartWidget-obje-Xj9.mjs";
|
|
31
31
|
import { r as containerWidgetPropertySchema, t as ContainerWidget } from "./ContainerWidget-DYThUtiZ.mjs";
|
|
32
32
|
import { r as imageWidgetPropertySchema, t as ImageWidget } from "./ImageWidget-CFTpbu8X.mjs";
|
|
@@ -45,26 +45,26 @@ import { r as tableWidgetPropertySchema, t as TableWidget } from "./TableWidget-
|
|
|
45
45
|
import { r as toDoWidgetPropertySchema, t as ToDoWidget } from "./ToDoWidget-VSaNmtWH.mjs";
|
|
46
46
|
import { r as videoWidgetPropertySchema, t as VideoWidget } from "./VideoWidget-DcWm239R.mjs";
|
|
47
47
|
import { i as useScreenHeaderContext, t as ScreenHeaderProvider } from "./ScreenHeaderContext-Cemdo7bM.mjs";
|
|
48
|
-
import { t as
|
|
49
|
-
import { t as
|
|
50
|
-
import {
|
|
51
|
-
import {
|
|
48
|
+
import { t as useStore } from "./use-store-C2KBIS41.mjs";
|
|
49
|
+
import { i as CoreScreenPlaceholder, r as customersScreenPropertySchema, t as CustomersScreen } from "./CustomersScreen-BJOBG5f5.mjs";
|
|
50
|
+
import { n as useAppNavigation, t as AppNavigationProvider } from "./AppNavigationContext-Dvc0yoZF.mjs";
|
|
51
|
+
import { t as useAccount } from "./use-account-C76sphlu.mjs";
|
|
52
52
|
import "./fluid-pay-api-adapter-eNT8m0xB.mjs";
|
|
53
|
-
import { r as profileScreenPropertySchema, t as ProfileScreen } from "./ProfileScreen-
|
|
53
|
+
import { r as profileScreenPropertySchema, t as ProfileScreen } from "./ProfileScreen-CeD1jq89.mjs";
|
|
54
54
|
import "./dist-PbA1vxAz.mjs";
|
|
55
|
-
import { r as contactsScreenPropertySchema, t as ContactsScreen } from "./ContactsScreen-
|
|
55
|
+
import { r as contactsScreenPropertySchema, t as ContactsScreen } from "./ContactsScreen-CMBERzKU.mjs";
|
|
56
56
|
import "./SearchSort-CFHU38Er.mjs";
|
|
57
57
|
import "./InfiniteScrollSentinel-B_clNL9Y.mjs";
|
|
58
58
|
import "./dist-o2cjwzIa.mjs";
|
|
59
59
|
import "./order-status-badge-Dmo8lLnt.mjs";
|
|
60
|
-
import { r as ordersScreenPropertySchema, t as OrdersScreen } from "./OrdersScreen-
|
|
60
|
+
import { r as ordersScreenPropertySchema, t as OrdersScreen } from "./OrdersScreen-BV3vJ7xy.mjs";
|
|
61
61
|
import "./sortable.esm-C8G00cCP.mjs";
|
|
62
62
|
import { r as mySiteScreenPropertySchema, t as MySiteScreen } from "./MySiteScreen-CN0ZDBgy.mjs";
|
|
63
|
-
import { r as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-
|
|
63
|
+
import { r as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-D3Hfqg9-.mjs";
|
|
64
64
|
import "./PortalProductsApiProvider-BIZg_c4Y.mjs";
|
|
65
|
-
import { r as shopScreenPropertySchema, t as ShopScreen } from "./ShopScreen-
|
|
65
|
+
import { r as shopScreenPropertySchema, t as ShopScreen } from "./ShopScreen-dAe71cdL.mjs";
|
|
66
66
|
import "./UpgradeScreen-DnGnWVTf.mjs";
|
|
67
|
-
import "./AppDownloadScreen-
|
|
67
|
+
import "./AppDownloadScreen-DQR40F0y.mjs";
|
|
68
68
|
import * as React$1 from "react";
|
|
69
69
|
import { Component, StrictMode, Suspense, createContext, forwardRef, lazy, memo, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
70
70
|
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
@@ -1650,140 +1650,6 @@ function SdkNavigation({ navItems, currentSlug, onNavigate }) {
|
|
|
1650
1650
|
}) });
|
|
1651
1651
|
}
|
|
1652
1652
|
//#endregion
|
|
1653
|
-
//#region src/navigation/filter-nav-items.ts
|
|
1654
|
-
/**
|
|
1655
|
-
* Filter navigation items by removing rep-only slugs.
|
|
1656
|
-
* Handles nested children: rep-only children are removed, and parents
|
|
1657
|
-
* with no remaining children are also removed.
|
|
1658
|
-
*/
|
|
1659
|
-
function filterRepOnlyNavItems(items) {
|
|
1660
|
-
const result = [];
|
|
1661
|
-
for (const item of items) {
|
|
1662
|
-
if (!item.children?.length) {
|
|
1663
|
-
if (isRepOnlySlug(item.slug)) continue;
|
|
1664
|
-
result.push(item);
|
|
1665
|
-
continue;
|
|
1666
|
-
}
|
|
1667
|
-
if (isRepOnlySlug(item.slug)) continue;
|
|
1668
|
-
const filteredChildren = filterRepOnlyNavItems(item.children);
|
|
1669
|
-
if (filteredChildren.length === 0) continue;
|
|
1670
|
-
result.push({
|
|
1671
|
-
...item,
|
|
1672
|
-
children: filteredChildren
|
|
1673
|
-
});
|
|
1674
|
-
}
|
|
1675
|
-
return result;
|
|
1676
|
-
}
|
|
1677
|
-
/**
|
|
1678
|
-
* Filter system navigation sections by removing rep-only items.
|
|
1679
|
-
* Sections with no remaining items are dropped entirely.
|
|
1680
|
-
*/
|
|
1681
|
-
function filterRepOnlySections(sections) {
|
|
1682
|
-
const filtered = {};
|
|
1683
|
-
for (const [section, items] of Object.entries(sections)) {
|
|
1684
|
-
const allowed = items.filter((item) => !isRepOnlySlug(item.slug));
|
|
1685
|
-
if (allowed.length > 0) filtered[section] = allowed;
|
|
1686
|
-
}
|
|
1687
|
-
return filtered;
|
|
1688
|
-
}
|
|
1689
|
-
//#endregion
|
|
1690
|
-
//#region src/shell/QuickLinksDropdown.tsx
|
|
1691
|
-
function QuickLinksDropdown({ onNavigate }) {
|
|
1692
|
-
const [open, setOpen] = useState(false);
|
|
1693
|
-
const { data: account } = useAccount();
|
|
1694
|
-
const isCustomer = account?.member_type === "customer";
|
|
1695
|
-
const sections = useMemo(() => {
|
|
1696
|
-
const all = getSystemNavigationBySection();
|
|
1697
|
-
return isCustomer ? filterRepOnlySections(all) : all;
|
|
1698
|
-
}, [isCustomer]);
|
|
1699
|
-
return /* @__PURE__ */ jsxs(Popover, {
|
|
1700
|
-
open,
|
|
1701
|
-
onOpenChange: setOpen,
|
|
1702
|
-
children: [/* @__PURE__ */ jsx(PopoverTrigger, {
|
|
1703
|
-
asChild: true,
|
|
1704
|
-
children: /* @__PURE__ */ jsx(Button, {
|
|
1705
|
-
variant: "ghost",
|
|
1706
|
-
size: "sm",
|
|
1707
|
-
className: "text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shrink-0",
|
|
1708
|
-
"aria-label": "Quick links",
|
|
1709
|
-
children: /* @__PURE__ */ jsx(LayoutGrid, { className: "h-4 w-4" })
|
|
1710
|
-
})
|
|
1711
|
-
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
1712
|
-
align: "end",
|
|
1713
|
-
className: "w-175 max-w-[90vw] overflow-hidden rounded-lg p-0 shadow-lg",
|
|
1714
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
1715
|
-
className: "flex flex-col",
|
|
1716
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
1717
|
-
className: "bg-background flex items-center gap-2 border-b p-4",
|
|
1718
|
-
children: [/* @__PURE__ */ jsx(LayoutGrid, { className: "text-muted-foreground h-5 w-5" }), /* @__PURE__ */ jsx("h3", {
|
|
1719
|
-
className: "text-foreground text-sm font-semibold",
|
|
1720
|
-
children: "Shortcuts"
|
|
1721
|
-
})]
|
|
1722
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
1723
|
-
className: "bg-muted space-y-6 p-6",
|
|
1724
|
-
children: Object.entries(sections).map(([sectionName, items]) => /* @__PURE__ */ jsxs("div", {
|
|
1725
|
-
className: "space-y-3",
|
|
1726
|
-
children: [/* @__PURE__ */ jsx("h3", {
|
|
1727
|
-
className: "text-foreground text-sm font-semibold",
|
|
1728
|
-
children: sectionName
|
|
1729
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
1730
|
-
className: "grid grid-cols-4 gap-2",
|
|
1731
|
-
children: items.map((item) => /* @__PURE__ */ jsxs(Button, {
|
|
1732
|
-
variant: "ghost",
|
|
1733
|
-
className: "text-sidebar-foreground hover:bg-sidebar-primary hover:text-sidebar-primary-foreground h-auto justify-start gap-2 rounded-lg px-3 py-2 text-sm",
|
|
1734
|
-
onClick: () => {
|
|
1735
|
-
if (item.slug) onNavigate(item.slug);
|
|
1736
|
-
setOpen(false);
|
|
1737
|
-
},
|
|
1738
|
-
children: [item.icon && /* @__PURE__ */ jsx(RepIcon, {
|
|
1739
|
-
name: item.icon,
|
|
1740
|
-
className: "h-4 w-4 shrink-0"
|
|
1741
|
-
}), /* @__PURE__ */ jsx("span", {
|
|
1742
|
-
className: "truncate",
|
|
1743
|
-
children: item.label
|
|
1744
|
-
})]
|
|
1745
|
-
}, item.slug))
|
|
1746
|
-
})]
|
|
1747
|
-
}, sectionName))
|
|
1748
|
-
})]
|
|
1749
|
-
})
|
|
1750
|
-
})]
|
|
1751
|
-
});
|
|
1752
|
-
}
|
|
1753
|
-
//#endregion
|
|
1754
|
-
//#region src/shell/SdkMobileQuickLinksGrid.tsx
|
|
1755
|
-
function SdkMobileQuickLinksGrid({ onNavigate }) {
|
|
1756
|
-
const { data: account } = useAccount();
|
|
1757
|
-
const isCustomer = account?.member_type === "customer";
|
|
1758
|
-
const sections = useMemo(() => {
|
|
1759
|
-
const all = getSystemNavigationBySection();
|
|
1760
|
-
return isCustomer ? filterRepOnlySections(all) : all;
|
|
1761
|
-
}, [isCustomer]);
|
|
1762
|
-
return /* @__PURE__ */ jsx("div", {
|
|
1763
|
-
className: "space-y-4",
|
|
1764
|
-
children: Object.entries(sections).map(([sectionName, items]) => /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h4", {
|
|
1765
|
-
className: "text-muted-foreground mb-2 text-xs font-semibold uppercase",
|
|
1766
|
-
children: sectionName
|
|
1767
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
1768
|
-
className: "grid grid-cols-3 gap-2",
|
|
1769
|
-
children: items.map((item) => /* @__PURE__ */ jsxs(Button, {
|
|
1770
|
-
variant: "ghost",
|
|
1771
|
-
className: "text-sidebar-foreground hover:bg-sidebar-primary hover:text-sidebar-primary-foreground h-auto flex-col gap-1 rounded-lg p-2",
|
|
1772
|
-
onClick: () => {
|
|
1773
|
-
if (item.slug) onNavigate(item.slug);
|
|
1774
|
-
},
|
|
1775
|
-
children: [item.icon && /* @__PURE__ */ jsx(RepIcon, {
|
|
1776
|
-
name: item.icon,
|
|
1777
|
-
className: "size-5"
|
|
1778
|
-
}), /* @__PURE__ */ jsx("span", {
|
|
1779
|
-
className: "text-xs",
|
|
1780
|
-
children: item.label
|
|
1781
|
-
})]
|
|
1782
|
-
}, item.slug))
|
|
1783
|
-
})] }, sectionName))
|
|
1784
|
-
});
|
|
1785
|
-
}
|
|
1786
|
-
//#endregion
|
|
1787
1653
|
//#region src/shell/SdkMobileProfileMenu.tsx
|
|
1788
1654
|
function getInitials(name) {
|
|
1789
1655
|
if (!name) return "U";
|
|
@@ -1861,10 +1727,6 @@ function SdkMobileProfileMenu({ onNavigate, onLogout }) {
|
|
|
1861
1727
|
children: [/* @__PURE__ */ jsx(Smartphone, { className: "size-5" }), /* @__PURE__ */ jsx("span", { children: "App Download" })]
|
|
1862
1728
|
})
|
|
1863
1729
|
}),
|
|
1864
|
-
/* @__PURE__ */ jsx("div", {
|
|
1865
|
-
className: "border-border border-b py-4",
|
|
1866
|
-
children: /* @__PURE__ */ jsx(SdkMobileQuickLinksGrid, { onNavigate: handleNavigate })
|
|
1867
|
-
}),
|
|
1868
1730
|
/* @__PURE__ */ jsxs("div", {
|
|
1869
1731
|
className: "space-y-4 py-4",
|
|
1870
1732
|
children: [/* @__PURE__ */ jsxs("button", {
|
|
@@ -1912,7 +1774,6 @@ function SdkHeader({ mobileTabs, currentSlug, onNavigate, onLogout }) {
|
|
|
1912
1774
|
children: /* @__PURE__ */ jsx(Menu, { className: "size-5" })
|
|
1913
1775
|
}),
|
|
1914
1776
|
/* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
1915
|
-
/* @__PURE__ */ jsx(QuickLinksDropdown, { onNavigate }),
|
|
1916
1777
|
/* @__PURE__ */ jsx("button", {
|
|
1917
1778
|
type: "button",
|
|
1918
1779
|
onClick: themeMode.cycleMode,
|
|
@@ -2211,17 +2072,17 @@ function AccountManageLayout({ children }) {
|
|
|
2211
2072
|
}
|
|
2212
2073
|
//#endregion
|
|
2213
2074
|
//#region src/shell/system-screen-map.ts
|
|
2214
|
-
const ProfileScreen$1 = lazy(() => import("./ProfileScreen-
|
|
2215
|
-
const OrdersScreen$1 = lazy(() => import("./OrdersScreen-
|
|
2216
|
-
const SubscriptionsScreen$1 = lazy(() => import("./SubscriptionsScreen-
|
|
2217
|
-
const MessagingScreen$1 = lazy(() => import("./MessagingScreen-
|
|
2218
|
-
const ContactsScreen$1 = lazy(() => import("./ContactsScreen-
|
|
2219
|
-
const ShopScreen$1 = lazy(() => import("./ShopScreen-
|
|
2220
|
-
const CustomersScreen$1 = lazy(() => import("./CustomersScreen-
|
|
2221
|
-
const ShareablesScreen$1 = lazy(() => import("./ShareablesScreen-
|
|
2075
|
+
const ProfileScreen$1 = lazy(() => import("./ProfileScreen-CeD1jq89.mjs").then((n) => n.n).then((m) => ({ default: m.ProfileScreen })));
|
|
2076
|
+
const OrdersScreen$1 = lazy(() => import("./OrdersScreen-BV3vJ7xy.mjs").then((n) => n.n).then((m) => ({ default: m.OrdersScreen })));
|
|
2077
|
+
const SubscriptionsScreen$1 = lazy(() => import("./SubscriptionsScreen-CXM2zmF7.mjs").then((n) => n.n).then((m) => ({ default: m.SubscriptionsScreen })));
|
|
2078
|
+
const MessagingScreen$1 = lazy(() => import("./MessagingScreen-RItZgONw.mjs").then((n) => n.n).then((m) => ({ default: m.MessagingScreen })));
|
|
2079
|
+
const ContactsScreen$1 = lazy(() => import("./ContactsScreen-CMBERzKU.mjs").then((n) => n.n).then((m) => ({ default: m.ContactsScreen })));
|
|
2080
|
+
const ShopScreen$1 = lazy(() => import("./ShopScreen-dAe71cdL.mjs").then((n) => n.n).then((m) => ({ default: m.ShopScreen })));
|
|
2081
|
+
const CustomersScreen$1 = lazy(() => import("./CustomersScreen-BJOBG5f5.mjs").then((n) => n.n).then((m) => ({ default: m.CustomersScreen })));
|
|
2082
|
+
const ShareablesScreen$1 = lazy(() => import("./ShareablesScreen-D3Hfqg9-.mjs").then((n) => n.n).then((m) => ({ default: m.ShareablesScreen })));
|
|
2222
2083
|
const MySiteScreen$1 = lazy(() => import("./MySiteScreen-CN0ZDBgy.mjs").then((n) => n.n).then((m) => ({ default: m.MySiteScreen })));
|
|
2223
2084
|
const UpgradeScreen = lazy(() => import("./UpgradeScreen-DnGnWVTf.mjs").then((n) => n.t).then((m) => ({ default: m.UpgradeScreen })));
|
|
2224
|
-
const AppDownloadScreen = lazy(() => import("./AppDownloadScreen-
|
|
2085
|
+
const AppDownloadScreen = lazy(() => import("./AppDownloadScreen-DQR40F0y.mjs").then((n) => n.t).then((m) => ({ default: m.AppDownloadScreen })));
|
|
2225
2086
|
const SYSTEM_SLUG_SCREEN_MAP = {
|
|
2226
2087
|
profile: ProfileScreen$1,
|
|
2227
2088
|
orders: OrdersScreen$1,
|
|
@@ -2242,6 +2103,16 @@ const SYSTEM_SLUG_SCREEN_MAP = {
|
|
|
2242
2103
|
upgrade: UpgradeScreen,
|
|
2243
2104
|
"app-download": AppDownloadScreen
|
|
2244
2105
|
};
|
|
2106
|
+
/**
|
|
2107
|
+
* System screens that render even when not in the active navigation.
|
|
2108
|
+
* Account-manage destinations (profile, orders, subscriptions) are always
|
|
2109
|
+
* reachable so customers can manage their account regardless of nav config.
|
|
2110
|
+
*/
|
|
2111
|
+
const ALWAYS_AVAILABLE_SYSTEM_SCREENS = new Set([
|
|
2112
|
+
ProfileScreen$1,
|
|
2113
|
+
OrdersScreen$1,
|
|
2114
|
+
SubscriptionsScreen$1
|
|
2115
|
+
]);
|
|
2245
2116
|
/** Pre-sorted keys for greedy prefix matching (longest first). */
|
|
2246
2117
|
const SORTED_SCREEN_KEYS = Object.keys(SYSTEM_SLUG_SCREEN_MAP).sort((a, b) => b.length - a.length);
|
|
2247
2118
|
/** Prefix-match a slug against screen map keys, longest match first. */
|
|
@@ -2251,7 +2122,16 @@ function findScreenByPrefix(slug) {
|
|
|
2251
2122
|
//#endregion
|
|
2252
2123
|
//#region src/shell/PageRouter.tsx
|
|
2253
2124
|
const ACCOUNT_SLUGS = new Set(ACCOUNT_MANAGE_SLUGS);
|
|
2254
|
-
|
|
2125
|
+
/**
|
|
2126
|
+
* Returns true if any nav slug resolves to the given system screen component.
|
|
2127
|
+
* Lets detail routes (e.g. `share/product/:id`) render when their listing
|
|
2128
|
+
* slug (`share/products`) is in the nav, since both map to the same screen.
|
|
2129
|
+
*/
|
|
2130
|
+
function isSystemScreenCoveredByNav(target, navSlugs) {
|
|
2131
|
+
for (const slug of navSlugs) if ((SYSTEM_SLUG_SCREEN_MAP[slug] ?? findScreenByPrefix(slug)) === target) return true;
|
|
2132
|
+
return false;
|
|
2133
|
+
}
|
|
2134
|
+
function PageRouter({ currentSlug, currentNavItem, customPages, screens, baseSlug, restParams, navSlugs }) {
|
|
2255
2135
|
const { data: account } = useAccount();
|
|
2256
2136
|
const isCustomer = account?.member_type === "customer";
|
|
2257
2137
|
const screenById = useMemo(() => {
|
|
@@ -2289,7 +2169,8 @@ function PageRouter({ currentSlug, currentNavItem, customPages, screens, baseSlu
|
|
|
2289
2169
|
});
|
|
2290
2170
|
}
|
|
2291
2171
|
const SystemScreen = SYSTEM_SLUG_SCREEN_MAP[baseSlug] ?? findScreenByPrefix(currentSlug);
|
|
2292
|
-
|
|
2172
|
+
const systemScreenInNav = navSlugs === void 0 || SystemScreen !== void 0 && (ALWAYS_AVAILABLE_SYSTEM_SCREENS.has(SystemScreen) || isSystemScreenCoveredByNav(SystemScreen, navSlugs));
|
|
2173
|
+
if (SystemScreen && systemScreenInNav) {
|
|
2293
2174
|
const content = /* @__PURE__ */ jsx(Suspense, {
|
|
2294
2175
|
fallback: /* @__PURE__ */ jsx("div", {
|
|
2295
2176
|
className: "flex h-full items-center justify-center",
|
|
@@ -2474,6 +2355,43 @@ function SdkLogoutButton({ onLogout }) {
|
|
|
2474
2355
|
}) }) });
|
|
2475
2356
|
}
|
|
2476
2357
|
//#endregion
|
|
2358
|
+
//#region src/navigation/filter-nav-items.ts
|
|
2359
|
+
/**
|
|
2360
|
+
* Filter navigation items by removing rep-only slugs.
|
|
2361
|
+
* Handles nested children: rep-only children are removed, and parents
|
|
2362
|
+
* with no remaining children are also removed.
|
|
2363
|
+
*/
|
|
2364
|
+
function filterRepOnlyNavItems(items) {
|
|
2365
|
+
const result = [];
|
|
2366
|
+
for (const item of items) {
|
|
2367
|
+
if (!item.children?.length) {
|
|
2368
|
+
if (isRepOnlySlug(item.slug)) continue;
|
|
2369
|
+
result.push(item);
|
|
2370
|
+
continue;
|
|
2371
|
+
}
|
|
2372
|
+
if (isRepOnlySlug(item.slug)) continue;
|
|
2373
|
+
const filteredChildren = filterRepOnlyNavItems(item.children);
|
|
2374
|
+
if (filteredChildren.length === 0) continue;
|
|
2375
|
+
result.push({
|
|
2376
|
+
...item,
|
|
2377
|
+
children: filteredChildren
|
|
2378
|
+
});
|
|
2379
|
+
}
|
|
2380
|
+
return result;
|
|
2381
|
+
}
|
|
2382
|
+
/**
|
|
2383
|
+
* Filter system navigation sections by removing rep-only items.
|
|
2384
|
+
* Sections with no remaining items are dropped entirely.
|
|
2385
|
+
*/
|
|
2386
|
+
function filterRepOnlySections(sections) {
|
|
2387
|
+
const filtered = {};
|
|
2388
|
+
for (const [section, items] of Object.entries(sections)) {
|
|
2389
|
+
const allowed = items.filter((item) => !isRepOnlySlug(item.slug));
|
|
2390
|
+
if (allowed.length > 0) filtered[section] = allowed;
|
|
2391
|
+
}
|
|
2392
|
+
return filtered;
|
|
2393
|
+
}
|
|
2394
|
+
//#endregion
|
|
2477
2395
|
//#region src/shell/AppShell.tsx
|
|
2478
2396
|
const THEME_STORAGE_KEY = "portal-theme-mode";
|
|
2479
2397
|
function getInitialThemeMode() {
|
|
@@ -2564,6 +2482,10 @@ function AppShell({ appData: appDataProp, navigation: navigationProp, customPage
|
|
|
2564
2482
|
const filteredMobileNavItems = useMemo(() => isCustomer ? filterRepOnlyNavItems(mobileNavItems) : mobileNavItems, [mobileNavItems, isCustomer]);
|
|
2565
2483
|
const screens = appData?.screens;
|
|
2566
2484
|
const navSlugs = useMemo(() => collectNavSlugs(filteredNavItems), [filteredNavItems]);
|
|
2485
|
+
const allNavSlugs = useMemo(() => {
|
|
2486
|
+
const mobileSlugs = collectNavSlugs(filteredMobileNavItems);
|
|
2487
|
+
return Array.from(new Set([...navSlugs, ...mobileSlugs]));
|
|
2488
|
+
}, [navSlugs, filteredMobileNavItems]);
|
|
2567
2489
|
const [themeMode, setThemeMode] = useState(getInitialThemeMode);
|
|
2568
2490
|
const handleThemeModeChange = useCallback((mode) => {
|
|
2569
2491
|
setThemeMode(mode);
|
|
@@ -2670,7 +2592,8 @@ function AppShell({ appData: appDataProp, navigation: navigationProp, customPage
|
|
|
2670
2592
|
customPages,
|
|
2671
2593
|
screens,
|
|
2672
2594
|
baseSlug,
|
|
2673
|
-
restParams
|
|
2595
|
+
restParams,
|
|
2596
|
+
navSlugs: allNavSlugs
|
|
2674
2597
|
})
|
|
2675
2598
|
})]
|
|
2676
2599
|
}) }) }, activeSlug ?? "");
|
|
@@ -3822,17 +3745,17 @@ z.object({
|
|
|
3822
3745
|
//#endregion
|
|
3823
3746
|
//#region src/screens/index.ts
|
|
3824
3747
|
const screenPropertySchemas = {
|
|
3825
|
-
ProfileScreen: () => import("./ProfileScreen-
|
|
3826
|
-
MessagingScreen: () => import("./MessagingScreen-
|
|
3827
|
-
ContactsScreen: () => import("./ContactsScreen-
|
|
3828
|
-
OrdersScreen: () => import("./OrdersScreen-
|
|
3829
|
-
SubscriptionsScreen: () => import("./SubscriptionsScreen-
|
|
3830
|
-
CustomersScreen: () => import("./CustomersScreen-
|
|
3748
|
+
ProfileScreen: () => import("./ProfileScreen-CeD1jq89.mjs").then((n) => n.n).then((m) => m.profileScreenPropertySchema),
|
|
3749
|
+
MessagingScreen: () => import("./MessagingScreen-RItZgONw.mjs").then((n) => n.n).then((m) => m.messagingScreenPropertySchema),
|
|
3750
|
+
ContactsScreen: () => import("./ContactsScreen-CMBERzKU.mjs").then((n) => n.n).then((m) => m.contactsScreenPropertySchema),
|
|
3751
|
+
OrdersScreen: () => import("./OrdersScreen-BV3vJ7xy.mjs").then((n) => n.n).then((m) => m.ordersScreenPropertySchema),
|
|
3752
|
+
SubscriptionsScreen: () => import("./SubscriptionsScreen-CXM2zmF7.mjs").then((n) => n.n).then((m) => m.subscriptionsScreenPropertySchema),
|
|
3753
|
+
CustomersScreen: () => import("./CustomersScreen-BJOBG5f5.mjs").then((n) => n.n).then((m) => m.customersScreenPropertySchema),
|
|
3831
3754
|
MySiteScreen: () => import("./MySiteScreen-CN0ZDBgy.mjs").then((n) => n.n).then((m) => m.mySiteScreenPropertySchema),
|
|
3832
|
-
ShareablesScreen: () => import("./ShareablesScreen-
|
|
3833
|
-
ShopScreen: () => import("./ShopScreen-
|
|
3755
|
+
ShareablesScreen: () => import("./ShareablesScreen-D3Hfqg9-.mjs").then((n) => n.n).then((m) => m.shareablesScreenPropertySchema),
|
|
3756
|
+
ShopScreen: () => import("./ShopScreen-dAe71cdL.mjs").then((n) => n.n).then((m) => m.shopScreenPropertySchema),
|
|
3834
3757
|
UpgradeScreen: () => import("./UpgradeScreen-DnGnWVTf.mjs").then((n) => n.t).then((m) => m.upgradeScreenPropertySchema),
|
|
3835
|
-
AppDownloadScreen: () => import("./AppDownloadScreen-
|
|
3758
|
+
AppDownloadScreen: () => import("./AppDownloadScreen-DQR40F0y.mjs").then((n) => n.t).then((m) => m.appDownloadScreenPropertySchema)
|
|
3836
3759
|
};
|
|
3837
3760
|
/**
|
|
3838
3761
|
* Core page template IDs
|
|
@@ -4083,6 +4006,70 @@ function registerCorePageTemplates() {
|
|
|
4083
4006
|
}
|
|
4084
4007
|
registerCorePageTemplates();
|
|
4085
4008
|
//#endregion
|
|
4009
|
+
//#region src/shell/QuickLinksDropdown.tsx
|
|
4010
|
+
function QuickLinksDropdown({ onNavigate }) {
|
|
4011
|
+
const [open, setOpen] = useState(false);
|
|
4012
|
+
const { data: account } = useAccount();
|
|
4013
|
+
const isCustomer = account?.member_type === "customer";
|
|
4014
|
+
const sections = useMemo(() => {
|
|
4015
|
+
const all = getSystemNavigationBySection();
|
|
4016
|
+
return isCustomer ? filterRepOnlySections(all) : all;
|
|
4017
|
+
}, [isCustomer]);
|
|
4018
|
+
return /* @__PURE__ */ jsxs(Popover, {
|
|
4019
|
+
open,
|
|
4020
|
+
onOpenChange: setOpen,
|
|
4021
|
+
children: [/* @__PURE__ */ jsx(PopoverTrigger, {
|
|
4022
|
+
asChild: true,
|
|
4023
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
4024
|
+
variant: "ghost",
|
|
4025
|
+
size: "sm",
|
|
4026
|
+
className: "text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shrink-0",
|
|
4027
|
+
"aria-label": "Quick links",
|
|
4028
|
+
children: /* @__PURE__ */ jsx(LayoutGrid, { className: "h-4 w-4" })
|
|
4029
|
+
})
|
|
4030
|
+
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
4031
|
+
align: "end",
|
|
4032
|
+
className: "w-175 max-w-[90vw] overflow-hidden rounded-lg p-0 shadow-lg",
|
|
4033
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
4034
|
+
className: "flex flex-col",
|
|
4035
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
4036
|
+
className: "bg-background flex items-center gap-2 border-b p-4",
|
|
4037
|
+
children: [/* @__PURE__ */ jsx(LayoutGrid, { className: "text-muted-foreground h-5 w-5" }), /* @__PURE__ */ jsx("h3", {
|
|
4038
|
+
className: "text-foreground text-sm font-semibold",
|
|
4039
|
+
children: "Shortcuts"
|
|
4040
|
+
})]
|
|
4041
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
4042
|
+
className: "bg-muted space-y-6 p-6",
|
|
4043
|
+
children: Object.entries(sections).map(([sectionName, items]) => /* @__PURE__ */ jsxs("div", {
|
|
4044
|
+
className: "space-y-3",
|
|
4045
|
+
children: [/* @__PURE__ */ jsx("h3", {
|
|
4046
|
+
className: "text-foreground text-sm font-semibold",
|
|
4047
|
+
children: sectionName
|
|
4048
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
4049
|
+
className: "grid grid-cols-4 gap-2",
|
|
4050
|
+
children: items.map((item) => /* @__PURE__ */ jsxs(Button, {
|
|
4051
|
+
variant: "ghost",
|
|
4052
|
+
className: "text-sidebar-foreground hover:bg-sidebar-primary hover:text-sidebar-primary-foreground h-auto justify-start gap-2 rounded-lg px-3 py-2 text-sm",
|
|
4053
|
+
onClick: () => {
|
|
4054
|
+
if (item.slug) onNavigate(item.slug);
|
|
4055
|
+
setOpen(false);
|
|
4056
|
+
},
|
|
4057
|
+
children: [item.icon && /* @__PURE__ */ jsx(RepIcon, {
|
|
4058
|
+
name: item.icon,
|
|
4059
|
+
className: "h-4 w-4 shrink-0"
|
|
4060
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
4061
|
+
className: "truncate",
|
|
4062
|
+
children: item.label
|
|
4063
|
+
})]
|
|
4064
|
+
}, item.slug))
|
|
4065
|
+
})]
|
|
4066
|
+
}, sectionName))
|
|
4067
|
+
})]
|
|
4068
|
+
})
|
|
4069
|
+
})]
|
|
4070
|
+
});
|
|
4071
|
+
}
|
|
4072
|
+
//#endregion
|
|
4086
4073
|
//#region src/shell/AppLink.tsx
|
|
4087
4074
|
/**
|
|
4088
4075
|
* SPA-aware link that renders a real `<a href>` for accessibility
|