@fluid-app/portal-sdk 0.1.159 → 0.1.161

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 (78) hide show
  1. package/README.md +2 -196
  2. package/dist/{FluidProvider-Cqf2kmUc.mjs → FluidProvider-B00jTGTH.mjs} +1510 -1624
  3. package/dist/FluidProvider-B00jTGTH.mjs.map +1 -0
  4. package/dist/{FluidProvider-Bc-3uN7M.cjs → FluidProvider-BtGi2jJt.cjs} +1458 -1614
  5. package/dist/FluidProvider-BtGi2jJt.cjs.map +1 -0
  6. package/dist/{MessagingScreen-BGqIn-c2.cjs → MessagingScreen-BRCUJDDZ.cjs} +2 -2
  7. package/dist/{MessagingScreen-CbmuvlH6.mjs → MessagingScreen-BWpSXB8Q.mjs} +2 -2
  8. package/dist/{MessagingScreen-CbmuvlH6.mjs.map → MessagingScreen-BWpSXB8Q.mjs.map} +1 -1
  9. package/dist/{MessagingScreen-CBPjP4du.cjs → MessagingScreen-C_OLIWCC.cjs} +2 -2
  10. package/dist/{MessagingScreen-CBPjP4du.cjs.map → MessagingScreen-C_OLIWCC.cjs.map} +1 -1
  11. package/dist/{MySiteScreen-DSDLDnCN.cjs → MySiteScreen-B90qzZPe.cjs} +2 -2
  12. package/dist/{MySiteScreen-Cl6nuU99.cjs → MySiteScreen-DLuHDXB1.cjs} +2 -2
  13. package/dist/{MySiteScreen-Cl6nuU99.cjs.map → MySiteScreen-DLuHDXB1.cjs.map} +1 -1
  14. package/dist/{MySiteScreen-BT1PBPsH.mjs → MySiteScreen-VaOB-vWk.mjs} +2 -2
  15. package/dist/{MySiteScreen-BT1PBPsH.mjs.map → MySiteScreen-VaOB-vWk.mjs.map} +1 -1
  16. package/dist/ProductsScreen-B8OynxlP.cjs +13 -0
  17. package/dist/{ProductsScreen-4WRrJcvw.mjs → ProductsScreen-CbVSNv1l.mjs} +3 -5
  18. package/dist/ProductsScreen-CbVSNv1l.mjs.map +1 -0
  19. package/dist/{ProductsScreen-BCs3YKVk.cjs → ProductsScreen-D1bw4ZIH.cjs} +3 -5
  20. package/dist/ProductsScreen-D1bw4ZIH.cjs.map +1 -0
  21. package/dist/ProductsScreen-Pq3j09nI.mjs +11 -0
  22. package/dist/{ProfileScreen-BgyrIQdL.mjs → ProfileScreen-BCHljkWD.mjs} +2 -2
  23. package/dist/{ProfileScreen-BgyrIQdL.mjs.map → ProfileScreen-BCHljkWD.mjs.map} +1 -1
  24. package/dist/{ProfileScreen-B0KNWXpV.cjs → ProfileScreen-Bf-lYNzz.cjs} +2 -2
  25. package/dist/{ProfileScreen-DLLLRNB2.cjs → ProfileScreen-ksdtbydb.cjs} +2 -2
  26. package/dist/{ProfileScreen-DLLLRNB2.cjs.map → ProfileScreen-ksdtbydb.cjs.map} +1 -1
  27. package/dist/{ShareablesScreen-ySSwCVSI.cjs → ShareablesScreen-6wgiwi_9.cjs} +3 -5
  28. package/dist/ShareablesScreen-6wgiwi_9.cjs.map +1 -0
  29. package/dist/{ShareablesScreen-B8cmh8JC.mjs → ShareablesScreen-BLCukNTk.mjs} +3 -5
  30. package/dist/{ShareablesScreen-B8cmh8JC.mjs.map → ShareablesScreen-BLCukNTk.mjs.map} +1 -1
  31. package/dist/ShareablesScreen-CM9OH-Nx.mjs +11 -0
  32. package/dist/ShareablesScreen-rmLcUhbL.cjs +13 -0
  33. package/dist/{ShopScreen-DhMo8bvP.cjs → ShopScreen-8KKwwjka.cjs} +3 -3
  34. package/dist/{ShopScreen-DhMo8bvP.cjs.map → ShopScreen-8KKwwjka.cjs.map} +1 -1
  35. package/dist/{ShopScreen-BkvyW0pE.cjs → ShopScreen-CjEbB3Q7.cjs} +2 -2
  36. package/dist/{ShopScreen-BFFGYwdV.mjs → ShopScreen-Dn5LwwYD.mjs} +3 -3
  37. package/dist/{ShopScreen-BFFGYwdV.mjs.map → ShopScreen-Dn5LwwYD.mjs.map} +1 -1
  38. package/dist/{SubscriptionsScreen-RScBCcY0.cjs → SubscriptionsScreen-B16wPAoA.cjs} +2 -2
  39. package/dist/SubscriptionsScreen-B16wPAoA.cjs.map +1 -0
  40. package/dist/{SubscriptionsScreen-CiNR7JUC.mjs → SubscriptionsScreen-B4cTlgDU.mjs} +2 -2
  41. package/dist/SubscriptionsScreen-B4cTlgDU.mjs.map +1 -0
  42. package/dist/{SubscriptionsScreen-DMh-GE6n.cjs → SubscriptionsScreen-nRUMdnx7.cjs} +1 -1
  43. package/dist/{dist-Bg8UyHyM.cjs → dist-lO2OG0T5.cjs} +1 -1
  44. package/dist/{dist-Bg8UyHyM.cjs.map → dist-lO2OG0T5.cjs.map} +1 -1
  45. package/dist/index.cjs +134 -143
  46. package/dist/index.cjs.map +1 -1
  47. package/dist/index.d.cts +444 -655
  48. package/dist/index.d.cts.map +1 -1
  49. package/dist/index.d.mts +444 -655
  50. package/dist/index.d.mts.map +1 -1
  51. package/dist/index.mjs +127 -130
  52. package/dist/index.mjs.map +1 -1
  53. package/dist/{sortable.esm-Cz-CP2N8.mjs → sortable.esm-DSrWP4x9.mjs} +1 -1
  54. package/dist/{sortable.esm-Cz-CP2N8.mjs.map → sortable.esm-DSrWP4x9.mjs.map} +1 -1
  55. package/dist/{use-portal-products-client-BmlUixy4.cjs → use-portal-products-client-BHSBT64s.cjs} +2 -2
  56. package/dist/use-portal-products-client-BHSBT64s.cjs.map +1 -0
  57. package/dist/{use-portal-products-client-DQK9nFxT.mjs → use-portal-products-client-tbqk6XUq.mjs} +2 -2
  58. package/dist/use-portal-products-client-tbqk6XUq.mjs.map +1 -0
  59. package/dist/{use-portal-shareables-api-KVPj0Jfr.mjs → use-portal-shareables-api-B9B4XTjw.mjs} +107 -201
  60. package/dist/use-portal-shareables-api-B9B4XTjw.mjs.map +1 -0
  61. package/dist/{use-portal-shareables-api-D5D6uIJy.cjs → use-portal-shareables-api-MBl0d0eQ.cjs} +106 -206
  62. package/dist/use-portal-shareables-api-MBl0d0eQ.cjs.map +1 -0
  63. package/package.json +13 -13
  64. package/dist/FluidProvider-Bc-3uN7M.cjs.map +0 -1
  65. package/dist/FluidProvider-Cqf2kmUc.mjs.map +0 -1
  66. package/dist/ProductsScreen-4WRrJcvw.mjs.map +0 -1
  67. package/dist/ProductsScreen-BCs3YKVk.cjs.map +0 -1
  68. package/dist/ProductsScreen-BR9TN4So.cjs +0 -48
  69. package/dist/ProductsScreen-Da6eWJ_c.mjs +0 -46
  70. package/dist/ShareablesScreen-DW0wCYOj.mjs +0 -46
  71. package/dist/ShareablesScreen-DbPJOtCF.cjs +0 -48
  72. package/dist/ShareablesScreen-ySSwCVSI.cjs.map +0 -1
  73. package/dist/SubscriptionsScreen-CiNR7JUC.mjs.map +0 -1
  74. package/dist/SubscriptionsScreen-RScBCcY0.cjs.map +0 -1
  75. package/dist/use-portal-products-client-BmlUixy4.cjs.map +0 -1
  76. package/dist/use-portal-products-client-DQK9nFxT.mjs.map +0 -1
  77. package/dist/use-portal-shareables-api-D5D6uIJy.cjs.map +0 -1
  78. package/dist/use-portal-shareables-api-KVPj0Jfr.mjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-9hOWP6kD.cjs");
