@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.
Files changed (68) hide show
  1. package/dist/{AppDownloadScreen-B0YwMqYM.cjs → AppDownloadScreen-BXnl23_d.cjs} +2 -2
  2. package/dist/{AppDownloadScreen-B0YwMqYM.cjs.map → AppDownloadScreen-BXnl23_d.cjs.map} +1 -1
  3. package/dist/{AppDownloadScreen-CT_TvZfy.mjs → AppDownloadScreen-DQR40F0y.mjs} +2 -2
  4. package/dist/{AppDownloadScreen-CT_TvZfy.mjs.map → AppDownloadScreen-DQR40F0y.mjs.map} +1 -1
  5. package/dist/{AppNavigationContext-BDs1cOuG.cjs → AppNavigationContext-C1-hd9Rw.cjs} +1 -1
  6. package/dist/{AppNavigationContext-BDs1cOuG.cjs.map → AppNavigationContext-C1-hd9Rw.cjs.map} +1 -1
  7. package/dist/{AppNavigationContext-DNod9mf6.mjs → AppNavigationContext-Dvc0yoZF.mjs} +1 -1
  8. package/dist/{AppNavigationContext-DNod9mf6.mjs.map → AppNavigationContext-Dvc0yoZF.mjs.map} +1 -1
  9. package/dist/{ContactsScreen-BaILrn_J.cjs → ContactsScreen-CH_P8WxC.cjs} +1 -1
  10. package/dist/{ContactsScreen-C0TixAga.mjs → ContactsScreen-CMBERzKU.mjs} +2 -2
  11. package/dist/{ContactsScreen-C0TixAga.mjs.map → ContactsScreen-CMBERzKU.mjs.map} +1 -1
  12. package/dist/{ContactsScreen-Cgpeq_3G.cjs → ContactsScreen-Cj0_VI0d.cjs} +2 -2
  13. package/dist/{ContactsScreen-Cgpeq_3G.cjs.map → ContactsScreen-Cj0_VI0d.cjs.map} +1 -1
  14. package/dist/{CustomersScreen-DJzgMofN.mjs → CustomersScreen-BJOBG5f5.mjs} +1 -1
  15. package/dist/{CustomersScreen-DJzgMofN.mjs.map → CustomersScreen-BJOBG5f5.mjs.map} +1 -1
  16. package/dist/{CustomersScreen-GROLIynQ.cjs → CustomersScreen-DW3BuhBs.cjs} +1 -1
  17. package/dist/{CustomersScreen-GROLIynQ.cjs.map → CustomersScreen-DW3BuhBs.cjs.map} +1 -1
  18. package/dist/{MessagingScreen-CAqiCGjA.cjs → MessagingScreen-40YCQbX9.cjs} +3 -3
  19. package/dist/{MessagingScreen-CAqiCGjA.cjs.map → MessagingScreen-40YCQbX9.cjs.map} +1 -1
  20. package/dist/{MessagingScreen-DNxIsd2Q.cjs → MessagingScreen-CrdiB4M3.cjs} +1 -1
  21. package/dist/{MessagingScreen-BzTN_FU8.mjs → MessagingScreen-RItZgONw.mjs} +3 -3
  22. package/dist/{MessagingScreen-BzTN_FU8.mjs.map → MessagingScreen-RItZgONw.mjs.map} +1 -1
  23. package/dist/{OrdersScreen-BlZgI0XT.mjs → OrdersScreen-BV3vJ7xy.mjs} +2 -2
  24. package/dist/{OrdersScreen-BlZgI0XT.mjs.map → OrdersScreen-BV3vJ7xy.mjs.map} +1 -1
  25. package/dist/{OrdersScreen-Cr_2QuUc.cjs → OrdersScreen-Cuch7aki.cjs} +1 -1
  26. package/dist/{OrdersScreen-BrqNjvTY.cjs → OrdersScreen-DPcp2dLW.cjs} +2 -2
  27. package/dist/{OrdersScreen-BrqNjvTY.cjs.map → OrdersScreen-DPcp2dLW.cjs.map} +1 -1
  28. package/dist/{ProfileScreen-ZN-A1RDl.cjs → ProfileScreen-CEKbhSRz.cjs} +3 -3
  29. package/dist/{ProfileScreen-ZN-A1RDl.cjs.map → ProfileScreen-CEKbhSRz.cjs.map} +1 -1
  30. package/dist/{ProfileScreen-DFkgLmNL.mjs → ProfileScreen-CeD1jq89.mjs} +3 -3
  31. package/dist/{ProfileScreen-DFkgLmNL.mjs.map → ProfileScreen-CeD1jq89.mjs.map} +1 -1
  32. package/dist/{ProfileScreen-Urnx0LDK.cjs → ProfileScreen-Dex8VHSB.cjs} +1 -1
  33. package/dist/{ShareablesScreen-DlrTvvXe.cjs → ShareablesScreen-Bt0E1aya.cjs} +4 -4
  34. package/dist/{ShareablesScreen-DlrTvvXe.cjs.map → ShareablesScreen-Bt0E1aya.cjs.map} +1 -1
  35. package/dist/{ShareablesScreen-CvIi80jN.mjs → ShareablesScreen-D3Hfqg9-.mjs} +4 -4
  36. package/dist/{ShareablesScreen-CvIi80jN.mjs.map → ShareablesScreen-D3Hfqg9-.mjs.map} +1 -1
  37. package/dist/{ShareablesScreen-Boi-_GvN.cjs → ShareablesScreen-LSyiDa6q.cjs} +1 -1
  38. package/dist/{ShopScreen-2FSVxXiE.cjs → ShopScreen-BiqZPyiB.cjs} +3 -3
  39. package/dist/{ShopScreen-2FSVxXiE.cjs.map → ShopScreen-BiqZPyiB.cjs.map} +1 -1
  40. package/dist/{ShopScreen-BxjZQ0SG.cjs → ShopScreen-Cgro0M1d.cjs} +1 -1
  41. package/dist/{ShopScreen-Bkuiya9D.mjs → ShopScreen-dAe71cdL.mjs} +3 -3
  42. package/dist/{ShopScreen-Bkuiya9D.mjs.map → ShopScreen-dAe71cdL.mjs.map} +1 -1
  43. package/dist/{SubscriptionsScreen-B7pAMsaf.mjs → SubscriptionsScreen-CXM2zmF7.mjs} +4 -4
  44. package/dist/{SubscriptionsScreen-B7pAMsaf.mjs.map → SubscriptionsScreen-CXM2zmF7.mjs.map} +1 -1
  45. package/dist/{SubscriptionsScreen-Cv3C3SVW.cjs → SubscriptionsScreen-DrDSwMXS.cjs} +4 -4
  46. package/dist/{SubscriptionsScreen-Cv3C3SVW.cjs.map → SubscriptionsScreen-DrDSwMXS.cjs.map} +1 -1
  47. package/dist/{SubscriptionsScreen-BbokDXZD.cjs → SubscriptionsScreen-t5wtDGfB.cjs} +1 -1
  48. package/dist/index.cjs +159 -172
  49. package/dist/index.cjs.map +1 -1
  50. package/dist/index.d.cts +10 -1
  51. package/dist/index.d.cts.map +1 -1
  52. package/dist/index.d.mts +10 -1
  53. package/dist/index.d.mts.map +1 -1
  54. package/dist/index.mjs +159 -172
  55. package/dist/index.mjs.map +1 -1
  56. package/dist/{query-keys-D3lK70Ea.cjs → query-keys-elu0svUd.cjs} +1 -1
  57. package/dist/{query-keys-D3lK70Ea.cjs.map → query-keys-elu0svUd.cjs.map} +1 -1
  58. package/dist/{query-keys-xJy_fapN.mjs → query-keys-oQKvV4jp.mjs} +1 -1
  59. package/dist/{query-keys-xJy_fapN.mjs.map → query-keys-oQKvV4jp.mjs.map} +1 -1
  60. package/dist/{use-account-DcBCP06c.cjs → use-account-C1X-VLY-.cjs} +2 -2
  61. package/dist/{use-account-DcBCP06c.cjs.map → use-account-C1X-VLY-.cjs.map} +1 -1
  62. package/dist/{use-account-CBMPhhs7.mjs → use-account-C76sphlu.mjs} +2 -2
  63. package/dist/{use-account-CBMPhhs7.mjs.map → use-account-C76sphlu.mjs.map} +1 -1
  64. package/dist/{use-store-By_7tzrN.mjs → use-store-C2KBIS41.mjs} +1 -1
  65. package/dist/{use-store-By_7tzrN.mjs.map → use-store-C2KBIS41.mjs.map} +1 -1
  66. package/dist/{use-store-lOOUcpRT.cjs → use-store-D2S1FywW.cjs} +1 -1
  67. package/dist/{use-store-lOOUcpRT.cjs.map → use-store-D2S1FywW.cjs.map} +1 -1
  68. package/package.json +16 -16
