@fluid-app/rep-sdk 0.1.3 → 0.1.5

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/index.cjs CHANGED
@@ -1,15 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var chunkV3IMQZIG_cjs = require('./chunk-V3IMQZIG.cjs');
3
+ var chunkW37C774B_cjs = require('./chunk-W37C774B.cjs');
4
4
  var chunkEOXYOOWS_cjs = require('./chunk-EOXYOOWS.cjs');
5
5
  var chunkFG2CI6HA_cjs = require('./chunk-FG2CI6HA.cjs');
6
6
  var chunkMHPK7YQ2_cjs = require('./chunk-MHPK7YQ2.cjs');
7
7
  var chunk5UBEM3AX_cjs = require('./chunk-5UBEM3AX.cjs');
8
8
  var chunkB6S6BEPL_cjs = require('./chunk-B6S6BEPL.cjs');
9
9
  require('./chunk-HDQ2JUQT.cjs');
10
- var react = require('react');
10
+ var React2 = require('react');
11
11
  var jsxRuntime = require('react/jsx-runtime');
12
12
  var reactQuery = require('@tanstack/react-query');
13
+ var auth = require('@fluid-app/auth');
13
14
  var types = require('@fluid-app/rep-core/types');
14
15
  var widgets = require('@fluid-app/rep-widgets/widgets');
15
16
  var widgetUtils = require('@fluid-app/rep-core/widget-utils');
@@ -17,10 +18,12 @@ var registries = require('@fluid-app/rep-core/registries');
17
18
  var AppShellLayout = require('@fluid-app/rep-core/shell/AppShellLayout');
18
19
  var ThemeModeContext = require('@fluid-app/rep-core/shell/ThemeModeContext');
19
20
  var systemNavigationItems = require('@fluid-app/rep-core/navigation/system-navigation-items');
20
- var theme = require('@fluid-app/rep-core/theme');
21
- var sidebar = require('@fluid-app/rep-core/shell/sidebar');
22
- var RepIcon = require('@fluid-app/rep-core/components/RepIcon');
23
21
  var reactFontawesome = require('@fortawesome/react-fontawesome');
22
+ var faEllipsis = require('@fortawesome/pro-regular-svg-icons/faEllipsis');
23
+ var faXmark = require('@fortawesome/pro-regular-svg-icons/faXmark');
24
+ var RepIcon = require('@fluid-app/rep-core/components/RepIcon');
25
+ var sidebar = require('@fluid-app/rep-core/shell/sidebar');
26
+ var theme = require('@fluid-app/rep-core/theme');
24
27
  var faBars = require('@fortawesome/pro-regular-svg-icons/faBars');
25
28
  var faSun = require('@fortawesome/pro-regular-svg-icons/faSun');
26
29
  var faMoon = require('@fortawesome/pro-regular-svg-icons/faMoon');