3
- const require_FluidProvider = require("./FluidProvider-Bc-3uN7M.cjs");
3
+ const require_FluidProvider = require("./FluidProvider-BtGi2jJt.cjs");
4
4
  require("./account-api-context-pr_NLnGy.cjs");
5
5
  require("./mysite-api-context-BTt-_urb.cjs");
6
6
  require("./countries-api-context-CwUkJTdy.cjs");
@@ -42,8 +42,8 @@ const require_ScreenHeaderContext = require("./ScreenHeaderContext-DRIKmM2G.cjs"
42
42
  const require_use_account = require("./use-account-CrgtI83z.cjs");
43
43
  const require_CustomersScreen = require("./CustomersScreen-CSLbl2As.cjs");
44
44
  const require_AppNavigationContext = require("./AppNavigationContext-BiYNDj_X.cjs");
45
- const require_MessagingScreen = require("./MessagingScreen-CBPjP4du.cjs");
46
- const require_ProfileScreen = require("./ProfileScreen-DLLLRNB2.cjs");
45
+ const require_MessagingScreen = require("./MessagingScreen-C_OLIWCC.cjs");
46
+ const require_ProfileScreen = require("./ProfileScreen-ksdtbydb.cjs");
47
47
  require("./dist-thaj08s5.cjs");
48
48
  require("./es-xQF-WIMq.cjs");
49
49
  const require_ContactsScreen = require("./ContactsScreen-BUjE0Idb.cjs");
@@ -52,13 +52,13 @@ require("./order-status-badge-DeAGe2Ur.cjs");
52
52
  require("./src-B47XcHTS.cjs");
53
53
  require("./dist-BSKQ_GoC.cjs");
54
54
  const require_OrdersScreen = require("./OrdersScreen-tSpfcNlK.cjs");
55
- const require_SubscriptionsScreen = require("./SubscriptionsScreen-RScBCcY0.cjs");
56
- require("./use-portal-shareables-api-D5D6uIJy.cjs");
57
- const require_ShareablesScreen = require("./ShareablesScreen-ySSwCVSI.cjs");
58
- require("./dist-Bg8UyHyM.cjs");
59
- const require_ProductsScreen = require("./ProductsScreen-BCs3YKVk.cjs");
60
- const require_MySiteScreen = require("./MySiteScreen-Cl6nuU99.cjs");
61
- const require_ShopScreen = require("./ShopScreen-DhMo8bvP.cjs");
55
+ const require_SubscriptionsScreen = require("./SubscriptionsScreen-B16wPAoA.cjs");
56
+ require("./use-portal-shareables-api-MBl0d0eQ.cjs");
57
+ const require_ShareablesScreen = require("./ShareablesScreen-6wgiwi_9.cjs");
58
+ require("./dist-lO2OG0T5.cjs");
59
+ const require_ProductsScreen = require("./ProductsScreen-D1bw4ZIH.cjs");
60
+ const require_MySiteScreen = require("./MySiteScreen-DLuHDXB1.cjs");
61
+ const require_ShopScreen = require("./ShopScreen-8KKwwjka.cjs");
62
62
  require("./UpgradeScreen-BlztCeo5.cjs");
63
63
  require("./AppDownloadScreen-BSkt2tYd.cjs");
64
64
  let react = require("react");
@@ -1373,6 +1373,108 @@ function useCompanyScopedQueryKey() {
1373
1373
  };
1374
1374
  }
