@fluid-app/portal-sdk 0.1.82 → 0.1.84

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 (130) hide show
  1. package/dist/{AppDownloadScreen-3DHcVSP9.cjs → AppDownloadScreen-B-JdFulZ.cjs} +3 -3
  2. package/dist/{AppDownloadScreen-BZ8IA_i0.mjs → AppDownloadScreen-BE6M8WxN.mjs} +2 -2
  3. package/dist/{AppDownloadScreen-BZ8IA_i0.mjs.map → AppDownloadScreen-BE6M8WxN.mjs.map} +1 -1
  4. package/dist/{AppDownloadScreen-BDnZv0Ve.cjs → AppDownloadScreen-CaTNCtzb.cjs} +2 -2
  5. package/dist/{AppDownloadScreen-BDnZv0Ve.cjs.map → AppDownloadScreen-CaTNCtzb.cjs.map} +1 -1
  6. package/dist/{AppNavigationContext-Du3Qq0yc.mjs → AppNavigationContext-BSnbFILQ.mjs} +1 -1
  7. package/dist/{AppNavigationContext-Du3Qq0yc.mjs.map → AppNavigationContext-BSnbFILQ.mjs.map} +1 -1
  8. package/dist/{AppNavigationContext-Agp0UkCQ.cjs → AppNavigationContext-DnwdUAjn.cjs} +1 -1
  9. package/dist/{AppNavigationContext-Agp0UkCQ.cjs.map → AppNavigationContext-DnwdUAjn.cjs.map} +1 -1
  10. package/dist/{ContactsScreen-w2w-l_0b.mjs → ContactsScreen-DrkHWPMm.mjs} +5 -5
  11. package/dist/{ContactsScreen-w2w-l_0b.mjs.map → ContactsScreen-DrkHWPMm.mjs.map} +1 -1
  12. package/dist/{ContactsScreen-Cphil7Lf.cjs → ContactsScreen-Du9M90zi.cjs} +7 -7
  13. package/dist/{ContactsScreen-BF2txIn2.cjs → ContactsScreen-DvmqkXOu.cjs} +5 -5
  14. package/dist/{ContactsScreen-BF2txIn2.cjs.map → ContactsScreen-DvmqkXOu.cjs.map} +1 -1
  15. package/dist/{CustomersScreen-9f10-_AZ.cjs → CustomersScreen-Bd9eK18y.cjs} +1 -1
  16. package/dist/{CustomersScreen-9f10-_AZ.cjs.map → CustomersScreen-Bd9eK18y.cjs.map} +1 -1
  17. package/dist/{CustomersScreen-xAauAB-B.mjs → CustomersScreen-DEFY3mRL.mjs} +1 -1
  18. package/dist/{CustomersScreen-xAauAB-B.mjs.map → CustomersScreen-DEFY3mRL.mjs.map} +1 -1
  19. package/dist/{FluidProvider-BeQDNd2R.cjs → FluidProvider-BSBLJp15.cjs} +3 -3
  20. package/dist/{FluidProvider-BeQDNd2R.cjs.map → FluidProvider-BSBLJp15.cjs.map} +1 -1
  21. package/dist/{FluidProvider-aDOk1vw3.mjs → FluidProvider-CwkMUOoy.mjs} +3 -3
  22. package/dist/{FluidProvider-aDOk1vw3.mjs.map → FluidProvider-CwkMUOoy.mjs.map} +1 -1
  23. package/dist/{MessagingScreen-yHZm0vFM.cjs → MessagingScreen-BlN6KjV-.cjs} +5 -5
  24. package/dist/{MessagingScreen-CnBpPXBm.mjs → MessagingScreen-C4-8_bvB.mjs} +5 -5
  25. package/dist/{MessagingScreen-B3_sZuUW.mjs → MessagingScreen-Cg2XvQZF.mjs} +5 -5
  26. package/dist/{MessagingScreen-B3_sZuUW.mjs.map → MessagingScreen-Cg2XvQZF.mjs.map} +1 -1
  27. package/dist/{MessagingScreen-DzwIbgUU.cjs → MessagingScreen-Lc81OXIN.cjs} +5 -5
  28. package/dist/{MessagingScreen-DzwIbgUU.cjs.map → MessagingScreen-Lc81OXIN.cjs.map} +1 -1
  29. package/dist/{MySiteScreen-DkHGVOlx.cjs → MySiteScreen-B-I4V3Cc.cjs} +3 -3
  30. package/dist/{MySiteScreen-DkHGVOlx.cjs.map → MySiteScreen-B-I4V3Cc.cjs.map} +1 -1
  31. package/dist/{MySiteScreen-DJ-rkDlD.mjs → MySiteScreen-BedF13nt.mjs} +3 -3
  32. package/dist/{MySiteScreen-DJ-rkDlD.mjs.map → MySiteScreen-BedF13nt.mjs.map} +1 -1
  33. package/dist/{MySiteScreen-BwdayTZT.cjs → MySiteScreen-DEOKI32H.cjs} +3 -3
  34. package/dist/{OrdersScreen-DipdGDcy.cjs → OrdersScreen-BE_E1QGL.cjs} +4 -4
  35. package/dist/{OrdersScreen-C_fTfG0m.cjs → OrdersScreen-C-rU9cx6.cjs} +5 -5
  36. package/dist/{OrdersScreen-C_fTfG0m.cjs.map → OrdersScreen-C-rU9cx6.cjs.map} +1 -1
  37. package/dist/{OrdersScreen-C0dg1NEJ.mjs → OrdersScreen-CfAmUUN3.mjs} +5 -5
  38. package/dist/{OrdersScreen-C0dg1NEJ.mjs.map → OrdersScreen-CfAmUUN3.mjs.map} +1 -1
  39. package/dist/{PointsWidget-Cc88UHqD.mjs → PointsWidget-CYesuDDG.mjs} +3 -3
  40. package/dist/PointsWidget-CYesuDDG.mjs.map +1 -0
  41. package/dist/{PointsWidget-DISBtuAm.cjs → PointsWidget-D8U2k-_A.cjs} +3 -3
  42. package/dist/PointsWidget-D8U2k-_A.cjs.map +1 -0
  43. package/dist/{ProductsScreen-B2_8nFMd.mjs → ProductsScreen-CGo9KQ9L.mjs} +5 -5
  44. package/dist/{ProductsScreen-B2_8nFMd.mjs.map → ProductsScreen-CGo9KQ9L.mjs.map} +1 -1
  45. package/dist/{ProductsScreen-BjCjYPiq.mjs → ProductsScreen-CgG79XW9.mjs} +7 -7
  46. package/dist/{ProductsScreen-D7ag_21-.cjs → ProductsScreen-Csw96ete.cjs} +5 -5
  47. package/dist/{ProductsScreen-D7ag_21-.cjs.map → ProductsScreen-Csw96ete.cjs.map} +1 -1
  48. package/dist/{ProductsScreen-DHgkH0rd.cjs → ProductsScreen-DUPhUJ7p.cjs} +7 -7
  49. package/dist/{ProfileScreen-DhS4QlAJ.cjs → ProfileScreen-BSZLS9hY.cjs} +3 -3
  50. package/dist/{ProfileScreen-DHZDYTid.mjs → ProfileScreen-C4g7ZGPo.mjs} +3 -3
  51. package/dist/{ProfileScreen-DHZDYTid.mjs.map → ProfileScreen-C4g7ZGPo.mjs.map} +1 -1
  52. package/dist/{ProfileScreen-B8XYP1GA.cjs → ProfileScreen-CANmoFsP.cjs} +3 -3
  53. package/dist/{ProfileScreen-B8XYP1GA.cjs.map → ProfileScreen-CANmoFsP.cjs.map} +1 -1
  54. package/dist/{ShareablesScreen-DBSG5bbX.mjs → ShareablesScreen-BK0H5fb2.mjs} +31 -10
  55. package/dist/ShareablesScreen-BK0H5fb2.mjs.map +1 -0
  56. package/dist/{ShareablesScreen-3a7V8ZEB.mjs → ShareablesScreen-BmKYYRZq.mjs} +7 -7
  57. package/dist/{ShareablesScreen-DDcnZnRA.cjs → ShareablesScreen-D0kIiW8S.cjs} +36 -9
  58. package/dist/ShareablesScreen-D0kIiW8S.cjs.map +1 -0
  59. package/dist/{ShareablesScreen-BtZfpC1v.cjs → ShareablesScreen-loETsu9v.cjs} +7 -7
  60. package/dist/{ShopScreen-5DkzkCmK.mjs → ShopScreen-B0Pr0CTu.mjs} +6 -6
  61. package/dist/{ShopScreen-5DkzkCmK.mjs.map → ShopScreen-B0Pr0CTu.mjs.map} +1 -1
  62. package/dist/{ShopScreen-BiFPqcSn.cjs → ShopScreen-CDwCW5Go.cjs} +6 -6
  63. package/dist/{ShopScreen-BiFPqcSn.cjs.map → ShopScreen-CDwCW5Go.cjs.map} +1 -1
  64. package/dist/{ShopScreen-CK5hcRSz.cjs → ShopScreen-CaTpU5go.cjs} +3 -3
  65. package/dist/{SubscriptionsScreen-BM4Tk_vo.cjs → SubscriptionsScreen-CfvaEuTS.cjs} +5 -5
  66. package/dist/{SubscriptionsScreen-BM4Tk_vo.cjs.map → SubscriptionsScreen-CfvaEuTS.cjs.map} +1 -1
  67. package/dist/{SubscriptionsScreen-CRJjvX47.mjs → SubscriptionsScreen-D3LAx25s.mjs} +5 -5
  68. package/dist/{SubscriptionsScreen-CRJjvX47.mjs.map → SubscriptionsScreen-D3LAx25s.mjs.map} +1 -1
  69. package/dist/{SubscriptionsScreen-iSqfV2RZ.cjs → SubscriptionsScreen-Dpn0YuDb.cjs} +5 -5
  70. package/dist/{dist-B4Ke7bHH.cjs → dist-BK4mvUPm.cjs} +2 -2
  71. package/dist/{dist-B4Ke7bHH.cjs.map → dist-BK4mvUPm.cjs.map} +1 -1
  72. package/dist/{dist-Cl4FsM3V.mjs → dist-C9vpl_rR.mjs} +2 -2
  73. package/dist/{dist-Cl4FsM3V.mjs.map → dist-C9vpl_rR.mjs.map} +1 -1
  74. package/dist/{dist-CMGXkSgZ.mjs → dist-CkIGP8my.mjs} +1 -1
  75. package/dist/{dist-CMGXkSgZ.mjs.map → dist-CkIGP8my.mjs.map} +1 -1
  76. package/dist/{dist-BbS_7TvS.cjs → dist-thaj08s5.cjs} +1 -1
  77. package/dist/{dist-BbS_7TvS.cjs.map → dist-thaj08s5.cjs.map} +1 -1
  78. package/dist/{es-1KItbbYg.mjs → es-Dlib2eNY.mjs} +1 -1
  79. package/dist/{es-1KItbbYg.mjs.map → es-Dlib2eNY.mjs.map} +1 -1
  80. package/dist/{es-BSkb3AZk.cjs → es-xQF-WIMq.cjs} +1 -1
  81. package/dist/{es-BSkb3AZk.cjs.map → es-xQF-WIMq.cjs.map} +1 -1
  82. package/dist/index.cjs +425 -56
  83. package/dist/index.cjs.map +1 -1
  84. package/dist/index.d.cts +23 -1
  85. package/dist/index.d.cts.map +1 -1
  86. package/dist/index.d.mts +23 -1
  87. package/dist/index.d.mts.map +1 -1
  88. package/dist/index.mjs +424 -57
  89. package/dist/index.mjs.map +1 -1
  90. package/dist/{order-detail-Cj68hbgK.cjs → order-detail-06VbWJjw.cjs} +1 -1
  91. package/dist/{order-detail-Cj68hbgK.cjs.map → order-detail-06VbWJjw.cjs.map} +1 -1
  92. package/dist/{order-detail-B-4hsupW.mjs → order-detail-B5X_QRpi.mjs} +1 -1
  93. package/dist/{order-detail-B-4hsupW.mjs.map → order-detail-B5X_QRpi.mjs.map} +1 -1
  94. package/dist/{products-BKZ1siXg.cjs → products-CjZof7c2.cjs} +1 -1
  95. package/dist/{products-BKZ1siXg.cjs.map → products-CjZof7c2.cjs.map} +1 -1
  96. package/dist/{products-DOO1TBcm.mjs → products-Dkwd_Bh0.mjs} +1 -1
  97. package/dist/{products-DOO1TBcm.mjs.map → products-Dkwd_Bh0.mjs.map} +1 -1
  98. package/dist/{src-nhqydD53.mjs → src-BjmyVJoe.mjs} +21 -20
  99. package/dist/src-BjmyVJoe.mjs.map +1 -0
  100. package/dist/{src-Dzexc0vw.cjs → src-Dt66UB0B.cjs} +1 -1
  101. package/dist/{src-Dzexc0vw.cjs.map → src-Dt66UB0B.cjs.map} +1 -1
  102. package/dist/{src-fXyI4AWk.cjs → src-bzRRiTN4.cjs} +21 -20
  103. package/dist/src-bzRRiTN4.cjs.map +1 -0
  104. package/dist/{src-DfVbSKm5.mjs → src-p8DA1dH0.mjs} +1 -1
  105. package/dist/{src-DfVbSKm5.mjs.map → src-p8DA1dH0.mjs.map} +1 -1
  106. package/dist/{use-account-clients-DJVDMbzf.cjs → use-account-clients-62dZrh9E.cjs} +2 -2
  107. package/dist/{use-account-clients-DJVDMbzf.cjs.map → use-account-clients-62dZrh9E.cjs.map} +1 -1
  108. package/dist/{use-account-clients-D3YbXh9Y.mjs → use-account-clients-Cf_6sxeC.mjs} +2 -2
  109. package/dist/{use-account-clients-D3YbXh9Y.mjs.map → use-account-clients-Cf_6sxeC.mjs.map} +1 -1
  110. package/dist/{use-current-user-DIkhY-Or.mjs → use-current-user-Bl9nPNFt.mjs} +3 -3
  111. package/dist/{use-current-user-DIkhY-Or.mjs.map → use-current-user-Bl9nPNFt.mjs.map} +1 -1
  112. package/dist/{use-current-user-B_BV-XL3.cjs → use-current-user-SFCzJt0q.cjs} +3 -3
  113. package/dist/{use-current-user-B_BV-XL3.cjs.map → use-current-user-SFCzJt0q.cjs.map} +1 -1
  114. package/dist/{use-customer-account-D3WQH1de.cjs → use-customer-account-BoobPvSQ.cjs} +3 -3
  115. package/dist/{use-customer-account-D3WQH1de.cjs.map → use-customer-account-BoobPvSQ.cjs.map} +1 -1
  116. package/dist/{use-customer-account-Bh4RXGq-.mjs → use-customer-account-Dt3kO7ti.mjs} +3 -3
  117. package/dist/{use-customer-account-Bh4RXGq-.mjs.map → use-customer-account-Dt3kO7ti.mjs.map} +1 -1
  118. package/dist/{use-fluid-api-DDS0EZdY.mjs → use-fluid-api-DPhr-9Jv.mjs} +2 -2
  119. package/dist/{use-fluid-api-DDS0EZdY.mjs.map → use-fluid-api-DPhr-9Jv.mjs.map} +1 -1
  120. package/dist/{use-fluid-api-BL1IJowk.cjs → use-fluid-api-DwRQk00z.cjs} +2 -2
  121. package/dist/{use-fluid-api-BL1IJowk.cjs.map → use-fluid-api-DwRQk00z.cjs.map} +1 -1
  122. package/package.json +17 -17
  123. package/dist/PointsWidget-Cc88UHqD.mjs.map +0 -1
  124. package/dist/PointsWidget-DISBtuAm.cjs.map +0 -1
  125. package/dist/ShareablesScreen-DBSG5bbX.mjs.map +0 -1
  126. package/dist/ShareablesScreen-DDcnZnRA.cjs.map +0 -1
  127. package/dist/src-fXyI4AWk.cjs.map +0 -1
  128. package/dist/src-nhqydD53.mjs.map +0 -1
  129. /package/dist/{src-BakNjVTk.mjs → src-B7j_mfeS.mjs} +0 -0
  130. /package/dist/{src-C_kOrGdZ.cjs → src-Bp-dRR29.cjs} +0 -0
