@fluid-app/portal-sdk 0.1.97 → 0.1.98

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 (110) hide show
  1. package/dist/{AppDownloadScreen-DpxltF8z.cjs → AppDownloadScreen-BcK2snUL.cjs} +2 -2
  2. package/dist/{AppDownloadScreen-DpxltF8z.cjs.map → AppDownloadScreen-BcK2snUL.cjs.map} +1 -1
  3. package/dist/{AppDownloadScreen-BMOcvPF1.cjs → AppDownloadScreen-CwLZzr-7.cjs} +9 -9
  4. package/dist/{AppDownloadScreen-BrRZShlm.mjs → AppDownloadScreen-rO--O0pk.mjs} +2 -2
  5. package/dist/{AppDownloadScreen-BrRZShlm.mjs.map → AppDownloadScreen-rO--O0pk.mjs.map} +1 -1
  6. package/dist/{CarouselWidget-D48n9SsA.cjs → CarouselWidget-CAiMfcdg.cjs} +2 -2
  7. package/dist/{CarouselWidget-D48n9SsA.cjs.map → CarouselWidget-CAiMfcdg.cjs.map} +1 -1
  8. package/dist/{CarouselWidget-CNf1MR95.cjs → CarouselWidget-DXA_unMC.cjs} +2 -2
  9. package/dist/{CarouselWidget-dqjnsx9d.mjs → CarouselWidget-Hre6Pz6P.mjs} +2 -2
  10. package/dist/{CarouselWidget-dqjnsx9d.mjs.map → CarouselWidget-Hre6Pz6P.mjs.map} +1 -1
  11. package/dist/{ContactsScreen-CZ0gortp.mjs → ContactsScreen-BGwqGlpV.mjs} +2 -2
  12. package/dist/{ContactsScreen-CZ0gortp.mjs.map → ContactsScreen-BGwqGlpV.mjs.map} +1 -1
  13. package/dist/{ContactsScreen-1S3tfYu2.cjs → ContactsScreen-CkSeaPyz.cjs} +2 -2
  14. package/dist/{ContactsScreen-1S3tfYu2.cjs.map → ContactsScreen-CkSeaPyz.cjs.map} +1 -1
  15. package/dist/{ContactsScreen-CAI3msL5.cjs → ContactsScreen-D4WQ59ib.cjs} +9 -9
  16. package/dist/{FluidProvider-C8sXuPhI.mjs → FluidProvider-CWYquEIF.mjs} +13 -13
  17. package/dist/{FluidProvider-C8sXuPhI.mjs.map → FluidProvider-CWYquEIF.mjs.map} +1 -1
  18. package/dist/{FluidProvider-roApesp3.cjs → FluidProvider-CyzA2g75.cjs} +13 -13
  19. package/dist/{FluidProvider-roApesp3.cjs.map → FluidProvider-CyzA2g75.cjs.map} +1 -1
  20. package/dist/{ImageWidget-C8bQdTkz.mjs → ImageWidget-DE9Fp_oH.mjs} +2 -2
  21. package/dist/{ImageWidget-C8bQdTkz.mjs.map → ImageWidget-DE9Fp_oH.mjs.map} +1 -1
  22. package/dist/{ImageWidget-DSMtD54I.cjs → ImageWidget-DKen6mq7.cjs} +2 -2
  23. package/dist/{ImageWidget-DSMtD54I.cjs.map → ImageWidget-DKen6mq7.cjs.map} +1 -1
  24. package/dist/{ListWidget-BDHYpRri.cjs → ListWidget-BVMMpxC0.cjs} +2 -2
  25. package/dist/{ListWidget-6rzwiSHu.mjs → ListWidget-CBLZ8CjD.mjs} +2 -2
  26. package/dist/{ListWidget-6rzwiSHu.mjs.map → ListWidget-CBLZ8CjD.mjs.map} +1 -1
  27. package/dist/{ListWidget-CdE-JgyF.cjs → ListWidget-KxIwLQtv.cjs} +2 -2
  28. package/dist/{ListWidget-CdE-JgyF.cjs.map → ListWidget-KxIwLQtv.cjs.map} +1 -1
  29. package/dist/{MediaRenderer-C_maibNT.mjs → MediaRenderer-Cfvg51w8.mjs} +68 -43
  30. package/dist/MediaRenderer-Cfvg51w8.mjs.map +1 -0
  31. package/dist/{MediaRenderer-CSrxxSt4.cjs → MediaRenderer-p7hExkdt.cjs} +68 -43
  32. package/dist/MediaRenderer-p7hExkdt.cjs.map +1 -0
  33. package/dist/{MessagingScreen-CJOd1XEc.cjs → MessagingScreen-5jw8KSLQ.cjs} +9 -9
  34. package/dist/{MessagingScreen-D-rz6Q91.cjs → MessagingScreen-B9CCsimy.cjs} +3 -3
  35. package/dist/{MessagingScreen-D-rz6Q91.cjs.map → MessagingScreen-B9CCsimy.cjs.map} +1 -1
  36. package/dist/{MessagingScreen-Cq5frHOu.mjs → MessagingScreen-DA62lyrN.mjs} +9 -9
  37. package/dist/{MessagingScreen-CkM93okb.mjs → MessagingScreen-DTXSZ-Oa.mjs} +3 -3
  38. package/dist/{MessagingScreen-CkM93okb.mjs.map → MessagingScreen-DTXSZ-Oa.mjs.map} +1 -1
  39. package/dist/{MySiteScreen-DvU2pZz6.cjs → MySiteScreen-2IzxVfpO.cjs} +9 -9
  40. package/dist/{MySiteScreen-DDn-LF3O.cjs → MySiteScreen-BSFb-n7n.cjs} +2 -2
  41. package/dist/{MySiteScreen-DDn-LF3O.cjs.map → MySiteScreen-BSFb-n7n.cjs.map} +1 -1
  42. package/dist/{MySiteScreen-CPbfU_IZ.mjs → MySiteScreen-Bvyx63pT.mjs} +2 -2
  43. package/dist/{MySiteScreen-CPbfU_IZ.mjs.map → MySiteScreen-Bvyx63pT.mjs.map} +1 -1
  44. package/dist/{NestedWidget-VLIlkeTO.mjs → NestedWidget-DIwW-wM7.mjs} +2 -2
  45. package/dist/{NestedWidget-VLIlkeTO.mjs.map → NestedWidget-DIwW-wM7.mjs.map} +1 -1
  46. package/dist/{NestedWidget-BvzfHeEB.cjs → NestedWidget-DYWk_L7c.cjs} +2 -2
  47. package/dist/{NestedWidget-Dt-pcMt3.cjs → NestedWidget-G17JLI8g.cjs} +2 -2
  48. package/dist/{NestedWidget-Dt-pcMt3.cjs.map → NestedWidget-G17JLI8g.cjs.map} +1 -1
  49. package/dist/{OrdersScreen-CFoaFECU.cjs → OrdersScreen-Bf4o3Kty.cjs} +3 -3
  50. package/dist/{OrdersScreen-CFoaFECU.cjs.map → OrdersScreen-Bf4o3Kty.cjs.map} +1 -1
  51. package/dist/{OrdersScreen-BaK2X85Y.cjs → OrdersScreen-DCzYEgsP.cjs} +9 -9
  52. package/dist/{OrdersScreen-kv-WHzAT.mjs → OrdersScreen-Djdeji9g.mjs} +3 -3
  53. package/dist/{OrdersScreen-kv-WHzAT.mjs.map → OrdersScreen-Djdeji9g.mjs.map} +1 -1
  54. package/dist/{ProductsScreen-9nEL6Y3b.cjs → ProductsScreen-BTrBbxX6.cjs} +3 -3
  55. package/dist/{ProductsScreen-9nEL6Y3b.cjs.map → ProductsScreen-BTrBbxX6.cjs.map} +1 -1
  56. package/dist/{ProductsScreen-DxM9yGUe.mjs → ProductsScreen-C0o1gVNw.mjs} +3 -3
  57. package/dist/{ProductsScreen-DxM9yGUe.mjs.map → ProductsScreen-C0o1gVNw.mjs.map} +1 -1
  58. package/dist/{ProductsScreen-De2dqFa0.cjs → ProductsScreen-CL16lwsI.cjs} +9 -9
  59. package/dist/{ProductsScreen-D-H2I5f1.mjs → ProductsScreen-CigOdDOU.mjs} +9 -12
  60. package/dist/{ProfileScreen-HhhjGnaj.cjs → ProfileScreen-B46jd4Ic.cjs} +9 -9
  61. package/dist/{ProfileScreen-BVNBgqev.mjs → ProfileScreen-CUsGRCB7.mjs} +3 -3
  62. package/dist/{ProfileScreen-BVNBgqev.mjs.map → ProfileScreen-CUsGRCB7.mjs.map} +1 -1
  63. package/dist/{ProfileScreen-C9x02V7u.cjs → ProfileScreen-DtmReqa8.cjs} +3 -3
  64. package/dist/{ProfileScreen-C9x02V7u.cjs.map → ProfileScreen-DtmReqa8.cjs.map} +1 -1
  65. package/dist/{ShareablesScreen-B1T6QFc4.mjs → ShareablesScreen-B9c5Mw5b.mjs} +4 -4
  66. package/dist/{ShareablesScreen-B1T6QFc4.mjs.map → ShareablesScreen-B9c5Mw5b.mjs.map} +1 -1
  67. package/dist/{ShareablesScreen-HZ0XSOvN.cjs → ShareablesScreen-Bldl8tta.cjs} +4 -4
  68. package/dist/{ShareablesScreen-HZ0XSOvN.cjs.map → ShareablesScreen-Bldl8tta.cjs.map} +1 -1
  69. package/dist/{ShareablesScreen-CEZqZez3.mjs → ShareablesScreen-CSLB0ZXS.mjs} +9 -12
  70. package/dist/{ShareablesScreen-DWLYxLHA.cjs → ShareablesScreen-DufZz22d.cjs} +9 -9
  71. package/dist/{ShopScreen-BMgp7sPi.mjs → ShopScreen-AGvcqUii.mjs} +4 -4
  72. package/dist/{ShopScreen-BMgp7sPi.mjs.map → ShopScreen-AGvcqUii.mjs.map} +1 -1
  73. package/dist/{ShopScreen-B7Rpew_K.cjs → ShopScreen-DgBjP_8D.cjs} +4 -4
  74. package/dist/{ShopScreen-B7Rpew_K.cjs.map → ShopScreen-DgBjP_8D.cjs.map} +1 -1
  75. package/dist/{ShopScreen-CxjJQ-Oh.cjs → ShopScreen-wYtLEGXo.cjs} +9 -9
  76. package/dist/{SubscriptionsScreen-D0c9J3ug.cjs → SubscriptionsScreen-BqOb2kYR.cjs} +9 -9
  77. package/dist/{SubscriptionsScreen-DBBeoyvD.cjs → SubscriptionsScreen-BrLlvFJn.cjs} +3 -3
  78. package/dist/{SubscriptionsScreen-DBBeoyvD.cjs.map → SubscriptionsScreen-BrLlvFJn.cjs.map} +1 -1
  79. package/dist/{SubscriptionsScreen-CRANhpmr.mjs → SubscriptionsScreen-C5YWtYfE.mjs} +3 -3
  80. package/dist/{SubscriptionsScreen-CRANhpmr.mjs.map → SubscriptionsScreen-C5YWtYfE.mjs.map} +1 -1
  81. package/dist/{TableWidget-CniHh-ug.mjs → TableWidget-CC4XnRF2.mjs} +2 -2
  82. package/dist/{TableWidget-CniHh-ug.mjs.map → TableWidget-CC4XnRF2.mjs.map} +1 -1
  83. package/dist/{TableWidget-6Mui98HQ.cjs → TableWidget-DiqQBV7-.cjs} +2 -2
  84. package/dist/{TableWidget-6Mui98HQ.cjs.map → TableWidget-DiqQBV7-.cjs.map} +1 -1
  85. package/dist/{TableWidget-pZhHgb5f.cjs → TableWidget-DmwVP_Lm.cjs} +2 -2
  86. package/dist/{VideoWidget-D-7VTnG1.cjs → VideoWidget-BmVIIfvM.cjs} +2 -2
  87. package/dist/{VideoWidget-D-7VTnG1.cjs.map → VideoWidget-BmVIIfvM.cjs.map} +1 -1
  88. package/dist/{VideoWidget-2f5fuWwH.mjs → VideoWidget-CpUPsOI7.mjs} +2 -2
  89. package/dist/{VideoWidget-2f5fuWwH.mjs.map → VideoWidget-CpUPsOI7.mjs.map} +1 -1
  90. package/dist/index.cjs +41 -41
  91. package/dist/index.mjs +41 -41
  92. package/dist/{use-account-clients-BUJ8gkPI.cjs → use-account-clients-CkDfPpCR.cjs} +2 -2
  93. package/dist/{use-account-clients-BUJ8gkPI.cjs.map → use-account-clients-CkDfPpCR.cjs.map} +1 -1
  94. package/dist/{use-account-clients-B278xE7A.mjs → use-account-clients-Dsqx0mKw.mjs} +2 -2
  95. package/dist/{use-account-clients-B278xE7A.mjs.map → use-account-clients-Dsqx0mKw.mjs.map} +1 -1
  96. package/dist/{use-current-user-BlZn_jR2.mjs → use-current-user-BMI-LR9t.mjs} +3 -3
  97. package/dist/{use-current-user-BlZn_jR2.mjs.map → use-current-user-BMI-LR9t.mjs.map} +1 -1
  98. package/dist/{use-current-user-D84vQEB5.cjs → use-current-user-LLJ1GtNB.cjs} +3 -3
  99. package/dist/{use-current-user-D84vQEB5.cjs.map → use-current-user-LLJ1GtNB.cjs.map} +1 -1
  100. package/dist/{use-customer-account-DSR6VNmL.cjs → use-customer-account-DZW_YY9d.cjs} +3 -3
  101. package/dist/{use-customer-account-DSR6VNmL.cjs.map → use-customer-account-DZW_YY9d.cjs.map} +1 -1
  102. package/dist/{use-customer-account-DqzsUJ02.mjs → use-customer-account-DzOD3vLz.mjs} +3 -3
  103. package/dist/{use-customer-account-DqzsUJ02.mjs.map → use-customer-account-DzOD3vLz.mjs.map} +1 -1
  104. package/dist/{use-fluid-api-CVYfAcJM.mjs → use-fluid-api-CaSYWFuj.mjs} +2 -2
  105. package/dist/{use-fluid-api-CVYfAcJM.mjs.map → use-fluid-api-CaSYWFuj.mjs.map} +1 -1
  106. package/dist/{use-fluid-api-5vFjbTFA.cjs → use-fluid-api-Kw0AKvCs.cjs} +2 -2
  107. package/dist/{use-fluid-api-5vFjbTFA.cjs.map → use-fluid-api-Kw0AKvCs.cjs.map} +1 -1
  108. package/package.json +12 -12
  109. package/dist/MediaRenderer-CSrxxSt4.cjs.map +0 -1
  110. package/dist/MediaRenderer-C_maibNT.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-roApesp3.cjs");
3
+ const require_FluidProvider = require("./FluidProvider-CyzA2g75.cjs");
4
4
  const require_PointsWidget = require("./PointsWidget-DG0QQHqL.cjs");
5
5
  require("./error-state-Bpq2CYvz.cjs");
6
6
  const require_ScreenRenderer = require("./ScreenRenderer-DFcTR685.cjs");
@@ -17,47 +17,47 @@ const require_CardWidget = require("./CardWidget-BizXFntv.cjs");
17
17
  require("./purify.es-BYKYXCoc.cjs");
18
18
  const require_src = require("./src-51z4j_HI.cjs");
19
19
  require("./scroll-arrows-CPqmb9kZ.cjs");
20
- require("./MediaRenderer-CSrxxSt4.cjs");
21
- const require_CarouselWidget = require("./CarouselWidget-D48n9SsA.cjs");
20
+ require("./MediaRenderer-p7hExkdt.cjs");
21
+ const require_CarouselWidget = require("./CarouselWidget-CAiMfcdg.cjs");
22
22
  const require_CatchUpWidget = require("./CatchUpWidget-BchUal38.cjs");