1375
1375
  //#endregion
1376
+ //#region src/transforms/screen-transforms.ts
1377
+ /**
1378
+ * Normalize component_tree to always be an array.
1379
+ * The API stores component_tree as a hash (object), but the frontend expects an array.
1380
+ */
1381
+ function normalizeComponentTree(componentTree) {
1382
+ if (!componentTree) return [];
1383
+ if (Array.isArray(componentTree)) return componentTree;
1384
+ if (typeof componentTree === "object") return [componentTree];
1385
+ return [];
1386
+ }
1387
+ /**
1388
+ * Convert a raw FluidOS screen to ScreenDefinition.
1389
+ * Normalizes component_tree and converts string IDs to numbers.
1390
+ */
1391
+ function toScreenDefinition(screen) {
1392
+ return {
1393
+ id: Number(screen.id),
1394
+ slug: screen.slug ?? "",
1395
+ name: screen.name ?? "",
1396
+ component_tree: normalizeComponentTree(screen.component_tree)
1397
+ };
1398
+ }
1399
+ //#endregion
1400
+ //#region src/transforms/navigation-transforms.ts
1401
+ /**
1402
+ * Convert a raw FluidOS navigation item to NavigationItem.
1403
+ * Recursively transforms children and sorts by position.
1404
+ */
1405
+ function toNavigationItem(item) {
1406
+ const children = (item.children ?? []).map(toNavigationItem).sort((a, b) => (a.position ?? 0) - (b.position ?? 0));
1407
+ return {
1408
+ id: Number(item.id),
1409
+ label: item.label ?? "Untitled",
1410
+ ...item.slug != null ? { slug: String(item.slug) } : {},
1411
+ ...item.icon != null ? { icon: String(item.icon) } : {},
1412
+ ...item.screen_id != null ? { screen_id: Number(item.screen_id) } : {},
1413
+ ...item.parent_id != null ? { parent_id: Number(item.parent_id) } : {},
1414
+ ...item.source != null ? { source: item.source } : {},
1415
+ position: item.position ?? 0,
1416
+ children
1417
+ };
1418
+ }
1419
+ //#endregion
1420
+ //#region src/transforms/index.ts
1421
+ /**
1422
+ * Convert a raw FluidOS API response to RawManifestResponse.
1423
+ *
1424
+ * The wire format includes `navigation_items` and full theme objects,
1425
+ * but the generated OpenAPI types differ (e.g. `navigation_tree`, `themes: number[]`).
1426
+ * This function bridges that gap so callers avoid `as unknown as` casts.
1427
+ */
1428
+ function toRawManifest(raw) {
1429
+ if (!raw.manifest) throw new Error("FluidOS API returned empty manifest");
1430
+ return raw;
1431
+ }
1432
+ /**
1433
+ * Transform a raw FluidOS manifest API response into RepAppData.
1434
+ *
1435
+ * This is the top-level transform used by `useFluidApp` and `useFluidProfile`.
1436
+ * It handles:
1437
+ * - Theme transformation (legacy and new formats)
1438
+ * - Screen normalization (component_tree array wrapping)
1439
+ * - Navigation item transformation (recursive with position sorting)
1440
+ */
1441
+ function transformManifestToRepAppData(response) {
1442
+ const manifest = response.manifest;
1443
+ const rawProfile = manifest.profile;
1444
+ const rawThemes = Array.isArray(rawProfile?.themes) ? rawProfile.themes : [];
1445
+ const screens = (manifest.screens ?? []).map((screen) => toScreenDefinition(screen));
1446
+ const navigationItems = (rawProfile?.navigation?.navigation_items ?? []).map(toNavigationItem);
1447
+ const nav = rawProfile?.navigation;
1448
+ const mobileNav = rawProfile?.mobile_navigation;
1449
+ const mobileNavigationItems = (mobileNav?.navigation_items ?? []).map(toNavigationItem);
1450
+ const activeThemeId = require_FluidProvider.getActiveThemeId(rawThemes);
1451
+ return {
1452
+ definition_id: manifest.definition_id,
1453
+ published_version: manifest.published_version ?? 0,
1454
+ screens,
1455
+ profile: {
1456
+ name: rawProfile?.name ?? "Default",
1457
+ definition_id: rawProfile?.definition_id ?? manifest.definition_id,
1458
+ themes: require_FluidProvider.transformThemes(rawThemes),
1459
+ ...activeThemeId !== void 0 ? { activeThemeId } : {},
1460
+ navigation: {
1461
+ definition_id: nav?.definition_id ?? manifest.definition_id,
1462
+ id: nav?.id ?? 0,
1463
+ name: nav?.name ?? "Main Navigation",
1464
+ navigation_items: navigationItems,
1465
+ screens
1466
+ },
1467
+ ...mobileNav ? { mobile_navigation: {
1468
+ definition_id: mobileNav.definition_id ?? manifest.definition_id,
1469
+ id: mobileNav.id ?? 0,
1470
+ name: mobileNav.name ?? "Mobile Navigation",
1471
+ navigation_items: mobileNavigationItems,
1472
+ screens
1473
+ } } : {}
1474
+ }
1475
+ };
1476
+ }
1477
+ //#endregion
1376
1478
  //#region src/hooks/use-fluid-app.ts