@@ -1,9 +1,27 @@
1
- import { i as useSdkClient } from "./use-account-clients-D3YbXh9Y.mjs";
2
- import { n as useCurrentUser } from "./use-current-user-DIkhY-Or.mjs";
3
- import { n as useAppNavigation } from "./AppNavigationContext-Du3Qq0yc.mjs";
4
- import { i as ShareablesCoreProvider, n as ShareablesApp, r as ShareablesUIProvider } from "./src-nhqydD53.mjs";
1
+ import { pt as USER_TYPES } from "./FluidProvider-CwkMUOoy.mjs";
2
+ import { i as useSdkClient, o as useFluidAuth } from "./use-account-clients-Cf_6sxeC.mjs";
3
+ import { n as useCurrentUser } from "./use-current-user-Bl9nPNFt.mjs";
4
+ import { n as useAppNavigation } from "./AppNavigationContext-BSnbFILQ.mjs";
5
+ import { i as ShareablesCoreProvider, n as ShareablesApp, r as ShareablesUIProvider } from "./src-BjmyVJoe.mjs";
5
6
  import { useCallback, useMemo } from "react";
6
7
  import { jsx } from "react/jsx-runtime";
8
+ //#region src/hooks/use-user-type.ts
9
+ /**
10
+ * Convenience hook for user-type checks in the portal SDK.
11
+ */
12
+ function useUserType() {
13
+ const { user } = useFluidAuth();
14
+ return useMemo(() => {
15
+ const userType = user?.user_type ?? null;
16
+ return {
17
+ userType,
18
+ isCustomer: userType === USER_TYPES.customer,
19
+ isRep: userType === USER_TYPES.rep,
20
+ isAdmin: userType === USER_TYPES.admin || userType === USER_TYPES.root_admin
21
+ };
22
+ }, [user?.user_type]);
23
+ }
24
+ //#endregion
7
25
  //#region ../../file-picker/api-client/src/client.ts