@@ -5,7 +5,7 @@ require("./countries-api-context-C0C0K9gJ.cjs");
5
5
  require("./src-uhf6Szlw.cjs");
6
6
  require("./ScreenHeaderContext-oIu5Bvhs.cjs");
7
7
  require("./fluid-pay-api-adapter-BszgrFL6.cjs");
8
- const require_SubscriptionsScreen = require("./SubscriptionsScreen-Cv3C3SVW.cjs");
8
+ const require_SubscriptionsScreen = require("./SubscriptionsScreen-DrDSwMXS.cjs");
9
9
  require("./SearchSort-CeJqRK2c.cjs");
10
10
  require("./InfiniteScrollSentinel-DeIL8UkW.cjs");
11
11
  require("./order-status-badge-DHyaK6mU.cjs");
package/dist/index.cjs CHANGED
@@ -44,29 +44,29 @@ const require_TableWidget = require("./TableWidget-D4jQN-to.cjs");
44
44
  const require_ToDoWidget = require("./ToDoWidget-BbeXt99H.cjs");
45
45
  const require_VideoWidget = require("./VideoWidget-Bc6ZAAaA.cjs");
46
46
  const require_ScreenHeaderContext = require("./ScreenHeaderContext-oIu5Bvhs.cjs");
47
- const require_use_account = require("./use-account-DcBCP06c.cjs");
48
- const require_use_store = require("./use-store-lOOUcpRT.cjs");
49
- const require_CustomersScreen = require("./CustomersScreen-GROLIynQ.cjs");
50
- const require_AppNavigationContext = require("./AppNavigationContext-BDs1cOuG.cjs");
51
- const require_MessagingScreen = require("./MessagingScreen-CAqiCGjA.cjs");
47
+ const require_use_store = require("./use-store-D2S1FywW.cjs");
48
+ const require_CustomersScreen = require("./CustomersScreen-DW3BuhBs.cjs");
49
+ const require_AppNavigationContext = require("./AppNavigationContext-C1-hd9Rw.cjs");
50
+ const require_use_account = require("./use-account-C1X-VLY-.cjs");
51
+ const require_MessagingScreen = require("./MessagingScreen-40YCQbX9.cjs");
52
52
  require("./fluid-pay-api-adapter-BszgrFL6.cjs");