1377
1479
  /**
1378
1480
  * Base query key for full app data (fluidos endpoint).
@@ -1385,7 +1487,7 @@ const APP_DATA_QUERY_KEY = ["fluid", "app"];
1385
1487
  * Shared by `useFluidApp` and `useFluidProfile` to avoid drift.
1386
1488
  */
1387
1489
  async function fetchRawManifest(api) {
1388
- return require_FluidProvider.toRawManifest(await api.getManifest({ platform: "browser" }));
1490
+ return toRawManifest(await api.getManifest({ platform: "browser" }));
1389
1491
  }
1390
1492
  /**
1391
1493
  * Module-level persister instance (browser only).
@@ -1430,7 +1532,7 @@ function useFluidApp(options) {
1430
1532
  return (0, _tanstack_react_query.useQuery)({
1431
1533
  queryKey: scopeKey(APP_DATA_QUERY_KEY),
1432
1534
  queryFn: () => fetchRawManifest(fluidOsApi),
1433
- select: require_FluidProvider.transformManifestToRepAppData,
1535
+ select: transformManifestToRepAppData,
1434
1536
  ...appDataPersister && { persister: appDataPersister.persisterFn },
1435
1537
  ...options?.enabled !== void 0 && { enabled: options.enabled }
1436
1538
  });
@@ -2461,16 +2563,16 @@ function AccountManageLayout({ children }) {
2461
2563
  }
2462
2564
  //#endregion
2463
2565
  //#region src/shell/system-screen-map.ts
2464
- const ProfileScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProfileScreen-B0KNWXpV.cjs")).then((m) => ({ default: m.ProfileScreen })));
2566
+ const ProfileScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProfileScreen-Bf-lYNzz.cjs")).then((m) => ({ default: m.ProfileScreen })));
2465
2567
  const OrdersScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./OrdersScreen-B7puF8He.cjs")).then((m) => ({ default: m.OrdersScreen })));
2466
- const SubscriptionsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./SubscriptionsScreen-DMh-GE6n.cjs")).then((m) => ({ default: m.SubscriptionsScreen })));
2467
- const MessagingScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MessagingScreen-BGqIn-c2.cjs")).then((m) => ({ default: m.MessagingScreen })));
2568
+ const SubscriptionsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./SubscriptionsScreen-nRUMdnx7.cjs")).then((m) => ({ default: m.SubscriptionsScreen })));
2569
+ const MessagingScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MessagingScreen-BRCUJDDZ.cjs")).then((m) => ({ default: m.MessagingScreen })));
2468
2570
  const ContactsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ContactsScreen-BiQdoJnm.cjs")).then((m) => ({ default: m.ContactsScreen })));
2469
- const ShopScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShopScreen-BkvyW0pE.cjs")).then((m) => ({ default: m.ShopScreen })));
2571
+ const ShopScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShopScreen-CjEbB3Q7.cjs")).then((m) => ({ default: m.ShopScreen })));
2470
2572
  const CustomersScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./CustomersScreen-CSLbl2As.cjs")).then((n) => n.CustomersScreen_exports).then((m) => ({ default: m.CustomersScreen })));
2471
- const ProductsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProductsScreen-BR9TN4So.cjs")).then((m) => ({ default: m.ProductsScreen })));
2472
- const ShareablesScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShareablesScreen-DbPJOtCF.cjs")).then((m) => ({ default: m.ShareablesScreen })));
2473
- const MySiteScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MySiteScreen-DSDLDnCN.cjs")).then((m) => ({ default: m.MySiteScreen })));
2573
+ const ProductsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProductsScreen-B8OynxlP.cjs")).then((m) => ({ default: m.ProductsScreen })));
2574
+ const ShareablesScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShareablesScreen-rmLcUhbL.cjs")).then((m) => ({ default: m.ShareablesScreen })));
2575
+ const MySiteScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MySiteScreen-B90qzZPe.cjs")).then((m) => ({ default: m.MySiteScreen })));
2474
2576
  const UpgradeScreen = (0, react.lazy)(() => Promise.resolve().then(() => require("./UpgradeScreen-Bk35epg9.cjs")).then((m) => ({ default: m.UpgradeScreen })));
2475
2577
  const AppDownloadScreen = (0, react.lazy)(() => Promise.resolve().then(() => require("./AppDownloadScreen-BSkt2tYd.cjs")).then((n) => n.AppDownloadScreen_exports).then((m) => ({ default: m.AppDownloadScreen })));
2476
2578
  const SYSTEM_SLUG_SCREEN_MAP = {
@@ -3019,29 +3121,6 @@ function createPortal(config = {}) {
3019
3121
  (0, react_dom_client.createRoot)(rootElement).render(config.disableStrictMode ? tree : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.StrictMode, { children: tree }));
3020
3122
  }
3021
3123
  //#endregion
3022
- //#region src/hooks/use-fluid-api.ts
3023
- /**
3024
- * Hook to access the Fluid API client
3025
- *
3026
- * @example
3027
- * ```tsx
3028
- * function RepProfile() {
3029
- * const api = useFluidApi();
3030
- *
3031
- * const { data: rep } = useQuery({
3032
- * queryKey: ["rep"],
3033
- * queryFn: () => api.reps.current(),
3034
- * });
3035
- *
3036
- * return <p>Hello, {rep?.first_name}</p>;
3037
- * }
3038
- * ```
3039
- */
3040
- function useFluidApi() {
3041
- const { client } = require_FluidProvider.useFluidContext();
3042
- return client;
3043
- }
3044
- //#endregion
3045
3124
  //#region src/hooks/use-fluid-profile.ts
