@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
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-BzTN_FU8.mjs";
29
- import { r as subscriptionsScreenPropertySchema, t as SubscriptionsScreen } from "./SubscriptionsScreen-B7pAMsaf.mjs";
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 useAccount } from "./use-account-CBMPhhs7.mjs";
49
- import { t as useStore } from "./use-store-By_7tzrN.mjs";
50
- import { i as CoreScreenPlaceholder, r as customersScreenPropertySchema, t as CustomersScreen } from "./CustomersScreen-DJzgMofN.mjs";
51
- import { n as useAppNavigation, t as AppNavigationProvider } from "./AppNavigationContext-DNod9mf6.mjs";
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-DFkgLmNL.mjs";
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-C0TixAga.mjs";
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-BlZgI0XT.mjs";
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-CvIi80jN.mjs";
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-Bkuiya9D.mjs";
65
+ import { r as shopScreenPropertySchema, t as ShopScreen } from "./ShopScreen-dAe71cdL.mjs";
66
66
  import "./UpgradeScreen-DnGnWVTf.mjs";
67
- import "./AppDownloadScreen-CT_TvZfy.mjs";
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-DFkgLmNL.mjs").then((n) => n.n).then((m) => ({ default: m.ProfileScreen })));
2215
- const OrdersScreen$1 = lazy(() => import("./OrdersScreen-BlZgI0XT.mjs").then((n) => n.n).then((m) => ({ default: m.OrdersScreen })));
2216
- const SubscriptionsScreen$1 = lazy(() => import("./SubscriptionsScreen-B7pAMsaf.mjs").then((n) => n.n).then((m) => ({ default: m.SubscriptionsScreen })));
2217
- const MessagingScreen$1 = lazy(() => import("./MessagingScreen-BzTN_FU8.mjs").then((n) => n.n).then((m) => ({ default: m.MessagingScreen })));
2218
- const ContactsScreen$1 = lazy(() => import("./ContactsScreen-C0TixAga.mjs").then((n) => n.n).then((m) => ({ default: m.ContactsScreen })));
2219
- const ShopScreen$1 = lazy(() => import("./ShopScreen-Bkuiya9D.mjs").then((n) => n.n).then((m) => ({ default: m.ShopScreen })));
2220
- const CustomersScreen$1 = lazy(() => import("./CustomersScreen-DJzgMofN.mjs").then((n) => n.n).then((m) => ({ default: m.CustomersScreen })));
2221
- const ShareablesScreen$1 = lazy(() => import("./ShareablesScreen-CvIi80jN.mjs").then((n) => n.n).then((m) => ({ default: m.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-CT_TvZfy.mjs").then((n) => n.t).then((m) => ({ default: m.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
- function PageRouter({ currentSlug, currentNavItem, customPages, screens, baseSlug, restParams }) {
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
- if (SystemScreen) {
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-DFkgLmNL.mjs").then((n) => n.n).then((m) => m.profileScreenPropertySchema),
3826
- MessagingScreen: () => import("./MessagingScreen-BzTN_FU8.mjs").then((n) => n.n).then((m) => m.messagingScreenPropertySchema),
3827
- ContactsScreen: () => import("./ContactsScreen-C0TixAga.mjs").then((n) => n.n).then((m) => m.contactsScreenPropertySchema),
3828
- OrdersScreen: () => import("./OrdersScreen-BlZgI0XT.mjs").then((n) => n.n).then((m) => m.ordersScreenPropertySchema),
3829
- SubscriptionsScreen: () => import("./SubscriptionsScreen-B7pAMsaf.mjs").then((n) => n.n).then((m) => m.subscriptionsScreenPropertySchema),
3830
- CustomersScreen: () => import("./CustomersScreen-DJzgMofN.mjs").then((n) => n.n).then((m) => m.customersScreenPropertySchema),
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-CvIi80jN.mjs").then((n) => n.n).then((m) => m.shareablesScreenPropertySchema),
3833
- ShopScreen: () => import("./ShopScreen-Bkuiya9D.mjs").then((n) => n.n).then((m) => m.shopScreenPropertySchema),
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-CT_TvZfy.mjs").then((n) => n.t).then((m) => m.appDownloadScreenPropertySchema)
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