53
- const require_ProfileScreen = require("./ProfileScreen-ZN-A1RDl.cjs");
54
- const require_SubscriptionsScreen = require("./SubscriptionsScreen-Cv3C3SVW.cjs");
53
+ const require_ProfileScreen = require("./ProfileScreen-CEKbhSRz.cjs");
54
+ const require_SubscriptionsScreen = require("./SubscriptionsScreen-DrDSwMXS.cjs");
55
55
  require("./dist-DbRTQ2QF.cjs");
56
56
  require("./es-UfEBhcZD.cjs");
57
- const require_ContactsScreen = require("./ContactsScreen-Cgpeq_3G.cjs");
57
+ const require_ContactsScreen = require("./ContactsScreen-Cj0_VI0d.cjs");
58
58
  require("./SearchSort-CeJqRK2c.cjs");
59
59
  require("./InfiniteScrollSentinel-DeIL8UkW.cjs");
60
60
  require("./dist-myuZC8sf.cjs");
61
61
  require("./order-status-badge-DHyaK6mU.cjs");
62
- const require_OrdersScreen = require("./OrdersScreen-BrqNjvTY.cjs");
62
+ const require_OrdersScreen = require("./OrdersScreen-DPcp2dLW.cjs");
63
63
  require("./dist-BQZkLGL6.cjs");
64
64
  const require_MySiteScreen = require("./MySiteScreen-CUyJteDm.cjs");
65
- const require_ShareablesScreen = require("./ShareablesScreen-DlrTvvXe.cjs");
65
+ const require_ShareablesScreen = require("./ShareablesScreen-Bt0E1aya.cjs");
66
66
  require("./PortalProductsApiProvider-DL8nl7To.cjs");
67
- const require_ShopScreen = require("./ShopScreen-2FSVxXiE.cjs");
67
+ const require_ShopScreen = require("./ShopScreen-BiqZPyiB.cjs");
68
68
  require("./UpgradeScreen-DAKe_hiv.cjs");
69
- require("./AppDownloadScreen-B0YwMqYM.cjs");
69
+ require("./AppDownloadScreen-BXnl23_d.cjs");
70
70
  let react = require("react");
71
71
  react = require_chunk.__toESM(react);
72
72
  let _tanstack_react_query = require("@tanstack/react-query");
@@ -1652,140 +1652,6 @@ function SdkNavigation({ navItems, currentSlug, onNavigate }) {
1652
1652
  }) });
1653
1653
  }
1654
1654
  //#endregion