3046
3125
  /**
3047
3126
  * Base query key for profile data.
@@ -3085,58 +3164,11 @@ function useFluidProfile() {
3085
3164
  queryKey: scopeKey(APP_DATA_QUERY_KEY),
3086
3165
  queryFn: () => fetchRawManifest(fluidOsApi),
3087
3166
  select: (raw) => {
3088
- return require_FluidProvider.transformManifestToRepAppData(raw).profile;
3167
+ return transformManifestToRepAppData(raw).profile;
3089
3168
  }
3090
3169
  });
3091
3170
  }
3092
3171
  //#endregion
3093
- //#region src/hooks/use-fluid-permissions.ts
3094
- /**
3095
- * Base query key for permissions data.
3096
- * Kept for backwards compatibility — the runtime key used by the hook
3097
- * includes a company prefix via {@link useCompanyScopedQueryKey}.
3098
- */
3099
- const PERMISSIONS_QUERY_KEY = ["fluid", "permissions"];
3100
- /**
3101
- * Hook to fetch and check user permissions
3102
- *
3103
- * @example
3104
- * ```tsx
3105
- * function TeamSettings() {
3106
- * const { can, isSuperAdmin } = useFluidPermissions();
3107
- *
3108
- * if (!can("team", "manage")) {
3109
- * return <AccessDenied />;
3110
- * }
3111
- *
3112
- * return <TeamSettingsForm canDelete={can("team", "delete")} />;
3113
- * }
3114
- * ```
3115
- */
3116
- function useFluidPermissions() {
3117
- const api = useFluidApi();
3118
- const { scopeKey } = useCompanyScopedQueryKey();
3119
- const query = (0, _tanstack_react_query.useQuery)({
3120
- queryKey: scopeKey(PERMISSIONS_QUERY_KEY),
3121
- queryFn: () => api.permissions.get()
3122
- });
3123
- const permissions = query.data;
3124
- return {
3125
- query,
3126
- permissions,
3127
- can: (0, react.useMemo)(() => {
3128
- return (resource, action = "view") => {
3129
- if (!permissions) return false;
3130
- if (permissions.is_super_admin) return true;
3131
- const resourcePermissions = permissions.permissions[resource];
3132
- if (!resourcePermissions) return false;
3133
- return resourcePermissions[action] ?? false;
3134
- };
3135
- }, [permissions]),
3136
- isSuperAdmin: permissions?.is_super_admin ?? false
3137
- };
3138
- }
3139
- //#endregion
3140
3172
  //#region src/hooks/use-fluid-theme.ts