23
23
  const require_ChartWidget = require("./ChartWidget-RHqQCYx_.cjs");
24
24
  const require_ContainerWidget = require("./ContainerWidget-CtgF1LXW.cjs");
25
- const require_ImageWidget = require("./ImageWidget-DSMtD54I.cjs");
25
+ const require_ImageWidget = require("./ImageWidget-DKen6mq7.cjs");
26
26
  const require_LinkWidget = require("./LinkWidget-DboreMUy.cjs");
27
- const require_ListWidget = require("./ListWidget-CdE-JgyF.cjs");
27
+ const require_ListWidget = require("./ListWidget-KxIwLQtv.cjs");
28
28
  const require_MySiteWidget = require("./MySiteWidget-D2h4FMGj.cjs");
29
- const require_NestedWidget = require("./NestedWidget-Dt-pcMt3.cjs");
29
+ const require_NestedWidget = require("./NestedWidget-G17JLI8g.cjs");
30
30
  const require_QuickShareWidget = require("./QuickShareWidget-Bl3wpW-9.cjs");
31
31
  const require_RecentActivityWidget = require("./RecentActivityWidget-jxntxDKT.cjs");
32
32
  const require_SeparatorWidget = require("./SeparatorWidget-CzRNaBc5.cjs");
33
33
  const require_SpacerWidget = require("./SpacerWidget-DHFiuxkx.cjs");
34
- const require_TableWidget = require("./TableWidget-6Mui98HQ.cjs");
34
+ const require_TableWidget = require("./TableWidget-DiqQBV7-.cjs");
35
35
  const require_ToDoWidget = require("./ToDoWidget-DZUvDwnJ.cjs");
36
- const require_VideoWidget = require("./VideoWidget-D-7VTnG1.cjs");
37
- const require_use_account_clients = require("./use-account-clients-BUJ8gkPI.cjs");
36
+ const require_VideoWidget = require("./VideoWidget-BmVIIfvM.cjs");
37
+ const require_use_account_clients = require("./use-account-clients-CkDfPpCR.cjs");
38
38
  const require_ScreenHeaderContext = require("./ScreenHeaderContext-DpVOhFzT.cjs");
39
- const require_use_fluid_api = require("./use-fluid-api-5vFjbTFA.cjs");
40
- const require_use_current_user = require("./use-current-user-D84vQEB5.cjs");
41
- const require_ShareablesScreen = require("./ShareablesScreen-HZ0XSOvN.cjs");
39
+ const require_use_fluid_api = require("./use-fluid-api-Kw0AKvCs.cjs");
40
+ const require_use_current_user = require("./use-current-user-LLJ1GtNB.cjs");
41
+ const require_ShareablesScreen = require("./ShareablesScreen-Bldl8tta.cjs");
42
42
  const require_CustomersScreen = require("./CustomersScreen-9f10-_AZ.cjs");
43
43
  const require_AppNavigationContext = require("./AppNavigationContext-Agp0UkCQ.cjs");
44
- const require_MessagingScreen = require("./MessagingScreen-D-rz6Q91.cjs");
45
- const require_ProfileScreen = require("./ProfileScreen-C9x02V7u.cjs");
44
+ const require_MessagingScreen = require("./MessagingScreen-B9CCsimy.cjs");
45
+ const require_ProfileScreen = require("./ProfileScreen-DtmReqa8.cjs");
46
46
  require("./dist-DRVtlgQ1.cjs");
47
47
  require("./es-DlWO6buB.cjs");
48
- const require_ContactsScreen = require("./ContactsScreen-1S3tfYu2.cjs");
48
+ const require_ContactsScreen = require("./ContactsScreen-CkSeaPyz.cjs");
49
49
  require("./order-detail-CksE8d5w.cjs");
50
50
  require("./src-C_kOrGdZ.cjs");
51
51
  require("./dist-Ck9MGRmE.cjs");
52
- const require_OrdersScreen = require("./OrdersScreen-CFoaFECU.cjs");
53
- const require_SubscriptionsScreen = require("./SubscriptionsScreen-DBBeoyvD.cjs");
52
+ const require_OrdersScreen = require("./OrdersScreen-Bf4o3Kty.cjs");
53
+ const require_SubscriptionsScreen = require("./SubscriptionsScreen-BrLlvFJn.cjs");
54
54
  require("./src-C3R03o4d.cjs");
55
55
  require("./dist-BSbac3uh.cjs");
56
- const require_ProductsScreen = require("./ProductsScreen-9nEL6Y3b.cjs");
57
- const require_MySiteScreen = require("./MySiteScreen-DDn-LF3O.cjs");
58
- const require_ShopScreen = require("./ShopScreen-B7Rpew_K.cjs");
56
+ const require_ProductsScreen = require("./ProductsScreen-BTrBbxX6.cjs");
57
+ const require_MySiteScreen = require("./MySiteScreen-BSFb-n7n.cjs");
58
+ const require_ShopScreen = require("./ShopScreen-DgBjP_8D.cjs");
59
59
  require("./UpgradeScreen-DI7DK6qt.cjs");
60
- require("./AppDownloadScreen-DpxltF8z.cjs");
60
+ require("./AppDownloadScreen-BcK2snUL.cjs");
61
61
  let react = require("react");
62
62
  react = require_chunk.__toESM(react);
63
63
  let _tanstack_react_query = require("@tanstack/react-query");
@@ -2999,18 +2999,18 @@ function AccountManageLayout({ children }) {
2999
2999
  }
3000
3000
  //#endregion
3001
3001
  //#region src/shell/system-screen-map.ts
3002
- const ProfileScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProfileScreen-HhhjGnaj.cjs")).then((m) => ({ default: m.ProfileScreen })));
3003
- const OrdersScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./OrdersScreen-BaK2X85Y.cjs")).then((m) => ({ default: m.OrdersScreen })));
3004
- const SubscriptionsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./SubscriptionsScreen-D0c9J3ug.cjs")).then((m) => ({ default: m.SubscriptionsScreen })));
3005
- const MessagingScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MessagingScreen-CJOd1XEc.cjs")).then((m) => ({ default: m.MessagingScreen })));
3006
- const ContactsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ContactsScreen-CAI3msL5.cjs")).then((m) => ({ default: m.ContactsScreen })));
3007
- const ShopScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShopScreen-CxjJQ-Oh.cjs")).then((m) => ({ default: m.ShopScreen })));
3002
+ const ProfileScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProfileScreen-B46jd4Ic.cjs")).then((m) => ({ default: m.ProfileScreen })));
3003
+ const OrdersScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./OrdersScreen-DCzYEgsP.cjs")).then((m) => ({ default: m.OrdersScreen })));
3004
+ const SubscriptionsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./SubscriptionsScreen-BqOb2kYR.cjs")).then((m) => ({ default: m.SubscriptionsScreen })));
3005
+ const MessagingScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MessagingScreen-5jw8KSLQ.cjs")).then((m) => ({ default: m.MessagingScreen })));
3006
+ const ContactsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ContactsScreen-D4WQ59ib.cjs")).then((m) => ({ default: m.ContactsScreen })));
3007
+ const ShopScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShopScreen-wYtLEGXo.cjs")).then((m) => ({ default: m.ShopScreen })));
3008
3008
  const CustomersScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./CustomersScreen-9f10-_AZ.cjs")).then((n) => n.CustomersScreen_exports).then((m) => ({ default: m.CustomersScreen })));
3009
- const ProductsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProductsScreen-De2dqFa0.cjs")).then((m) => ({ default: m.ProductsScreen })));
3010
- const ShareablesScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShareablesScreen-DWLYxLHA.cjs")).then((m) => ({ default: m.ShareablesScreen })));
3011
- const MySiteScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MySiteScreen-DvU2pZz6.cjs")).then((m) => ({ default: m.MySiteScreen })));
3009
+ const ProductsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProductsScreen-CL16lwsI.cjs")).then((m) => ({ default: m.ProductsScreen })));
3010
+ const ShareablesScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShareablesScreen-DufZz22d.cjs")).then((m) => ({ default: m.ShareablesScreen })));
3011
+ const MySiteScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MySiteScreen-2IzxVfpO.cjs")).then((m) => ({ default: m.MySiteScreen })));
3012
3012
  const UpgradeScreen = (0, react.lazy)(() => Promise.resolve().then(() => require("./UpgradeScreen-DfDZG52l.cjs")).then((m) => ({ default: m.UpgradeScreen })));