1655
- //#region src/navigation/filter-nav-items.ts
1656
- /**
1657
- * Filter navigation items by removing rep-only slugs.
1658
- * Handles nested children: rep-only children are removed, and parents
1659
- * with no remaining children are also removed.
1660
- */
1661
- function filterRepOnlyNavItems(items) {
1662
- const result = [];
1663
- for (const item of items) {
1664
- if (!item.children?.length) {
1665
- if (isRepOnlySlug(item.slug)) continue;
1666
- result.push(item);
1667
- continue;
1668
- }
1669
- if (isRepOnlySlug(item.slug)) continue;
1670
- const filteredChildren = filterRepOnlyNavItems(item.children);
1671
- if (filteredChildren.length === 0) continue;
1672
- result.push({
1673
- ...item,
1674
- children: filteredChildren
1675
- });
1676
- }
1677
- return result;
1678
- }
1679
- /**
1680
- * Filter system navigation sections by removing rep-only items.
1681
- * Sections with no remaining items are dropped entirely.
1682
- */
1683
- function filterRepOnlySections(sections) {
1684
- const filtered = {};
1685
- for (const [section, items] of Object.entries(sections)) {
1686
- const allowed = items.filter((item) => !isRepOnlySlug(item.slug));
1687
- if (allowed.length > 0) filtered[section] = allowed;
1688
- }
1689
- return filtered;
1690
- }
1691
- //#endregion
1692
- //#region src/shell/QuickLinksDropdown.tsx
1693
- function QuickLinksDropdown({ onNavigate }) {
1694
- const [open, setOpen] = (0, react.useState)(false);
1695
- const { data: account } = require_use_account.useAccount();
1696
- const isCustomer = account?.member_type === "customer";
1697
- const sections = (0, react.useMemo)(() => {
1698
- const all = getSystemNavigationBySection();
1699
- return isCustomer ? filterRepOnlySections(all) : all;
1700
- }, [isCustomer]);
1701
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Popover, {
1702
- open,
1703
- onOpenChange: setOpen,
1704
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.PopoverTrigger, {
1705
- asChild: true,
1706
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
1707
- variant: "ghost",
1708
- size: "sm",
1709
- className: "text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shrink-0",
1710
- "aria-label": "Quick links",
1711
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.LayoutGrid, { className: "h-4 w-4" })
1712
- })
1713
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.PopoverContent, {
1714
- align: "end",
1715
- className: "w-175 max-w-[90vw] overflow-hidden rounded-lg p-0 shadow-lg",
1716
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1717
- className: "flex flex-col",
1718
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1719
- className: "bg-background flex items-center gap-2 border-b p-4",
1720
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.LayoutGrid, { className: "text-muted-foreground h-5 w-5" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
1721
- className: "text-foreground text-sm font-semibold",
1722
- children: "Shortcuts"
1723
- })]
1724
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1725
- className: "bg-muted space-y-6 p-6",
1726
- children: Object.entries(sections).map(([sectionName, items]) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1727
- className: "space-y-3",
1728
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
1729
- className: "text-foreground text-sm font-semibold",
1730
- children: sectionName
1731
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1732
- className: "grid grid-cols-4 gap-2",
1733
- children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Button, {
1734
- variant: "ghost",
1735
- 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",
1736
- onClick: () => {
1737
- if (item.slug) onNavigate(item.slug);
1738
- setOpen(false);
1739
- },
1740
- children: [item.icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RepIcon, {
1741
- name: item.icon,
1742
- className: "h-4 w-4 shrink-0"
1743
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1744
- className: "truncate",
1745
- children: item.label
1746
- })]
1747
- }, item.slug))
1748
- })]
1749
- }, sectionName))
1750
- })]
1751
- })
1752
- })]
1753
- });
1754
- }
1755
- //#endregion
1756
- //#region src/shell/SdkMobileQuickLinksGrid.tsx
1757
- function SdkMobileQuickLinksGrid({ onNavigate }) {
1758
- const { data: account } = require_use_account.useAccount();
1759
- const isCustomer = account?.member_type === "customer";
1760
- const sections = (0, react.useMemo)(() => {
1761
- const all = getSystemNavigationBySection();
1762
- return isCustomer ? filterRepOnlySections(all) : all;
1763
- }, [isCustomer]);
1764
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1765
- className: "space-y-4",
1766
- children: Object.entries(sections).map(([sectionName, items]) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h4", {
1767
- className: "text-muted-foreground mb-2 text-xs font-semibold uppercase",
1768
- children: sectionName
1769
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1770
- className: "grid grid-cols-3 gap-2",
1771
- children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Button, {
1772
- variant: "ghost",
1773
- className: "text-sidebar-foreground hover:bg-sidebar-primary hover:text-sidebar-primary-foreground h-auto flex-col gap-1 rounded-lg p-2",
1774
- onClick: () => {
1775
- if (item.slug) onNavigate(item.slug);
1776
- },
1777
- children: [item.icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RepIcon, {
1778
- name: item.icon,
1779
- className: "size-5"
1780
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1781
- className: "text-xs",
1782
- children: item.label
1783
- })]
1784
- }, item.slug))
1785
- })] }, sectionName))
1786
- });
1787
- }
1788
- //#endregion
1789
1655
  //#region src/shell/SdkMobileProfileMenu.tsx