@@ -28,6 +31,26 @@ var faTableCellsLarge = require('@fortawesome/pro-regular-svg-icons/faTableCells
28
31
  var DataAwareWidget = require('@fluid-app/rep-core/data-sources/DataAwareWidget');
29
32
  var contexts = require('@fluid-app/rep-widgets/contexts');
30
33
 
34
+ function _interopNamespace(e) {
35
+ if (e && e.__esModule) return e;
36
+ var n = Object.create(null);
37
+ if (e) {
38
+ Object.keys(e).forEach(function (k) {
39
+ if (k !== 'default') {
40
+ var d = Object.getOwnPropertyDescriptor(e, k);
41
+ Object.defineProperty(n, k, d.get ? d : {
42
+ enumerable: true,
43
+ get: function () { return e[k]; }
44
+ });
45
+ }
46
+ });
47
+ }
48
+ n.default = e;
49
+ return Object.freeze(n);
50
+ }
51
+
52
+ var React2__namespace = /*#__PURE__*/_interopNamespace(React2);
53
+
31
54
  // src/types/page-template.ts
32
55
  var PAGE_CATEGORIES = {
33
56
  CORE: "core",
@@ -244,16 +267,16 @@ function validateNavigationPages(navigation) {
244
267
  };
245
268
  }
246
269
  var EMPTY_TEMPLATES = [];
247
- var PageTemplateContext = react.createContext(
270
+ var PageTemplateContext = React2.createContext(
248
271
  null
249
272
  );
250
273
  function PageTemplateProvider({
251
274
  children,
252
275
  templates = EMPTY_TEMPLATES
253
276
  }) {
254
- const registeredIds = react.useRef([]);
277
+ const registeredIds = React2.useRef([]);
255
278
  const templateKey = templates.map((t) => t.id).join(",");
256
- react.useEffect(() => {
279
+ React2.useEffect(() => {
257
280
  const registered = [];
258
281
  for (const template of templates) {
259
282
  if (!PageTemplateRegistry.has(template.id)) {
@@ -276,7 +299,7 @@ function PageTemplateProvider({
276
299
  registeredIds.current = [];
277
300
  };
278
301
  }, [templateKey]);
279
- const contextValue = react.useMemo(
302
+ const contextValue = React2.useMemo(
280
303
  () => ({
281
304
  resolvePages: resolveNavigationPages,
282
305
  listTemplates: () => PageTemplateRegistry.listAll(),
@@ -288,7 +311,7 @@ function PageTemplateProvider({
288
311
  return /* @__PURE__ */ jsxRuntime.jsx(PageTemplateContext.Provider, { value: contextValue, children });
289
312
  }
290
313
  function usePageTemplates() {
291
- const context = react.useContext(PageTemplateContext);
314
+ const context = React2.useContext(PageTemplateContext);
292
315
  if (!context) {
293
316
  throw new Error(
294
317
  "usePageTemplates must be used within a PageTemplateProvider"
@@ -298,11 +321,11 @@ function usePageTemplates() {
298
321
  }
299
322
  function useResolvedPages(navigation) {
300
323
  const { resolvePages } = usePageTemplates();
301
- return react.useMemo(() => resolvePages(navigation), [resolvePages, navigation]);
324
+ return React2.useMemo(() => resolvePages(navigation), [resolvePages, navigation]);
302
325
  }
303
326
  var PROFILE_QUERY_KEY = ["fluid", "profile"];
304
327
  function useFluidProfile() {
305
- const api = chunkV3IMQZIG_cjs.useFluidApi();
328
+ const api = chunkW37C774B_cjs.useFluidApi();
306
329
  return reactQuery.useQuery({
307
330
  queryKey: PROFILE_QUERY_KEY,
308
331
  queryFn: () => api.profile.get()
@@ -855,24 +878,24 @@ function createPersister() {
855
878
  var APP_DATA_QUERY_KEY = ["fluid", "app"];
856
879
  var appDataPersister = typeof window !== "undefined" ? createPersister() : void 0;
857
880
  function useFluidApp(options) {
858
- const api = chunkV3IMQZIG_cjs.useFluidApi();
881
+ const api = chunkW37C774B_cjs.useFluidApi();
859
882
  return reactQuery.useQuery({
860
883
  queryKey: APP_DATA_QUERY_KEY,
861
884
  queryFn: () => api.app.getRaw(),
862
- select: chunkV3IMQZIG_cjs.transformManifestToRepAppData,
885
+ select: chunkW37C774B_cjs.transformManifestToRepAppData,
863
886
  ...appDataPersister && { persister: appDataPersister.persisterFn },
864
887
  ...options?.enabled !== void 0 && { enabled: options.enabled }
865
888
  });
866
889
  }
867
890
  var PERMISSIONS_QUERY_KEY = ["fluid", "permissions"];
868
891
  function useFluidPermissions() {
869
- const api = chunkV3IMQZIG_cjs.useFluidApi();
892
+ const api = chunkW37C774B_cjs.useFluidApi();
870
893
  const query = reactQuery.useQuery({
871
894
  queryKey: PERMISSIONS_QUERY_KEY,
872
895
  queryFn: () => api.permissions.get()
873
896
  });
874
897
  const permissions = query.data;
875
- const can = react.useMemo(() => {
898
+ const can = React2.useMemo(() => {
876
899
  return (resource, action = "view") => {
877
900
  if (!permissions) {
878
901
  return false;
@@ -898,7 +921,7 @@ function useFluidPermissions() {
898
921
 
899
922
  // src/hooks/use-fluid-theme.ts
900
923
  function useFluidTheme() {
901
- const { currentTheme, setTheme, setThemeMode, mode } = chunkV3IMQZIG_cjs.useThemeContext();
924
+ const { currentTheme, setTheme, setThemeMode, mode } = chunkW37C774B_cjs.useThemeContext();
902
925
  return {
903
926
  currentTheme,
904
927
  setTheme,
@@ -908,7 +931,7 @@ function useFluidTheme() {
908
931
  }
909
932
  var CURRENT_REP_QUERY_KEY = ["fluid", "currentRep"];
910
933
  function useCurrentRep() {
911
- const api = chunkV3IMQZIG_cjs.useFluidApi();
934
+ const api = chunkW37C774B_cjs.useFluidApi();
912
935
  return reactQuery.useQuery({
913
936
  queryKey: CURRENT_REP_QUERY_KEY,
914
937
  queryFn: () => api.reps.current()
@@ -917,7 +940,7 @@ function useCurrentRep() {
917
940
 
918
941
  // src/hooks/use-fluid-auth.ts
919
942
  function useFluidAuth() {
920
- return chunkV3IMQZIG_cjs.useFluidAuthContext();
943
+ return chunkW37C774B_cjs.useFluidAuthContext();
921
944
  }
922
945
 
923
946
  // src/hooks/demo-data/calendar-events.ts
@@ -1588,7 +1611,7 @@ function ensureSpinStyle() {
1588
1611
  document.head.appendChild(style);
1589
1612
  }
1590
1613
  function AuthLoading() {
1591
- react.useEffect(() => {
1614
+ React2.useEffect(() => {
1592
1615
  ensureSpinStyle();
1593
1616
  }, []);
1594
1617
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -1649,7 +1672,7 @@ function RequireAuth({
1649
1672
 
1650
1673
  // src/screens/index.ts
1651
1674
  var screenPropertySchemas = {
1652
- MessagingScreen: () => import('./MessagingScreen-UPFXQZV3.cjs').then((m) => m.messagingScreenPropertySchema),
1675
+ MessagingScreen: () => import('./MessagingScreen-PLRU75YQ.cjs').then((m) => m.messagingScreenPropertySchema),
1653
1676
  ContactsScreen: () => import('./ContactsScreen-ATASCZO2.cjs').then((m) => m.contactsScreenPropertySchema),
1654
1677
  OrdersScreen: () => import('./OrdersScreen-X7FYUROL.cjs').then((m) => m.ordersScreenPropertySchema),
1655
1678
  CustomersScreen: () => import('./CustomersScreen-XMPMKSQA.cjs').then((m) => m.customersScreenPropertySchema),
@@ -1755,6 +1778,113 @@ function registerCorePageTemplates() {
1755
1778
  });
1756
1779
  }
1757
1780
  registerCorePageTemplates();
1781
+ function isInSection(item, currentSlug) {
1782
+ const normalized = systemNavigationItems.normalizeSlug(currentSlug);
1783
+ if (systemNavigationItems.normalizeSlug(item.slug) === normalized) return true;
1784
+ return item.children?.some((child) => systemNavigationItems.normalizeSlug(child.slug) === normalized) ?? false;
1785
+ }
1786
+ function getNavTarget(item) {
1787
+ if (item.slug && (!item.children || item.children.length === 0)) {
1788
+ return systemNavigationItems.normalizeSlug(item.slug);
1789
+ }
1790
+ if (item.children && item.children.length > 0) {
1791
+ const firstChild = item.children[0];
1792
+ if (firstChild?.slug) return systemNavigationItems.normalizeSlug(firstChild.slug);
1793
+ }
1794
+ return null;
1795
+ }
1796
+ function SdkBottomNav({
1797
+ navItems,
1798
+ currentSlug,
1799
+ onNavigate,
1800
+ maxVisibleItems = 5
1801
+ }) {
1802
+ const { isMobile, useBottomNav } = sidebar.useSidebar();
1803
+ const [moreOpen, setMoreOpen] = React2__namespace.useState(false);
1804
+ if (!isMobile || !useBottomNav) return null;
1805
+ const navigableItems = navItems.filter((item) => !item.parent_id).filter((item) => item.slug || item.children && item.children.length > 0);
1806
+ const hasOverflow = navigableItems.length > maxVisibleItems;
1807
+ const visibleItems = hasOverflow ? navigableItems.slice(0, maxVisibleItems - 1) : navigableItems;
1808
+ const overflowItems = hasOverflow ? navigableItems.slice(maxVisibleItems - 1) : [];
1809
+ const handleItemClick = (item) => {
1810
+ const target = getNavTarget(item);
1811
+ if (target) onNavigate(target);
1812
+ setMoreOpen(false);
1813
+ };
1814
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1815
+ /* @__PURE__ */ jsxRuntime.jsxs("nav", { className: "fixed right-0 bottom-0 left-0 z-40 flex h-16 items-end justify-around border-t border-border bg-sidebar pb-[env(safe-area-inset-bottom)]", children: [
1816
+ visibleItems.map((item) => {
1817
+ const isActive = isInSection(item, currentSlug);
1818
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1819
+ "button",
1820
+ {
1821
+ type: "button",
1822
+ onClick: () => handleItemClick(item),
1823
+ className: `flex flex-1 flex-col items-center justify-center gap-0.5 py-2 text-[10px] font-medium transition-colors ${isActive ? "text-primary" : "text-muted-foreground"}`,
1824
+ children: [
1825
+ item.icon ? /* @__PURE__ */ jsxRuntime.jsx(RepIcon.RepIcon, { name: item.icon, className: "size-5" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-5" }),
1826
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-[72px] truncate", children: item.label })
1827
+ ]
1828
+ },
1829
+ item.id ?? item.slug ?? item.label
1830
+ );
1831
+ }),
1832
+ hasOverflow && /* @__PURE__ */ jsxRuntime.jsxs(
1833
+ "button",
1834
+ {
1835
+ type: "button",
1836
+ onClick: () => setMoreOpen(true),
1837
+ className: `flex flex-1 flex-col items-center justify-center gap-0.5 py-2 text-[10px] font-medium transition-colors ${overflowItems.some((item) => isInSection(item, currentSlug)) ? "text-primary" : "text-muted-foreground"}`,
1838
+ children: [
1839
+ /* @__PURE__ */ jsxRuntime.jsx(reactFontawesome.FontAwesomeIcon, { icon: faEllipsis.faEllipsis, className: "size-5" }),
1840
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "More" })
1841
+ ]
1842
+ }
1843
+ )
1844
+ ] }),
1845
+ moreOpen && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 flex flex-col", children: [
1846
+ /* @__PURE__ */ jsxRuntime.jsx(
1847
+ "div",
1848
+ {
1849
+ className: "flex-1 bg-black/50",
1850
+ onClick: () => setMoreOpen(false),
1851
+ "aria-hidden": "true"
1852
+ }
1853
+ ),
1854
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-t-2xl bg-sidebar pb-[env(safe-area-inset-bottom)]", children: [
1855
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-4 pt-4 pb-2", children: [
1856
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-foreground", children: "More" }),
1857
+ /* @__PURE__ */ jsxRuntime.jsx(
1858
+ "button",
1859
+ {
1860
+ type: "button",
1861
+ onClick: () => setMoreOpen(false),
1862
+ className: "flex items-center justify-center rounded-full p-1 text-muted-foreground hover:bg-sidebar-accent",
1863
+ "aria-label": "Close",
1864
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactFontawesome.FontAwesomeIcon, { icon: faXmark.faXmark, className: "size-5" })
1865
+ }
1866
+ )
1867
+ ] }),
1868
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 pb-4", children: overflowItems.map((item) => {
1869
+ const isActive = isInSection(item, currentSlug);
1870
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1871
+ "button",
1872
+ {
1873
+ type: "button",
1874
+ onClick: () => handleItemClick(item),
1875
+ className: `flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-sm font-medium transition-colors ${isActive ? "bg-sidebar-primary text-sidebar-primary-foreground" : "text-sidebar-foreground hover:bg-sidebar-accent"}`,
1876
+ children: [
1877
+ item.icon && /* @__PURE__ */ jsxRuntime.jsx(RepIcon.RepIcon, { name: item.icon, className: "size-5" }),
1878
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: item.label })
1879
+ ]
1880
+ },
1881
+ item.id ?? item.slug ?? item.label
1882
+ );
1883
+ }) })
1884
+ ] })
1885
+ ] })
1886
+ ] });
1887
+ }
1758
1888
  var SPIN_STYLE_ID2 = "fluid-app-shell-loading-spin";
1759
1889
  function ensureSpinStyle2() {
1760
1890
  if (typeof document === "undefined") return;
@@ -1765,7 +1895,7 @@ function ensureSpinStyle2() {
1765
1895
  document.head.appendChild(style);
1766
1896
  }
1767
1897
  function AppShellLoading() {
1768
- react.useEffect(() => {
1898
+ React2.useEffect(() => {
1769
1899
  ensureSpinStyle2();
1770
1900
  }, []);
1771
1901
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -1877,11 +2007,11 @@ function SdkNavigation({
1877
2007
  }) });
1878
2008
  }
1879
2009
  function QuickLinksDropdown({ onNavigate }) {
1880
- const [open, setOpen] = react.useState(false);
1881
- const panelRef = react.useRef(null);
1882
- const buttonRef = react.useRef(null);
1883
- const close = react.useCallback(() => setOpen(false), []);
1884
- react.useEffect(() => {
2010
+ const [open, setOpen] = React2.useState(false);
2011
+ const panelRef = React2.useRef(null);
2012
+ const buttonRef = React2.useRef(null);
2013
+ const close = React2.useCallback(() => setOpen(false), []);
2014
+ React2.useEffect(() => {
1885
2015
  if (!open) return;
1886
2016
  const handleMouseDown = (e) => {
1887
2017
  if (panelRef.current && !panelRef.current.contains(e.target) && buttonRef.current && !buttonRef.current.contains(e.target)) {
@@ -1961,6 +2091,7 @@ function QuickLinksDropdown({ onNavigate }) {
1961
2091
  }
1962
2092
  function SdkHeader({
1963
2093
  tabs,
2094
+ mobileTabs,
1964
2095
  currentSlug,
1965
2096
  onNavigate,
1966
2097
  navSlugs
@@ -1970,8 +2101,9 @@ function SdkHeader({
1970
2101
  const match = matchSlugPrefix(currentSlug, navSlugs);
1971
2102
  const baseSlug = match?.matchedSlug ?? systemNavigationItems.normalizeSlug(currentSlug);
1972
2103
  const themeIcon = themeMode.mode === "dark" ? faMoon.faMoon : faSun.faSun;
2104
+ const activeTabs = sidebar$1.isMobile && sidebar$1.useBottomNav && mobileTabs ? mobileTabs : tabs;
1973
2105
  return /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "flex h-[52px] shrink-0 items-center gap-2 bg-sidebar px-6", children: [
1974
- sidebar$1.isMobile && /* @__PURE__ */ jsxRuntime.jsx(
2106
+ sidebar$1.isMobile && !sidebar$1.useBottomNav && /* @__PURE__ */ jsxRuntime.jsx(
1975
2107
  "button",
1976
2108
  {
1977
2109
  type: "button",
@@ -1981,7 +2113,7 @@ function SdkHeader({
1981
2113
  children: /* @__PURE__ */ jsxRuntime.jsx(reactFontawesome.FontAwesomeIcon, { icon: faBars.faBars, className: "size-5" })
1982
2114
  }
1983
2115
  ),
1984
- /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "scrollbar-none flex flex-1 items-center gap-1 overflow-x-auto", children: tabs.map((tab) => {
2116
+ /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "scrollbar-none flex flex-1 items-center gap-1 overflow-x-auto", children: activeTabs.map((tab) => {
1985
2117
  const tabSlug = systemNavigationItems.normalizeSlug(tab.slug);
1986
2118
  if (!tabSlug) return null;
1987
2119
  const isActive = tabSlug === baseSlug;
@@ -2040,9 +2172,9 @@ function BuilderScreenViewImpl({ screen, className }) {
2040
2172
  );
2041
2173
  }) });
2042
2174
  }
2043
- var BuilderScreenView = react.memo(BuilderScreenViewImpl);
2175
+ var BuilderScreenView = React2.memo(BuilderScreenViewImpl);
2044
2176
  var SYSTEM_SLUG_SCREEN_MAP = {
2045
- messages: chunkV3IMQZIG_cjs.MessagingScreen,
2177
+ messages: chunkW37C774B_cjs.MessagingScreen,
2046
2178
  contacts: chunkEOXYOOWS_cjs.ContactsScreen,
2047
2179
  shop: chunkFG2CI6HA_cjs.OrdersScreen,
2048
2180
  customers: chunkMHPK7YQ2_cjs.CustomersScreen,
@@ -2056,15 +2188,15 @@ function PageRouter({
2056
2188
  baseSlug,
2057
2189
  restParams
2058
2190
  }) {
2059
- const screenById = react.useMemo(() => {
2191
+ const screenById = React2.useMemo(() => {
2060
2192
  if (!screens || screens.length === 0) return void 0;
2061
2193
  return new Map(screens.map((s) => [s.id, s]));
2062
2194
  }, [screens]);
2063
- const screenBySlug = react.useMemo(() => {
2195
+ const screenBySlug = React2.useMemo(() => {
2064
2196
  if (!screens || screens.length === 0) return void 0;
2065
2197
  return new Map(screens.filter((s) => s.slug).map((s) => [s.slug, s]));
2066
2198
  }, [screens]);
2067
- const builderScreen = react.useMemo(() => {
2199
+ const builderScreen = React2.useMemo(() => {
2068
2200
  if (currentNavItem?.screen_id && screenById) {
2069
2201
  const byId = screenById.get(currentNavItem.screen_id);
2070
2202
  if (byId) return byId;
@@ -2102,7 +2234,7 @@ function PageRouter({
2102
2234
  }
2103
2235
  return /* @__PURE__ */ jsxRuntime.jsx(chunkB6S6BEPL_cjs.CoreScreenPlaceholder, { name: currentNavItem?.label ?? currentSlug });
2104
2236
  }
2105
- var AppNavigationContext = react.createContext(
2237
+ var AppNavigationContext = React2.createContext(
2106
2238
  null
2107
2239
  );
2108
2240
  function AppNavigationProvider({
@@ -2111,20 +2243,20 @@ function AppNavigationProvider({
2111
2243
  navigate,
2112
2244
  children
2113
2245
  }) {
2114
- const buildHref = react.useMemo(() => {
2246
+ const buildHref = React2.useMemo(() => {
2115
2247
  return (slug) => {
2116
2248
  if (basePath === "/") return `/${slug}`;
2117
2249
  return `${basePath}/${slug}`;
2118
2250
  };
2119
2251
  }, [basePath]);
2120
- const value = react.useMemo(
2252
+ const value = React2.useMemo(
2121
2253
  () => ({ currentSlug, basePath, navigate, buildHref }),
2122
2254
  [currentSlug, basePath, navigate, buildHref]
2123
2255
  );
2124
2256
  return /* @__PURE__ */ jsxRuntime.jsx(AppNavigationContext.Provider, { value, children });
2125
2257
  }
2126
2258
  function useAppNavigation() {
2127
- const ctx = react.useContext(AppNavigationContext);
2259
+ const ctx = React2.useContext(AppNavigationContext);
2128
2260
  if (!ctx) {
2129
2261
  throw new Error(
2130
2262
  "useAppNavigation must be used within an <AppShell> or <AppNavigationProvider>"
@@ -2192,7 +2324,7 @@ function AppShell({
2192
2324
  sidebarFooter,
2193
2325
  children
2194
2326
  }) {
2195
- const normalizedBasePath = react.useMemo(() => {
2327
+ const normalizedBasePath = React2.useMemo(() => {
2196
2328
  const stripped = basePath.replace(/^\/|\/$/g, "");
2197
2329
  return stripped ? `/${stripped}` : "/";
2198
2330
  }, [basePath]);
@@ -2200,13 +2332,13 @@ function AppShell({
2200
2332
  enabled: !appDataProp
2201
2333
  });
2202
2334
  const appData = appDataProp ?? fetchedAppData;
2203
- const activeTheme = react.useMemo(() => {
2335
+ const activeTheme = React2.useMemo(() => {
2204
2336
  if (!appData?.profile?.themes?.length) return void 0;
2205
2337
  const themes = appData.profile.themes;
2206
2338
  const activeId = appData.profile.activeThemeId;
2207
2339
  return activeId ? themes.find((t) => t.id === activeId) ?? themes[0] : themes[0];
2208
2340
  }, [appData?.profile?.themes, appData?.profile?.activeThemeId]);
2209
- react.useEffect(() => {
2341
+ React2.useEffect(() => {
2210
2342
  if (!activeTheme) return;
2211
2343
  const resolved = theme.resolveTheme(activeTheme);
2212
2344
  theme.applyTheme(resolved);
@@ -2214,29 +2346,34 @@ function AppShell({
2214
2346
  theme.removeAllThemes();
2215
2347
  };
2216
2348
  }, [activeTheme]);
2217
- const navItems = react.useMemo(() => {
2349
+ const navItems = React2.useMemo(() => {
2218
2350
  if (navigationProp) return navigationProp;
2219
2351
  const profileNav = appData?.profile?.navigation?.navigation_items;
2220
2352
  if (profileNav && profileNav.length > 0) return profileNav;
2221
2353
  return DEFAULT_NAVIGATION;
2222
2354
  }, [navigationProp, appData?.profile?.navigation?.navigation_items]);
2355
+ const mobileNavItems = React2.useMemo(() => {
2356
+ const mobileNav = appData?.profile?.mobile_navigation?.navigation_items;
2357
+ if (mobileNav && mobileNav.length > 0) return mobileNav;
2358
+ return navItems;
2359
+ }, [appData?.profile?.mobile_navigation?.navigation_items, navItems]);
2223
2360
  const screens = appData?.screens;
2224
- const navSlugs = react.useMemo(() => collectNavSlugs(navItems), [navItems]);
2225
- const [themeMode, setThemeMode] = react.useState(getInitialThemeMode);
2226
- const handleThemeModeChange = react.useCallback((mode) => {
2361
+ const navSlugs = React2.useMemo(() => collectNavSlugs(navItems), [navItems]);
2362
+ const [themeMode, setThemeMode] = React2.useState(getInitialThemeMode);
2363
+ const handleThemeModeChange = React2.useCallback((mode) => {
2227
2364
  setThemeMode(mode);
2228
2365
  if (typeof window !== "undefined") {
2229
2366
  localStorage.setItem(THEME_STORAGE_KEY, mode);
2230
2367
  }
2231
2368
  }, []);
2232
- const [pathSlug, setPathSlug] = react.useState(() => {
2369
+ const [pathSlug, setPathSlug] = React2.useState(() => {
2233
2370
  if (typeof window === "undefined") return "";
2234
2371
  return extractSlugFromPathname(
2235
2372
  window.location.pathname,
2236
2373
  normalizedBasePath
2237
2374
  );
2238
2375
  });
2239
- react.useEffect(() => {
2376
+ React2.useEffect(() => {
2240
2377
  if (controlledSlug !== void 0) return;
2241
2378
  if (typeof window === "undefined") return;
2242
2379
  const currentPath = extractSlugFromPathname(
@@ -2252,7 +2389,7 @@ function AppShell({
2252
2389
  }
2253
2390
  }
2254
2391
  }, [navItems, controlledSlug, normalizedBasePath]);
2255
- react.useEffect(() => {
2392
+ React2.useEffect(() => {
2256
2393
  if (controlledSlug !== void 0) return;
2257
2394
  const handlePopState = () => {
2258
2395
  const slug = extractSlugFromPathname(
@@ -2265,7 +2402,7 @@ function AppShell({
2265
2402
  return () => window.removeEventListener("popstate", handlePopState);
2266
2403
  }, [controlledSlug, normalizedBasePath]);
2267
2404
  const activeSlug = controlledSlug ?? pathSlug;
2268
- const handleNavigate = react.useCallback(
2405
+ const handleNavigate = React2.useCallback(
2269
2406
  (slug) => {
2270
2407
  if (onNavigateProp) {
2271
2408
  onNavigateProp(slug);
@@ -2277,7 +2414,7 @@ function AppShell({
2277
2414
  },
2278
2415
  [onNavigateProp, normalizedBasePath]
2279
2416
  );
2280
- const slugMatch = react.useMemo(
2417
+ const slugMatch = React2.useMemo(
2281
2418
  () => matchSlugPrefix(activeSlug, navSlugs),
2282
2419
  [activeSlug, navSlugs]
2283
2420
  );
@@ -2285,6 +2422,8 @@ function AppShell({
2285
2422
  const restParams = slugMatch?.rest ?? "";
2286
2423
  const currentSection = findCurrentSection(navItems, baseSlug);
2287
2424
  const secondLevelTabs = currentSection?.children ?? [];
2425
+ const mobileCurrentSection = findCurrentSection(mobileNavItems, baseSlug);
2426
+ const mobileSecondLevelTabs = mobileCurrentSection?.children ?? [];
2288
2427
  const currentNavItem = findNavItem(navItems, baseSlug);
2289
2428
  const content = typeof children === "function" ? children({ currentSlug: activeSlug, currentNavItem }) : children ?? /* @__PURE__ */ jsxRuntime.jsx(
2290
2429
  PageRouter,
@@ -2333,6 +2472,7 @@ function AppShell({
2333
2472
  SdkHeader,
2334
2473
  {
2335
2474
  tabs: secondLevelTabs,
2475
+ mobileTabs: mobileSecondLevelTabs,
2336
2476
  currentSlug: activeSlug,
2337
2477
  onNavigate: handleNavigate,
2338
2478
  navSlugs
@@ -2340,6 +2480,15 @@ function AppShell({
2340
2480
  ),
2341
2481
  sidebarHeader,
2342
2482
  sidebarFooter,
2483
+ useBottomNav: true,
2484
+ afterContent: /* @__PURE__ */ jsxRuntime.jsx(
2485
+ SdkBottomNav,
2486
+ {
2487
+ navItems: mobileNavItems,
2488
+ currentSlug: activeSlug,
2489
+ onNavigate: handleNavigate
2490
+ }
2491
+ ),
2343
2492
  children: content
2344
2493
  }
2345
2494
  )
@@ -2350,7 +2499,7 @@ function AppShell({
2350
2499
  }
2351
2500
  );
2352
2501
  }
2353
- var AppLink = react.forwardRef(
2502
+ var AppLink = React2.forwardRef(
2354
2503
  function AppLink2({ to, onClick, children, ...rest }, ref) {
2355
2504
  const { navigate, buildHref } = useAppNavigation();
2356
2505
  const handleClick = (e) => {
@@ -2365,243 +2514,243 @@ var AppLink = react.forwardRef(
2365
2514
  return /* @__PURE__ */ jsxRuntime.jsx("a", { ref, href: buildHref(to), onClick: handleClick, ...rest, children });
2366
2515
  }
2367
2516
  );
2368
- var export_DEFAULT_COLORS = chunkV3IMQZIG_cjs.themes_exports.DEFAULT_COLORS;
2369
- var export_DEFAULT_FONT_FAMILIES = chunkV3IMQZIG_cjs.themes_exports.DEFAULT_FONT_FAMILIES;
2370
- var export_DEFAULT_FONT_SIZES = chunkV3IMQZIG_cjs.themes_exports.DEFAULT_FONT_SIZES;
2371
- var export_DEFAULT_RADII = chunkV3IMQZIG_cjs.themes_exports.DEFAULT_RADII;
2372
- var export_DEFAULT_SPACING = chunkV3IMQZIG_cjs.themes_exports.DEFAULT_SPACING;
2373
- var export_DEFAULT_THEME_ID = chunkV3IMQZIG_cjs.themes_exports.DEFAULT_THEME_ID;
2374
- var export_DEFAULT_THEME_NAME = chunkV3IMQZIG_cjs.themes_exports.DEFAULT_THEME_NAME;
2375
- var export_FONT_FAMILY_KEYS = chunkV3IMQZIG_cjs.themes_exports.FONT_FAMILY_KEYS;
2376
- var export_FONT_SIZE_KEYS = chunkV3IMQZIG_cjs.themes_exports.FONT_SIZE_KEYS;
2377
- var export_RADIUS_KEYS = chunkV3IMQZIG_cjs.themes_exports.RADIUS_KEYS;
2378
- var export_SEMANTIC_COLOR_NAMES = chunkV3IMQZIG_cjs.themes_exports.SEMANTIC_COLOR_NAMES;
2379
- var export_SHADE_STEPS = chunkV3IMQZIG_cjs.themes_exports.SHADE_STEPS;
2380
- var export_applyTheme = chunkV3IMQZIG_cjs.themes_exports.applyTheme;
2381
- var export_deriveDarkVariant = chunkV3IMQZIG_cjs.themes_exports.deriveDarkVariant;
2382
- var export_deserialiseTheme = chunkV3IMQZIG_cjs.themes_exports.deserialiseTheme;
2383
- var export_generateShades = chunkV3IMQZIG_cjs.themes_exports.generateShades;
2384
- var export_generateThemeCSS = chunkV3IMQZIG_cjs.themes_exports.generateThemeCSS;
2385
- var export_getDefaultThemeDefinition = chunkV3IMQZIG_cjs.themes_exports.getDefaultThemeDefinition;
2386
- var export_getForegroundColor = chunkV3IMQZIG_cjs.themes_exports.getForegroundColor;
2387
- var export_mergeDarkOverrides = chunkV3IMQZIG_cjs.themes_exports.mergeDarkOverrides;
2388
- var export_parseColor = chunkV3IMQZIG_cjs.themes_exports.parseColor;
2389
- var export_removeAllThemes = chunkV3IMQZIG_cjs.themes_exports.removeAllThemes;
2390
- var export_removeTheme = chunkV3IMQZIG_cjs.themes_exports.removeTheme;
2391
- var export_resolveTheme = chunkV3IMQZIG_cjs.themes_exports.resolveTheme;
2392
- var export_serialiseTheme = chunkV3IMQZIG_cjs.themes_exports.serialiseTheme;
2517
+ var export_DEFAULT_COLORS = chunkW37C774B_cjs.themes_exports.DEFAULT_COLORS;
2518
+ var export_DEFAULT_FONT_FAMILIES = chunkW37C774B_cjs.themes_exports.DEFAULT_FONT_FAMILIES;
2519
+ var export_DEFAULT_FONT_SIZES = chunkW37C774B_cjs.themes_exports.DEFAULT_FONT_SIZES;
2520
+ var export_DEFAULT_RADII = chunkW37C774B_cjs.themes_exports.DEFAULT_RADII;
2521
+ var export_DEFAULT_SPACING = chunkW37C774B_cjs.themes_exports.DEFAULT_SPACING;
2522
+ var export_DEFAULT_THEME_ID = chunkW37C774B_cjs.themes_exports.DEFAULT_THEME_ID;
2523
+ var export_DEFAULT_THEME_NAME = chunkW37C774B_cjs.themes_exports.DEFAULT_THEME_NAME;
2524
+ var export_FONT_FAMILY_KEYS = chunkW37C774B_cjs.themes_exports.FONT_FAMILY_KEYS;
2525
+ var export_FONT_SIZE_KEYS = chunkW37C774B_cjs.themes_exports.FONT_SIZE_KEYS;
2526
+ var export_RADIUS_KEYS = chunkW37C774B_cjs.themes_exports.RADIUS_KEYS;
2527
+ var export_SEMANTIC_COLOR_NAMES = chunkW37C774B_cjs.themes_exports.SEMANTIC_COLOR_NAMES;
2528
+ var export_SHADE_STEPS = chunkW37C774B_cjs.themes_exports.SHADE_STEPS;
2529
+ var export_applyTheme = chunkW37C774B_cjs.themes_exports.applyTheme;
2530
+ var export_deriveDarkVariant = chunkW37C774B_cjs.themes_exports.deriveDarkVariant;
2531
+ var export_deserialiseTheme = chunkW37C774B_cjs.themes_exports.deserialiseTheme;
2532
+ var export_generateShades = chunkW37C774B_cjs.themes_exports.generateShades;
2533
+ var export_generateThemeCSS = chunkW37C774B_cjs.themes_exports.generateThemeCSS;
2534
+ var export_getDefaultThemeDefinition = chunkW37C774B_cjs.themes_exports.getDefaultThemeDefinition;
2535
+ var export_getForegroundColor = chunkW37C774B_cjs.themes_exports.getForegroundColor;
2536
+ var export_mergeDarkOverrides = chunkW37C774B_cjs.themes_exports.mergeDarkOverrides;
2537
+ var export_parseColor = chunkW37C774B_cjs.themes_exports.parseColor;
2538
+ var export_removeAllThemes = chunkW37C774B_cjs.themes_exports.removeAllThemes;
2539
+ var export_removeTheme = chunkW37C774B_cjs.themes_exports.removeTheme;
2540
+ var export_resolveTheme = chunkW37C774B_cjs.themes_exports.resolveTheme;
2541
+ var export_serialiseTheme = chunkW37C774B_cjs.themes_exports.serialiseTheme;
2393
2542
 
2394
- Object.defineProperty(exports, "AUTH_CONSTANTS", {
2395
- enumerable: true,
2396
- get: function () { return chunkV3IMQZIG_cjs.AUTH_CONSTANTS; }
2397
- });
2398
2543
  Object.defineProperty(exports, "ApiError", {
2399
2544
  enumerable: true,
2400
- get: function () { return chunkV3IMQZIG_cjs.ApiError; }
2545
+ get: function () { return chunkW37C774B_cjs.ApiError; }
2401
2546
  });
2402
2547
  Object.defineProperty(exports, "DEFAULT_AUTH_URL", {
2403
2548
  enumerable: true,
2404
- get: function () { return chunkV3IMQZIG_cjs.DEFAULT_AUTH_URL; }
2549
+ get: function () { return chunkW37C774B_cjs.DEFAULT_AUTH_URL; }
2405
2550
  });
2406
2551
  Object.defineProperty(exports, "DEFAULT_SDK_WIDGET_REGISTRY", {
2407
2552
  enumerable: true,
2408
- get: function () { return chunkV3IMQZIG_cjs.DEFAULT_SDK_WIDGET_REGISTRY; }
2553
+ get: function () { return chunkW37C774B_cjs.DEFAULT_SDK_WIDGET_REGISTRY; }
2409
2554
  });
2410
2555
  Object.defineProperty(exports, "FluidAuthProvider", {
2411
2556
  enumerable: true,
2412
- get: function () { return chunkV3IMQZIG_cjs.FluidAuthProvider; }
2557
+ get: function () { return chunkW37C774B_cjs.FluidAuthProvider; }
2413
2558
  });
2414
2559
  Object.defineProperty(exports, "FluidProvider", {
2415
2560
  enumerable: true,
2416
- get: function () { return chunkV3IMQZIG_cjs.FluidProvider; }
2561
+ get: function () { return chunkW37C774B_cjs.FluidProvider; }
2417
2562
  });
2418
2563
  Object.defineProperty(exports, "FluidThemeProvider", {
2419
2564
  enumerable: true,
2420
- get: function () { return chunkV3IMQZIG_cjs.FluidThemeProvider; }
2565
+ get: function () { return chunkW37C774B_cjs.FluidThemeProvider; }
2421
2566
  });
2422
2567
  Object.defineProperty(exports, "MessagingScreen", {
2423
2568
  enumerable: true,
2424
- get: function () { return chunkV3IMQZIG_cjs.MessagingScreen; }
2569
+ get: function () { return chunkW37C774B_cjs.MessagingScreen; }
2425
2570
  });
2426
- Object.defineProperty(exports, "STORAGE_KEYS", {
2571
+ Object.defineProperty(exports, "buildThemeDefinition", {
2427
2572
  enumerable: true,
2428
- get: function () { return chunkV3IMQZIG_cjs.STORAGE_KEYS; }
2573
+ get: function () { return chunkW37C774B_cjs.buildThemeDefinition; }
2429
2574
  });
2430
- Object.defineProperty(exports, "URL_PARAMS", {
2575
+ Object.defineProperty(exports, "createDefaultAuthRedirect", {
2431
2576
  enumerable: true,
2432
- get: function () { return chunkV3IMQZIG_cjs.URL_PARAMS; }
2577
+ get: function () { return chunkW37C774B_cjs.createDefaultAuthRedirect; }
2433
2578
  });
2434
- Object.defineProperty(exports, "USER_TYPES", {
2579
+ Object.defineProperty(exports, "createFluidClient", {
2435
2580
  enumerable: true,
2436
- get: function () { return chunkV3IMQZIG_cjs.USER_TYPES; }
2581
+ get: function () { return chunkW37C774B_cjs.createFluidClient; }
2437
2582
  });
2438
- Object.defineProperty(exports, "buildThemeDefinition", {
2583
+ Object.defineProperty(exports, "createFluidFileUploader", {
2439
2584
  enumerable: true,
2440
- get: function () { return chunkV3IMQZIG_cjs.buildThemeDefinition; }
2585
+ get: function () { return chunkW37C774B_cjs.createFluidFileUploader; }
2441
2586
  });
2442
- Object.defineProperty(exports, "cleanTokenFromUrl", {
2587
+ Object.defineProperty(exports, "getActiveThemeId", {
2443
2588
  enumerable: true,
2444
- get: function () { return chunkV3IMQZIG_cjs.cleanTokenFromUrl; }
2589
+ get: function () { return chunkW37C774B_cjs.getActiveThemeId; }
2445
2590
  });
2446
- Object.defineProperty(exports, "clearTokens", {
2591
+ Object.defineProperty(exports, "isApiError", {
2447
2592
  enumerable: true,
2448
- get: function () { return chunkV3IMQZIG_cjs.clearTokens; }
2593
+ get: function () { return chunkW37C774B_cjs.isApiError; }
2449
2594
  });
2450
- Object.defineProperty(exports, "createDefaultAuthRedirect", {
2595
+ Object.defineProperty(exports, "messagingScreenPropertySchema", {
2451
2596
  enumerable: true,
2452
- get: function () { return chunkV3IMQZIG_cjs.createDefaultAuthRedirect; }
2597
+ get: function () { return chunkW37C774B_cjs.messagingScreenPropertySchema; }
2453
2598
  });
2454
- Object.defineProperty(exports, "createFluidClient", {
2599
+ Object.defineProperty(exports, "normalizeComponentTree", {
2455
2600
  enumerable: true,
2456
- get: function () { return chunkV3IMQZIG_cjs.createFluidClient; }
2601
+ get: function () { return chunkW37C774B_cjs.normalizeComponentTree; }
2457
2602
  });
2458
- Object.defineProperty(exports, "createFluidFileUploader", {
2603
+ Object.defineProperty(exports, "toNavigationItem", {
2459
2604
  enumerable: true,
2460
- get: function () { return chunkV3IMQZIG_cjs.createFluidFileUploader; }
2605
+ get: function () { return chunkW37C774B_cjs.toNavigationItem; }
2461
2606
  });
2462
- Object.defineProperty(exports, "decodeToken", {
2607
+ Object.defineProperty(exports, "toScreenDefinition", {
2463
2608
  enumerable: true,
2464
- get: function () { return chunkV3IMQZIG_cjs.decodeToken; }
2609
+ get: function () { return chunkW37C774B_cjs.toScreenDefinition; }
2465
2610
  });
2466
- Object.defineProperty(exports, "extractAllTokensFromUrl", {
2611
+ Object.defineProperty(exports, "transformManifestToRepAppData", {
2467
2612
  enumerable: true,
2468
- get: function () { return chunkV3IMQZIG_cjs.extractAllTokensFromUrl; }
2613
+ get: function () { return chunkW37C774B_cjs.transformManifestToRepAppData; }
2469
2614
  });
2470
- Object.defineProperty(exports, "extractCompanyTokenFromUrl", {
2615
+ Object.defineProperty(exports, "transformThemes", {
2471
2616
  enumerable: true,
2472
- get: function () { return chunkV3IMQZIG_cjs.extractCompanyTokenFromUrl; }
2617
+ get: function () { return chunkW37C774B_cjs.transformThemes; }
2473
2618
  });
2474
- Object.defineProperty(exports, "extractTokenFromUrl", {
2619
+ Object.defineProperty(exports, "useFluidApi", {
2475
2620
  enumerable: true,
2476
- get: function () { return chunkV3IMQZIG_cjs.extractTokenFromUrl; }
2621
+ get: function () { return chunkW37C774B_cjs.useFluidApi; }
2477
2622
  });
2478
- Object.defineProperty(exports, "getActiveThemeId", {
2623
+ Object.defineProperty(exports, "useFluidAuthContext", {
2479
2624
  enumerable: true,
2480
- get: function () { return chunkV3IMQZIG_cjs.getActiveThemeId; }
2625
+ get: function () { return chunkW37C774B_cjs.useFluidAuthContext; }
2481
2626
  });
2482
- Object.defineProperty(exports, "getStoredToken", {
2627
+ Object.defineProperty(exports, "useFluidContext", {
2483
2628
  enumerable: true,
2484
- get: function () { return chunkV3IMQZIG_cjs.getStoredToken; }
2629
+ get: function () { return chunkW37C774B_cjs.useFluidContext; }
2485
2630
  });
2486
- Object.defineProperty(exports, "getTokenExpiration", {
2631
+ Object.defineProperty(exports, "useMessagingAuth", {
2487
2632
  enumerable: true,
2488
- get: function () { return chunkV3IMQZIG_cjs.getTokenExpiration; }
2633
+ get: function () { return chunkW37C774B_cjs.useMessagingAuth; }
2489
2634
  });
2490
- Object.defineProperty(exports, "getTokenTimeRemaining", {
2635
+ Object.defineProperty(exports, "useMessagingConfig", {
2491
2636
  enumerable: true,
2492
- get: function () { return chunkV3IMQZIG_cjs.getTokenTimeRemaining; }
2637
+ get: function () { return chunkW37C774B_cjs.useMessagingConfig; }
2493
2638
  });
2494
- Object.defineProperty(exports, "hasStoredToken", {
2639
+ Object.defineProperty(exports, "useThemeContext", {
2495
2640
  enumerable: true,
2496
- get: function () { return chunkV3IMQZIG_cjs.hasStoredToken; }
2641
+ get: function () { return chunkW37C774B_cjs.useThemeContext; }
2497
2642
  });
2498
- Object.defineProperty(exports, "hasTokenInUrl", {
2643
+ Object.defineProperty(exports, "ContactsScreen", {
2499
2644
  enumerable: true,
2500
- get: function () { return chunkV3IMQZIG_cjs.hasTokenInUrl; }
2645
+ get: function () { return chunkEOXYOOWS_cjs.ContactsScreen; }
2501
2646
  });
2502
- Object.defineProperty(exports, "isApiError", {
2647
+ Object.defineProperty(exports, "contactsScreenPropertySchema", {
2503
2648
  enumerable: true,
2504
- get: function () { return chunkV3IMQZIG_cjs.isApiError; }
2649
+ get: function () { return chunkEOXYOOWS_cjs.contactsScreenPropertySchema; }
2505
2650
  });
2506
- Object.defineProperty(exports, "isTokenExpired", {
2651
+ Object.defineProperty(exports, "OrdersScreen", {
2507
2652
  enumerable: true,
2508
- get: function () { return chunkV3IMQZIG_cjs.isTokenExpired; }
2653
+ get: function () { return chunkFG2CI6HA_cjs.OrdersScreen; }
2509
2654
  });
2510
- Object.defineProperty(exports, "isUserType", {
2655
+ Object.defineProperty(exports, "ordersScreenPropertySchema", {
2511
2656
  enumerable: true,
2512
- get: function () { return chunkV3IMQZIG_cjs.isUserType; }
2657
+ get: function () { return chunkFG2CI6HA_cjs.ordersScreenPropertySchema; }
2513
2658
  });
2514
- Object.defineProperty(exports, "isValidToken", {
2659
+ Object.defineProperty(exports, "CustomersScreen", {
2515
2660
  enumerable: true,
2516
- get: function () { return chunkV3IMQZIG_cjs.isValidToken; }
2661
+ get: function () { return chunkMHPK7YQ2_cjs.CustomersScreen; }
2517
2662
  });
2518
- Object.defineProperty(exports, "messagingScreenPropertySchema", {
2663
+ Object.defineProperty(exports, "customersScreenPropertySchema", {
2519
2664
  enumerable: true,
2520
- get: function () { return chunkV3IMQZIG_cjs.messagingScreenPropertySchema; }
2665
+ get: function () { return chunkMHPK7YQ2_cjs.customersScreenPropertySchema; }
2521
2666
  });
2522
- Object.defineProperty(exports, "normalizeComponentTree", {
2667
+ Object.defineProperty(exports, "ProductsScreen", {
2523
2668
  enumerable: true,
2524
- get: function () { return chunkV3IMQZIG_cjs.normalizeComponentTree; }
2669
+ get: function () { return chunk5UBEM3AX_cjs.ProductsScreen; }
2525
2670
  });
2526
- Object.defineProperty(exports, "storeToken", {
2671
+ Object.defineProperty(exports, "productsScreenPropertySchema", {
2527
2672
  enumerable: true,
2528
- get: function () { return chunkV3IMQZIG_cjs.storeToken; }
2673
+ get: function () { return chunk5UBEM3AX_cjs.productsScreenPropertySchema; }
2529
2674
  });
2530
- Object.defineProperty(exports, "toNavigationItem", {
2675
+ Object.defineProperty(exports, "AUTH_CONSTANTS", {
2531
2676
  enumerable: true,
2532
- get: function () { return chunkV3IMQZIG_cjs.toNavigationItem; }
2677
+ get: function () { return auth.AUTH_CONSTANTS; }
2533
2678
  });
2534
- Object.defineProperty(exports, "toScreenDefinition", {
2679
+ Object.defineProperty(exports, "STORAGE_KEYS", {
2535
2680
  enumerable: true,
2536
- get: function () { return chunkV3IMQZIG_cjs.toScreenDefinition; }
2681
+ get: function () { return auth.STORAGE_KEYS; }
2537
2682
  });
2538
- Object.defineProperty(exports, "transformManifestToRepAppData", {
2683
+ Object.defineProperty(exports, "URL_PARAMS", {
2539
2684
  enumerable: true,
2540
- get: function () { return chunkV3IMQZIG_cjs.transformManifestToRepAppData; }
2685
+ get: function () { return auth.URL_PARAMS; }
2541
2686
  });
2542
- Object.defineProperty(exports, "transformThemes", {
2687
+ Object.defineProperty(exports, "USER_TYPES", {
2543
2688
  enumerable: true,
2544
- get: function () { return chunkV3IMQZIG_cjs.transformThemes; }
2689
+ get: function () { return auth.USER_TYPES; }
2545
2690
  });
2546
- Object.defineProperty(exports, "useFluidApi", {
2691
+ Object.defineProperty(exports, "cleanTokenFromUrl", {
2547
2692
  enumerable: true,
2548
- get: function () { return chunkV3IMQZIG_cjs.useFluidApi; }
2693
+ get: function () { return auth.cleanTokenFromUrl; }
2549
2694
  });
2550
- Object.defineProperty(exports, "useFluidAuthContext", {
2695
+ Object.defineProperty(exports, "clearTokens", {
2551
2696
  enumerable: true,
2552
- get: function () { return chunkV3IMQZIG_cjs.useFluidAuthContext; }
2697
+ get: function () { return auth.clearTokens; }
2553
2698
  });
2554
- Object.defineProperty(exports, "useFluidContext", {
2699
+ Object.defineProperty(exports, "decodeToken", {
2555
2700
  enumerable: true,
2556
- get: function () { return chunkV3IMQZIG_cjs.useFluidContext; }
2701
+ get: function () { return auth.decodeToken; }
2557
2702
  });
2558
- Object.defineProperty(exports, "useMessagingAuth", {
2703
+ Object.defineProperty(exports, "extractAllTokensFromUrl", {
2559
2704
  enumerable: true,
2560
- get: function () { return chunkV3IMQZIG_cjs.useMessagingAuth; }
2705
+ get: function () { return auth.extractAllTokensFromUrl; }
2561
2706
  });
2562
- Object.defineProperty(exports, "useMessagingConfig", {
2707
+ Object.defineProperty(exports, "extractCompanyTokenFromUrl", {
2563
2708
  enumerable: true,
2564
- get: function () { return chunkV3IMQZIG_cjs.useMessagingConfig; }
2709
+ get: function () { return auth.extractCompanyTokenFromUrl; }
2565
2710
  });
2566
- Object.defineProperty(exports, "useThemeContext", {
2711
+ Object.defineProperty(exports, "extractTokenFromUrl", {
2567
2712
  enumerable: true,
2568
- get: function () { return chunkV3IMQZIG_cjs.useThemeContext; }
2713
+ get: function () { return auth.extractTokenFromUrl; }
2569
2714
  });
2570
- Object.defineProperty(exports, "validateToken", {
2715
+ Object.defineProperty(exports, "getStoredToken", {
2571
2716
  enumerable: true,
2572
- get: function () { return chunkV3IMQZIG_cjs.validateToken; }
2717
+ get: function () { return auth.getStoredToken; }
2573
2718
  });
2574
- Object.defineProperty(exports, "ContactsScreen", {
2719
+ Object.defineProperty(exports, "getTokenExpiration", {
2575
2720
  enumerable: true,
2576
- get: function () { return chunkEOXYOOWS_cjs.ContactsScreen; }
2721
+ get: function () { return auth.getTokenExpiration; }
2577
2722
  });
2578
- Object.defineProperty(exports, "contactsScreenPropertySchema", {
2723
+ Object.defineProperty(exports, "getTokenTimeRemaining", {
2579
2724
  enumerable: true,
2580
- get: function () { return chunkEOXYOOWS_cjs.contactsScreenPropertySchema; }
2725
+ get: function () { return auth.getTokenTimeRemaining; }
2581
2726
  });
2582
- Object.defineProperty(exports, "OrdersScreen", {
2727
+ Object.defineProperty(exports, "hasStoredToken", {
2583
2728
  enumerable: true,
2584
- get: function () { return chunkFG2CI6HA_cjs.OrdersScreen; }
2729
+ get: function () { return auth.hasStoredToken; }
2585
2730
  });
2586
- Object.defineProperty(exports, "ordersScreenPropertySchema", {
2731
+ Object.defineProperty(exports, "hasTokenInUrl", {
2587
2732
  enumerable: true,
2588
- get: function () { return chunkFG2CI6HA_cjs.ordersScreenPropertySchema; }
2733
+ get: function () { return auth.hasTokenInUrl; }
2589
2734
  });
2590
- Object.defineProperty(exports, "CustomersScreen", {
2735
+ Object.defineProperty(exports, "isTokenExpired", {
2591
2736
  enumerable: true,
2592
- get: function () { return chunkMHPK7YQ2_cjs.CustomersScreen; }
2737
+ get: function () { return auth.isTokenExpired; }
2593
2738
  });
2594
- Object.defineProperty(exports, "customersScreenPropertySchema", {
2739
+ Object.defineProperty(exports, "isUserType", {
2595
2740
  enumerable: true,
2596
- get: function () { return chunkMHPK7YQ2_cjs.customersScreenPropertySchema; }
2741
+ get: function () { return auth.isUserType; }
2597
2742
  });
2598
- Object.defineProperty(exports, "ProductsScreen", {
2743
+ Object.defineProperty(exports, "isValidToken", {
2599
2744
  enumerable: true,
2600
- get: function () { return chunk5UBEM3AX_cjs.ProductsScreen; }
2745
+ get: function () { return auth.isValidToken; }
2601
2746
  });
2602
- Object.defineProperty(exports, "productsScreenPropertySchema", {
2747
+ Object.defineProperty(exports, "storeToken", {
2603
2748
  enumerable: true,
2604
- get: function () { return chunk5UBEM3AX_cjs.productsScreenPropertySchema; }
2749
+ get: function () { return auth.storeToken; }
2750
+ });
2751
+ Object.defineProperty(exports, "validateToken", {
2752
+ enumerable: true,
2753
+ get: function () { return auth.validateToken; }
2605
2754
  });
2606
2755
  Object.defineProperty(exports, "WIDGET_TYPE_NAMES", {
2607
2756
  enumerable: true,