3141
3173
  /**
3142
3174
  * Hook to access and control theme settings
@@ -3180,41 +3212,6 @@ function useFluidTheme() {
3180
3212
  };
3181
3213
  }
3182
3214
  //#endregion
3183
- //#region src/hooks/use-current-rep.ts
3184
- /**
3185
- * Base query key for current rep data.
3186
- * Kept for backwards compatibility — the runtime key used by the hook
3187
- * includes a company prefix via {@link useCompanyScopedQueryKey}.
3188
- */
3189
- const CURRENT_REP_QUERY_KEY = ["fluid", "currentRep"];
3190
- /**
3191
- * Hook to fetch the currently authenticated rep's profile
3192
- *
3193
- * @example
3194
- * ```tsx
3195
- * function RepHeader() {
3196
- * const { data: rep, isLoading } = useCurrentRep();
3197
- *
3198
- * if (isLoading) return <Skeleton />;
3199
- *
3200
- * return (
3201
- * <div>
3202
- * <Avatar src={rep?.avatar_url} />
3203
- * <span>{rep?.first_name} {rep?.last_name}</span>
3204
- * </div>
3205
- * );
3206
- * }
3207
- * ```
3208
- */
3209
- function useCurrentRep() {
3210
- const api = useFluidApi();
3211
- const { scopeKey } = useCompanyScopedQueryKey();
3212
- return (0, _tanstack_react_query.useQuery)({
3213
- queryKey: scopeKey(CURRENT_REP_QUERY_KEY),
3214
- queryFn: () => api.reps.current()
3215
- });
3216
- }
3217
- //#endregion
3218
3215
  //#region src/hooks/use-company-switch.ts