1790
1656
  function getInitials(name) {
1791
1657
  if (!name) return "U";
@@ -1863,10 +1729,6 @@ function SdkMobileProfileMenu({ onNavigate, onLogout }) {
1863
1729
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Smartphone, { className: "size-5" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "App Download" })]
1864
1730
  })
1865
1731
  }),
1866
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1867
- className: "border-border border-b py-4",
1868
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SdkMobileQuickLinksGrid, { onNavigate: handleNavigate })
1869
- }),
1870
1732
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1871
1733
  className: "space-y-4 py-4",
1872
1734
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
@@ -1914,7 +1776,6 @@ function SdkHeader({ mobileTabs, currentSlug, onNavigate, onLogout }) {
1914
1776
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Menu, { className: "size-5" })
1915
1777
  }),
1916
1778
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "flex-1" }),
1917
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(QuickLinksDropdown, { onNavigate }),
1918
1779
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1919
1780
  type: "button",
1920
1781
  onClick: themeMode.cycleMode,
@@ -2213,17 +2074,17 @@ function AccountManageLayout({ children }) {
2213
2074
  }
2214
2075
  //#endregion
2215
2076
  //#region src/shell/system-screen-map.ts
2216
- const ProfileScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProfileScreen-Urnx0LDK.cjs")).then((m) => ({ default: m.ProfileScreen })));
2217
- const OrdersScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./OrdersScreen-Cr_2QuUc.cjs")).then((m) => ({ default: m.OrdersScreen })));
2218
- const SubscriptionsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./SubscriptionsScreen-BbokDXZD.cjs")).then((m) => ({ default: m.SubscriptionsScreen })));
2219
- const MessagingScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MessagingScreen-DNxIsd2Q.cjs")).then((m) => ({ default: m.MessagingScreen })));
2220
- const ContactsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ContactsScreen-BaILrn_J.cjs")).then((m) => ({ default: m.ContactsScreen })));
2221
- const ShopScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShopScreen-BxjZQ0SG.cjs")).then((m) => ({ default: m.ShopScreen })));
2222
- const CustomersScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./CustomersScreen-GROLIynQ.cjs")).then((n) => n.CustomersScreen_exports).then((m) => ({ default: m.CustomersScreen })));
2223
- const ShareablesScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShareablesScreen-Boi-_GvN.cjs")).then((m) => ({ default: m.ShareablesScreen })));
2077
+ const ProfileScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProfileScreen-Dex8VHSB.cjs")).then((m) => ({ default: m.ProfileScreen })));
2078
+ const OrdersScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./OrdersScreen-Cuch7aki.cjs")).then((m) => ({ default: m.OrdersScreen })));
2079
+ const SubscriptionsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./SubscriptionsScreen-t5wtDGfB.cjs")).then((m) => ({ default: m.SubscriptionsScreen })));
2080
+ const MessagingScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MessagingScreen-CrdiB4M3.cjs")).then((m) => ({ default: m.MessagingScreen })));
2081
+ const ContactsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ContactsScreen-CH_P8WxC.cjs")).then((m) => ({ default: m.ContactsScreen })));
2082
+ const ShopScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShopScreen-Cgro0M1d.cjs")).then((m) => ({ default: m.ShopScreen })));
2083
+ const CustomersScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./CustomersScreen-DW3BuhBs.cjs")).then((n) => n.CustomersScreen_exports).then((m) => ({ default: m.CustomersScreen })));
2084
+ const ShareablesScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShareablesScreen-LSyiDa6q.cjs")).then((m) => ({ default: m.ShareablesScreen })));
2224
2085
  const MySiteScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MySiteScreen-B_16cPgD.cjs")).then((m) => ({ default: m.MySiteScreen })));
2225
2086
  const UpgradeScreen = (0, react.lazy)(() => Promise.resolve().then(() => require("./UpgradeScreen-DUvg-WZv.cjs")).then((m) => ({ default: m.UpgradeScreen })));