8
26
  function createFilePickerClient(config) {
9
27
  return {
@@ -47,6 +65,7 @@ function ShareablesScreen({ background, textColor, accentColor, padding, borderR
47
65
  const domainClient = useSdkClient();
48
66
  const { data: userData } = useCurrentUser();
49
67
  const { currentSlug, navigate } = useAppNavigation();
68
+ const { isCustomer } = useUserType();
50
69
  const { screen, detailId, action } = parseShareablesRoute(currentSlug);
51
70
  const handleNavigate = useCallback((subScreen, id) => {
52
71
  navigate(id ? `share/${subScreen}/${id}` : `share/${subScreen}`);
@@ -88,15 +107,17 @@ function ShareablesScreen({ background, textColor, accentColor, padding, borderR
88
107
  favoriteable_type: params.favoriteableType
89
108
  });
90
109
  },
91
- onDeletePlaylist: async (playlistId) => {
92
- const { playlists: playlistsApi } = await import("./src-DfVbSKm5.mjs").then((n) => n.t);
110
+ onDeletePlaylist: isCustomer ? void 0 : async (playlistId) => {
111
+ const { playlists: playlistsApi } = await import("./src-p8DA1dH0.mjs").then((n) => n.t);
93
112
  await playlistsApi.deletePlaylist(domainClient, playlistId);
94
- }
113
+ },
114
+ readOnly: isCustomer
95
115
  }), [
96
116
  userData,
97
117
  navigate,
98
118
  filePickerClient,
99
- domainClient
119
+ domainClient,
120
+ isCustomer
100
121
  ]);
101
122
  return /* @__PURE__ */ jsx("div", {
102
123
  ...divProps,
@@ -128,6 +149,6 @@ const shareablesScreenPropertySchema = {
128
149
  fields: []
129
150
  };
130
151
  //#endregion
131
- export { shareablesScreenPropertySchema as n, ShareablesScreen as t };
152
+ export { shareablesScreenPropertySchema as n, useUserType as r, ShareablesScreen as t };
132
153
 
133
- //# sourceMappingURL=ShareablesScreen-DBSG5bbX.mjs.map
154
+ //# sourceMappingURL=ShareablesScreen-BK0H5fb2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareablesScreen-BK0H5fb2.mjs","names":[],"sources":["../src/hooks/use-user-type.ts","../../../file-picker/api-client/src/client.ts","../src/screens/ShareablesScreen.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useFluidAuth } from \"./use-fluid-auth\";\nimport { USER_TYPES, type UserType } from \"../auth/types\";\n\nexport interface UseUserTypeResult {\n userType: UserType | null;\n isCustomer: boolean;\n isRep: boolean;\n isAdmin: boolean;\n}\n\n/**\n * Convenience hook for user-type checks in the portal SDK.\n */\nexport function useUserType(): UseUserTypeResult {\n const { user } = useFluidAuth();\n\n return useMemo(() => {\n const userType = user?.user_type ?? null;\n return {\n userType,\n isCustomer: userType === USER_TYPES.customer,\n isRep: userType === USER_TYPES.rep,\n isAdmin:\n userType === USER_TYPES.admin || userType === USER_TYPES.root_admin,\n };\n }, [user?.user_type]);\n}\n","import type { FetchClientInstance } from \"@fluid-app/api-client-core\";\nimport type { DamAssetCreateResponse } from \"@fluid-app/file-picker-core\";\n\nexport interface DamUploadStrategy {\n uploadFile(params: {\n file: File;\n name: string;\n description?: string;\n tags?: string[];\n onProgress?: (progress: number) => void;\n companyId?: number;\n }): Promise<DamAssetCreateResponse>;\n}\n\nexport interface FilePickerClientConfig {\n fetchClient: FetchClientInstance;\n uploadStrategy?: DamUploadStrategy;\n unsplashAccessKey?: string;\n proxyEndpoint?: string; // defaults to \"/api/proxy-url\"\n}\n\nexport interface FilePickerClient {\n fetchClient: FetchClientInstance;\n uploadStrategy?: DamUploadStrategy;\n unsplashAccessKey?: string;\n proxyEndpoint: string;\n}\n\nexport function createFilePickerClient(\n config: FilePickerClientConfig,\n): FilePickerClient {\n return {\n fetchClient: config.fetchClient,\n uploadStrategy: config.uploadStrategy,\n unsplashAccessKey: config.unsplashAccessKey,\n proxyEndpoint: config.proxyEndpoint ?? \"/api/proxy-url\",\n };\n}\n","import { useCallback, useMemo, type ComponentProps } from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n PaddingOptions,\n} from \"../types\";\nimport type { WidgetPropertySchema } from \"../registries/property-schema-types\";\nimport { ShareablesCoreProvider } from \"@fluid-app/shareables-core\";\nimport { ShareablesUIProvider, ShareablesApp } from \"@fluid-app/shareables-ui\";\nimport { createFilePickerClient } from \"@fluid-app/file-picker-api-client\";\nimport { useCurrentUser } from \"../hooks/use-current-user\";\nimport { useAppNavigation } from \"../shell/AppNavigationContext\";\nimport { useSdkClient } from \"../account/use-account-clients\";\nimport { useUserType } from \"../hooks/use-user-type\";\n\ntype ShareablesScreenProps = ComponentProps<\"div\"> & {\n background?: BackgroundValue;\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n};\n\n/**\n * Parse the current shareables sub-route from the full slug.\n *\n * System nav slugs are \"share/products\", \"share/media\", \"share/playlists\".\n * Detail pages append an ID: \"share/products/123\", \"share/media/456\".\n *\n * \"share/products\" → screen=\"products\", detailId=null\n * \"share/products/123\" → screen=\"products\", detailId=\"123\"\n * \"share/media/456\" → screen=\"media\", detailId=\"456\"\n * \"share/playlists\" → screen=\"playlists\", detailId=null\n * \"share/playlists/789\" → screen=\"playlists\", detailId=\"789\"\n * \"share/files\" → screen=\"files\", detailId=null\n * \"share\" → screen=null (default to products)\n */\nfunction parseShareablesRoute(currentSlug: string): {\n screen: string | null;\n detailId: string | null;\n action: string | null;\n} {\n // Strip the \"share\" prefix\n const slugWithoutPrefix = currentSlug.replace(/^share\\/?/, \"\");\n if (!slugWithoutPrefix) {\n return { screen: null, detailId: null, action: null };\n }\n\n const parts = slugWithoutPrefix.split(\"/\");\n const screen = parts[0] || null;\n const detailId = parts[1] || null;\n const action = parts[2] || null;\n return { screen, detailId, action };\n}\n\nexport function ShareablesScreen({\n /* eslint-disable @typescript-eslint/no-unused-vars -- destructured to exclude from divProps spread */\n background,\n textColor,\n accentColor,\n padding,\n borderRadius,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...divProps\n}: ShareablesScreenProps): React.JSX.Element {\n const domainClient = useSdkClient();\n const { data: userData } = useCurrentUser();\n const { currentSlug, navigate } = useAppNavigation();\n const { isCustomer } = useUserType();\n\n const { screen, detailId, action } = parseShareablesRoute(currentSlug);\n\n const handleNavigate = useCallback(\n (subScreen: string, id?: string) => {\n const path = id ? `share/${subScreen}/${id}` : `share/${subScreen}`;\n navigate(path);\n },\n [navigate],\n );\n\n const handleBack = useCallback(() => {\n if (detailId && screen) {\n // Navigate back to the listing for the current screen\n navigate(`share/${screen}`);\n } else {\n // Navigate to the default shareables screen\n navigate(\"share/products\");\n }\n }, [navigate, detailId, screen]);\n\n const coreConfig = useMemo(\n () => ({\n client: domainClient,\n user: userData ? { id: userData.id } : null,\n repContext: true,\n }),\n [domainClient, userData],\n );\n\n const filePickerClient = useMemo(\n () => createFilePickerClient({ fetchClient: domainClient }),\n [domainClient],\n );\n\n const uiConfig = useMemo(\n () => ({\n user: userData\n ? {\n id: userData.id,\n company: userData.company\n ? { logo_url: userData.company.logo_url }\n : null,\n }\n : undefined,\n affiliateId:\n (userData as { affiliate_id?: number } | undefined)?.affiliate_id ??\n null,\n basePath: \"\",\n navigate: (path: string) => {\n // Strip leading slash — cards generate paths like \"/share/product/123\"\n const cleanPath = path.replace(/^\\//, \"\");\n // Ensure share/ prefix — screen components pass relative paths like \"media/new\"\n const prefixed = cleanPath.startsWith(\"share/\")\n ? cleanPath\n : `share/${cleanPath}`;\n navigate(prefixed);\n },\n showToast: (opts: {\n title: string;\n type: \"success\" | \"error\" | \"warning\";\n }) => {\n console.warn(`[Shareables] ${opts.type}: ${opts.title}`);\n },\n filePickerClient,\n onToggleFavorite: async (params: {\n favoriteableId: number;\n favoriteableType: string;\n }) => {\n const affiliateId = (userData as { affiliate_id?: number } | undefined)\n ?.affiliate_id;\n if (!affiliateId) throw new Error(\"No affiliate ID\");\n return domainClient.post<{ is_favorited: boolean }>(\n `/user_companies/${affiliateId}/favorites/toggle.json`,\n {\n favoriteable_id: params.favoriteableId,\n favoriteable_type: params.favoriteableType,\n },\n );\n },\n onDeletePlaylist: isCustomer\n ? undefined\n : async (playlistId: number) => {\n const { playlists: playlistsApi } =\n await import(\"@fluid-app/shareables-api-client\");\n await playlistsApi.deletePlaylist(domainClient, playlistId);\n },\n readOnly: isCustomer,\n }),\n [userData, navigate, filePickerClient, domainClient, isCustomer],\n );\n\n return (\n <div {...divProps} className={`h-full ${divProps.className ?? \"\"}`}>\n <ShareablesCoreProvider config={coreConfig}>\n <ShareablesUIProvider config={uiConfig}>\n <ShareablesApp\n screen={screen}\n detailId={detailId}\n action={action}\n companyLogoUrl={userData?.company?.logo_url}\n countryCode={userData?.country?.iso}\n onNavigate={handleNavigate}\n onBack={handleBack}\n />\n </ShareablesUIProvider>\n </ShareablesCoreProvider>\n </div>\n );\n}\n\nexport const shareablesScreenPropertySchema: WidgetPropertySchema = {\n widgetType: \"ShareablesScreen\",\n displayName: \"Shareables Screen\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [],\n} as const satisfies WidgetPropertySchema;\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import "./FluidProvider-aDOk1vw3.mjs";
2
- import "./PointsWidget-Cc88UHqD.mjs";
1
+ import "./FluidProvider-CwkMUOoy.mjs";
2
+ import "./PointsWidget-CYesuDDG.mjs";
3
3
  import "./error-state-C9MqwdW7.mjs";
4
4
  import "./ScreenRenderer-DoVfmxCl.mjs";
5
5
  import "./WidgetInteractionContext-1AMQFvCN.mjs";
@@ -33,10 +33,10 @@ import "./TableWidget-Nkzz38xS.mjs";
33
33
  import "./ToDoWidget-D52-GT7f.mjs";
34
34
  import "./VideoWidget-4DRASBWA.mjs";
35
35
  import "./ScreenHeaderContext-NdrJ58Mg.mjs";
36
- import "./dist-CMGXkSgZ.mjs";
37
- import "./es-1KItbbYg.mjs";
38
- import "./dist-Cl4FsM3V.mjs";
39
- import "./src-nhqydD53.mjs";
40
- import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-DBSG5bbX.mjs";
36
+ import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-BK0H5fb2.mjs";
37
+ import "./dist-CkIGP8my.mjs";
38
+ import "./es-Dlib2eNY.mjs";
39
+ import "./dist-C9vpl_rR.mjs";
40
+ import "./src-BjmyVJoe.mjs";
41
41
  import "./sortable.esm-CzzU6kIR.mjs";
42
42
  export { ShareablesScreen, shareablesScreenPropertySchema };
@@ -1,10 +1,28 @@
1
1
  require("./chunk-9hOWP6kD.cjs");
2
- const require_use_account_clients = require("./use-account-clients-DJVDMbzf.cjs");
3
- const require_use_current_user = require("./use-current-user-B_BV-XL3.cjs");
4
- const require_AppNavigationContext = require("./AppNavigationContext-Agp0UkCQ.cjs");
5
- const require_src = require("./src-fXyI4AWk.cjs");
2
+ const require_FluidProvider = require("./FluidProvider-BSBLJp15.cjs");
3
+ const require_use_account_clients = require("./use-account-clients-62dZrh9E.cjs");
4
+ const require_use_current_user = require("./use-current-user-SFCzJt0q.cjs");
5
+ const require_AppNavigationContext = require("./AppNavigationContext-DnwdUAjn.cjs");
6
+ const require_src = require("./src-bzRRiTN4.cjs");
6
7
  let react = require("react");
7
8
  let react_jsx_runtime = require("react/jsx-runtime");
9
+ //#region src/hooks/use-user-type.ts
10
+ /**
11
+ * Convenience hook for user-type checks in the portal SDK.
12
+ */
13
+ function useUserType() {
14
+ const { user } = require_use_account_clients.useFluidAuth();
15
+ return (0, react.useMemo)(() => {
16
+ const userType = user?.user_type ?? null;
17
+ return {
18
+ userType,
19
+ isCustomer: userType === require_FluidProvider.USER_TYPES.customer,
20
+ isRep: userType === require_FluidProvider.USER_TYPES.rep,
21
+ isAdmin: userType === require_FluidProvider.USER_TYPES.admin || userType === require_FluidProvider.USER_TYPES.root_admin
22
+ };
23
+ }, [user?.user_type]);
24
+ }
25
+ //#endregion
8
26
  //#region ../../file-picker/api-client/src/client.ts
9
27
  function createFilePickerClient(config) {
10
28
  return {
@@ -48,6 +66,7 @@ function ShareablesScreen({ background, textColor, accentColor, padding, borderR
48
66
  const domainClient = require_use_account_clients.useSdkClient();
49
67
  const { data: userData } = require_use_current_user.useCurrentUser();
50
68
  const { currentSlug, navigate } = require_AppNavigationContext.useAppNavigation();
69
+ const { isCustomer } = useUserType();
51
70
  const { screen, detailId, action } = parseShareablesRoute(currentSlug);
52
71
  const handleNavigate = (0, react.useCallback)((subScreen, id) => {
53
72
  navigate(id ? `share/${subScreen}/${id}` : `share/${subScreen}`);
@@ -89,15 +108,17 @@ function ShareablesScreen({ background, textColor, accentColor, padding, borderR
89
108
  favoriteable_type: params.favoriteableType
90
109
  });
91
110
  },
92
- onDeletePlaylist: async (playlistId) => {
93
- const { playlists: playlistsApi } = await Promise.resolve().then(() => require("./src-Dzexc0vw.cjs")).then((n) => n.src_exports);
111
+ onDeletePlaylist: isCustomer ? void 0 : async (playlistId) => {
112
+ const { playlists: playlistsApi } = await Promise.resolve().then(() => require("./src-Dt66UB0B.cjs")).then((n) => n.src_exports);
94
113
  await playlistsApi.deletePlaylist(domainClient, playlistId);
95
- }
114
+ },
115
+ readOnly: isCustomer
96
116
  }), [
97
117
  userData,
98
118
  navigate,
99
119
  filePickerClient,
100
- domainClient
120
+ domainClient,
121
+ isCustomer
101
122
  ]);
102
123
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
103
124
  ...divProps,
@@ -141,5 +162,11 @@ Object.defineProperty(exports, "shareablesScreenPropertySchema", {
141
162
  return shareablesScreenPropertySchema;
142
163
  }
143
164
  });
165
+ Object.defineProperty(exports, "useUserType", {
166
+ enumerable: true,
167
+ get: function() {
168
+ return useUserType;
169
+ }
170
+ });
144
171
 
145
- //# sourceMappingURL=ShareablesScreen-DDcnZnRA.cjs.map
172
+ //# sourceMappingURL=ShareablesScreen-D0kIiW8S.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareablesScreen-D0kIiW8S.cjs","names":["useFluidAuth","USER_TYPES","useSdkClient","useCurrentUser","useAppNavigation","ShareablesCoreProvider","ShareablesUIProvider","ShareablesApp"],"sources":["../src/hooks/use-user-type.ts","../../../file-picker/api-client/src/client.ts","../src/screens/ShareablesScreen.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useFluidAuth } from \"./use-fluid-auth\";\nimport { USER_TYPES, type UserType } from \"../auth/types\";\n\nexport interface UseUserTypeResult {\n userType: UserType | null;\n isCustomer: boolean;\n isRep: boolean;\n isAdmin: boolean;\n}\n\n/**\n * Convenience hook for user-type checks in the portal SDK.\n */\nexport function useUserType(): UseUserTypeResult {\n const { user } = useFluidAuth();\n\n return useMemo(() => {\n const userType = user?.user_type ?? null;\n return {\n userType,\n isCustomer: userType === USER_TYPES.customer,\n isRep: userType === USER_TYPES.rep,\n isAdmin:\n userType === USER_TYPES.admin || userType === USER_TYPES.root_admin,\n };\n }, [user?.user_type]);\n}\n","import type { FetchClientInstance } from \"@fluid-app/api-client-core\";\nimport type { DamAssetCreateResponse } from \"@fluid-app/file-picker-core\";\n\nexport interface DamUploadStrategy {\n uploadFile(params: {\n file: File;\n name: string;\n description?: string;\n tags?: string[];\n onProgress?: (progress: number) => void;\n companyId?: number;\n }): Promise<DamAssetCreateResponse>;\n}\n\nexport interface FilePickerClientConfig {\n fetchClient: FetchClientInstance;\n uploadStrategy?: DamUploadStrategy;\n unsplashAccessKey?: string;\n proxyEndpoint?: string; // defaults to \"/api/proxy-url\"\n}\n\nexport interface FilePickerClient {\n fetchClient: FetchClientInstance;\n uploadStrategy?: DamUploadStrategy;\n unsplashAccessKey?: string;\n proxyEndpoint: string;\n}\n\nexport function createFilePickerClient(\n config: FilePickerClientConfig,\n): FilePickerClient {\n return {\n fetchClient: config.fetchClient,\n uploadStrategy: config.uploadStrategy,\n unsplashAccessKey: config.unsplashAccessKey,\n proxyEndpoint: config.proxyEndpoint ?? \"/api/proxy-url\",\n };\n}\n","import { useCallback, useMemo, type ComponentProps } from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n PaddingOptions,\n} from \"../types\";\nimport type { WidgetPropertySchema } from \"../registries/property-schema-types\";\nimport { ShareablesCoreProvider } from \"@fluid-app/shareables-core\";\nimport { ShareablesUIProvider, ShareablesApp } from \"@fluid-app/shareables-ui\";\nimport { createFilePickerClient } from \"@fluid-app/file-picker-api-client\";\nimport { useCurrentUser } from \"../hooks/use-current-user\";\nimport { useAppNavigation } from \"../shell/AppNavigationContext\";\nimport { useSdkClient } from \"../account/use-account-clients\";\nimport { useUserType } from \"../hooks/use-user-type\";\n\ntype ShareablesScreenProps = ComponentProps<\"div\"> & {\n background?: BackgroundValue;\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n};\n\n/**\n * Parse the current shareables sub-route from the full slug.\n *\n * System nav slugs are \"share/products\", \"share/media\", \"share/playlists\".\n * Detail pages append an ID: \"share/products/123\", \"share/media/456\".\n *\n * \"share/products\" → screen=\"products\", detailId=null\n * \"share/products/123\" → screen=\"products\", detailId=\"123\"\n * \"share/media/456\" → screen=\"media\", detailId=\"456\"\n * \"share/playlists\" → screen=\"playlists\", detailId=null\n * \"share/playlists/789\" → screen=\"playlists\", detailId=\"789\"\n * \"share/files\" → screen=\"files\", detailId=null\n * \"share\" → screen=null (default to products)\n */\nfunction parseShareablesRoute(currentSlug: string): {\n screen: string | null;\n detailId: string | null;\n action: string | null;\n} {\n // Strip the \"share\" prefix\n const slugWithoutPrefix = currentSlug.replace(/^share\\/?/, \"\");\n if (!slugWithoutPrefix) {\n return { screen: null, detailId: null, action: null };\n }\n\n const parts = slugWithoutPrefix.split(\"/\");\n const screen = parts[0] || null;\n const detailId = parts[1] || null;\n const action = parts[2] || null;\n return { screen, detailId, action };\n}\n\nexport function ShareablesScreen({\n /* eslint-disable @typescript-eslint/no-unused-vars -- destructured to exclude from divProps spread */\n background,\n textColor,\n accentColor,\n padding,\n borderRadius,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...divProps\n}: ShareablesScreenProps): React.JSX.Element {\n const domainClient = useSdkClient();\n const { data: userData } = useCurrentUser();\n const { currentSlug, navigate } = useAppNavigation();\n const { isCustomer } = useUserType();\n\n const { screen, detailId, action } = parseShareablesRoute(currentSlug);\n\n const handleNavigate = useCallback(\n (subScreen: string, id?: string) => {\n const path = id ? `share/${subScreen}/${id}` : `share/${subScreen}`;\n navigate(path);\n },\n [navigate],\n );\n\n const handleBack = useCallback(() => {\n if (detailId && screen) {\n // Navigate back to the listing for the current screen\n navigate(`share/${screen}`);\n } else {\n // Navigate to the default shareables screen\n navigate(\"share/products\");\n }\n }, [navigate, detailId, screen]);\n\n const coreConfig = useMemo(\n () => ({\n client: domainClient,\n user: userData ? { id: userData.id } : null,\n repContext: true,\n }),\n [domainClient, userData],\n );\n\n const filePickerClient = useMemo(\n () => createFilePickerClient({ fetchClient: domainClient }),\n [domainClient],\n );\n\n const uiConfig = useMemo(\n () => ({\n user: userData\n ? {\n id: userData.id,\n company: userData.company\n ? { logo_url: userData.company.logo_url }\n : null,\n }\n : undefined,\n affiliateId:\n (userData as { affiliate_id?: number } | undefined)?.affiliate_id ??\n null,\n basePath: \"\",\n navigate: (path: string) => {\n // Strip leading slash — cards generate paths like \"/share/product/123\"\n const cleanPath = path.replace(/^\\//, \"\");\n // Ensure share/ prefix — screen components pass relative paths like \"media/new\"\n const prefixed = cleanPath.startsWith(\"share/\")\n ? cleanPath\n : `share/${cleanPath}`;\n navigate(prefixed);\n },\n showToast: (opts: {\n title: string;\n type: \"success\" | \"error\" | \"warning\";\n }) => {\n console.warn(`[Shareables] ${opts.type}: ${opts.title}`);\n },\n filePickerClient,\n onToggleFavorite: async (params: {\n favoriteableId: number;\n favoriteableType: string;\n }) => {\n const affiliateId = (userData as { affiliate_id?: number } | undefined)\n ?.affiliate_id;\n if (!affiliateId) throw new Error(\"No affiliate ID\");\n return domainClient.post<{ is_favorited: boolean }>(\n `/user_companies/${affiliateId}/favorites/toggle.json`,\n {\n favoriteable_id: params.favoriteableId,\n favoriteable_type: params.favoriteableType,\n },\n );\n },\n onDeletePlaylist: isCustomer\n ? undefined\n : async (playlistId: number) => {\n const { playlists: playlistsApi } =\n await import(\"@fluid-app/shareables-api-client\");\n await playlistsApi.deletePlaylist(domainClient, playlistId);\n },\n readOnly: isCustomer,\n }),\n [userData, navigate, filePickerClient, domainClient, isCustomer],\n );\n\n return (\n <div {...divProps} className={`h-full ${divProps.className ?? \"\"}`}>\n <ShareablesCoreProvider config={coreConfig}>\n <ShareablesUIProvider config={uiConfig}>\n <ShareablesApp\n screen={screen}\n detailId={detailId}\n action={action}\n companyLogoUrl={userData?.company?.logo_url}\n countryCode={userData?.country?.iso}\n onNavigate={handleNavigate}\n onBack={handleBack}\n />\n </ShareablesUIProvider>\n </ShareablesCoreProvider>\n </div>\n );\n}\n\nexport const shareablesScreenPropertySchema: WidgetPropertySchema = {\n widgetType: \"ShareablesScreen\",\n displayName: \"Shareables Screen\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [],\n} as const satisfies WidgetPropertySchema;\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  require("./chunk-9hOWP6kD.cjs");
2
- require("./FluidProvider-BeQDNd2R.cjs");
3
- require("./PointsWidget-DISBtuAm.cjs");
2
+ require("./FluidProvider-BSBLJp15.cjs");
3
+ require("./PointsWidget-D8U2k-_A.cjs");
4
4
  require("./error-state-BDBF2JrB.cjs");
5
5
  require("./ScreenRenderer-D65AsKjr.cjs");
6
6
  require("./WidgetInteractionContext-GLPlhAfT.cjs");
@@ -34,11 +34,11 @@ require("./TableWidget-Duw_7iyh.cjs");
34
34
  require("./ToDoWidget-eGB9cfou.cjs");
35
35
  require("./VideoWidget-CNHJrY7I.cjs");
36
36
  require("./ScreenHeaderContext-wrJlkhgN.cjs");
37
- require("./dist-BbS_7TvS.cjs");
38
- require("./es-BSkb3AZk.cjs");
39
- require("./dist-B4Ke7bHH.cjs");
40
- require("./src-fXyI4AWk.cjs");
41
- const require_ShareablesScreen = require("./ShareablesScreen-DDcnZnRA.cjs");
37
+ const require_ShareablesScreen = require("./ShareablesScreen-D0kIiW8S.cjs");
38
+ require("./dist-thaj08s5.cjs");
39
+ require("./es-xQF-WIMq.cjs");
40
+ require("./dist-BK4mvUPm.cjs");
41
+ require("./src-bzRRiTN4.cjs");
42
42
  require("./dist-lO2OG0T5.cjs");
43
43
  exports.ShareablesScreen = require_ShareablesScreen.ShareablesScreen;
44
44
  exports.shareablesScreenPropertySchema = require_ShareablesScreen.shareablesScreenPropertySchema;
@@ -1,11 +1,11 @@
1
1
  import { n as __exportAll } from "./chunk-ByhMGyNw.mjs";
2
- import { n as useFluidContext } from "./FluidProvider-aDOk1vw3.mjs";
2
+ import { n as useFluidContext } from "./FluidProvider-CwkMUOoy.mjs";
3
3
  import { A as SelectContent, F as RadioGroupItem, I as Input, Kt as Breadcrumb, M as SelectTrigger, N as SelectValue, P as RadioGroup, Xt as BreadcrumbPage, Yt as BreadcrumbList, dn as Button, j as SelectItem, k as Select, qt as BreadcrumbItem, x as Skeleton, xt as Card } from "./src-77nf0QPD.mjs";
4
- import { i as useSdkClient, o as useFluidAuth } from "./use-account-clients-D3YbXh9Y.mjs";
4
+ import { i as useSdkClient, o as useFluidAuth } from "./use-account-clients-Cf_6sxeC.mjs";
5
5
  import { n as useScreenHeaderActions, r as useScreenHeaderBreadcrumbs } from "./ScreenHeaderContext-NdrJ58Mg.mjs";
6
- import { n as useCurrentUser } from "./use-current-user-DIkhY-Or.mjs";
7
- import { n as useAppNavigation } from "./AppNavigationContext-Du3Qq0yc.mjs";
8
- import { n as listProducts, t as getProduct } from "./products-DOO1TBcm.mjs";
6
+ import { n as useCurrentUser } from "./use-current-user-Bl9nPNFt.mjs";
7
+ import { n as useAppNavigation } from "./AppNavigationContext-BSnbFILQ.mjs";
8
+ import { n as listProducts, t as getProduct } from "./products-Dkwd_Bh0.mjs";
9
9
  import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
10
10
  import { useInfiniteQuery, useQuery } from "@tanstack/react-query";
11
11
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1760,4 +1760,4 @@ const shopScreenPropertySchema = {
1760
1760
  //#endregion
1761
1761
  export { ShopScreen_exports as n, shopScreenPropertySchema as r, ShopScreen as t };
1762
1762
 
1763
- //# sourceMappingURL=ShopScreen-5DkzkCmK.mjs.map
1763
+ //# sourceMappingURL=ShopScreen-B0Pr0CTu.mjs.map