3013
- const AppDownloadScreen = (0, react.lazy)(() => Promise.resolve().then(() => require("./AppDownloadScreen-BMOcvPF1.cjs")).then((m) => ({ default: m.AppDownloadScreen })));
3013
+ const AppDownloadScreen = (0, react.lazy)(() => Promise.resolve().then(() => require("./AppDownloadScreen-CwLZzr-7.cjs")).then((m) => ({ default: m.AppDownloadScreen })));
3014
3014
  const SYSTEM_SLUG_SCREEN_MAP = {
3015
3015
  profile: ProfileScreen$1,
3016
3016
  orders: OrdersScreen$1,
@@ -4468,18 +4468,18 @@ function useContact(_contactId) {
4468
4468
  //#endregion
4469
4469
  //#region src/screens/index.ts
4470
4470
  const screenPropertySchemas = {
4471
- ProfileScreen: () => Promise.resolve().then(() => require("./ProfileScreen-HhhjGnaj.cjs")).then((m) => m.profileScreenPropertySchema),
4472
- MessagingScreen: () => Promise.resolve().then(() => require("./MessagingScreen-CJOd1XEc.cjs")).then((m) => m.messagingScreenPropertySchema),
4473
- ContactsScreen: () => Promise.resolve().then(() => require("./ContactsScreen-CAI3msL5.cjs")).then((m) => m.contactsScreenPropertySchema),
4474
- OrdersScreen: () => Promise.resolve().then(() => require("./OrdersScreen-BaK2X85Y.cjs")).then((m) => m.ordersScreenPropertySchema),
4475
- SubscriptionsScreen: () => Promise.resolve().then(() => require("./SubscriptionsScreen-D0c9J3ug.cjs")).then((m) => m.subscriptionsScreenPropertySchema),
4471
+ ProfileScreen: () => Promise.resolve().then(() => require("./ProfileScreen-B46jd4Ic.cjs")).then((m) => m.profileScreenPropertySchema),
4472
+ MessagingScreen: () => Promise.resolve().then(() => require("./MessagingScreen-5jw8KSLQ.cjs")).then((m) => m.messagingScreenPropertySchema),
4473
+ ContactsScreen: () => Promise.resolve().then(() => require("./ContactsScreen-D4WQ59ib.cjs")).then((m) => m.contactsScreenPropertySchema),
4474
+ OrdersScreen: () => Promise.resolve().then(() => require("./OrdersScreen-DCzYEgsP.cjs")).then((m) => m.ordersScreenPropertySchema),
4475
+ SubscriptionsScreen: () => Promise.resolve().then(() => require("./SubscriptionsScreen-BqOb2kYR.cjs")).then((m) => m.subscriptionsScreenPropertySchema),
4476
4476
  CustomersScreen: () => Promise.resolve().then(() => require("./CustomersScreen-9f10-_AZ.cjs")).then((n) => n.CustomersScreen_exports).then((m) => m.customersScreenPropertySchema),
4477
- ProductsScreen: () => Promise.resolve().then(() => require("./ProductsScreen-De2dqFa0.cjs")).then((m) => m.productsScreenPropertySchema),
4478
- MySiteScreen: () => Promise.resolve().then(() => require("./MySiteScreen-DvU2pZz6.cjs")).then((m) => m.mySiteScreenPropertySchema),
4479
- ShareablesScreen: () => Promise.resolve().then(() => require("./ShareablesScreen-DWLYxLHA.cjs")).then((m) => m.shareablesScreenPropertySchema),
4480
- ShopScreen: () => Promise.resolve().then(() => require("./ShopScreen-CxjJQ-Oh.cjs")).then((m) => m.shopScreenPropertySchema),
4477
+ ProductsScreen: () => Promise.resolve().then(() => require("./ProductsScreen-CL16lwsI.cjs")).then((m) => m.productsScreenPropertySchema),
4478
+ MySiteScreen: () => Promise.resolve().then(() => require("./MySiteScreen-2IzxVfpO.cjs")).then((m) => m.mySiteScreenPropertySchema),
4479
+ ShareablesScreen: () => Promise.resolve().then(() => require("./ShareablesScreen-DufZz22d.cjs")).then((m) => m.shareablesScreenPropertySchema),
4480
+ ShopScreen: () => Promise.resolve().then(() => require("./ShopScreen-wYtLEGXo.cjs")).then((m) => m.shopScreenPropertySchema),
4481
4481
  UpgradeScreen: () => Promise.resolve().then(() => require("./UpgradeScreen-DfDZG52l.cjs")).then((m) => m.upgradeScreenPropertySchema),
4482
- AppDownloadScreen: () => Promise.resolve().then(() => require("./AppDownloadScreen-BMOcvPF1.cjs")).then((m) => m.appDownloadScreenPropertySchema)
4482
+ AppDownloadScreen: () => Promise.resolve().then(() => require("./AppDownloadScreen-CwLZzr-7.cjs")).then((m) => m.appDownloadScreenPropertySchema)
4483
4483
  };
4484
4484
  /**
4485
4485
  * Core page template IDs
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as extractTokenFromUrl, A as DEFAULT_FONT_SIZES, B as mergeDarkOverrides, C as buildThemeDefinition, D as serialiseTheme, E as deserialiseTheme, F as getDefaultThemeDefinition, G as RADIUS_KEYS, H as resolveTheme, I as generateThemeCSS, J as DEFAULT_AUTH_URL, K as SEMANTIC_COLOR_NAMES, L as deriveDarkVariant, M as DEFAULT_SPACING, N as DEFAULT_THEME_ID, O as DEFAULT_COLORS, P as DEFAULT_THEME_NAME, Q as extractCompanyTokenFromUrl, R as generateShades, S as removeTheme, T as transformThemes, U as FONT_FAMILY_KEYS, V as parseColor, W as FONT_SIZE_KEYS, X as cleanTokenFromUrl, Y as createDefaultAuthRedirect, Z as extractAllTokensFromUrl, _ as toNavigationItem, _t as createPersister, a as createScreen, at as decodeToken, b as applyTheme, c as FluidAuthProvider, ct as isTokenExpired, d as useThemeContext, dt as AUTH_CONSTANTS, et as hasTokenInUrl, f as ApiError, ft as STORAGE_KEYS, g as transformManifestToRepAppData, gt as useFluidOsApiOptional, h as toRawManifest, ht as isUserType, i as widgetPropertySchemas, it as storeToken, j as DEFAULT_RADII, k as DEFAULT_FONT_FAMILIES, l as useFluidAuthContext, lt as isValidToken, m as isApiError, mt as USER_TYPES, n as useFluidContext, nt as getStoredToken, o as createWidgetFromShareable, ot as getTokenExpiration, p as createFluidClient, pt as URL_PARAMS, q as SHADE_STEPS, r as DEFAULT_SDK_WIDGET_REGISTRY, rt as hasStoredToken, s as createWidgetRegistry, st as getTokenTimeRemaining, t as FluidProvider, tt as clearTokens, u as FluidThemeProvider, ut as validateToken, v as normalizeComponentTree, vt as deleteDatabase, w as getActiveThemeId, x as removeAllThemes, y as toScreenDefinition, z as getForegroundColor } from "./FluidProvider-C8sXuPhI.mjs";
1
+ import { $ as extractTokenFromUrl, A as DEFAULT_FONT_SIZES, B as mergeDarkOverrides, C as buildThemeDefinition, D as serialiseTheme, E as deserialiseTheme, F as getDefaultThemeDefinition, G as RADIUS_KEYS, H as resolveTheme, I as generateThemeCSS, J as DEFAULT_AUTH_URL, K as SEMANTIC_COLOR_NAMES, L as deriveDarkVariant, M as DEFAULT_SPACING, N as DEFAULT_THEME_ID, O as DEFAULT_COLORS, P as DEFAULT_THEME_NAME, Q as extractCompanyTokenFromUrl, R as generateShades, S as removeTheme, T as transformThemes, U as FONT_FAMILY_KEYS, V as parseColor, W as FONT_SIZE_KEYS, X as cleanTokenFromUrl, Y as createDefaultAuthRedirect, Z as extractAllTokensFromUrl, _ as toNavigationItem, _t as createPersister, a as createScreen, at as decodeToken, b as applyTheme, c as FluidAuthProvider, ct as isTokenExpired, d as useThemeContext, dt as AUTH_CONSTANTS, et as hasTokenInUrl, f as ApiError, ft as STORAGE_KEYS, g as transformManifestToRepAppData, gt as useFluidOsApiOptional, h as toRawManifest, ht as isUserType, i as widgetPropertySchemas, it as storeToken, j as DEFAULT_RADII, k as DEFAULT_FONT_FAMILIES, l as useFluidAuthContext, lt as isValidToken, m as isApiError, mt as USER_TYPES, n as useFluidContext, nt as getStoredToken, o as createWidgetFromShareable, ot as getTokenExpiration, p as createFluidClient, pt as URL_PARAMS, q as SHADE_STEPS, r as DEFAULT_SDK_WIDGET_REGISTRY, rt as hasStoredToken, s as createWidgetRegistry, st as getTokenTimeRemaining, t as FluidProvider, tt as clearTokens, u as FluidThemeProvider, ut as validateToken, v as normalizeComponentTree, vt as deleteDatabase, w as getActiveThemeId, x as removeAllThemes, y as toScreenDefinition, z as getForegroundColor } from "./FluidProvider-CWYquEIF.mjs";
2
2
  import { a as useDataSourceRegistryConfig, r as pointsWidgetPropertySchema, t as PointsWidget } from "./PointsWidget-DgLGU995.mjs";
3
3
  import "./error-state-BGEvTYIh.mjs";
4
4
  import { a as isWidgetType, i as assertNever, l as useRegistry, n as WIDGET_TYPE_NAMES, o as isWidgetTypeName, r as assertDefined } from "./ScreenRenderer-DM-G72GL.mjs";
@@ -14,48 +14,48 @@ import { r as calendarWidgetPropertySchema, t as CalendarWidget } from "./Calend
14
14
  import { r as cardWidgetPropertySchema, t as CardWidget } from "./CardWidget-zVxobZDH.mjs";
15
15
  import "./purify.es-CfNPLbup.mjs";
16
16
  import { C as SheetContent, D as SheetTrigger, I as Input, K as DropdownMenu, R as IconButton, S as Sheet, Y as DropdownMenuLabel, an as AlertDialogContent, cn as AlertDialogHeader, et as DropdownMenuTrigger, ht as CollapsibleTrigger, in as AlertDialogCancel, ln as AlertDialogMedia, mt as CollapsibleContent, nn as AlertDialog, on as AlertDialogDescription, pt as Collapsible, q as DropdownMenuContent, rn as AlertDialogAction, sn as AlertDialogFooter, un as AlertDialogTitle, x as Skeleton$1, yn as cn$1 } from "./src-D6DimP34.mjs";
17
- import { a as useMessagingAuth, i as useMessagingConfig, n as messagingScreenPropertySchema, r as createFluidFileUploader, t as MessagingScreen } from "./MessagingScreen-CkM93okb.mjs";
17
+ import { a as useMessagingAuth, i as useMessagingConfig, n as messagingScreenPropertySchema, r as createFluidFileUploader, t as MessagingScreen } from "./MessagingScreen-DTXSZ-Oa.mjs";
18
18
  import "./scroll-arrows-C4VRsVrO.mjs";
19
- import "./MediaRenderer-C_maibNT.mjs";
20
- import { r as carouselWidgetPropertySchema, t as CarouselWidget } from "./CarouselWidget-dqjnsx9d.mjs";
19
+ import "./MediaRenderer-Cfvg51w8.mjs";
20
+ import { r as carouselWidgetPropertySchema, t as CarouselWidget } from "./CarouselWidget-Hre6Pz6P.mjs";
21
21
  import { r as catchUpWidgetPropertySchema, t as CatchUpWidget } from "./CatchUpWidget-CSIXsR82.mjs";
22
22
  import { r as chartWidgetPropertySchema, t as ChartWidget } from "./ChartWidget-C5S_ezcF.mjs";
23
23
  import { r as containerWidgetPropertySchema, t as ContainerWidget } from "./ContainerWidget-DNS7ynby.mjs";
24
- import { r as imageWidgetPropertySchema, t as ImageWidget } from "./ImageWidget-C8bQdTkz.mjs";
24
+ import { r as imageWidgetPropertySchema, t as ImageWidget } from "./ImageWidget-DE9Fp_oH.mjs";
25
25
  import { r as linkWidgetPropertySchema, t as LinkWidget } from "./LinkWidget-DGHXc-x8.mjs";
26
- import { r as listWidgetPropertySchema, t as ListWidget } from "./ListWidget-6rzwiSHu.mjs";
26
+ import { r as listWidgetPropertySchema, t as ListWidget } from "./ListWidget-CBLZ8CjD.mjs";
27
27
  import { r as mySiteWidgetPropertySchema, t as MySiteWidget } from "./MySiteWidget-BqtLSExC.mjs";
28
- import { r as nestedWidgetPropertySchema, t as NestedWidget } from "./NestedWidget-VLIlkeTO.mjs";
28
+ import { r as nestedWidgetPropertySchema, t as NestedWidget } from "./NestedWidget-DIwW-wM7.mjs";
29
29
  import { r as quickShareWidgetPropertySchema, t as QuickShareWidget } from "./QuickShareWidget-CajKauDa.mjs";
30
30
  import { r as recentActivityWidgetPropertySchema, t as RecentActivityWidget } from "./RecentActivityWidget-BZYB21eR.mjs";
31
31
  import { r as separatorWidgetPropertySchema, t as SeparatorWidget } from "./SeparatorWidget-Lsd6juu7.mjs";
32
32
  import { r as spacerWidgetPropertySchema, t as SpacerWidget } from "./SpacerWidget-B3zkEePP.mjs";
33
- import { r as tableWidgetPropertySchema, t as TableWidget } from "./TableWidget-CniHh-ug.mjs";
33
+ import { r as tableWidgetPropertySchema, t as TableWidget } from "./TableWidget-CC4XnRF2.mjs";
34
34
  import { r as toDoWidgetPropertySchema, t as ToDoWidget } from "./ToDoWidget-qyFLHU_o.mjs";
35
- import { r as videoWidgetPropertySchema, t as VideoWidget } from "./VideoWidget-2f5fuWwH.mjs";
36
- import { a as useFluidAuth } from "./use-account-clients-B278xE7A.mjs";
35
+ import { r as videoWidgetPropertySchema, t as VideoWidget } from "./VideoWidget-CpUPsOI7.mjs";
36
+ import { a as useFluidAuth } from "./use-account-clients-Dsqx0mKw.mjs";
37
37
  import { i as useScreenHeaderContext, t as ScreenHeaderProvider } from "./ScreenHeaderContext-CrdfLGKk.mjs";
38
- import { t as useFluidApi } from "./use-fluid-api-CVYfAcJM.mjs";
39
- import { i as useCompanyScopedQueryKey, n as useCurrentUser, r as createCompanyQueryKey, t as CURRENT_USER_QUERY_KEY } from "./use-current-user-BlZn_jR2.mjs";
40
- import { n as shareablesScreenPropertySchema, r as useUserType, t as ShareablesScreen } from "./ShareablesScreen-B1T6QFc4.mjs";
38
+ import { t as useFluidApi } from "./use-fluid-api-CaSYWFuj.mjs";
39
+ import { i as useCompanyScopedQueryKey, n as useCurrentUser, r as createCompanyQueryKey, t as CURRENT_USER_QUERY_KEY } from "./use-current-user-BMI-LR9t.mjs";
40
+ import { n as shareablesScreenPropertySchema, r as useUserType, t as ShareablesScreen } from "./ShareablesScreen-B9c5Mw5b.mjs";
41
41
  import { i as CoreScreenPlaceholder, r as customersScreenPropertySchema, t as CustomersScreen } from "./CustomersScreen-xAauAB-B.mjs";
42
42
  import { n as useAppNavigation, t as AppNavigationProvider } from "./AppNavigationContext-Du3Qq0yc.mjs";
43
- import { r as profileScreenPropertySchema, t as ProfileScreen } from "./ProfileScreen-BVNBgqev.mjs";
43
+ import { r as profileScreenPropertySchema, t as ProfileScreen } from "./ProfileScreen-CUsGRCB7.mjs";
44
44
  import "./dist-NMbUD0qE.mjs";
45
45
  import "./es-BCKjXBqj.mjs";
46
- import { r as contactsScreenPropertySchema, t as ContactsScreen } from "./ContactsScreen-CZ0gortp.mjs";
46
+ import { r as contactsScreenPropertySchema, t as ContactsScreen } from "./ContactsScreen-BGwqGlpV.mjs";
47
47
  import "./order-detail-CtTwAXfP.mjs";
48
48
  import "./src-BakNjVTk.mjs";
49
49
  import "./dist-oYNtEpKP.mjs";
50
- import { r as ordersScreenPropertySchema, t as OrdersScreen } from "./OrdersScreen-kv-WHzAT.mjs";
51
- import { r as subscriptionsScreenPropertySchema, t as SubscriptionsScreen } from "./SubscriptionsScreen-CRANhpmr.mjs";
50
+ import { r as ordersScreenPropertySchema, t as OrdersScreen } from "./OrdersScreen-Djdeji9g.mjs";
51
+ import { r as subscriptionsScreenPropertySchema, t as SubscriptionsScreen } from "./SubscriptionsScreen-C5YWtYfE.mjs";
52
52
  import "./src-D9jWnRlX.mjs";
53
53
  import "./sortable.esm-DSrWP4x9.mjs";
54
- import { n as productsScreenPropertySchema, t as ProductsScreen } from "./ProductsScreen-DxM9yGUe.mjs";
55
- import { r as mySiteScreenPropertySchema, t as MySiteScreen } from "./MySiteScreen-CPbfU_IZ.mjs";
56
- import { r as shopScreenPropertySchema, t as ShopScreen } from "./ShopScreen-BMgp7sPi.mjs";
54
+ import { n as productsScreenPropertySchema, t as ProductsScreen } from "./ProductsScreen-C0o1gVNw.mjs";
55
+ import { r as mySiteScreenPropertySchema, t as MySiteScreen } from "./MySiteScreen-Bvyx63pT.mjs";
56
+ import { r as shopScreenPropertySchema, t as ShopScreen } from "./ShopScreen-AGvcqUii.mjs";
57
57
  import "./UpgradeScreen-CTXUueQY.mjs";
58
- import "./AppDownloadScreen-BrRZShlm.mjs";
58
+ import "./AppDownloadScreen-rO--O0pk.mjs";
59
59
  import * as React$1 from "react";
60
60
  import { StrictMode, Suspense, createContext, forwardRef, lazy, memo, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
61
61
  import { useMutation, useQueries, useQuery, useQueryClient } from "@tanstack/react-query";
@@ -2997,18 +2997,18 @@ function AccountManageLayout({ children }) {
2997
2997
  }
2998
2998
  //#endregion
2999
2999
  //#region src/shell/system-screen-map.ts
3000
- const ProfileScreen$1 = lazy(() => import("./ProfileScreen-BVNBgqev.mjs").then((n) => n.n).then((m) => ({ default: m.ProfileScreen })));
3001
- const OrdersScreen$1 = lazy(() => import("./OrdersScreen-kv-WHzAT.mjs").then((n) => n.n).then((m) => ({ default: m.OrdersScreen })));
3002
- const SubscriptionsScreen$1 = lazy(() => import("./SubscriptionsScreen-CRANhpmr.mjs").then((n) => n.n).then((m) => ({ default: m.SubscriptionsScreen })));
3003
- const MessagingScreen$1 = lazy(() => import("./MessagingScreen-Cq5frHOu.mjs").then((m) => ({ default: m.MessagingScreen })));
3004
- const ContactsScreen$1 = lazy(() => import("./ContactsScreen-CZ0gortp.mjs").then((n) => n.n).then((m) => ({ default: m.ContactsScreen })));
3005
- const ShopScreen$1 = lazy(() => import("./ShopScreen-BMgp7sPi.mjs").then((n) => n.n).then((m) => ({ default: m.ShopScreen })));
3000
+ const ProfileScreen$1 = lazy(() => import("./ProfileScreen-CUsGRCB7.mjs").then((n) => n.n).then((m) => ({ default: m.ProfileScreen })));
3001
+ const OrdersScreen$1 = lazy(() => import("./OrdersScreen-Djdeji9g.mjs").then((n) => n.n).then((m) => ({ default: m.OrdersScreen })));
3002
+ const SubscriptionsScreen$1 = lazy(() => import("./SubscriptionsScreen-C5YWtYfE.mjs").then((n) => n.n).then((m) => ({ default: m.SubscriptionsScreen })));
3003
+ const MessagingScreen$1 = lazy(() => import("./MessagingScreen-DA62lyrN.mjs").then((m) => ({ default: m.MessagingScreen })));
3004
+ const ContactsScreen$1 = lazy(() => import("./ContactsScreen-BGwqGlpV.mjs").then((n) => n.n).then((m) => ({ default: m.ContactsScreen })));
3005
+ const ShopScreen$1 = lazy(() => import("./ShopScreen-AGvcqUii.mjs").then((n) => n.n).then((m) => ({ default: m.ShopScreen })));
3006
3006
  const CustomersScreen$1 = lazy(() => import("./CustomersScreen-xAauAB-B.mjs").then((n) => n.n).then((m) => ({ default: m.CustomersScreen })));
3007
- const ProductsScreen$1 = lazy(() => import("./ProductsScreen-D-H2I5f1.mjs").then((m) => ({ default: m.ProductsScreen })));
3008
- const ShareablesScreen$1 = lazy(() => import("./ShareablesScreen-CEZqZez3.mjs").then((m) => ({ default: m.ShareablesScreen })));
3009
- const MySiteScreen$1 = lazy(() => import("./MySiteScreen-CPbfU_IZ.mjs").then((n) => n.n).then((m) => ({ default: m.MySiteScreen })));
3007
+ const ProductsScreen$1 = lazy(() => import("./ProductsScreen-CigOdDOU.mjs").then((m) => ({ default: m.ProductsScreen })));
3008
+ const ShareablesScreen$1 = lazy(() => import("./ShareablesScreen-CSLB0ZXS.mjs").then((m) => ({ default: m.ShareablesScreen })));
3009
+ const MySiteScreen$1 = lazy(() => import("./MySiteScreen-Bvyx63pT.mjs").then((n) => n.n).then((m) => ({ default: m.MySiteScreen })));
3010
3010
  const UpgradeScreen = lazy(() => import("./UpgradeScreen-CTXUueQY.mjs").then((n) => n.t).then((m) => ({ default: m.UpgradeScreen })));
3011
- const AppDownloadScreen = lazy(() => import("./AppDownloadScreen-BrRZShlm.mjs").then((n) => n.t).then((m) => ({ default: m.AppDownloadScreen })));
3011
+ const AppDownloadScreen = lazy(() => import("./AppDownloadScreen-rO--O0pk.mjs").then((n) => n.t).then((m) => ({ default: m.AppDownloadScreen })));
3012
3012
  const SYSTEM_SLUG_SCREEN_MAP = {
3013
3013
  profile: ProfileScreen$1,
3014
3014
  orders: OrdersScreen$1,
@@ -4466,18 +4466,18 @@ function useContact(_contactId) {
4466
4466
  //#endregion
4467
4467
  //#region src/screens/index.ts
4468
4468
  const screenPropertySchemas = {
4469
- ProfileScreen: () => import("./ProfileScreen-BVNBgqev.mjs").then((n) => n.n).then((m) => m.profileScreenPropertySchema),
4470
- MessagingScreen: () => import("./MessagingScreen-Cq5frHOu.mjs").then((m) => m.messagingScreenPropertySchema),
4471
- ContactsScreen: () => import("./ContactsScreen-CZ0gortp.mjs").then((n) => n.n).then((m) => m.contactsScreenPropertySchema),
4472
- OrdersScreen: () => import("./OrdersScreen-kv-WHzAT.mjs").then((n) => n.n).then((m) => m.ordersScreenPropertySchema),
4473
- SubscriptionsScreen: () => import("./SubscriptionsScreen-CRANhpmr.mjs").then((n) => n.n).then((m) => m.subscriptionsScreenPropertySchema),
4469
+ ProfileScreen: () => import("./ProfileScreen-CUsGRCB7.mjs").then((n) => n.n).then((m) => m.profileScreenPropertySchema),
4470
+ MessagingScreen: () => import("./MessagingScreen-DA62lyrN.mjs").then((m) => m.messagingScreenPropertySchema),
4471
+ ContactsScreen: () => import("./ContactsScreen-BGwqGlpV.mjs").then((n) => n.n).then((m) => m.contactsScreenPropertySchema),
4472
+ OrdersScreen: () => import("./OrdersScreen-Djdeji9g.mjs").then((n) => n.n).then((m) => m.ordersScreenPropertySchema),
4473
+ SubscriptionsScreen: () => import("./SubscriptionsScreen-C5YWtYfE.mjs").then((n) => n.n).then((m) => m.subscriptionsScreenPropertySchema),
4474
4474
  CustomersScreen: () => import("./CustomersScreen-xAauAB-B.mjs").then((n) => n.n).then((m) => m.customersScreenPropertySchema),
4475
- ProductsScreen: () => import("./ProductsScreen-D-H2I5f1.mjs").then((m) => m.productsScreenPropertySchema),
4476
- MySiteScreen: () => import("./MySiteScreen-CPbfU_IZ.mjs").then((n) => n.n).then((m) => m.mySiteScreenPropertySchema),
4477
- ShareablesScreen: () => import("./ShareablesScreen-CEZqZez3.mjs").then((m) => m.shareablesScreenPropertySchema),
4478
- ShopScreen: () => import("./ShopScreen-BMgp7sPi.mjs").then((n) => n.n).then((m) => m.shopScreenPropertySchema),
4475
+ ProductsScreen: () => import("./ProductsScreen-CigOdDOU.mjs").then((m) => m.productsScreenPropertySchema),
4476
+ MySiteScreen: () => import("./MySiteScreen-Bvyx63pT.mjs").then((n) => n.n).then((m) => m.mySiteScreenPropertySchema),
4477
+ ShareablesScreen: () => import("./ShareablesScreen-CSLB0ZXS.mjs").then((m) => m.shareablesScreenPropertySchema),
4478
+ ShopScreen: () => import("./ShopScreen-AGvcqUii.mjs").then((n) => n.n).then((m) => m.shopScreenPropertySchema),
4479
4479
  UpgradeScreen: () => import("./UpgradeScreen-CTXUueQY.mjs").then((n) => n.t).then((m) => m.upgradeScreenPropertySchema),
4480
- AppDownloadScreen: () => import("./AppDownloadScreen-BrRZShlm.mjs").then((n) => n.t).then((m) => m.appDownloadScreenPropertySchema)
4480
+ AppDownloadScreen: () => import("./AppDownloadScreen-rO--O0pk.mjs").then((n) => n.t).then((m) => m.appDownloadScreenPropertySchema)
4481
4481
  };
4482
4482
  /**
4483
4483
  * Core page template IDs
@@ -1,5 +1,5 @@
1
1
  require("./chunk-9hOWP6kD.cjs");
2
- const require_FluidProvider = require("./FluidProvider-roApesp3.cjs");
2
+ const require_FluidProvider = require("./FluidProvider-CyzA2g75.cjs");
3
3
  let react = require("react");
4
4
  //#region src/hooks/use-fluid-auth.ts
5
5
  /**
@@ -272,4 +272,4 @@ Object.defineProperty(exports, "useSubscriptionsApiClient", {
272
272
  }
273
273
  });
274
274
 
275
- //# sourceMappingURL=use-account-clients-BUJ8gkPI.cjs.map
275
+ //# sourceMappingURL=use-account-clients-CkDfPpCR.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-account-clients-BUJ8gkPI.cjs","names":["useFluidAuthContext","subscriptionsApi.fetchCustomerSubscriptions","subscriptionsApi.fetchSubscription","subscriptionsApi.pauseSubscription","subscriptionsApi.resumeSubscription","subscriptionsApi.skipSubscription","subscriptionsApi.cancelSubscription","subscriptionsApi.reactivateSubscription","subscriptionsApi.updateSubscriptionInfo","useFluidContext","createOrdersFetchClient","ordersApi.fetchOrder","ordersApi.fetchCustomerOrders","createSubscriptionsFetchClient","createCoreFetchClient"],"sources":["../src/hooks/use-fluid-auth.ts","../../../orders/api-client/src/namespaces/orders.ts","../../../subscriptions/api-client/src/namespaces/subscriptions.ts","../../../subscriptions/api-client/src/adapter.ts","../src/account/use-account-clients.ts"],"sourcesContent":["/**\n * useFluidAuth Hook\n *\n * Provides access to authentication state and utilities.\n * This is the primary hook for interacting with auth in components.\n */\n\nimport { useFluidAuthContext } from \"../providers/FluidAuthProvider\";\nimport type { FluidAuthContextValue } from \"../auth/types\";\n\n/**\n * Hook to access authentication state and utilities.\n *\n * Must be used within a `FluidAuthProvider`.\n *\n * @returns Authentication context with user info, loading state, and utilities\n * @throws Error if used outside FluidAuthProvider\n *\n * @example\n * ```tsx\n * function UserProfile() {\n * const { isAuthenticated, isLoading, user, clearAuth } = useFluidAuth();\n *\n * if (isLoading) {\n * return <Spinner />;\n * }\n *\n * if (!isAuthenticated) {\n * return <p>Please log in</p>;\n * }\n *\n * return (\n * <div>\n * <p>Welcome, {user.full_name}!</p>\n * <button onClick={clearAuth}>Log out</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useFluidAuth(): FluidAuthContextValue {\n return useFluidAuthContext();\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { orders } from \"../custom/orders\";\n\n/**\n * Fetch a single order by token.\n * Endpoint: GET /public/v2025-06/orders/{orderToken}\n */\nexport async function fetchOrder(\n client: FetchClient,\n orderToken: string,\n): Promise<orders.OrderResponse> {\n return client.get(`/public/v2025-06/orders/${orderToken}`);\n}\n\n/**\n * Fetch a paginated list of customer orders.\n * Endpoint: GET /v202506/orders\n */\nexport async function fetchCustomerOrders(\n client: FetchClient,\n params: orders.FetchOrdersParams,\n): Promise<orders.CustomerOrdersResponse> {\n const input: Record<string, string> = {};\n\n if (params.cursor) input[\"page[cursor]\"] = params.cursor;\n if (params.limit != null) input[\"page[limit]\"] = params.limit.toString();\n if (params.search) input.search = params.search;\n if (params.sort) input.sort = params.sort;\n if (params.status) input.status = params.status;\n if (params.type) input.type = params.type;\n if (params.customerId != null)\n input.customer_id = params.customerId.toString();\n if (params.userCompanyId != null)\n input.user_company_id = params.userCompanyId.toString();\n if (params.subscriptionId != null)\n input.subscription_id = params.subscriptionId.toString();\n if (params.startDate) input.start_date = params.startDate;\n if (params.endDate) input.end_date = params.endDate;\n if (params.withinDays != null)\n input.within_days = params.withinDays.toString();\n if (params.cartSource) input.cart_source = params.cartSource;\n if (params.countryIsos) input.country_isos = params.countryIsos;\n if (params.forceStats != null)\n input.force_stats = params.forceStats.toString();\n\n return client.get(\"/v202506/orders\", input);\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { subscriptions } from \"../custom/subscriptions\";\n\n/**\n * Fetch a paginated list of customer subscriptions.\n * Endpoint: GET /subscriptions\n */\nexport async function fetchCustomerSubscriptions(\n client: FetchClient,\n params: subscriptions.FetchSubscriptionsParams,\n): Promise<subscriptions.SubscriptionsResponse> {\n const input: Record<string, string> = {\n customer_id: params.customerId.toString(),\n page: (params.page ?? 1).toString(),\n per_page: (params.perPage ?? 10).toString(),\n };\n\n if (params.status != null) input.status = params.status;\n if (params.search != null) input.search = params.search;\n if (params.sortBy != null) input.sort_by = params.sortBy;\n if (params.sortDirection != null) input.sort_direction = params.sortDirection;\n\n return client.get(\"/subscriptions\", input);\n}\n\n/**\n * Fetch a single subscription by token.\n * Endpoint: GET /subscriptions/{token}\n */\nexport async function fetchSubscription(\n client: FetchClient,\n subscriptionToken: string,\n): Promise<subscriptions.SubscriptionDetail> {\n return client.get(`/subscriptions/${subscriptionToken}`);\n}\n\n/**\n * Pause a subscription.\n * Endpoint: POST /subscriptions/{token}/pause\n */\nexport async function pauseSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.PauseSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const queryParams: Record<string, string> = {\n customer_id: params.customerId.toString(),\n };\n\n if (params.nextBillDate != null) {\n queryParams.next_bill_date = params.nextBillDate;\n }\n if (params.numberOfOrders != null) {\n queryParams.number_of_orders = params.numberOfOrders.toString();\n }\n\n const query = new URLSearchParams(queryParams).toString();\n return client.post(`/subscriptions/${subscriptionToken}/pause?${query}`);\n}\n\n/**\n * Resume a paused subscription.\n * Endpoint: POST /subscriptions/{token}/resume\n */\nexport async function resumeSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.ResumeSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: params.customerId.toString(),\n next_bill_date: params.nextBillDate,\n }).toString();\n\n return client.post(`/subscriptions/${subscriptionToken}/resume?${query}`);\n}\n\n/**\n * Skip the next billing cycle.\n * Endpoint: POST /subscriptions/{token}/skip_next_billing\n */\nexport async function skipSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.SkipSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: params.customerId.toString(),\n next_bill_date: params.nextBillDate,\n }).toString();\n\n return client.post(\n `/subscriptions/${subscriptionToken}/skip_next_billing?${query}`,\n );\n}\n\n/**\n * Cancel a subscription.\n * Endpoint: POST /subscriptions/{token}/cancel\n */\nexport async function cancelSubscription(\n client: FetchClient,\n subscriptionToken: string,\n customerId: number,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: customerId.toString(),\n }).toString();\n\n return client.post(`/subscriptions/${subscriptionToken}/cancel?${query}`);\n}\n\n/**\n * Reactivate a cancelled subscription.\n * Endpoint: POST /subscriptions/{token}/reactivate\n */\nexport async function reactivateSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.ReactivateSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const body =\n params.process_immediately === true\n ? { process_immediately: true }\n : params.next_bill_date\n ? { next_bill_date: params.next_bill_date }\n : {};\n\n return client.post(\n `/subscriptions/${subscriptionToken}/reactivate`,\n Object.keys(body).length > 0 ? body : undefined,\n );\n}\n\n/**\n * Update subscription info (plan, variant, address, payment method, quantity).\n * Endpoint: PUT /subscriptions/{token}\n */\nexport async function updateSubscriptionInfo(\n client: FetchClient,\n subscriptionToken: string,\n body: subscriptions.UpdateSubscriptionInfoBody,\n): Promise<subscriptions.SubscriptionDetail> {\n return client.put(`/subscriptions/${subscriptionToken}`, {\n subscription: body,\n });\n}\n\n/**\n * Create a new subscription. Two-step process: creates a cart first, then the subscription.\n * Endpoint: POST /carts + POST /subscriptions\n */\nexport async function createSubscription(\n client: FetchClient,\n data: subscriptions.CreateSubscriptionData,\n): Promise<subscriptions.SubscriptionCreateResponse> {\n // Step 1: Create a cart with the subscription item\n const cartResponse = await client.post<subscriptions.CartCreateResponse>(\n \"/carts\",\n {\n country_code: \"US\",\n items: [\n {\n variant_id: data.variant_id,\n quantity: data.quantity ?? 1,\n subscription: true,\n subscription_plan_id: data.subscription_plan_id,\n },\n ],\n },\n );\n\n // Step 2: Create the subscription using the cart token\n return client.post(\"/subscriptions\", {\n subscription: {\n ...data,\n cart_token: cartResponse.cart.cart_token,\n },\n });\n}\n","import type { FetchClient } from \"./lib/fetch-client\";\nimport type { subscriptions } from \"./custom/subscriptions\";\nimport * as subscriptionsApi from \"./namespaces/subscriptions\";\n\n/**\n * Creates a SubscriptionsApi-compatible adapter from a FetchClient.\n *\n * This bridges the concrete API client to the abstract SubscriptionsApi\n * interface defined in @fluid-app/subscriptions-core, closing over the\n * FetchClient so consumers don't need to pass it per-call.\n */\nexport function createSubscriptionsApiAdapter(client: FetchClient) {\n return {\n fetchCustomerSubscriptions: (\n params: subscriptions.FetchSubscriptionsParams,\n ) => subscriptionsApi.fetchCustomerSubscriptions(client, params),\n fetchSubscription: (token: string) =>\n subscriptionsApi.fetchSubscription(client, token),\n pauseSubscription: (\n token: string,\n params: subscriptions.PauseSubscriptionParams,\n ) => subscriptionsApi.pauseSubscription(client, token, params),\n resumeSubscription: (\n token: string,\n params: subscriptions.ResumeSubscriptionParams,\n ) => subscriptionsApi.resumeSubscription(client, token, params),\n skipSubscription: (\n token: string,\n params: subscriptions.SkipSubscriptionParams,\n ) => subscriptionsApi.skipSubscription(client, token, params),\n cancelSubscription: (token: string, customerId: number) =>\n subscriptionsApi.cancelSubscription(client, token, customerId),\n reactivateSubscription: (\n token: string,\n params: subscriptions.ReactivateSubscriptionParams,\n ) => subscriptionsApi.reactivateSubscription(client, token, params),\n updateSubscriptionInfo: (\n token: string,\n body: subscriptions.UpdateSubscriptionInfoBody,\n ) => subscriptionsApi.updateSubscriptionInfo(client, token, body),\n };\n}\n","import { useMemo } from \"react\";\nimport type { OrdersApi } from \"@fluid-app/orders-core\";\nimport {\n createFetchClient as createOrdersFetchClient,\n ordersApi,\n} from \"@fluid-app/orders-api-client\";\nimport { createFetchClient as createSubscriptionsFetchClient } from \"@fluid-app/subscriptions-api-client\";\nimport type { SubscriptionsApi } from \"@fluid-app/subscriptions-core\";\nimport { createSubscriptionsApiAdapter } from \"./subscriptions-api-adapter\";\nimport {\n createFetchClient as createCoreFetchClient,\n type FetchClient as CoreFetchClient,\n} from \"@fluid-app/api-client-core\";\nimport { useFluidContext } from \"../providers/FluidProvider\";\nimport { useFluidAuth } from \"../hooks/use-fluid-auth\";\n\n/** API version prefix for versioned endpoints (e.g. points ledger) */\nexport const API_VERSION = \"/v202506\";\n\n/**\n * Ensures baseUrl ends with /api.\n * Domain-specific API clients (orders, subscriptions, fluid-pay) use endpoint\n * paths without /api (e.g. /fluid_pay/me, /subscriptions), matching fluid-admin's\n * NEXT_PUBLIC_API_URL convention. The portal SDK's config.baseUrl is the domain\n * root (e.g. https://api.fluid.app), so we append /api here.\n */\nfunction withApiPrefix(baseUrl: string): string {\n const base = baseUrl.replace(/\\/+$/, \"\");\n return base.endsWith(\"/api\") ? base : `${base}/api`;\n}\n\nexport function useOrdersApi(): OrdersApi {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(() => {\n const client = createOrdersFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n });\n return {\n fetchOrder: (orderToken) => ordersApi.fetchOrder(client, orderToken),\n fetchCustomerOrders: (params) =>\n ordersApi.fetchCustomerOrders(client, params),\n };\n }, [config.baseUrl, config.onAuthError, token]);\n}\n\nexport function useSubscriptionsApiClient(): SubscriptionsApi {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createSubscriptionsApiAdapter(\n createSubscriptionsFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n ),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n\n/**\n * Generic SDK fetch client for endpoints not covered by domain-specific clients\n * (e.g. /countries, /v202506/customers/:id/points_ledgers).\n * Uses the same auth/baseUrl/error handling as the domain clients.\n */\nexport function useSdkClient(): CoreFetchClient {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createCoreFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-account-clients-CkDfPpCR.cjs","names":["useFluidAuthContext","subscriptionsApi.fetchCustomerSubscriptions","subscriptionsApi.fetchSubscription","subscriptionsApi.pauseSubscription","subscriptionsApi.resumeSubscription","subscriptionsApi.skipSubscription","subscriptionsApi.cancelSubscription","subscriptionsApi.reactivateSubscription","subscriptionsApi.updateSubscriptionInfo","useFluidContext","createOrdersFetchClient","ordersApi.fetchOrder","ordersApi.fetchCustomerOrders","createSubscriptionsFetchClient","createCoreFetchClient"],"sources":["../src/hooks/use-fluid-auth.ts","../../../orders/api-client/src/namespaces/orders.ts","../../../subscriptions/api-client/src/namespaces/subscriptions.ts","../../../subscriptions/api-client/src/adapter.ts","../src/account/use-account-clients.ts"],"sourcesContent":["/**\n * useFluidAuth Hook\n *\n * Provides access to authentication state and utilities.\n * This is the primary hook for interacting with auth in components.\n */\n\nimport { useFluidAuthContext } from \"../providers/FluidAuthProvider\";\nimport type { FluidAuthContextValue } from \"../auth/types\";\n\n/**\n * Hook to access authentication state and utilities.\n *\n * Must be used within a `FluidAuthProvider`.\n *\n * @returns Authentication context with user info, loading state, and utilities\n * @throws Error if used outside FluidAuthProvider\n *\n * @example\n * ```tsx\n * function UserProfile() {\n * const { isAuthenticated, isLoading, user, clearAuth } = useFluidAuth();\n *\n * if (isLoading) {\n * return <Spinner />;\n * }\n *\n * if (!isAuthenticated) {\n * return <p>Please log in</p>;\n * }\n *\n * return (\n * <div>\n * <p>Welcome, {user.full_name}!</p>\n * <button onClick={clearAuth}>Log out</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useFluidAuth(): FluidAuthContextValue {\n return useFluidAuthContext();\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { orders } from \"../custom/orders\";\n\n/**\n * Fetch a single order by token.\n * Endpoint: GET /public/v2025-06/orders/{orderToken}\n */\nexport async function fetchOrder(\n client: FetchClient,\n orderToken: string,\n): Promise<orders.OrderResponse> {\n return client.get(`/public/v2025-06/orders/${orderToken}`);\n}\n\n/**\n * Fetch a paginated list of customer orders.\n * Endpoint: GET /v202506/orders\n */\nexport async function fetchCustomerOrders(\n client: FetchClient,\n params: orders.FetchOrdersParams,\n): Promise<orders.CustomerOrdersResponse> {\n const input: Record<string, string> = {};\n\n if (params.cursor) input[\"page[cursor]\"] = params.cursor;\n if (params.limit != null) input[\"page[limit]\"] = params.limit.toString();\n if (params.search) input.search = params.search;\n if (params.sort) input.sort = params.sort;\n if (params.status) input.status = params.status;\n if (params.type) input.type = params.type;\n if (params.customerId != null)\n input.customer_id = params.customerId.toString();\n if (params.userCompanyId != null)\n input.user_company_id = params.userCompanyId.toString();\n if (params.subscriptionId != null)\n input.subscription_id = params.subscriptionId.toString();\n if (params.startDate) input.start_date = params.startDate;\n if (params.endDate) input.end_date = params.endDate;\n if (params.withinDays != null)\n input.within_days = params.withinDays.toString();\n if (params.cartSource) input.cart_source = params.cartSource;\n if (params.countryIsos) input.country_isos = params.countryIsos;\n if (params.forceStats != null)\n input.force_stats = params.forceStats.toString();\n\n return client.get(\"/v202506/orders\", input);\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { subscriptions } from \"../custom/subscriptions\";\n\n/**\n * Fetch a paginated list of customer subscriptions.\n * Endpoint: GET /subscriptions\n */\nexport async function fetchCustomerSubscriptions(\n client: FetchClient,\n params: subscriptions.FetchSubscriptionsParams,\n): Promise<subscriptions.SubscriptionsResponse> {\n const input: Record<string, string> = {\n customer_id: params.customerId.toString(),\n page: (params.page ?? 1).toString(),\n per_page: (params.perPage ?? 10).toString(),\n };\n\n if (params.status != null) input.status = params.status;\n if (params.search != null) input.search = params.search;\n if (params.sortBy != null) input.sort_by = params.sortBy;\n if (params.sortDirection != null) input.sort_direction = params.sortDirection;\n\n return client.get(\"/subscriptions\", input);\n}\n\n/**\n * Fetch a single subscription by token.\n * Endpoint: GET /subscriptions/{token}\n */\nexport async function fetchSubscription(\n client: FetchClient,\n subscriptionToken: string,\n): Promise<subscriptions.SubscriptionDetail> {\n return client.get(`/subscriptions/${subscriptionToken}`);\n}\n\n/**\n * Pause a subscription.\n * Endpoint: POST /subscriptions/{token}/pause\n */\nexport async function pauseSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.PauseSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const queryParams: Record<string, string> = {\n customer_id: params.customerId.toString(),\n };\n\n if (params.nextBillDate != null) {\n queryParams.next_bill_date = params.nextBillDate;\n }\n if (params.numberOfOrders != null) {\n queryParams.number_of_orders = params.numberOfOrders.toString();\n }\n\n const query = new URLSearchParams(queryParams).toString();\n return client.post(`/subscriptions/${subscriptionToken}/pause?${query}`);\n}\n\n/**\n * Resume a paused subscription.\n * Endpoint: POST /subscriptions/{token}/resume\n */\nexport async function resumeSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.ResumeSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: params.customerId.toString(),\n next_bill_date: params.nextBillDate,\n }).toString();\n\n return client.post(`/subscriptions/${subscriptionToken}/resume?${query}`);\n}\n\n/**\n * Skip the next billing cycle.\n * Endpoint: POST /subscriptions/{token}/skip_next_billing\n */\nexport async function skipSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.SkipSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: params.customerId.toString(),\n next_bill_date: params.nextBillDate,\n }).toString();\n\n return client.post(\n `/subscriptions/${subscriptionToken}/skip_next_billing?${query}`,\n );\n}\n\n/**\n * Cancel a subscription.\n * Endpoint: POST /subscriptions/{token}/cancel\n */\nexport async function cancelSubscription(\n client: FetchClient,\n subscriptionToken: string,\n customerId: number,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: customerId.toString(),\n }).toString();\n\n return client.post(`/subscriptions/${subscriptionToken}/cancel?${query}`);\n}\n\n/**\n * Reactivate a cancelled subscription.\n * Endpoint: POST /subscriptions/{token}/reactivate\n */\nexport async function reactivateSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.ReactivateSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const body =\n params.process_immediately === true\n ? { process_immediately: true }\n : params.next_bill_date\n ? { next_bill_date: params.next_bill_date }\n : {};\n\n return client.post(\n `/subscriptions/${subscriptionToken}/reactivate`,\n Object.keys(body).length > 0 ? body : undefined,\n );\n}\n\n/**\n * Update subscription info (plan, variant, address, payment method, quantity).\n * Endpoint: PUT /subscriptions/{token}\n */\nexport async function updateSubscriptionInfo(\n client: FetchClient,\n subscriptionToken: string,\n body: subscriptions.UpdateSubscriptionInfoBody,\n): Promise<subscriptions.SubscriptionDetail> {\n return client.put(`/subscriptions/${subscriptionToken}`, {\n subscription: body,\n });\n}\n\n/**\n * Create a new subscription. Two-step process: creates a cart first, then the subscription.\n * Endpoint: POST /carts + POST /subscriptions\n */\nexport async function createSubscription(\n client: FetchClient,\n data: subscriptions.CreateSubscriptionData,\n): Promise<subscriptions.SubscriptionCreateResponse> {\n // Step 1: Create a cart with the subscription item\n const cartResponse = await client.post<subscriptions.CartCreateResponse>(\n \"/carts\",\n {\n country_code: \"US\",\n items: [\n {\n variant_id: data.variant_id,\n quantity: data.quantity ?? 1,\n subscription: true,\n subscription_plan_id: data.subscription_plan_id,\n },\n ],\n },\n );\n\n // Step 2: Create the subscription using the cart token\n return client.post(\"/subscriptions\", {\n subscription: {\n ...data,\n cart_token: cartResponse.cart.cart_token,\n },\n });\n}\n","import type { FetchClient } from \"./lib/fetch-client\";\nimport type { subscriptions } from \"./custom/subscriptions\";\nimport * as subscriptionsApi from \"./namespaces/subscriptions\";\n\n/**\n * Creates a SubscriptionsApi-compatible adapter from a FetchClient.\n *\n * This bridges the concrete API client to the abstract SubscriptionsApi\n * interface defined in @fluid-app/subscriptions-core, closing over the\n * FetchClient so consumers don't need to pass it per-call.\n */\nexport function createSubscriptionsApiAdapter(client: FetchClient) {\n return {\n fetchCustomerSubscriptions: (\n params: subscriptions.FetchSubscriptionsParams,\n ) => subscriptionsApi.fetchCustomerSubscriptions(client, params),\n fetchSubscription: (token: string) =>\n subscriptionsApi.fetchSubscription(client, token),\n pauseSubscription: (\n token: string,\n params: subscriptions.PauseSubscriptionParams,\n ) => subscriptionsApi.pauseSubscription(client, token, params),\n resumeSubscription: (\n token: string,\n params: subscriptions.ResumeSubscriptionParams,\n ) => subscriptionsApi.resumeSubscription(client, token, params),\n skipSubscription: (\n token: string,\n params: subscriptions.SkipSubscriptionParams,\n ) => subscriptionsApi.skipSubscription(client, token, params),\n cancelSubscription: (token: string, customerId: number) =>\n subscriptionsApi.cancelSubscription(client, token, customerId),\n reactivateSubscription: (\n token: string,\n params: subscriptions.ReactivateSubscriptionParams,\n ) => subscriptionsApi.reactivateSubscription(client, token, params),\n updateSubscriptionInfo: (\n token: string,\n body: subscriptions.UpdateSubscriptionInfoBody,\n ) => subscriptionsApi.updateSubscriptionInfo(client, token, body),\n };\n}\n","import { useMemo } from \"react\";\nimport type { OrdersApi } from \"@fluid-app/orders-core\";\nimport {\n createFetchClient as createOrdersFetchClient,\n ordersApi,\n} from \"@fluid-app/orders-api-client\";\nimport { createFetchClient as createSubscriptionsFetchClient } from \"@fluid-app/subscriptions-api-client\";\nimport type { SubscriptionsApi } from \"@fluid-app/subscriptions-core\";\nimport { createSubscriptionsApiAdapter } from \"./subscriptions-api-adapter\";\nimport {\n createFetchClient as createCoreFetchClient,\n type FetchClient as CoreFetchClient,\n} from \"@fluid-app/api-client-core\";\nimport { useFluidContext } from \"../providers/FluidProvider\";\nimport { useFluidAuth } from \"../hooks/use-fluid-auth\";\n\n/** API version prefix for versioned endpoints (e.g. points ledger) */\nexport const API_VERSION = \"/v202506\";\n\n/**\n * Ensures baseUrl ends with /api.\n * Domain-specific API clients (orders, subscriptions, fluid-pay) use endpoint\n * paths without /api (e.g. /fluid_pay/me, /subscriptions), matching fluid-admin's\n * NEXT_PUBLIC_API_URL convention. The portal SDK's config.baseUrl is the domain\n * root (e.g. https://api.fluid.app), so we append /api here.\n */\nfunction withApiPrefix(baseUrl: string): string {\n const base = baseUrl.replace(/\\/+$/, \"\");\n return base.endsWith(\"/api\") ? base : `${base}/api`;\n}\n\nexport function useOrdersApi(): OrdersApi {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(() => {\n const client = createOrdersFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n });\n return {\n fetchOrder: (orderToken) => ordersApi.fetchOrder(client, orderToken),\n fetchCustomerOrders: (params) =>\n ordersApi.fetchCustomerOrders(client, params),\n };\n }, [config.baseUrl, config.onAuthError, token]);\n}\n\nexport function useSubscriptionsApiClient(): SubscriptionsApi {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createSubscriptionsApiAdapter(\n createSubscriptionsFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n ),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n\n/**\n * Generic SDK fetch client for endpoints not covered by domain-specific clients\n * (e.g. /countries, /v202506/customers/:id/points_ledgers).\n * Uses the same auth/baseUrl/error handling as the domain clients.\n */\nexport function useSdkClient(): CoreFetchClient {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createCoreFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { St as createFetchClient, l as useFluidAuthContext, n as useFluidContext } from "./FluidProvider-C8sXuPhI.mjs";
1
+ import { St as createFetchClient, l as useFluidAuthContext, n as useFluidContext } from "./FluidProvider-CWYquEIF.mjs";
2
2
  import { useMemo } from "react";
3
3
  //#region src/hooks/use-fluid-auth.ts
4
4
  /**
@@ -242,4 +242,4 @@ function useSdkClient() {
242
242
  //#endregion
243
243
  export { useFluidAuth as a, useSubscriptionsApiClient as i, useOrdersApi as n, useSdkClient as r, API_VERSION as t };
244
244
 
245
- //# sourceMappingURL=use-account-clients-B278xE7A.mjs.map
245
+ //# sourceMappingURL=use-account-clients-Dsqx0mKw.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-account-clients-B278xE7A.mjs","names":["subscriptionsApi.fetchCustomerSubscriptions","subscriptionsApi.fetchSubscription","subscriptionsApi.pauseSubscription","subscriptionsApi.resumeSubscription","subscriptionsApi.skipSubscription","subscriptionsApi.cancelSubscription","subscriptionsApi.reactivateSubscription","subscriptionsApi.updateSubscriptionInfo","createOrdersFetchClient","ordersApi.fetchOrder","ordersApi.fetchCustomerOrders","createSubscriptionsFetchClient","createCoreFetchClient"],"sources":["../src/hooks/use-fluid-auth.ts","../../../orders/api-client/src/namespaces/orders.ts","../../../subscriptions/api-client/src/namespaces/subscriptions.ts","../../../subscriptions/api-client/src/adapter.ts","../src/account/use-account-clients.ts"],"sourcesContent":["/**\n * useFluidAuth Hook\n *\n * Provides access to authentication state and utilities.\n * This is the primary hook for interacting with auth in components.\n */\n\nimport { useFluidAuthContext } from \"../providers/FluidAuthProvider\";\nimport type { FluidAuthContextValue } from \"../auth/types\";\n\n/**\n * Hook to access authentication state and utilities.\n *\n * Must be used within a `FluidAuthProvider`.\n *\n * @returns Authentication context with user info, loading state, and utilities\n * @throws Error if used outside FluidAuthProvider\n *\n * @example\n * ```tsx\n * function UserProfile() {\n * const { isAuthenticated, isLoading, user, clearAuth } = useFluidAuth();\n *\n * if (isLoading) {\n * return <Spinner />;\n * }\n *\n * if (!isAuthenticated) {\n * return <p>Please log in</p>;\n * }\n *\n * return (\n * <div>\n * <p>Welcome, {user.full_name}!</p>\n * <button onClick={clearAuth}>Log out</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useFluidAuth(): FluidAuthContextValue {\n return useFluidAuthContext();\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { orders } from \"../custom/orders\";\n\n/**\n * Fetch a single order by token.\n * Endpoint: GET /public/v2025-06/orders/{orderToken}\n */\nexport async function fetchOrder(\n client: FetchClient,\n orderToken: string,\n): Promise<orders.OrderResponse> {\n return client.get(`/public/v2025-06/orders/${orderToken}`);\n}\n\n/**\n * Fetch a paginated list of customer orders.\n * Endpoint: GET /v202506/orders\n */\nexport async function fetchCustomerOrders(\n client: FetchClient,\n params: orders.FetchOrdersParams,\n): Promise<orders.CustomerOrdersResponse> {\n const input: Record<string, string> = {};\n\n if (params.cursor) input[\"page[cursor]\"] = params.cursor;\n if (params.limit != null) input[\"page[limit]\"] = params.limit.toString();\n if (params.search) input.search = params.search;\n if (params.sort) input.sort = params.sort;\n if (params.status) input.status = params.status;\n if (params.type) input.type = params.type;\n if (params.customerId != null)\n input.customer_id = params.customerId.toString();\n if (params.userCompanyId != null)\n input.user_company_id = params.userCompanyId.toString();\n if (params.subscriptionId != null)\n input.subscription_id = params.subscriptionId.toString();\n if (params.startDate) input.start_date = params.startDate;\n if (params.endDate) input.end_date = params.endDate;\n if (params.withinDays != null)\n input.within_days = params.withinDays.toString();\n if (params.cartSource) input.cart_source = params.cartSource;\n if (params.countryIsos) input.country_isos = params.countryIsos;\n if (params.forceStats != null)\n input.force_stats = params.forceStats.toString();\n\n return client.get(\"/v202506/orders\", input);\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { subscriptions } from \"../custom/subscriptions\";\n\n/**\n * Fetch a paginated list of customer subscriptions.\n * Endpoint: GET /subscriptions\n */\nexport async function fetchCustomerSubscriptions(\n client: FetchClient,\n params: subscriptions.FetchSubscriptionsParams,\n): Promise<subscriptions.SubscriptionsResponse> {\n const input: Record<string, string> = {\n customer_id: params.customerId.toString(),\n page: (params.page ?? 1).toString(),\n per_page: (params.perPage ?? 10).toString(),\n };\n\n if (params.status != null) input.status = params.status;\n if (params.search != null) input.search = params.search;\n if (params.sortBy != null) input.sort_by = params.sortBy;\n if (params.sortDirection != null) input.sort_direction = params.sortDirection;\n\n return client.get(\"/subscriptions\", input);\n}\n\n/**\n * Fetch a single subscription by token.\n * Endpoint: GET /subscriptions/{token}\n */\nexport async function fetchSubscription(\n client: FetchClient,\n subscriptionToken: string,\n): Promise<subscriptions.SubscriptionDetail> {\n return client.get(`/subscriptions/${subscriptionToken}`);\n}\n\n/**\n * Pause a subscription.\n * Endpoint: POST /subscriptions/{token}/pause\n */\nexport async function pauseSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.PauseSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const queryParams: Record<string, string> = {\n customer_id: params.customerId.toString(),\n };\n\n if (params.nextBillDate != null) {\n queryParams.next_bill_date = params.nextBillDate;\n }\n if (params.numberOfOrders != null) {\n queryParams.number_of_orders = params.numberOfOrders.toString();\n }\n\n const query = new URLSearchParams(queryParams).toString();\n return client.post(`/subscriptions/${subscriptionToken}/pause?${query}`);\n}\n\n/**\n * Resume a paused subscription.\n * Endpoint: POST /subscriptions/{token}/resume\n */\nexport async function resumeSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.ResumeSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: params.customerId.toString(),\n next_bill_date: params.nextBillDate,\n }).toString();\n\n return client.post(`/subscriptions/${subscriptionToken}/resume?${query}`);\n}\n\n/**\n * Skip the next billing cycle.\n * Endpoint: POST /subscriptions/{token}/skip_next_billing\n */\nexport async function skipSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.SkipSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: params.customerId.toString(),\n next_bill_date: params.nextBillDate,\n }).toString();\n\n return client.post(\n `/subscriptions/${subscriptionToken}/skip_next_billing?${query}`,\n );\n}\n\n/**\n * Cancel a subscription.\n * Endpoint: POST /subscriptions/{token}/cancel\n */\nexport async function cancelSubscription(\n client: FetchClient,\n subscriptionToken: string,\n customerId: number,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: customerId.toString(),\n }).toString();\n\n return client.post(`/subscriptions/${subscriptionToken}/cancel?${query}`);\n}\n\n/**\n * Reactivate a cancelled subscription.\n * Endpoint: POST /subscriptions/{token}/reactivate\n */\nexport async function reactivateSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.ReactivateSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const body =\n params.process_immediately === true\n ? { process_immediately: true }\n : params.next_bill_date\n ? { next_bill_date: params.next_bill_date }\n : {};\n\n return client.post(\n `/subscriptions/${subscriptionToken}/reactivate`,\n Object.keys(body).length > 0 ? body : undefined,\n );\n}\n\n/**\n * Update subscription info (plan, variant, address, payment method, quantity).\n * Endpoint: PUT /subscriptions/{token}\n */\nexport async function updateSubscriptionInfo(\n client: FetchClient,\n subscriptionToken: string,\n body: subscriptions.UpdateSubscriptionInfoBody,\n): Promise<subscriptions.SubscriptionDetail> {\n return client.put(`/subscriptions/${subscriptionToken}`, {\n subscription: body,\n });\n}\n\n/**\n * Create a new subscription. Two-step process: creates a cart first, then the subscription.\n * Endpoint: POST /carts + POST /subscriptions\n */\nexport async function createSubscription(\n client: FetchClient,\n data: subscriptions.CreateSubscriptionData,\n): Promise<subscriptions.SubscriptionCreateResponse> {\n // Step 1: Create a cart with the subscription item\n const cartResponse = await client.post<subscriptions.CartCreateResponse>(\n \"/carts\",\n {\n country_code: \"US\",\n items: [\n {\n variant_id: data.variant_id,\n quantity: data.quantity ?? 1,\n subscription: true,\n subscription_plan_id: data.subscription_plan_id,\n },\n ],\n },\n );\n\n // Step 2: Create the subscription using the cart token\n return client.post(\"/subscriptions\", {\n subscription: {\n ...data,\n cart_token: cartResponse.cart.cart_token,\n },\n });\n}\n","import type { FetchClient } from \"./lib/fetch-client\";\nimport type { subscriptions } from \"./custom/subscriptions\";\nimport * as subscriptionsApi from \"./namespaces/subscriptions\";\n\n/**\n * Creates a SubscriptionsApi-compatible adapter from a FetchClient.\n *\n * This bridges the concrete API client to the abstract SubscriptionsApi\n * interface defined in @fluid-app/subscriptions-core, closing over the\n * FetchClient so consumers don't need to pass it per-call.\n */\nexport function createSubscriptionsApiAdapter(client: FetchClient) {\n return {\n fetchCustomerSubscriptions: (\n params: subscriptions.FetchSubscriptionsParams,\n ) => subscriptionsApi.fetchCustomerSubscriptions(client, params),\n fetchSubscription: (token: string) =>\n subscriptionsApi.fetchSubscription(client, token),\n pauseSubscription: (\n token: string,\n params: subscriptions.PauseSubscriptionParams,\n ) => subscriptionsApi.pauseSubscription(client, token, params),\n resumeSubscription: (\n token: string,\n params: subscriptions.ResumeSubscriptionParams,\n ) => subscriptionsApi.resumeSubscription(client, token, params),\n skipSubscription: (\n token: string,\n params: subscriptions.SkipSubscriptionParams,\n ) => subscriptionsApi.skipSubscription(client, token, params),\n cancelSubscription: (token: string, customerId: number) =>\n subscriptionsApi.cancelSubscription(client, token, customerId),\n reactivateSubscription: (\n token: string,\n params: subscriptions.ReactivateSubscriptionParams,\n ) => subscriptionsApi.reactivateSubscription(client, token, params),\n updateSubscriptionInfo: (\n token: string,\n body: subscriptions.UpdateSubscriptionInfoBody,\n ) => subscriptionsApi.updateSubscriptionInfo(client, token, body),\n };\n}\n","import { useMemo } from \"react\";\nimport type { OrdersApi } from \"@fluid-app/orders-core\";\nimport {\n createFetchClient as createOrdersFetchClient,\n ordersApi,\n} from \"@fluid-app/orders-api-client\";\nimport { createFetchClient as createSubscriptionsFetchClient } from \"@fluid-app/subscriptions-api-client\";\nimport type { SubscriptionsApi } from \"@fluid-app/subscriptions-core\";\nimport { createSubscriptionsApiAdapter } from \"./subscriptions-api-adapter\";\nimport {\n createFetchClient as createCoreFetchClient,\n type FetchClient as CoreFetchClient,\n} from \"@fluid-app/api-client-core\";\nimport { useFluidContext } from \"../providers/FluidProvider\";\nimport { useFluidAuth } from \"../hooks/use-fluid-auth\";\n\n/** API version prefix for versioned endpoints (e.g. points ledger) */\nexport const API_VERSION = \"/v202506\";\n\n/**\n * Ensures baseUrl ends with /api.\n * Domain-specific API clients (orders, subscriptions, fluid-pay) use endpoint\n * paths without /api (e.g. /fluid_pay/me, /subscriptions), matching fluid-admin's\n * NEXT_PUBLIC_API_URL convention. The portal SDK's config.baseUrl is the domain\n * root (e.g. https://api.fluid.app), so we append /api here.\n */\nfunction withApiPrefix(baseUrl: string): string {\n const base = baseUrl.replace(/\\/+$/, \"\");\n return base.endsWith(\"/api\") ? base : `${base}/api`;\n}\n\nexport function useOrdersApi(): OrdersApi {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(() => {\n const client = createOrdersFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n });\n return {\n fetchOrder: (orderToken) => ordersApi.fetchOrder(client, orderToken),\n fetchCustomerOrders: (params) =>\n ordersApi.fetchCustomerOrders(client, params),\n };\n }, [config.baseUrl, config.onAuthError, token]);\n}\n\nexport function useSubscriptionsApiClient(): SubscriptionsApi {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createSubscriptionsApiAdapter(\n createSubscriptionsFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n ),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n\n/**\n * Generic SDK fetch client for endpoints not covered by domain-specific clients\n * (e.g. /countries, /v202506/customers/:id/points_ledgers).\n * Uses the same auth/baseUrl/error handling as the domain clients.\n */\nexport function useSdkClient(): CoreFetchClient {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createCoreFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-account-clients-Dsqx0mKw.mjs","names":["subscriptionsApi.fetchCustomerSubscriptions","subscriptionsApi.fetchSubscription","subscriptionsApi.pauseSubscription","subscriptionsApi.resumeSubscription","subscriptionsApi.skipSubscription","subscriptionsApi.cancelSubscription","subscriptionsApi.reactivateSubscription","subscriptionsApi.updateSubscriptionInfo","createOrdersFetchClient","ordersApi.fetchOrder","ordersApi.fetchCustomerOrders","createSubscriptionsFetchClient","createCoreFetchClient"],"sources":["../src/hooks/use-fluid-auth.ts","../../../orders/api-client/src/namespaces/orders.ts","../../../subscriptions/api-client/src/namespaces/subscriptions.ts","../../../subscriptions/api-client/src/adapter.ts","../src/account/use-account-clients.ts"],"sourcesContent":["/**\n * useFluidAuth Hook\n *\n * Provides access to authentication state and utilities.\n * This is the primary hook for interacting with auth in components.\n */\n\nimport { useFluidAuthContext } from \"../providers/FluidAuthProvider\";\nimport type { FluidAuthContextValue } from \"../auth/types\";\n\n/**\n * Hook to access authentication state and utilities.\n *\n * Must be used within a `FluidAuthProvider`.\n *\n * @returns Authentication context with user info, loading state, and utilities\n * @throws Error if used outside FluidAuthProvider\n *\n * @example\n * ```tsx\n * function UserProfile() {\n * const { isAuthenticated, isLoading, user, clearAuth } = useFluidAuth();\n *\n * if (isLoading) {\n * return <Spinner />;\n * }\n *\n * if (!isAuthenticated) {\n * return <p>Please log in</p>;\n * }\n *\n * return (\n * <div>\n * <p>Welcome, {user.full_name}!</p>\n * <button onClick={clearAuth}>Log out</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useFluidAuth(): FluidAuthContextValue {\n return useFluidAuthContext();\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { orders } from \"../custom/orders\";\n\n/**\n * Fetch a single order by token.\n * Endpoint: GET /public/v2025-06/orders/{orderToken}\n */\nexport async function fetchOrder(\n client: FetchClient,\n orderToken: string,\n): Promise<orders.OrderResponse> {\n return client.get(`/public/v2025-06/orders/${orderToken}`);\n}\n\n/**\n * Fetch a paginated list of customer orders.\n * Endpoint: GET /v202506/orders\n */\nexport async function fetchCustomerOrders(\n client: FetchClient,\n params: orders.FetchOrdersParams,\n): Promise<orders.CustomerOrdersResponse> {\n const input: Record<string, string> = {};\n\n if (params.cursor) input[\"page[cursor]\"] = params.cursor;\n if (params.limit != null) input[\"page[limit]\"] = params.limit.toString();\n if (params.search) input.search = params.search;\n if (params.sort) input.sort = params.sort;\n if (params.status) input.status = params.status;\n if (params.type) input.type = params.type;\n if (params.customerId != null)\n input.customer_id = params.customerId.toString();\n if (params.userCompanyId != null)\n input.user_company_id = params.userCompanyId.toString();\n if (params.subscriptionId != null)\n input.subscription_id = params.subscriptionId.toString();\n if (params.startDate) input.start_date = params.startDate;\n if (params.endDate) input.end_date = params.endDate;\n if (params.withinDays != null)\n input.within_days = params.withinDays.toString();\n if (params.cartSource) input.cart_source = params.cartSource;\n if (params.countryIsos) input.country_isos = params.countryIsos;\n if (params.forceStats != null)\n input.force_stats = params.forceStats.toString();\n\n return client.get(\"/v202506/orders\", input);\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { subscriptions } from \"../custom/subscriptions\";\n\n/**\n * Fetch a paginated list of customer subscriptions.\n * Endpoint: GET /subscriptions\n */\nexport async function fetchCustomerSubscriptions(\n client: FetchClient,\n params: subscriptions.FetchSubscriptionsParams,\n): Promise<subscriptions.SubscriptionsResponse> {\n const input: Record<string, string> = {\n customer_id: params.customerId.toString(),\n page: (params.page ?? 1).toString(),\n per_page: (params.perPage ?? 10).toString(),\n };\n\n if (params.status != null) input.status = params.status;\n if (params.search != null) input.search = params.search;\n if (params.sortBy != null) input.sort_by = params.sortBy;\n if (params.sortDirection != null) input.sort_direction = params.sortDirection;\n\n return client.get(\"/subscriptions\", input);\n}\n\n/**\n * Fetch a single subscription by token.\n * Endpoint: GET /subscriptions/{token}\n */\nexport async function fetchSubscription(\n client: FetchClient,\n subscriptionToken: string,\n): Promise<subscriptions.SubscriptionDetail> {\n return client.get(`/subscriptions/${subscriptionToken}`);\n}\n\n/**\n * Pause a subscription.\n * Endpoint: POST /subscriptions/{token}/pause\n */\nexport async function pauseSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.PauseSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const queryParams: Record<string, string> = {\n customer_id: params.customerId.toString(),\n };\n\n if (params.nextBillDate != null) {\n queryParams.next_bill_date = params.nextBillDate;\n }\n if (params.numberOfOrders != null) {\n queryParams.number_of_orders = params.numberOfOrders.toString();\n }\n\n const query = new URLSearchParams(queryParams).toString();\n return client.post(`/subscriptions/${subscriptionToken}/pause?${query}`);\n}\n\n/**\n * Resume a paused subscription.\n * Endpoint: POST /subscriptions/{token}/resume\n */\nexport async function resumeSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.ResumeSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: params.customerId.toString(),\n next_bill_date: params.nextBillDate,\n }).toString();\n\n return client.post(`/subscriptions/${subscriptionToken}/resume?${query}`);\n}\n\n/**\n * Skip the next billing cycle.\n * Endpoint: POST /subscriptions/{token}/skip_next_billing\n */\nexport async function skipSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.SkipSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: params.customerId.toString(),\n next_bill_date: params.nextBillDate,\n }).toString();\n\n return client.post(\n `/subscriptions/${subscriptionToken}/skip_next_billing?${query}`,\n );\n}\n\n/**\n * Cancel a subscription.\n * Endpoint: POST /subscriptions/{token}/cancel\n */\nexport async function cancelSubscription(\n client: FetchClient,\n subscriptionToken: string,\n customerId: number,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: customerId.toString(),\n }).toString();\n\n return client.post(`/subscriptions/${subscriptionToken}/cancel?${query}`);\n}\n\n/**\n * Reactivate a cancelled subscription.\n * Endpoint: POST /subscriptions/{token}/reactivate\n */\nexport async function reactivateSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.ReactivateSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const body =\n params.process_immediately === true\n ? { process_immediately: true }\n : params.next_bill_date\n ? { next_bill_date: params.next_bill_date }\n : {};\n\n return client.post(\n `/subscriptions/${subscriptionToken}/reactivate`,\n Object.keys(body).length > 0 ? body : undefined,\n );\n}\n\n/**\n * Update subscription info (plan, variant, address, payment method, quantity).\n * Endpoint: PUT /subscriptions/{token}\n */\nexport async function updateSubscriptionInfo(\n client: FetchClient,\n subscriptionToken: string,\n body: subscriptions.UpdateSubscriptionInfoBody,\n): Promise<subscriptions.SubscriptionDetail> {\n return client.put(`/subscriptions/${subscriptionToken}`, {\n subscription: body,\n });\n}\n\n/**\n * Create a new subscription. Two-step process: creates a cart first, then the subscription.\n * Endpoint: POST /carts + POST /subscriptions\n */\nexport async function createSubscription(\n client: FetchClient,\n data: subscriptions.CreateSubscriptionData,\n): Promise<subscriptions.SubscriptionCreateResponse> {\n // Step 1: Create a cart with the subscription item\n const cartResponse = await client.post<subscriptions.CartCreateResponse>(\n \"/carts\",\n {\n country_code: \"US\",\n items: [\n {\n variant_id: data.variant_id,\n quantity: data.quantity ?? 1,\n subscription: true,\n subscription_plan_id: data.subscription_plan_id,\n },\n ],\n },\n );\n\n // Step 2: Create the subscription using the cart token\n return client.post(\"/subscriptions\", {\n subscription: {\n ...data,\n cart_token: cartResponse.cart.cart_token,\n },\n });\n}\n","import type { FetchClient } from \"./lib/fetch-client\";\nimport type { subscriptions } from \"./custom/subscriptions\";\nimport * as subscriptionsApi from \"./namespaces/subscriptions\";\n\n/**\n * Creates a SubscriptionsApi-compatible adapter from a FetchClient.\n *\n * This bridges the concrete API client to the abstract SubscriptionsApi\n * interface defined in @fluid-app/subscriptions-core, closing over the\n * FetchClient so consumers don't need to pass it per-call.\n */\nexport function createSubscriptionsApiAdapter(client: FetchClient) {\n return {\n fetchCustomerSubscriptions: (\n params: subscriptions.FetchSubscriptionsParams,\n ) => subscriptionsApi.fetchCustomerSubscriptions(client, params),\n fetchSubscription: (token: string) =>\n subscriptionsApi.fetchSubscription(client, token),\n pauseSubscription: (\n token: string,\n params: subscriptions.PauseSubscriptionParams,\n ) => subscriptionsApi.pauseSubscription(client, token, params),\n resumeSubscription: (\n token: string,\n params: subscriptions.ResumeSubscriptionParams,\n ) => subscriptionsApi.resumeSubscription(client, token, params),\n skipSubscription: (\n token: string,\n params: subscriptions.SkipSubscriptionParams,\n ) => subscriptionsApi.skipSubscription(client, token, params),\n cancelSubscription: (token: string, customerId: number) =>\n subscriptionsApi.cancelSubscription(client, token, customerId),\n reactivateSubscription: (\n token: string,\n params: subscriptions.ReactivateSubscriptionParams,\n ) => subscriptionsApi.reactivateSubscription(client, token, params),\n updateSubscriptionInfo: (\n token: string,\n body: subscriptions.UpdateSubscriptionInfoBody,\n ) => subscriptionsApi.updateSubscriptionInfo(client, token, body),\n };\n}\n","import { useMemo } from \"react\";\nimport type { OrdersApi } from \"@fluid-app/orders-core\";\nimport {\n createFetchClient as createOrdersFetchClient,\n ordersApi,\n} from \"@fluid-app/orders-api-client\";\nimport { createFetchClient as createSubscriptionsFetchClient } from \"@fluid-app/subscriptions-api-client\";\nimport type { SubscriptionsApi } from \"@fluid-app/subscriptions-core\";\nimport { createSubscriptionsApiAdapter } from \"./subscriptions-api-adapter\";\nimport {\n createFetchClient as createCoreFetchClient,\n type FetchClient as CoreFetchClient,\n} from \"@fluid-app/api-client-core\";\nimport { useFluidContext } from \"../providers/FluidProvider\";\nimport { useFluidAuth } from \"../hooks/use-fluid-auth\";\n\n/** API version prefix for versioned endpoints (e.g. points ledger) */\nexport const API_VERSION = \"/v202506\";\n\n/**\n * Ensures baseUrl ends with /api.\n * Domain-specific API clients (orders, subscriptions, fluid-pay) use endpoint\n * paths without /api (e.g. /fluid_pay/me, /subscriptions), matching fluid-admin's\n * NEXT_PUBLIC_API_URL convention. The portal SDK's config.baseUrl is the domain\n * root (e.g. https://api.fluid.app), so we append /api here.\n */\nfunction withApiPrefix(baseUrl: string): string {\n const base = baseUrl.replace(/\\/+$/, \"\");\n return base.endsWith(\"/api\") ? base : `${base}/api`;\n}\n\nexport function useOrdersApi(): OrdersApi {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(() => {\n const client = createOrdersFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n });\n return {\n fetchOrder: (orderToken) => ordersApi.fetchOrder(client, orderToken),\n fetchCustomerOrders: (params) =>\n ordersApi.fetchCustomerOrders(client, params),\n };\n }, [config.baseUrl, config.onAuthError, token]);\n}\n\nexport function useSubscriptionsApiClient(): SubscriptionsApi {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createSubscriptionsApiAdapter(\n createSubscriptionsFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n ),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n\n/**\n * Generic SDK fetch client for endpoints not covered by domain-specific clients\n * (e.g. /countries, /v202506/customers/:id/points_ledgers).\n * Uses the same auth/baseUrl/error handling as the domain clients.\n */\nexport function useSdkClient(): CoreFetchClient {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createCoreFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { l as useFluidAuthContext } from "./FluidProvider-C8sXuPhI.mjs";
2
- import { t as useFluidApi } from "./use-fluid-api-CVYfAcJM.mjs";
1
+ import { l as useFluidAuthContext } from "./FluidProvider-CWYquEIF.mjs";
2
+ import { t as useFluidApi } from "./use-fluid-api-CaSYWFuj.mjs";
3
3
  import { useCallback, useRef } from "react";
4
4
  import { useQuery } from "@tanstack/react-query";
5
5
  //#region src/hooks/query-keys.ts
@@ -98,4 +98,4 @@ function useCurrentUser() {
98
98
  //#endregion
99
99
  export { useCompanyScopedQueryKey as i, useCurrentUser as n, createCompanyQueryKey as r, CURRENT_USER_QUERY_KEY as t };
100
100
 
101
- //# sourceMappingURL=use-current-user-BlZn_jR2.mjs.map
101
+ //# sourceMappingURL=use-current-user-BMI-LR9t.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-current-user-BlZn_jR2.mjs","names":[],"sources":["../src/hooks/query-keys.ts","../src/hooks/use-current-user.ts"],"sourcesContent":["/**\n * Company-scoped query key factory for TanStack Query.\n *\n * All portal SDK query keys are prefixed with [\"company\", companyId, ...]\n * so that switching companies naturally invalidates the entire cache scope.\n *\n * The exported `*_QUERY_KEY` constants (e.g. PROFILE_QUERY_KEY) remain as\n * backwards-compatible base keys. The runtime keys used by hooks include the\n * company prefix via {@link createCompanyQueryKey}.\n */\n\nimport { useCallback, useRef } from \"react\";\nimport { useFluidAuthContext } from \"../providers/FluidAuthProvider\";\n\n/**\n * Create a company-scoped query key by prepending [\"company\", companyId].\n *\n * @param companyId - The company ID from the JWT payload\n * @param baseKey - The base query key segments (e.g. [\"fluid\", \"profile\"])\n * @returns A tuple like [\"company\", 42, \"fluid\", \"profile\"]\n *\n * @example\n * ```ts\n * const key = createCompanyQueryKey(42, \"fluid\", \"profile\");\n * // => [\"company\", 42, \"fluid\", \"profile\"]\n * ```\n */\nexport function createCompanyQueryKey(\n companyId: number,\n ...baseKey: readonly string[]\n): readonly [\"company\", number, ...string[]] {\n return [\"company\", companyId, ...baseKey] as const;\n}\n\n/**\n * Hook that returns a `scopeKey` function bound to the current company ID\n * from the auth context. If the user is not authenticated or has no\n * company_id, the base key is returned unscoped (graceful degradation).\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { scopeKey } = useCompanyScopedQueryKey();\n * const queryKey = scopeKey(PROFILE_QUERY_KEY);\n * // => [\"company\", 42, \"fluid\", \"profile\"] (when authenticated)\n * // => [\"fluid\", \"profile\"] (fallback)\n * }\n * ```\n */\nexport function useCompanyScopedQueryKey(): {\n readonly companyId: number | undefined;\n readonly scopeKey: <T extends readonly string[]>(\n baseKey: T,\n ) => readonly (string | number)[];\n} {\n const auth = useFluidAuthContext();\n const companyId = auth.user?.company_id;\n\n // Warn (once per component instance) when an authenticated user has no\n // company_id. This is a security-relevant condition: unscoped keys allow\n // cross-company cache collisions. The warning fires in all environments\n // so that it's visible in production logs if a misconfigured JWT is issued.\n const hasWarnedRef = useRef(false);\n if (auth.isAuthenticated && companyId == null && !hasWarnedRef.current) {\n hasWarnedRef.current = true;\n console.warn(\n \"[portal-sdk] Authenticated user has no company_id in JWT. \" +\n \"Query keys will fall back to unscoped keys, which may cause \" +\n \"cross-company cache collisions. Ensure the JWT includes company_id.\",\n );\n }\n\n const scopeKey = useCallback(\n <T extends readonly string[]>(baseKey: T): readonly (string | number)[] => {\n if (companyId != null) {\n return createCompanyQueryKey(companyId, ...baseKey);\n }\n return baseKey;\n },\n [companyId],\n );\n\n return { companyId, scopeKey } as const;\n}\n","import { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { useFluidApi } from \"./use-fluid-api\";\nimport { useCompanyScopedQueryKey } from \"./query-keys\";\nimport type { UserMe } from \"../types/rep\";\n\n/**\n * Base query key for current user data.\n * Kept for backwards compatibility — the runtime key used by the hook\n * includes a company prefix via {@link useCompanyScopedQueryKey}.\n */\nexport const CURRENT_USER_QUERY_KEY = [\"fluid\", \"currentUser\"] as const;\n\n/**\n * Hook to fetch the currently authenticated user's full profile.\n * Returns company, country, and other fields from GET /api/me.\n *\n * @example\n * ```tsx\n * function ShopPage() {\n * const { data: user, isLoading } = useCurrentUser();\n * const subdomain = user?.company?.subdomain;\n * const countryIso = user?.country?.iso ?? \"US\";\n * // ...\n * }\n * ```\n */\nexport function useCurrentUser(): UseQueryResult<UserMe> {\n const api = useFluidApi();\n const { scopeKey } = useCompanyScopedQueryKey();\n\n return useQuery({\n queryKey: scopeKey(CURRENT_USER_QUERY_KEY),\n queryFn: () => api.users.me(),\n staleTime: 5 * 60 * 1000,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,SAAgB,sBACd,WACA,GAAG,SACwC;AAC3C,QAAO;EAAC;EAAW;EAAW,GAAG;EAAQ;;;;;;;;;;;;;;;;;AAkB3C,SAAgB,2BAKd;CACA,MAAM,OAAO,qBAAqB;CAClC,MAAM,YAAY,KAAK,MAAM;CAM7B,MAAM,eAAe,OAAO,MAAM;AAClC,KAAI,KAAK,mBAAmB,aAAa,QAAQ,CAAC,aAAa,SAAS;AACtE,eAAa,UAAU;AACvB,UAAQ,KACN,4LAGD;;AAaH,QAAO;EAAE;EAAW,UAVH,aACe,YAA6C;AACzE,OAAI,aAAa,KACf,QAAO,sBAAsB,WAAW,GAAG,QAAQ;AAErD,UAAO;KAET,CAAC,UAAU,CACZ;EAE6B;;;;;;;;;ACxEhC,MAAa,yBAAyB,CAAC,SAAS,cAAc;;;;;;;;;;;;;;;AAgB9D,SAAgB,iBAAyC;CACvD,MAAM,MAAM,aAAa;CACzB,MAAM,EAAE,aAAa,0BAA0B;AAE/C,QAAO,SAAS;EACd,UAAU,SAAS,uBAAuB;EAC1C,eAAe,IAAI,MAAM,IAAI;EAC7B,WAAW,MAAS;EACrB,CAAC"}
1
+ {"version":3,"file":"use-current-user-BMI-LR9t.mjs","names":[],"sources":["../src/hooks/query-keys.ts","../src/hooks/use-current-user.ts"],"sourcesContent":["/**\n * Company-scoped query key factory for TanStack Query.\n *\n * All portal SDK query keys are prefixed with [\"company\", companyId, ...]\n * so that switching companies naturally invalidates the entire cache scope.\n *\n * The exported `*_QUERY_KEY` constants (e.g. PROFILE_QUERY_KEY) remain as\n * backwards-compatible base keys. The runtime keys used by hooks include the\n * company prefix via {@link createCompanyQueryKey}.\n */\n\nimport { useCallback, useRef } from \"react\";\nimport { useFluidAuthContext } from \"../providers/FluidAuthProvider\";\n\n/**\n * Create a company-scoped query key by prepending [\"company\", companyId].\n *\n * @param companyId - The company ID from the JWT payload\n * @param baseKey - The base query key segments (e.g. [\"fluid\", \"profile\"])\n * @returns A tuple like [\"company\", 42, \"fluid\", \"profile\"]\n *\n * @example\n * ```ts\n * const key = createCompanyQueryKey(42, \"fluid\", \"profile\");\n * // => [\"company\", 42, \"fluid\", \"profile\"]\n * ```\n */\nexport function createCompanyQueryKey(\n companyId: number,\n ...baseKey: readonly string[]\n): readonly [\"company\", number, ...string[]] {\n return [\"company\", companyId, ...baseKey] as const;\n}\n\n/**\n * Hook that returns a `scopeKey` function bound to the current company ID\n * from the auth context. If the user is not authenticated or has no\n * company_id, the base key is returned unscoped (graceful degradation).\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { scopeKey } = useCompanyScopedQueryKey();\n * const queryKey = scopeKey(PROFILE_QUERY_KEY);\n * // => [\"company\", 42, \"fluid\", \"profile\"] (when authenticated)\n * // => [\"fluid\", \"profile\"] (fallback)\n * }\n * ```\n */\nexport function useCompanyScopedQueryKey(): {\n readonly companyId: number | undefined;\n readonly scopeKey: <T extends readonly string[]>(\n baseKey: T,\n ) => readonly (string | number)[];\n} {\n const auth = useFluidAuthContext();\n const companyId = auth.user?.company_id;\n\n // Warn (once per component instance) when an authenticated user has no\n // company_id. This is a security-relevant condition: unscoped keys allow\n // cross-company cache collisions. The warning fires in all environments\n // so that it's visible in production logs if a misconfigured JWT is issued.\n const hasWarnedRef = useRef(false);\n if (auth.isAuthenticated && companyId == null && !hasWarnedRef.current) {\n hasWarnedRef.current = true;\n console.warn(\n \"[portal-sdk] Authenticated user has no company_id in JWT. \" +\n \"Query keys will fall back to unscoped keys, which may cause \" +\n \"cross-company cache collisions. Ensure the JWT includes company_id.\",\n );\n }\n\n const scopeKey = useCallback(\n <T extends readonly string[]>(baseKey: T): readonly (string | number)[] => {\n if (companyId != null) {\n return createCompanyQueryKey(companyId, ...baseKey);\n }\n return baseKey;\n },\n [companyId],\n );\n\n return { companyId, scopeKey } as const;\n}\n","import { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { useFluidApi } from \"./use-fluid-api\";\nimport { useCompanyScopedQueryKey } from \"./query-keys\";\nimport type { UserMe } from \"../types/rep\";\n\n/**\n * Base query key for current user data.\n * Kept for backwards compatibility — the runtime key used by the hook\n * includes a company prefix via {@link useCompanyScopedQueryKey}.\n */\nexport const CURRENT_USER_QUERY_KEY = [\"fluid\", \"currentUser\"] as const;\n\n/**\n * Hook to fetch the currently authenticated user's full profile.\n * Returns company, country, and other fields from GET /api/me.\n *\n * @example\n * ```tsx\n * function ShopPage() {\n * const { data: user, isLoading } = useCurrentUser();\n * const subdomain = user?.company?.subdomain;\n * const countryIso = user?.country?.iso ?? \"US\";\n * // ...\n * }\n * ```\n */\nexport function useCurrentUser(): UseQueryResult<UserMe> {\n const api = useFluidApi();\n const { scopeKey } = useCompanyScopedQueryKey();\n\n return useQuery({\n queryKey: scopeKey(CURRENT_USER_QUERY_KEY),\n queryFn: () => api.users.me(),\n staleTime: 5 * 60 * 1000,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,SAAgB,sBACd,WACA,GAAG,SACwC;AAC3C,QAAO;EAAC;EAAW;EAAW,GAAG;EAAQ;;;;;;;;;;;;;;;;;AAkB3C,SAAgB,2BAKd;CACA,MAAM,OAAO,qBAAqB;CAClC,MAAM,YAAY,KAAK,MAAM;CAM7B,MAAM,eAAe,OAAO,MAAM;AAClC,KAAI,KAAK,mBAAmB,aAAa,QAAQ,CAAC,aAAa,SAAS;AACtE,eAAa,UAAU;AACvB,UAAQ,KACN,4LAGD;;AAaH,QAAO;EAAE;EAAW,UAVH,aACe,YAA6C;AACzE,OAAI,aAAa,KACf,QAAO,sBAAsB,WAAW,GAAG,QAAQ;AAErD,UAAO;KAET,CAAC,UAAU,CACZ;EAE6B;;;;;;;;;ACxEhC,MAAa,yBAAyB,CAAC,SAAS,cAAc;;;;;;;;;;;;;;;AAgB9D,SAAgB,iBAAyC;CACvD,MAAM,MAAM,aAAa;CACzB,MAAM,EAAE,aAAa,0BAA0B;AAE/C,QAAO,SAAS;EACd,UAAU,SAAS,uBAAuB;EAC1C,eAAe,IAAI,MAAM,IAAI;EAC7B,WAAW,MAAS;EACrB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  require("./chunk-9hOWP6kD.cjs");
2
- const require_FluidProvider = require("./FluidProvider-roApesp3.cjs");
3
- const require_use_fluid_api = require("./use-fluid-api-5vFjbTFA.cjs");
2
+ const require_FluidProvider = require("./FluidProvider-CyzA2g75.cjs");
3
+ const require_use_fluid_api = require("./use-fluid-api-Kw0AKvCs.cjs");
4
4
  let react = require("react");
5
5
  let _tanstack_react_query = require("@tanstack/react-query");
6
6
  //#region src/hooks/query-keys.ts
@@ -122,4 +122,4 @@ Object.defineProperty(exports, "useCurrentUser", {
122
122
  }
123
123
  });
124
124
 
125
- //# sourceMappingURL=use-current-user-D84vQEB5.cjs.map
125
+ //# sourceMappingURL=use-current-user-LLJ1GtNB.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-current-user-D84vQEB5.cjs","names":["useFluidAuthContext","useFluidApi"],"sources":["../src/hooks/query-keys.ts","../src/hooks/use-current-user.ts"],"sourcesContent":["/**\n * Company-scoped query key factory for TanStack Query.\n *\n * All portal SDK query keys are prefixed with [\"company\", companyId, ...]\n * so that switching companies naturally invalidates the entire cache scope.\n *\n * The exported `*_QUERY_KEY` constants (e.g. PROFILE_QUERY_KEY) remain as\n * backwards-compatible base keys. The runtime keys used by hooks include the\n * company prefix via {@link createCompanyQueryKey}.\n */\n\nimport { useCallback, useRef } from \"react\";\nimport { useFluidAuthContext } from \"../providers/FluidAuthProvider\";\n\n/**\n * Create a company-scoped query key by prepending [\"company\", companyId].\n *\n * @param companyId - The company ID from the JWT payload\n * @param baseKey - The base query key segments (e.g. [\"fluid\", \"profile\"])\n * @returns A tuple like [\"company\", 42, \"fluid\", \"profile\"]\n *\n * @example\n * ```ts\n * const key = createCompanyQueryKey(42, \"fluid\", \"profile\");\n * // => [\"company\", 42, \"fluid\", \"profile\"]\n * ```\n */\nexport function createCompanyQueryKey(\n companyId: number,\n ...baseKey: readonly string[]\n): readonly [\"company\", number, ...string[]] {\n return [\"company\", companyId, ...baseKey] as const;\n}\n\n/**\n * Hook that returns a `scopeKey` function bound to the current company ID\n * from the auth context. If the user is not authenticated or has no\n * company_id, the base key is returned unscoped (graceful degradation).\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { scopeKey } = useCompanyScopedQueryKey();\n * const queryKey = scopeKey(PROFILE_QUERY_KEY);\n * // => [\"company\", 42, \"fluid\", \"profile\"] (when authenticated)\n * // => [\"fluid\", \"profile\"] (fallback)\n * }\n * ```\n */\nexport function useCompanyScopedQueryKey(): {\n readonly companyId: number | undefined;\n readonly scopeKey: <T extends readonly string[]>(\n baseKey: T,\n ) => readonly (string | number)[];\n} {\n const auth = useFluidAuthContext();\n const companyId = auth.user?.company_id;\n\n // Warn (once per component instance) when an authenticated user has no\n // company_id. This is a security-relevant condition: unscoped keys allow\n // cross-company cache collisions. The warning fires in all environments\n // so that it's visible in production logs if a misconfigured JWT is issued.\n const hasWarnedRef = useRef(false);\n if (auth.isAuthenticated && companyId == null && !hasWarnedRef.current) {\n hasWarnedRef.current = true;\n console.warn(\n \"[portal-sdk] Authenticated user has no company_id in JWT. \" +\n \"Query keys will fall back to unscoped keys, which may cause \" +\n \"cross-company cache collisions. Ensure the JWT includes company_id.\",\n );\n }\n\n const scopeKey = useCallback(\n <T extends readonly string[]>(baseKey: T): readonly (string | number)[] => {\n if (companyId != null) {\n return createCompanyQueryKey(companyId, ...baseKey);\n }\n return baseKey;\n },\n [companyId],\n );\n\n return { companyId, scopeKey } as const;\n}\n","import { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { useFluidApi } from \"./use-fluid-api\";\nimport { useCompanyScopedQueryKey } from \"./query-keys\";\nimport type { UserMe } from \"../types/rep\";\n\n/**\n * Base query key for current user data.\n * Kept for backwards compatibility — the runtime key used by the hook\n * includes a company prefix via {@link useCompanyScopedQueryKey}.\n */\nexport const CURRENT_USER_QUERY_KEY = [\"fluid\", \"currentUser\"] as const;\n\n/**\n * Hook to fetch the currently authenticated user's full profile.\n * Returns company, country, and other fields from GET /api/me.\n *\n * @example\n * ```tsx\n * function ShopPage() {\n * const { data: user, isLoading } = useCurrentUser();\n * const subdomain = user?.company?.subdomain;\n * const countryIso = user?.country?.iso ?? \"US\";\n * // ...\n * }\n * ```\n */\nexport function useCurrentUser(): UseQueryResult<UserMe> {\n const api = useFluidApi();\n const { scopeKey } = useCompanyScopedQueryKey();\n\n return useQuery({\n queryKey: scopeKey(CURRENT_USER_QUERY_KEY),\n queryFn: () => api.users.me(),\n staleTime: 5 * 60 * 1000,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,SAAgB,sBACd,WACA,GAAG,SACwC;AAC3C,QAAO;EAAC;EAAW;EAAW,GAAG;EAAQ;;;;;;;;;;;;;;;;;AAkB3C,SAAgB,2BAKd;CACA,MAAM,OAAOA,sBAAAA,qBAAqB;CAClC,MAAM,YAAY,KAAK,MAAM;CAM7B,MAAM,gBAAA,GAAA,MAAA,QAAsB,MAAM;AAClC,KAAI,KAAK,mBAAmB,aAAa,QAAQ,CAAC,aAAa,SAAS;AACtE,eAAa,UAAU;AACvB,UAAQ,KACN,4LAGD;;AAaH,QAAO;EAAE;EAAW,WAAA,GAAA,MAAA,cATY,YAA6C;AACzE,OAAI,aAAa,KACf,QAAO,sBAAsB,WAAW,GAAG,QAAQ;AAErD,UAAO;KAET,CAAC,UAAU,CACZ;EAE6B;;;;;;;;;ACxEhC,MAAa,yBAAyB,CAAC,SAAS,cAAc;;;;;;;;;;;;;;;AAgB9D,SAAgB,iBAAyC;CACvD,MAAM,MAAMC,sBAAAA,aAAa;CACzB,MAAM,EAAE,aAAa,0BAA0B;AAE/C,SAAA,GAAA,sBAAA,UAAgB;EACd,UAAU,SAAS,uBAAuB;EAC1C,eAAe,IAAI,MAAM,IAAI;EAC7B,WAAW,MAAS;EACrB,CAAC"}
1
+ {"version":3,"file":"use-current-user-LLJ1GtNB.cjs","names":["useFluidAuthContext","useFluidApi"],"sources":["../src/hooks/query-keys.ts","../src/hooks/use-current-user.ts"],"sourcesContent":["/**\n * Company-scoped query key factory for TanStack Query.\n *\n * All portal SDK query keys are prefixed with [\"company\", companyId, ...]\n * so that switching companies naturally invalidates the entire cache scope.\n *\n * The exported `*_QUERY_KEY` constants (e.g. PROFILE_QUERY_KEY) remain as\n * backwards-compatible base keys. The runtime keys used by hooks include the\n * company prefix via {@link createCompanyQueryKey}.\n */\n\nimport { useCallback, useRef } from \"react\";\nimport { useFluidAuthContext } from \"../providers/FluidAuthProvider\";\n\n/**\n * Create a company-scoped query key by prepending [\"company\", companyId].\n *\n * @param companyId - The company ID from the JWT payload\n * @param baseKey - The base query key segments (e.g. [\"fluid\", \"profile\"])\n * @returns A tuple like [\"company\", 42, \"fluid\", \"profile\"]\n *\n * @example\n * ```ts\n * const key = createCompanyQueryKey(42, \"fluid\", \"profile\");\n * // => [\"company\", 42, \"fluid\", \"profile\"]\n * ```\n */\nexport function createCompanyQueryKey(\n companyId: number,\n ...baseKey: readonly string[]\n): readonly [\"company\", number, ...string[]] {\n return [\"company\", companyId, ...baseKey] as const;\n}\n\n/**\n * Hook that returns a `scopeKey` function bound to the current company ID\n * from the auth context. If the user is not authenticated or has no\n * company_id, the base key is returned unscoped (graceful degradation).\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { scopeKey } = useCompanyScopedQueryKey();\n * const queryKey = scopeKey(PROFILE_QUERY_KEY);\n * // => [\"company\", 42, \"fluid\", \"profile\"] (when authenticated)\n * // => [\"fluid\", \"profile\"] (fallback)\n * }\n * ```\n */\nexport function useCompanyScopedQueryKey(): {\n readonly companyId: number | undefined;\n readonly scopeKey: <T extends readonly string[]>(\n baseKey: T,\n ) => readonly (string | number)[];\n} {\n const auth = useFluidAuthContext();\n const companyId = auth.user?.company_id;\n\n // Warn (once per component instance) when an authenticated user has no\n // company_id. This is a security-relevant condition: unscoped keys allow\n // cross-company cache collisions. The warning fires in all environments\n // so that it's visible in production logs if a misconfigured JWT is issued.\n const hasWarnedRef = useRef(false);\n if (auth.isAuthenticated && companyId == null && !hasWarnedRef.current) {\n hasWarnedRef.current = true;\n console.warn(\n \"[portal-sdk] Authenticated user has no company_id in JWT. \" +\n \"Query keys will fall back to unscoped keys, which may cause \" +\n \"cross-company cache collisions. Ensure the JWT includes company_id.\",\n );\n }\n\n const scopeKey = useCallback(\n <T extends readonly string[]>(baseKey: T): readonly (string | number)[] => {\n if (companyId != null) {\n return createCompanyQueryKey(companyId, ...baseKey);\n }\n return baseKey;\n },\n [companyId],\n );\n\n return { companyId, scopeKey } as const;\n}\n","import { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { useFluidApi } from \"./use-fluid-api\";\nimport { useCompanyScopedQueryKey } from \"./query-keys\";\nimport type { UserMe } from \"../types/rep\";\n\n/**\n * Base query key for current user data.\n * Kept for backwards compatibility — the runtime key used by the hook\n * includes a company prefix via {@link useCompanyScopedQueryKey}.\n */\nexport const CURRENT_USER_QUERY_KEY = [\"fluid\", \"currentUser\"] as const;\n\n/**\n * Hook to fetch the currently authenticated user's full profile.\n * Returns company, country, and other fields from GET /api/me.\n *\n * @example\n * ```tsx\n * function ShopPage() {\n * const { data: user, isLoading } = useCurrentUser();\n * const subdomain = user?.company?.subdomain;\n * const countryIso = user?.country?.iso ?? \"US\";\n * // ...\n * }\n * ```\n */\nexport function useCurrentUser(): UseQueryResult<UserMe> {\n const api = useFluidApi();\n const { scopeKey } = useCompanyScopedQueryKey();\n\n return useQuery({\n queryKey: scopeKey(CURRENT_USER_QUERY_KEY),\n queryFn: () => api.users.me(),\n staleTime: 5 * 60 * 1000,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,SAAgB,sBACd,WACA,GAAG,SACwC;AAC3C,QAAO;EAAC;EAAW;EAAW,GAAG;EAAQ;;;;;;;;;;;;;;;;;AAkB3C,SAAgB,2BAKd;CACA,MAAM,OAAOA,sBAAAA,qBAAqB;CAClC,MAAM,YAAY,KAAK,MAAM;CAM7B,MAAM,gBAAA,GAAA,MAAA,QAAsB,MAAM;AAClC,KAAI,KAAK,mBAAmB,aAAa,QAAQ,CAAC,aAAa,SAAS;AACtE,eAAa,UAAU;AACvB,UAAQ,KACN,4LAGD;;AAaH,QAAO;EAAE;EAAW,WAAA,GAAA,MAAA,cATY,YAA6C;AACzE,OAAI,aAAa,KACf,QAAO,sBAAsB,WAAW,GAAG,QAAQ;AAErD,UAAO;KAET,CAAC,UAAU,CACZ;EAE6B;;;;;;;;;ACxEhC,MAAa,yBAAyB,CAAC,SAAS,cAAc;;;;;;;;;;;;;;;AAgB9D,SAAgB,iBAAyC;CACvD,MAAM,MAAMC,sBAAAA,aAAa;CACzB,MAAM,EAAE,aAAa,0BAA0B;AAE/C,SAAA,GAAA,sBAAA,UAAgB;EACd,UAAU,SAAS,uBAAuB;EAC1C,eAAe,IAAI,MAAM,IAAI;EAC7B,WAAW,MAAS;EACrB,CAAC"}