2226
- const AppDownloadScreen = (0, react.lazy)(() => Promise.resolve().then(() => require("./AppDownloadScreen-B0YwMqYM.cjs")).then((n) => n.AppDownloadScreen_exports).then((m) => ({ default: m.AppDownloadScreen })));
2087
+ const AppDownloadScreen = (0, react.lazy)(() => Promise.resolve().then(() => require("./AppDownloadScreen-BXnl23_d.cjs")).then((n) => n.AppDownloadScreen_exports).then((m) => ({ default: m.AppDownloadScreen })));
2227
2088
  const SYSTEM_SLUG_SCREEN_MAP = {
2228
2089
  profile: ProfileScreen$1,
2229
2090
  orders: OrdersScreen$1,
@@ -2244,6 +2105,16 @@ const SYSTEM_SLUG_SCREEN_MAP = {
2244
2105
  upgrade: UpgradeScreen,
2245
2106
  "app-download": AppDownloadScreen
2246
2107
  };
2108
+ /**
2109
+ * System screens that render even when not in the active navigation.
2110
+ * Account-manage destinations (profile, orders, subscriptions) are always
2111
+ * reachable so customers can manage their account regardless of nav config.
2112
+ */
2113
+ const ALWAYS_AVAILABLE_SYSTEM_SCREENS = new Set([
2114
+ ProfileScreen$1,
2115
+ OrdersScreen$1,
2116
+ SubscriptionsScreen$1
2117
+ ]);
2247
2118
  /** Pre-sorted keys for greedy prefix matching (longest first). */
2248
2119
  const SORTED_SCREEN_KEYS = Object.keys(SYSTEM_SLUG_SCREEN_MAP).sort((a, b) => b.length - a.length);
2249
2120
  /** Prefix-match a slug against screen map keys, longest match first. */
@@ -2253,7 +2124,16 @@ function findScreenByPrefix(slug) {
2253
2124
  //#endregion
2254
2125
  //#region src/shell/PageRouter.tsx
2255
2126
  const ACCOUNT_SLUGS = new Set(ACCOUNT_MANAGE_SLUGS);
2256
- function PageRouter({ currentSlug, currentNavItem, customPages, screens, baseSlug, restParams }) {
2127
+ /**
2128
+ * Returns true if any nav slug resolves to the given system screen component.
2129
+ * Lets detail routes (e.g. `share/product/:id`) render when their listing
2130
+ * slug (`share/products`) is in the nav, since both map to the same screen.
2131
+ */
2132
+ function isSystemScreenCoveredByNav(target, navSlugs) {
2133
+ for (const slug of navSlugs) if ((SYSTEM_SLUG_SCREEN_MAP[slug] ?? findScreenByPrefix(slug)) === target) return true;
2134
+ return false;
2135
+ }
2136
+ function PageRouter({ currentSlug, currentNavItem, customPages, screens, baseSlug, restParams, navSlugs }) {
2257
2137
  const { data: account } = require_use_account.useAccount();
2258
2138
  const isCustomer = account?.member_type === "customer";
2259
2139
  const screenById = (0, react.useMemo)(() => {
@@ -2291,7 +2171,8 @@ function PageRouter({ currentSlug, currentNavItem, customPages, screens, baseSlu
2291
2171
  });
2292
2172
  }
2293
2173
  const SystemScreen = SYSTEM_SLUG_SCREEN_MAP[baseSlug] ?? findScreenByPrefix(currentSlug);
2294
- if (SystemScreen) {
2174
+ const systemScreenInNav = navSlugs === void 0 || SystemScreen !== void 0 && (ALWAYS_AVAILABLE_SYSTEM_SCREENS.has(SystemScreen) || isSystemScreenCoveredByNav(SystemScreen, navSlugs));
2175
+ if (SystemScreen && systemScreenInNav) {
2295
2176
  const content = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.Suspense, {
2296
2177
  fallback: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2297
2178
  className: "flex h-full items-center justify-center",
@@ -2476,6 +2357,43 @@ function SdkLogoutButton({ onLogout }) {
2476
2357
  }) }) });
2477
2358
  }
2478
2359
  //#endregion
2360
+ //#region src/navigation/filter-nav-items.ts
2361
+ /**
2362
+ * Filter navigation items by removing rep-only slugs.
2363
+ * Handles nested children: rep-only children are removed, and parents
2364
+ * with no remaining children are also removed.
2365
+ */
2366
+ function filterRepOnlyNavItems(items) {
2367
+ const result = [];
2368
+ for (const item of items) {
2369
+ if (!item.children?.length) {
2370
+ if (isRepOnlySlug(item.slug)) continue;
2371
+ result.push(item);
2372
+ continue;
2373
+ }
2374
+ if (isRepOnlySlug(item.slug)) continue;
2375
+ const filteredChildren = filterRepOnlyNavItems(item.children);
2376
+ if (filteredChildren.length === 0) continue;
2377
+ result.push({
2378
+ ...item,
2379
+ children: filteredChildren
2380
+ });
2381
+ }
2382
+ return result;
2383
+ }
2384
+ /**
2385
+ * Filter system navigation sections by removing rep-only items.
2386
+ * Sections with no remaining items are dropped entirely.
2387
+ */
2388
+ function filterRepOnlySections(sections) {
2389
+ const filtered = {};
2390
+ for (const [section, items] of Object.entries(sections)) {
2391
+ const allowed = items.filter((item) => !isRepOnlySlug(item.slug));
2392
+ if (allowed.length > 0) filtered[section] = allowed;
2393
+ }
2394
+ return filtered;
2395
+ }
2396
+ //#endregion
2479
2397
  //#region src/shell/AppShell.tsx
2480
2398
  const THEME_STORAGE_KEY = "portal-theme-mode";
2481
2399
  function getInitialThemeMode() {
@@ -2566,6 +2484,10 @@ function AppShell({ appData: appDataProp, navigation: navigationProp, customPage
2566
2484
  const filteredMobileNavItems = (0, react.useMemo)(() => isCustomer ? filterRepOnlyNavItems(mobileNavItems) : mobileNavItems, [mobileNavItems, isCustomer]);
2567
2485
  const screens = appData?.screens;
2568
2486
  const navSlugs = (0, react.useMemo)(() => collectNavSlugs(filteredNavItems), [filteredNavItems]);
2487
+ const allNavSlugs = (0, react.useMemo)(() => {
2488
+ const mobileSlugs = collectNavSlugs(filteredMobileNavItems);
2489
+ return Array.from(new Set([...navSlugs, ...mobileSlugs]));
2490
+ }, [navSlugs, filteredMobileNavItems]);
2569
2491
  const [themeMode, setThemeMode] = (0, react.useState)(getInitialThemeMode);
2570
2492
  const handleThemeModeChange = (0, react.useCallback)((mode) => {
2571
2493
  setThemeMode(mode);
@@ -2672,7 +2594,8 @@ function AppShell({ appData: appDataProp, navigation: navigationProp, customPage
2672
2594
  customPages,
2673
2595
  screens,
2674
2596
  baseSlug,
2675
- restParams
2597
+ restParams,
2598
+ navSlugs: allNavSlugs
2676
2599
  })
2677
2600
  })]
2678
2601
  }) }) }, activeSlug ?? "");