3219
3216
  /**
3220
3217
  * Hook that handles company switching for the portal.
@@ -4032,16 +4029,16 @@ zod.z.object({
4032
4029
  //#endregion
4033
4030
  //#region src/screens/index.ts
4034
4031
  const screenPropertySchemas = {
4035
- ProfileScreen: () => Promise.resolve().then(() => require("./ProfileScreen-B0KNWXpV.cjs")).then((m) => m.profileScreenPropertySchema),
4036
- MessagingScreen: () => Promise.resolve().then(() => require("./MessagingScreen-BGqIn-c2.cjs")).then((m) => m.messagingScreenPropertySchema),
4032
+ ProfileScreen: () => Promise.resolve().then(() => require("./ProfileScreen-Bf-lYNzz.cjs")).then((m) => m.profileScreenPropertySchema),
4033
+ MessagingScreen: () => Promise.resolve().then(() => require("./MessagingScreen-BRCUJDDZ.cjs")).then((m) => m.messagingScreenPropertySchema),
4037
4034
  ContactsScreen: () => Promise.resolve().then(() => require("./ContactsScreen-BiQdoJnm.cjs")).then((m) => m.contactsScreenPropertySchema),
4038
4035
  OrdersScreen: () => Promise.resolve().then(() => require("./OrdersScreen-B7puF8He.cjs")).then((m) => m.ordersScreenPropertySchema),
4039
- SubscriptionsScreen: () => Promise.resolve().then(() => require("./SubscriptionsScreen-DMh-GE6n.cjs")).then((m) => m.subscriptionsScreenPropertySchema),
4036
+ SubscriptionsScreen: () => Promise.resolve().then(() => require("./SubscriptionsScreen-nRUMdnx7.cjs")).then((m) => m.subscriptionsScreenPropertySchema),
4040
4037
  CustomersScreen: () => Promise.resolve().then(() => require("./CustomersScreen-CSLbl2As.cjs")).then((n) => n.CustomersScreen_exports).then((m) => m.customersScreenPropertySchema),
4041
- ProductsScreen: () => Promise.resolve().then(() => require("./ProductsScreen-BR9TN4So.cjs")).then((m) => m.productsScreenPropertySchema),
4042
- MySiteScreen: () => Promise.resolve().then(() => require("./MySiteScreen-DSDLDnCN.cjs")).then((m) => m.mySiteScreenPropertySchema),
4043
- ShareablesScreen: () => Promise.resolve().then(() => require("./ShareablesScreen-DbPJOtCF.cjs")).then((m) => m.shareablesScreenPropertySchema),
4044
- ShopScreen: () => Promise.resolve().then(() => require("./ShopScreen-BkvyW0pE.cjs")).then((m) => m.shopScreenPropertySchema),
4038
+ ProductsScreen: () => Promise.resolve().then(() => require("./ProductsScreen-B8OynxlP.cjs")).then((m) => m.productsScreenPropertySchema),
4039
+ MySiteScreen: () => Promise.resolve().then(() => require("./MySiteScreen-B90qzZPe.cjs")).then((m) => m.mySiteScreenPropertySchema),
4040
+ ShareablesScreen: () => Promise.resolve().then(() => require("./ShareablesScreen-rmLcUhbL.cjs")).then((m) => m.shareablesScreenPropertySchema),
4041
+ ShopScreen: () => Promise.resolve().then(() => require("./ShopScreen-CjEbB3Q7.cjs")).then((m) => m.shopScreenPropertySchema),
4045
4042
  UpgradeScreen: () => Promise.resolve().then(() => require("./UpgradeScreen-Bk35epg9.cjs")).then((m) => m.upgradeScreenPropertySchema),
4046
4043
  AppDownloadScreen: () => Promise.resolve().then(() => require("./AppDownloadScreen-BSkt2tYd.cjs")).then((n) => n.AppDownloadScreen_exports).then((m) => m.appDownloadScreenPropertySchema)
4047
4044
  };
@@ -4376,7 +4373,6 @@ exports.AppShell = AppShell;
4376
4373
  exports.BuilderScreenView = BuilderScreenView;
4377
4374
  exports.BulletListWidget = require_BulletListWidget.BulletListWidget;
4378
4375
  exports.CORE_PAGE_IDS = CORE_PAGE_IDS;
4379
- exports.CURRENT_REP_QUERY_KEY = CURRENT_REP_QUERY_KEY;
4380
4376
  exports.CalendarWidget = require_CalendarWidget.CalendarWidget;
4381
4377
  exports.CardWidget = require_CardWidget.CardWidget;
4382
4378
  exports.CarouselWidget = require_CarouselWidget.CarouselWidget;
@@ -4408,7 +4404,6 @@ exports.MySiteWidget = require_MySiteWidget.MySiteWidget;
4408
4404
  exports.NestedWidget = require_NestedWidget.NestedWidget;
4409
4405
  exports.OrdersScreen = require_OrdersScreen.OrdersScreen;
4410
4406
  exports.PAGE_CATEGORIES = PAGE_CATEGORIES;
4411
- exports.PERMISSIONS_QUERY_KEY = PERMISSIONS_QUERY_KEY;
4412
4407
  exports.PROFILE_QUERY_KEY = PROFILE_QUERY_KEY;
4413
4408
  exports.PROPERTY_FIELD_TYPES = require_registries.PROPERTY_FIELD_TYPES;
4414
4409
  exports.PageRouter = PageRouter;
@@ -4456,7 +4451,6 @@ exports.contactsScreenPropertySchema = require_ContactsScreen.contactsScreenProp
4456
4451
  exports.containerWidgetPropertySchema = require_ContainerWidget.containerWidgetPropertySchema;
4457
4452
  exports.createCompanyQueryKey = createCompanyQueryKey;
4458
4453
  exports.createDefaultFluidConfig = createDefaultFluidConfig;
4459
- exports.createFluidClient = require_FluidProvider.createFluidClient;
4460
4454
  exports.createFluidFileUploader = require_MessagingScreen.createFluidFileUploader;
4461
4455
  exports.createPortal = createPortal;
4462
4456
  exports.createScreen = require_FluidProvider.createScreen;
@@ -4502,7 +4496,7 @@ exports.messagingScreenPropertySchema = require_MessagingScreen.messagingScreenP
4502
4496
  exports.mySiteScreenPropertySchema = require_MySiteScreen.mySiteScreenPropertySchema;
4503
4497
  exports.mySiteWidgetPropertySchema = require_MySiteWidget.mySiteWidgetPropertySchema;
4504
4498
  exports.nestedWidgetPropertySchema = require_NestedWidget.nestedWidgetPropertySchema;
4505
- exports.normalizeComponentTree = require_FluidProvider.normalizeComponentTree;
4499
+ exports.normalizeComponentTree = normalizeComponentTree;
4506
4500
  exports.ordersScreenPropertySchema = require_OrdersScreen.ordersScreenPropertySchema;
4507
4501
  exports.parseColor = require_FluidProvider.parseColor;
4508
4502
  exports.pointsWidgetPropertySchema = require_PointsWidget.pointsWidgetPropertySchema;
@@ -4526,10 +4520,10 @@ exports.subscriptionsScreenPropertySchema = require_SubscriptionsScreen.subscrip
4526
4520
  exports.tableWidgetPropertySchema = require_TableWidget.tableWidgetPropertySchema;
4527
4521
  exports.textWidgetPropertySchema = require_TextWidget.textWidgetPropertySchema;
4528
4522
  exports.toDoWidgetPropertySchema = require_ToDoWidget.toDoWidgetPropertySchema;
4529
- exports.toNavigationItem = require_FluidProvider.toNavigationItem;
4530
- exports.toRawManifest = require_FluidProvider.toRawManifest;
4531
- exports.toScreenDefinition = require_FluidProvider.toScreenDefinition;
4532
- exports.transformManifestToRepAppData = require_FluidProvider.transformManifestToRepAppData;
4523
+ exports.toNavigationItem = toNavigationItem;
4524
+ exports.toRawManifest = toRawManifest;
4525
+ exports.toScreenDefinition = toScreenDefinition;
4526
+ exports.transformManifestToRepAppData = transformManifestToRepAppData;
4533
4527
  exports.transformThemes = require_FluidProvider.transformThemes;
4534
4528
  exports.useActivities = useActivities;
4535
4529
  exports.useAppDefinition = useAppDefinition;
@@ -4543,11 +4537,8 @@ exports.useContact = useContact;
4543
4537
  exports.useContacts = useContacts;
4544
4538
  exports.useConversationMessages = useConversationMessages;
4545
4539
  exports.useConversations = useConversations;
4546
- exports.useCurrentRep = useCurrentRep;
4547
- exports.useFluidApi = useFluidApi;
4548
4540
  exports.useFluidApp = useFluidApp;
4549
4541
  exports.useFluidContext = require_FluidProvider.useFluidContext;
4550
- exports.useFluidPermissions = useFluidPermissions;
4551
4542
  exports.useFluidProfile = useFluidProfile;
4552
4543
  exports.useFluidTheme = useFluidTheme;
4553
4544
  exports.useLogout = useLogout;