@@ -3824,17 +3747,17 @@ zod.z.object({
3824
3747
  //#endregion
3825
3748
  //#region src/screens/index.ts
3826
3749
  const screenPropertySchemas = {
3827
- ProfileScreen: () => Promise.resolve().then(() => require("./ProfileScreen-Urnx0LDK.cjs")).then((m) => m.profileScreenPropertySchema),
3828
- MessagingScreen: () => Promise.resolve().then(() => require("./MessagingScreen-DNxIsd2Q.cjs")).then((m) => m.messagingScreenPropertySchema),
3829
- ContactsScreen: () => Promise.resolve().then(() => require("./ContactsScreen-BaILrn_J.cjs")).then((m) => m.contactsScreenPropertySchema),
3830
- OrdersScreen: () => Promise.resolve().then(() => require("./OrdersScreen-Cr_2QuUc.cjs")).then((m) => m.ordersScreenPropertySchema),
3831
- SubscriptionsScreen: () => Promise.resolve().then(() => require("./SubscriptionsScreen-BbokDXZD.cjs")).then((m) => m.subscriptionsScreenPropertySchema),
3832
- CustomersScreen: () => Promise.resolve().then(() => require("./CustomersScreen-GROLIynQ.cjs")).then((n) => n.CustomersScreen_exports).then((m) => m.customersScreenPropertySchema),
3750
+ ProfileScreen: () => Promise.resolve().then(() => require("./ProfileScreen-Dex8VHSB.cjs")).then((m) => m.profileScreenPropertySchema),
3751
+ MessagingScreen: () => Promise.resolve().then(() => require("./MessagingScreen-CrdiB4M3.cjs")).then((m) => m.messagingScreenPropertySchema),
3752
+ ContactsScreen: () => Promise.resolve().then(() => require("./ContactsScreen-CH_P8WxC.cjs")).then((m) => m.contactsScreenPropertySchema),
3753
+ OrdersScreen: () => Promise.resolve().then(() => require("./OrdersScreen-Cuch7aki.cjs")).then((m) => m.ordersScreenPropertySchema),
3754
+ SubscriptionsScreen: () => Promise.resolve().then(() => require("./SubscriptionsScreen-t5wtDGfB.cjs")).then((m) => m.subscriptionsScreenPropertySchema),
3755
+ CustomersScreen: () => Promise.resolve().then(() => require("./CustomersScreen-DW3BuhBs.cjs")).then((n) => n.CustomersScreen_exports).then((m) => m.customersScreenPropertySchema),
3833
3756
  MySiteScreen: () => Promise.resolve().then(() => require("./MySiteScreen-B_16cPgD.cjs")).then((m) => m.mySiteScreenPropertySchema),
3834
- ShareablesScreen: () => Promise.resolve().then(() => require("./ShareablesScreen-Boi-_GvN.cjs")).then((m) => m.shareablesScreenPropertySchema),
3835
- ShopScreen: () => Promise.resolve().then(() => require("./ShopScreen-BxjZQ0SG.cjs")).then((m) => m.shopScreenPropertySchema),
3757
+ ShareablesScreen: () => Promise.resolve().then(() => require("./ShareablesScreen-LSyiDa6q.cjs")).then((m) => m.shareablesScreenPropertySchema),
3758
+ ShopScreen: () => Promise.resolve().then(() => require("./ShopScreen-Cgro0M1d.cjs")).then((m) => m.shopScreenPropertySchema),
3836
3759
  UpgradeScreen: () => Promise.resolve().then(() => require("./UpgradeScreen-DUvg-WZv.cjs")).then((m) => m.upgradeScreenPropertySchema),
3837
- AppDownloadScreen: () => Promise.resolve().then(() => require("./AppDownloadScreen-B0YwMqYM.cjs")).then((n) => n.AppDownloadScreen_exports).then((m) => m.appDownloadScreenPropertySchema)
3760
+ AppDownloadScreen: () => Promise.resolve().then(() => require("./AppDownloadScreen-BXnl23_d.cjs")).then((n) => n.AppDownloadScreen_exports).then((m) => m.appDownloadScreenPropertySchema)
3838
3761
  };
3839
3762
  /**
3840
3763
  * Core page template IDs
@@ -4085,6 +4008,70 @@ function registerCorePageTemplates() {
4085
4008
  }
4086
4009
  registerCorePageTemplates();
4087
4010
  //#endregion
4011
+ //#region src/shell/QuickLinksDropdown.tsx
4012
+ function QuickLinksDropdown({ onNavigate }) {
4013
+ const [open, setOpen] = (0, react.useState)(false);
4014
+ const { data: account } = require_use_account.useAccount();
4015
+ const isCustomer = account?.member_type === "customer";
4016
+ const sections = (0, react.useMemo)(() => {
4017
+ const all = getSystemNavigationBySection();
4018
+ return isCustomer ? filterRepOnlySections(all) : all;
4019
+ }, [isCustomer]);
4020
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Popover, {
4021
+ open,
4022
+ onOpenChange: setOpen,
4023
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.PopoverTrigger, {
4024
+ asChild: true,
4025
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
4026
+ variant: "ghost",
4027
+ size: "sm",
4028
+ className: "text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shrink-0",
4029
+ "aria-label": "Quick links",
4030
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.LayoutGrid, { className: "h-4 w-4" })
4031
+ })
4032
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.PopoverContent, {
4033
+ align: "end",
4034
+ className: "w-175 max-w-[90vw] overflow-hidden rounded-lg p-0 shadow-lg",
4035
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4036
+ className: "flex flex-col",
4037
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4038
+ className: "bg-background flex items-center gap-2 border-b p-4",
4039
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.LayoutGrid, { className: "text-muted-foreground h-5 w-5" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
4040
+ className: "text-foreground text-sm font-semibold",
4041
+ children: "Shortcuts"
4042
+ })]
4043
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
4044
+ className: "bg-muted space-y-6 p-6",
4045
+ children: Object.entries(sections).map(([sectionName, items]) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4046
+ className: "space-y-3",
4047
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
4048
+ className: "text-foreground text-sm font-semibold",
4049
+ children: sectionName
4050
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
4051
+ className: "grid grid-cols-4 gap-2",
4052
+ children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Button, {
4053
+ variant: "ghost",
4054
+ 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",
4055
+ onClick: () => {
4056
+ if (item.slug) onNavigate(item.slug);
4057
+ setOpen(false);
4058
+ },
4059
+ children: [item.icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RepIcon, {
4060
+ name: item.icon,
4061
+ className: "h-4 w-4 shrink-0"
4062
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4063
+ className: "truncate",
4064
+ children: item.label
4065
+ })]
4066
+ }, item.slug))
4067
+ })]
4068
+ }, sectionName))
4069
+ })]
4070
+ })
4071
+ })]
4072
+ });
4073
+ }
4074
+ //#endregion
4088
4075
  //#region src/shell/AppLink.tsx
4089
4076
  /**
4090
4077
  * SPA-aware link that renders a real `<a href>` for accessibility