@fluid-app/portal-sdk 0.1.182 → 0.1.183

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 (47) hide show
  1. package/dist/{FluidProvider-B1XBDYlq.cjs → FluidProvider-CX2WZMLJ.cjs} +2 -2
  2. package/dist/{FluidProvider-B1XBDYlq.cjs.map → FluidProvider-CX2WZMLJ.cjs.map} +1 -1
  3. package/dist/{FluidProvider-B15cV2Xo.mjs → FluidProvider-CxTAbzER.mjs} +2 -2
  4. package/dist/{FluidProvider-B15cV2Xo.mjs.map → FluidProvider-CxTAbzER.mjs.map} +1 -1
  5. package/dist/{MessagingScreen-DcAX3uhm.mjs → MessagingScreen-DGB7agVV.mjs} +2 -2
  6. package/dist/{MessagingScreen-DcAX3uhm.mjs.map → MessagingScreen-DGB7agVV.mjs.map} +1 -1
  7. package/dist/{MessagingScreen-DIwJdXze.cjs → MessagingScreen-R9yqOP_e.cjs} +2 -2
  8. package/dist/{MessagingScreen-BTtr7ziP.cjs → MessagingScreen-hdB0BzpO.cjs} +2 -2
  9. package/dist/{MessagingScreen-BTtr7ziP.cjs.map → MessagingScreen-hdB0BzpO.cjs.map} +1 -1
  10. package/dist/{PortalContentApiProvider--tsJ7o74.mjs → PortalContentApiProvider-C5BcaBSL.mjs} +147 -26
  11. package/dist/PortalContentApiProvider-C5BcaBSL.mjs.map +1 -0
  12. package/dist/{PortalContentApiProvider-DyC6LEke.cjs → PortalContentApiProvider-eSOgc4Nv.cjs} +147 -26
  13. package/dist/{PortalContentApiProvider-DyC6LEke.cjs.map → PortalContentApiProvider-eSOgc4Nv.cjs.map} +1 -1
  14. package/dist/{ProductsScreen-Qk1zKT-D.cjs → ProductsScreen-C2mx-086.cjs} +2 -2
  15. package/dist/{ProductsScreen-S45XRFan.mjs → ProductsScreen-CIT--Mnq.mjs} +2 -2
  16. package/dist/{ProductsScreen-BjpSL8H8.cjs → ProductsScreen-CJPwyXvT.cjs} +2 -2
  17. package/dist/{ProductsScreen-BjpSL8H8.cjs.map → ProductsScreen-CJPwyXvT.cjs.map} +1 -1
  18. package/dist/{ProductsScreen-C80r2yNT.mjs → ProductsScreen-P4n3OFln.mjs} +2 -2
  19. package/dist/{ProductsScreen-C80r2yNT.mjs.map → ProductsScreen-P4n3OFln.mjs.map} +1 -1
  20. package/dist/{ProfileScreen-D6iQX-sL.cjs → ProfileScreen-CpQ5GpTs.cjs} +2 -2
  21. package/dist/{ProfileScreen-D6iQX-sL.cjs.map → ProfileScreen-CpQ5GpTs.cjs.map} +1 -1
  22. package/dist/{ProfileScreen-CEwrC2f4.cjs → ProfileScreen-D0CUvLHq.cjs} +2 -2
  23. package/dist/{ProfileScreen-CBnQqqsI.mjs → ProfileScreen-DzhxfhqL.mjs} +2 -2
  24. package/dist/{ProfileScreen-CBnQqqsI.mjs.map → ProfileScreen-DzhxfhqL.mjs.map} +1 -1
  25. package/dist/{ShareablesScreen-DBkDODzX.mjs → ShareablesScreen-BII-fIRD.mjs} +27 -22
  26. package/dist/ShareablesScreen-BII-fIRD.mjs.map +1 -0
  27. package/dist/{ShareablesScreen-BBxez962.mjs → ShareablesScreen-BLNcb2M-.mjs} +2 -3
  28. package/dist/{ShareablesScreen-DplgNCYs.cjs → ShareablesScreen-CBrJ8Vzm.cjs} +27 -22
  29. package/dist/ShareablesScreen-CBrJ8Vzm.cjs.map +1 -0
  30. package/dist/{ShareablesScreen-38fg84um.cjs → ShareablesScreen-C_KC7Ey1.cjs} +2 -3
  31. package/dist/{ShopScreen-DQPEIpru.mjs → ShopScreen-1k9PZ8qQ.mjs} +2 -2
  32. package/dist/{ShopScreen-DQPEIpru.mjs.map → ShopScreen-1k9PZ8qQ.mjs.map} +1 -1
  33. package/dist/{ShopScreen-r2i_ELGi.cjs → ShopScreen-B9EmEprQ.cjs} +2 -2
  34. package/dist/{ShopScreen-Cka6dqGQ.cjs → ShopScreen-BkwsMZ6V.cjs} +2 -2
  35. package/dist/{ShopScreen-Cka6dqGQ.cjs.map → ShopScreen-BkwsMZ6V.cjs.map} +1 -1
  36. package/dist/index.cjs +17 -17
  37. package/dist/index.d.cts.map +1 -1
  38. package/dist/index.d.mts.map +1 -1
  39. package/dist/index.mjs +17 -17
  40. package/dist/{portal_tenant_content-DSG9lqzg.mjs → portal_tenant_content-DgM42X08.mjs} +35 -2
  41. package/dist/{portal_tenant_content-DSG9lqzg.mjs.map → portal_tenant_content-DgM42X08.mjs.map} +1 -1
  42. package/dist/{portal_tenant_content-ONX_dSEw.cjs → portal_tenant_content-Dwmo8XZ-.cjs} +52 -1
  43. package/dist/{portal_tenant_content-ONX_dSEw.cjs.map → portal_tenant_content-Dwmo8XZ-.cjs.map} +1 -1
  44. package/package.json +15 -15
  45. package/dist/PortalContentApiProvider--tsJ7o74.mjs.map +0 -1
  46. package/dist/ShareablesScreen-DBkDODzX.mjs.map +0 -1
  47. package/dist/ShareablesScreen-DplgNCYs.cjs.map +0 -1
@@ -1,9 +1,7 @@
1
1
  import { n as usePortalTenantClient } from "./PortalTenantClientProvider-4ZmY6hac.mjs";
2
- import { _ as fluidToast } from "./src-BZbWkXOU.mjs";
3
2
  import { t as useAccount } from "./use-account-B16Tor2Q.mjs";
4
- import { t as useStore } from "./use-store-BnHhQDYo.mjs";
5
3
  import { n as useAppNavigation } from "./AppNavigationContext-BW3lSpfT.mjs";
6
- import { a as ShareablesApp, n as usePortalContentContext, o as ShareablesUIProvider, r as toggleFavorite, s as ShareablesCoreProvider, t as PortalContentApiProvider } from "./PortalContentApiProvider--tsJ7o74.mjs";
4
+ import { a as ShareablesApp, n as usePortalContentContext, o as ShareablesUIProvider, r as toggleFavorite, s as ShareablesCoreProvider, t as PortalContentApiProvider } from "./PortalContentApiProvider-C5BcaBSL.mjs";
7
5
  import { t as PortalProductsApiProvider } from "./PortalProductsApiProvider-BALswRao.mjs";
8
6
  import { t as PORTAL_MYSITE_KEYS } from "./use-mysite-portal-BV-BP3CE.mjs";
9
7
  import { useCallback, useMemo } from "react";
@@ -50,10 +48,9 @@ function ShareablesScreenContent() {
50
48
  const shareablesCtx = usePortalContentContext();
51
49
  const { productsApi: portalProductsApi } = shareablesCtx;
52
50
  const { data: account } = useAccount();
53
- const { data: store } = useStore();
54
51
  const { currentSlug, navigate } = useAppNavigation();
55
52
  const isCustomer = account?.member_type === "customer";
56
- const portalTenantClient = usePortalTenantClient();
53
+ const client = usePortalTenantClient();
57
54
  const queryClient = useQueryClient();
58
55
  const fetchProducts = useCallback(async (search, cursor, limit) => {
59
56
  if (search) return portalProductsApi.searchProducts(search, {
@@ -87,50 +84,58 @@ function ShareablesScreenContent() {
87
84
  config: useMemo(() => ({
88
85
  user: account ? {
89
86
  id: account.id,
90
- company: { logo_url: store?.logo_url ?? null }
87
+ company: null
91
88
  } : void 0,
89
+ affiliateId: null,
92
90
  basePath: "",
93
91
  navigate: (path) => {
94
92
  const cleanPath = path.replace(/^\//, "");
95
93
  navigate(cleanPath.startsWith("share/") ? cleanPath : `share/${cleanPath}`);
96
94
  },
97
95
  showToast: (opts) => {
98
- fluidToast({
99
- title: opts.title,
100
- type: opts.type
101
- });
102
- if (opts.error) console.error("[Shareables]", opts.error);
96
+ console.warn(`[Shareables] ${opts.type}: ${opts.title}`);
103
97
  },
104
98
  filePickerApi: shareablesCtx.filePickerApi,
105
99
  onToggleFavorite: async (params) => {
106
- const result = await toggleFavorite(portalTenantClient, params.favoriteableId, params.favoriteableType);
107
- queryClient.invalidateQueries({ queryKey: PORTAL_MYSITE_KEYS.favorites() });
108
- return result;
109
- },
110
- onMySiteShare: async (params) => {
111
- const result = await toggleFavorite(portalTenantClient, params.relateable_id, params.relateable_type);
100
+ const result = await toggleFavorite(client, params.favoriteableId, params.favoriteableType);
112
101
  queryClient.invalidateQueries({ queryKey: PORTAL_MYSITE_KEYS.favorites() });
113
102
  return result;
114
103
  },
115
104
  onDeletePlaylist: isCustomer ? void 0 : async (playlistId) => {
116
105
  await shareablesCtx.playlistsAdapter.deletePlaylist(playlistId);
117
106
  },
118
- readOnly: isCustomer
107
+ mediaProductsApi: isCustomer ? void 0 : shareablesCtx.mediaProductsAdapter,
108
+ searchProducts: isCustomer ? void 0 : async (query) => {
109
+ return ((await portalProductsApi.searchProducts(query)).products ?? []).map((p) => ({
110
+ id: p.id ?? 0,
111
+ name: p.name ?? p.title ?? "Untitled",
112
+ image_url: p.image_url ?? null,
113
+ price: p.price ?? null
114
+ }));
115
+ },
116
+ readOnly: isCustomer,
117
+ uploadThumbnail: isCustomer ? void 0 : async (blob, filename) => {
118
+ const formData = new FormData();
119
+ formData.append("asset[name]", filename);
120
+ formData.append("asset[file]", blob, filename);
121
+ return (await client.requestWithFormData("/api/content/dam/assets", formData)).asset?.default_variant_url ?? "";
122
+ }
119
123
  }), [
120
124
  account,
121
- store,
122
125
  navigate,
123
126
  shareablesCtx.filePickerApi,
124
127
  isCustomer,
125
128
  shareablesCtx.playlistsAdapter,
126
- portalTenantClient,
129
+ shareablesCtx.mediaProductsAdapter,
130
+ portalProductsApi,
131
+ client,
127
132
  queryClient
128
133
  ]),
129
134
  children: /* @__PURE__ */ jsx(ShareablesApp, {
130
135
  screen,
131
136
  detailId,
132
137
  action,
133
- companyLogoUrl: store?.logo_url ?? void 0,
138
+ companyLogoUrl: void 0,
134
139
  countryCode: void 0,
135
140
  fetchProducts,
136
141
  fetchProduct,
@@ -152,4 +157,4 @@ const shareablesScreenPropertySchema = {
152
157
  //#endregion
153
158
  export { shareablesScreenPropertySchema as n, ShareablesScreen as t };
154
159
 
155
- //# sourceMappingURL=ShareablesScreen-DBkDODzX.mjs.map
160
+ //# sourceMappingURL=ShareablesScreen-BII-fIRD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareablesScreen-BII-fIRD.mjs","names":[],"sources":["../src/screens/ShareablesScreen.tsx"],"sourcesContent":["import { useCallback, useMemo, type ComponentProps } from \"react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { PORTAL_MYSITE_KEYS } from \"@fluid-app/mysite-ui/portal/hooks/use-mysite-portal\";\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 { useAppNavigation } from \"../shell/AppNavigationContext\";\nimport { useAccount } from \"../hooks/use-account\";\nimport { PortalProductsApiProvider } from \"../products/PortalProductsApiProvider\";\nimport {\n PortalContentApiProvider,\n usePortalContentContext,\n} from \"../content/PortalContentApiProvider\";\nimport { toggleFavorite } from \"../adapters/content-api-adapter\";\nimport { usePortalTenantClient } from \"../providers/PortalTenantClientProvider\";\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 return (\n <div {...divProps} className={`h-full ${divProps.className ?? \"\"}`}>\n <PortalProductsApiProvider>\n <PortalContentApiProvider>\n <ShareablesScreenContent />\n </PortalContentApiProvider>\n </PortalProductsApiProvider>\n </div>\n );\n}\n\n/** Inner component rendered inside providers so hooks can access context. */\nfunction ShareablesScreenContent(): React.JSX.Element {\n const shareablesCtx = usePortalContentContext();\n const { productsApi: portalProductsApi } = shareablesCtx;\n const { data: account } = useAccount();\n const { currentSlug, navigate } = useAppNavigation();\n const isCustomer = account?.member_type === \"customer\";\n const client = usePortalTenantClient();\n const queryClient = useQueryClient();\n\n const fetchProducts = useCallback(\n async (search: string, cursor?: string, limit?: number) => {\n if (search) {\n return portalProductsApi.searchProducts(search, { cursor, limit });\n }\n return portalProductsApi.listProducts({ cursor, limit });\n },\n [portalProductsApi],\n );\n\n const fetchProduct = useCallback(\n async (id: string | number) => portalProductsApi.getProduct(id),\n [portalProductsApi],\n );\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(`share/${screen}`);\n } else {\n navigate(\"share/products\");\n }\n }, [navigate, detailId, screen]);\n\n const coreConfig = useMemo(\n () => ({\n user: account ? { id: account.id } : null,\n repContext: true,\n }),\n [account],\n );\n\n const uiConfig = useMemo(\n () => ({\n user: account\n ? {\n id: account.id,\n company: null, // TODO(portal-tenant): company branding not available from /api/account\n }\n : undefined,\n // TODO(portal-tenant): affiliate_id not available from /api/account\n affiliateId: null,\n basePath: \"\",\n navigate: (path: string) => {\n const cleanPath = path.replace(/^\\//, \"\");\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 filePickerApi: shareablesCtx.filePickerApi,\n onToggleFavorite: async (params: {\n favoriteableId: number;\n favoriteableType: string;\n }) => {\n const result = await toggleFavorite(\n client,\n params.favoriteableId,\n params.favoriteableType,\n );\n void queryClient.invalidateQueries({\n queryKey: PORTAL_MYSITE_KEYS.favorites(),\n });\n return result;\n },\n onDeletePlaylist: isCustomer\n ? undefined\n : async (playlistId: number) => {\n await shareablesCtx.playlistsAdapter.deletePlaylist(playlistId);\n },\n mediaProductsApi: isCustomer\n ? undefined\n : shareablesCtx.mediaProductsAdapter,\n searchProducts: isCustomer\n ? undefined\n : async (query: string) => {\n const result = await portalProductsApi.searchProducts(query);\n return (result.products ?? []).map(\n (p: {\n id?: number;\n title?: string;\n name?: string;\n image_url?: string | null;\n price?: string | null;\n }) => ({\n id: p.id ?? 0,\n name: p.name ?? p.title ?? \"Untitled\",\n image_url: p.image_url ?? null,\n price: p.price ?? null,\n }),\n );\n },\n readOnly: isCustomer,\n uploadThumbnail: isCustomer\n ? undefined\n : async (blob: Blob, filename: string) => {\n const formData = new FormData();\n formData.append(\"asset[name]\", filename);\n formData.append(\"asset[file]\", blob, filename);\n const response = await client.requestWithFormData<{\n asset?: { default_variant_url?: string | null };\n }>(\"/api/content/dam/assets\", formData);\n return response.asset?.default_variant_url ?? \"\";\n },\n }),\n [\n account,\n navigate,\n shareablesCtx.filePickerApi,\n isCustomer,\n shareablesCtx.playlistsAdapter,\n shareablesCtx.mediaProductsAdapter,\n portalProductsApi,\n client,\n queryClient,\n ],\n );\n\n return (\n <ShareablesCoreProvider config={coreConfig}>\n <ShareablesUIProvider config={uiConfig}>\n <ShareablesApp\n screen={screen}\n detailId={detailId}\n action={action}\n companyLogoUrl={undefined}\n countryCode={undefined}\n fetchProducts={fetchProducts}\n fetchProduct={fetchProduct}\n onNavigate={handleNavigate}\n onBack={handleBack}\n />\n </ShareablesUIProvider>\n </ShareablesCoreProvider>\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,15 +1,14 @@
1
1
  import "./es-I9usCQT-.mjs";
2
2
  import "./account-api-context-BIZ_aibJ.mjs";
3
- import "./store-api-context-C1lXT_3d.mjs";
4
3
  import "./mysite-api-context-bXtZ8Gbm.mjs";
5
4
  import "./src-BZbWkXOU.mjs";
6
5
  import "./ScreenHeaderContext-FYyYk97y.mjs";
7
6
  import "./dist-BETEuYfn.mjs";
8
7
  import "./SearchSort-CFbJNJDL.mjs";
9
8
  import "./dist-DiBoTZfl.mjs";
10
- import "./PortalContentApiProvider--tsJ7o74.mjs";
9
+ import "./PortalContentApiProvider-C5BcaBSL.mjs";
11
10
  import "./sortable.esm-CJLSD-Ce.mjs";
12
11
  import "./PortalProductsApiProvider-BALswRao.mjs";
13
12
  import "./use-mysite-portal-BV-BP3CE.mjs";
14
- import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-DBkDODzX.mjs";
13
+ import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-BII-fIRD.mjs";
15
14
  export { ShareablesScreen, shareablesScreenPropertySchema };
@@ -1,10 +1,8 @@
1
1
  require("./chunk-9hOWP6kD.cjs");
2
2
  const require_PortalTenantClientProvider = require("./PortalTenantClientProvider-CVv-4rQ9.cjs");
3
- const require_src = require("./src-CvtwdzKm.cjs");
4
3
  const require_use_account = require("./use-account-BWdcuCCW.cjs");
5
- const require_use_store = require("./use-store-DvtLtZ3f.cjs");
6
4
  const require_AppNavigationContext = require("./AppNavigationContext-BKszSW5R.cjs");
7
- const require_PortalContentApiProvider = require("./PortalContentApiProvider-DyC6LEke.cjs");
5
+ const require_PortalContentApiProvider = require("./PortalContentApiProvider-eSOgc4Nv.cjs");
8
6
  const require_PortalProductsApiProvider = require("./PortalProductsApiProvider-Duj-EjQj.cjs");
9
7
  const require_use_mysite_portal = require("./use-mysite-portal-DzDYRU0u.cjs");
10
8
  let react = require("react");
@@ -51,10 +49,9 @@ function ShareablesScreenContent() {
51
49
  const shareablesCtx = require_PortalContentApiProvider.usePortalContentContext();
52
50
  const { productsApi: portalProductsApi } = shareablesCtx;
53
51
  const { data: account } = require_use_account.useAccount();
54
- const { data: store } = require_use_store.useStore();
55
52
  const { currentSlug, navigate } = require_AppNavigationContext.useAppNavigation();
56
53
  const isCustomer = account?.member_type === "customer";
57
- const portalTenantClient = require_PortalTenantClientProvider.usePortalTenantClient();
54
+ const client = require_PortalTenantClientProvider.usePortalTenantClient();
58
55
  const queryClient = (0, _tanstack_react_query.useQueryClient)();
59
56
  const fetchProducts = (0, react.useCallback)(async (search, cursor, limit) => {
60
57
  if (search) return portalProductsApi.searchProducts(search, {
@@ -88,50 +85,58 @@ function ShareablesScreenContent() {
88
85
  config: (0, react.useMemo)(() => ({
89
86
  user: account ? {
90
87
  id: account.id,
91
- company: { logo_url: store?.logo_url ?? null }
88
+ company: null
92
89
  } : void 0,
90
+ affiliateId: null,
93
91
  basePath: "",
94
92
  navigate: (path) => {
95
93
  const cleanPath = path.replace(/^\//, "");
96
94
  navigate(cleanPath.startsWith("share/") ? cleanPath : `share/${cleanPath}`);
97
95
  },
98
96
  showToast: (opts) => {
99
- require_src.fluidToast({
100
- title: opts.title,
101
- type: opts.type
102
- });
103
- if (opts.error) console.error("[Shareables]", opts.error);
97
+ console.warn(`[Shareables] ${opts.type}: ${opts.title}`);
104
98
  },
105
99
  filePickerApi: shareablesCtx.filePickerApi,
106
100
  onToggleFavorite: async (params) => {
107
- const result = await require_PortalContentApiProvider.toggleFavorite(portalTenantClient, params.favoriteableId, params.favoriteableType);
108
- queryClient.invalidateQueries({ queryKey: require_use_mysite_portal.PORTAL_MYSITE_KEYS.favorites() });
109
- return result;
110
- },
111
- onMySiteShare: async (params) => {
112
- const result = await require_PortalContentApiProvider.toggleFavorite(portalTenantClient, params.relateable_id, params.relateable_type);
101
+ const result = await require_PortalContentApiProvider.toggleFavorite(client, params.favoriteableId, params.favoriteableType);
113
102
  queryClient.invalidateQueries({ queryKey: require_use_mysite_portal.PORTAL_MYSITE_KEYS.favorites() });
114
103
  return result;
115
104
  },
116
105
  onDeletePlaylist: isCustomer ? void 0 : async (playlistId) => {
117
106
  await shareablesCtx.playlistsAdapter.deletePlaylist(playlistId);
118
107
  },
119
- readOnly: isCustomer
108
+ mediaProductsApi: isCustomer ? void 0 : shareablesCtx.mediaProductsAdapter,
109
+ searchProducts: isCustomer ? void 0 : async (query) => {
110
+ return ((await portalProductsApi.searchProducts(query)).products ?? []).map((p) => ({
111
+ id: p.id ?? 0,
112
+ name: p.name ?? p.title ?? "Untitled",
113
+ image_url: p.image_url ?? null,
114
+ price: p.price ?? null
115
+ }));
116
+ },
117
+ readOnly: isCustomer,
118
+ uploadThumbnail: isCustomer ? void 0 : async (blob, filename) => {
119
+ const formData = new FormData();
120
+ formData.append("asset[name]", filename);
121
+ formData.append("asset[file]", blob, filename);
122
+ return (await client.requestWithFormData("/api/content/dam/assets", formData)).asset?.default_variant_url ?? "";
123
+ }
120
124
  }), [
121
125
  account,
122
- store,
123
126
  navigate,
124
127
  shareablesCtx.filePickerApi,
125
128
  isCustomer,
126
129
  shareablesCtx.playlistsAdapter,
127
- portalTenantClient,
130
+ shareablesCtx.mediaProductsAdapter,
131
+ portalProductsApi,
132
+ client,
128
133
  queryClient
129
134
  ]),
130
135
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PortalContentApiProvider.ShareablesApp, {
131
136
  screen,
132
137
  detailId,
133
138
  action,
134
- companyLogoUrl: store?.logo_url ?? void 0,
139
+ companyLogoUrl: void 0,
135
140
  countryCode: void 0,
136
141
  fetchProducts,
137
142
  fetchProduct,
@@ -164,4 +169,4 @@ Object.defineProperty(exports, "shareablesScreenPropertySchema", {
164
169
  }
165
170
  });
166
171
 
167
- //# sourceMappingURL=ShareablesScreen-DplgNCYs.cjs.map
172
+ //# sourceMappingURL=ShareablesScreen-CBrJ8Vzm.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareablesScreen-CBrJ8Vzm.cjs","names":["PortalProductsApiProvider","PortalContentApiProvider","usePortalContentContext","useAccount","useAppNavigation","usePortalTenantClient","ShareablesCoreProvider","ShareablesUIProvider","toggleFavorite","PORTAL_MYSITE_KEYS","ShareablesApp"],"sources":["../src/screens/ShareablesScreen.tsx"],"sourcesContent":["import { useCallback, useMemo, type ComponentProps } from \"react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { PORTAL_MYSITE_KEYS } from \"@fluid-app/mysite-ui/portal/hooks/use-mysite-portal\";\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 { useAppNavigation } from \"../shell/AppNavigationContext\";\nimport { useAccount } from \"../hooks/use-account\";\nimport { PortalProductsApiProvider } from \"../products/PortalProductsApiProvider\";\nimport {\n PortalContentApiProvider,\n usePortalContentContext,\n} from \"../content/PortalContentApiProvider\";\nimport { toggleFavorite } from \"../adapters/content-api-adapter\";\nimport { usePortalTenantClient } from \"../providers/PortalTenantClientProvider\";\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 return (\n <div {...divProps} className={`h-full ${divProps.className ?? \"\"}`}>\n <PortalProductsApiProvider>\n <PortalContentApiProvider>\n <ShareablesScreenContent />\n </PortalContentApiProvider>\n </PortalProductsApiProvider>\n </div>\n );\n}\n\n/** Inner component rendered inside providers so hooks can access context. */\nfunction ShareablesScreenContent(): React.JSX.Element {\n const shareablesCtx = usePortalContentContext();\n const { productsApi: portalProductsApi } = shareablesCtx;\n const { data: account } = useAccount();\n const { currentSlug, navigate } = useAppNavigation();\n const isCustomer = account?.member_type === \"customer\";\n const client = usePortalTenantClient();\n const queryClient = useQueryClient();\n\n const fetchProducts = useCallback(\n async (search: string, cursor?: string, limit?: number) => {\n if (search) {\n return portalProductsApi.searchProducts(search, { cursor, limit });\n }\n return portalProductsApi.listProducts({ cursor, limit });\n },\n [portalProductsApi],\n );\n\n const fetchProduct = useCallback(\n async (id: string | number) => portalProductsApi.getProduct(id),\n [portalProductsApi],\n );\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(`share/${screen}`);\n } else {\n navigate(\"share/products\");\n }\n }, [navigate, detailId, screen]);\n\n const coreConfig = useMemo(\n () => ({\n user: account ? { id: account.id } : null,\n repContext: true,\n }),\n [account],\n );\n\n const uiConfig = useMemo(\n () => ({\n user: account\n ? {\n id: account.id,\n company: null, // TODO(portal-tenant): company branding not available from /api/account\n }\n : undefined,\n // TODO(portal-tenant): affiliate_id not available from /api/account\n affiliateId: null,\n basePath: \"\",\n navigate: (path: string) => {\n const cleanPath = path.replace(/^\\//, \"\");\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 filePickerApi: shareablesCtx.filePickerApi,\n onToggleFavorite: async (params: {\n favoriteableId: number;\n favoriteableType: string;\n }) => {\n const result = await toggleFavorite(\n client,\n params.favoriteableId,\n params.favoriteableType,\n );\n void queryClient.invalidateQueries({\n queryKey: PORTAL_MYSITE_KEYS.favorites(),\n });\n return result;\n },\n onDeletePlaylist: isCustomer\n ? undefined\n : async (playlistId: number) => {\n await shareablesCtx.playlistsAdapter.deletePlaylist(playlistId);\n },\n mediaProductsApi: isCustomer\n ? undefined\n : shareablesCtx.mediaProductsAdapter,\n searchProducts: isCustomer\n ? undefined\n : async (query: string) => {\n const result = await portalProductsApi.searchProducts(query);\n return (result.products ?? []).map(\n (p: {\n id?: number;\n title?: string;\n name?: string;\n image_url?: string | null;\n price?: string | null;\n }) => ({\n id: p.id ?? 0,\n name: p.name ?? p.title ?? \"Untitled\",\n image_url: p.image_url ?? null,\n price: p.price ?? null,\n }),\n );\n },\n readOnly: isCustomer,\n uploadThumbnail: isCustomer\n ? undefined\n : async (blob: Blob, filename: string) => {\n const formData = new FormData();\n formData.append(\"asset[name]\", filename);\n formData.append(\"asset[file]\", blob, filename);\n const response = await client.requestWithFormData<{\n asset?: { default_variant_url?: string | null };\n }>(\"/api/content/dam/assets\", formData);\n return response.asset?.default_variant_url ?? \"\";\n },\n }),\n [\n account,\n navigate,\n shareablesCtx.filePickerApi,\n isCustomer,\n shareablesCtx.playlistsAdapter,\n shareablesCtx.mediaProductsAdapter,\n portalProductsApi,\n client,\n queryClient,\n ],\n );\n\n return (\n <ShareablesCoreProvider config={coreConfig}>\n <ShareablesUIProvider config={uiConfig}>\n <ShareablesApp\n screen={screen}\n detailId={detailId}\n action={action}\n companyLogoUrl={undefined}\n countryCode={undefined}\n fetchProducts={fetchProducts}\n fetchProduct={fetchProduct}\n onNavigate={handleNavigate}\n onBack={handleBack}\n />\n </ShareablesUIProvider>\n </ShareablesCoreProvider>\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":";;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,SAAS,qBAAqB,aAI5B;CAEA,MAAM,oBAAoB,YAAY,QAAQ,aAAa,GAAG;AAC9D,KAAI,CAAC,kBACH,QAAO;EAAE,QAAQ;EAAM,UAAU;EAAM,QAAQ;EAAM;CAGvD,MAAM,QAAQ,kBAAkB,MAAM,IAAI;AAI1C,QAAO;EAAE,QAHM,MAAM,MAAM;EAGV,UAFA,MAAM,MAAM;EAEF,QADZ,MAAM,MAAM;EACQ;;AAGrC,SAAgB,iBAAiB,EAE/B,YACA,WACA,aACA,SACA,cAEA,GAAG,YACwC;AAC3C,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,GAAI;EAAU,WAAW,UAAU,SAAS,aAAa;YAC5D,iBAAA,GAAA,kBAAA,KAACA,kCAAAA,2BAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,iCAAAA,0BAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,yBAAD,EAA2B,CAAA,EACF,CAAA,EACD,CAAA;EACxB,CAAA;;;AAKV,SAAS,0BAA6C;CACpD,MAAM,gBAAgBC,iCAAAA,yBAAyB;CAC/C,MAAM,EAAE,aAAa,sBAAsB;CAC3C,MAAM,EAAE,MAAM,YAAYC,oBAAAA,YAAY;CACtC,MAAM,EAAE,aAAa,aAAaC,6BAAAA,kBAAkB;CACpD,MAAM,aAAa,SAAS,gBAAgB;CAC5C,MAAM,SAASC,mCAAAA,uBAAuB;CACtC,MAAM,eAAA,GAAA,sBAAA,iBAA8B;CAEpC,MAAM,iBAAA,GAAA,MAAA,aACJ,OAAO,QAAgB,QAAiB,UAAmB;AACzD,MAAI,OACF,QAAO,kBAAkB,eAAe,QAAQ;GAAE;GAAQ;GAAO,CAAC;AAEpE,SAAO,kBAAkB,aAAa;GAAE;GAAQ;GAAO,CAAC;IAE1D,CAAC,kBAAkB,CACpB;CAED,MAAM,gBAAA,GAAA,MAAA,aACJ,OAAO,OAAwB,kBAAkB,WAAW,GAAG,EAC/D,CAAC,kBAAkB,CACpB;CAED,MAAM,EAAE,QAAQ,UAAU,WAAW,qBAAqB,YAAY;CAEtE,MAAM,kBAAA,GAAA,MAAA,cACH,WAAmB,OAAgB;AAElC,WADa,KAAK,SAAS,UAAU,GAAG,OAAO,SAAS,YAC1C;IAEhB,CAAC,SAAS,CACX;CAED,MAAM,cAAA,GAAA,MAAA,mBAA+B;AACnC,MAAI,YAAY,OACd,UAAS,SAAS,SAAS;MAE3B,UAAS,iBAAiB;IAE3B;EAAC;EAAU;EAAU;EAAO,CAAC;AAsGhC,QACE,iBAAA,GAAA,kBAAA,KAACC,iCAAAA,wBAAD;EAAwB,SAAA,GAAA,MAAA,gBApGjB;GACL,MAAM,UAAU,EAAE,IAAI,QAAQ,IAAI,GAAG;GACrC,YAAY;GACb,GACD,CAAC,QAAQ,CACV;YAgGG,iBAAA,GAAA,kBAAA,KAACC,iCAAAA,sBAAD;GAAsB,SAAA,GAAA,MAAA,gBA7FjB;IACL,MAAM,UACF;KACE,IAAI,QAAQ;KACZ,SAAS;KACV,GACD,KAAA;IAEJ,aAAa;IACb,UAAU;IACV,WAAW,SAAiB;KAC1B,MAAM,YAAY,KAAK,QAAQ,OAAO,GAAG;AAIzC,cAHiB,UAAU,WAAW,SAAS,GAC3C,YACA,SAAS,YACK;;IAEpB,YAAY,SAGN;AACJ,aAAQ,KAAK,gBAAgB,KAAK,KAAK,IAAI,KAAK,QAAQ;;IAE1D,eAAe,cAAc;IAC7B,kBAAkB,OAAO,WAGnB;KACJ,MAAM,SAAS,MAAMC,iCAAAA,eACnB,QACA,OAAO,gBACP,OAAO,iBACR;AACI,iBAAY,kBAAkB,EACjC,UAAUC,0BAAAA,mBAAmB,WAAW,EACzC,CAAC;AACF,YAAO;;IAET,kBAAkB,aACd,KAAA,IACA,OAAO,eAAuB;AAC5B,WAAM,cAAc,iBAAiB,eAAe,WAAW;;IAErE,kBAAkB,aACd,KAAA,IACA,cAAc;IAClB,gBAAgB,aACZ,KAAA,IACA,OAAO,UAAkB;AAEvB,cADe,MAAM,kBAAkB,eAAe,MAAM,EAC7C,YAAY,EAAE,EAAE,KAC5B,OAMM;MACL,IAAI,EAAE,MAAM;MACZ,MAAM,EAAE,QAAQ,EAAE,SAAS;MAC3B,WAAW,EAAE,aAAa;MAC1B,OAAO,EAAE,SAAS;MACnB,EACF;;IAEP,UAAU;IACV,iBAAiB,aACb,KAAA,IACA,OAAO,MAAY,aAAqB;KACtC,MAAM,WAAW,IAAI,UAAU;AAC/B,cAAS,OAAO,eAAe,SAAS;AACxC,cAAS,OAAO,eAAe,MAAM,SAAS;AAI9C,aAHiB,MAAM,OAAO,oBAE3B,2BAA2B,SAAS,EACvB,OAAO,uBAAuB;;IAErD,GACD;IACE;IACA;IACA,cAAc;IACd;IACA,cAAc;IACd,cAAc;IACd;IACA;IACA;IACD,CACF;aAKK,iBAAA,GAAA,kBAAA,KAACC,iCAAAA,eAAD;IACU;IACE;IACF;IACR,gBAAgB,KAAA;IAChB,aAAa,KAAA;IACE;IACD;IACd,YAAY;IACZ,QAAQ;IACR,CAAA;GACmB,CAAA;EACA,CAAA;;AAI7B,MAAa,iCAAuD;CAClE,YAAY;CACZ,aAAa;CACb,YAAY,CAAC;EAAE,IAAI;EAAW,OAAO;EAAW,CAAC;CACjD,QAAQ,EAAE;CACX"}
@@ -1,6 +1,5 @@
1
1
  require("./chunk-9hOWP6kD.cjs");
2
2
  require("./account-api-context-DZP9IiGg.cjs");
3
- require("./store-api-context-D1gZn22Z.cjs");
4
3
  require("./mysite-api-context-CilZcDS4.cjs");
5
4
  require("./src-CvtwdzKm.cjs");
6
5
  require("./ScreenHeaderContext-B06T9svT.cjs");
@@ -8,10 +7,10 @@ require("./dist-BRT-FAUb.cjs");
8
7
  require("./es-Dr47illR.cjs");
9
8
  require("./SearchSort-BgHSdG1l.cjs");
10
9
  require("./dist-DbiSKQz4.cjs");
11
- require("./PortalContentApiProvider-DyC6LEke.cjs");
10
+ require("./PortalContentApiProvider-eSOgc4Nv.cjs");
12
11
  require("./dist-DWs3-WOI.cjs");
13
12
  require("./PortalProductsApiProvider-Duj-EjQj.cjs");
14
13
  require("./use-mysite-portal-DzDYRU0u.cjs");
15
- const require_ShareablesScreen = require("./ShareablesScreen-DplgNCYs.cjs");
14
+ const require_ShareablesScreen = require("./ShareablesScreen-CBrJ8Vzm.cjs");
16
15
  exports.ShareablesScreen = require_ShareablesScreen.ShareablesScreen;
17
16
  exports.shareablesScreenPropertySchema = require_ShareablesScreen.shareablesScreenPropertySchema;
@@ -1,5 +1,5 @@
1
1
  import { r as __exportAll } from "./es-I9usCQT-.mjs";
2
- import { n as useFluidContext } from "./FluidProvider-B15cV2Xo.mjs";
2
+ import { n as useFluidContext } from "./FluidProvider-CxTAbzER.mjs";
3
3
  import { A as SelectTrigger, D as Select, G as DropdownMenuContent, J as DropdownMenuRadioGroup, Jt as BreadcrumbLink, Kt as Breadcrumb, M as RadioGroup, N as RadioGroupItem, O as SelectContent, W as DropdownMenu, X as DropdownMenuSeparator, Xt as BreadcrumbPage, Y as DropdownMenuRadioItem, Yt as BreadcrumbList, Zt as BreadcrumbSeparator, b as Skeleton, et as DropdownMenuTrigger, j as SelectValue, k as SelectItem, q as DropdownMenuLabel, qt as BreadcrumbItem, un as Button, xt as Card } from "./src-BZbWkXOU.mjs";
4
4
  import { n as useScreenHeaderActions, r as useScreenHeaderBreadcrumbs } from "./ScreenHeaderContext-FYyYk97y.mjs";
5
5
  import { t as useStore } from "./use-store-BnHhQDYo.mjs";
@@ -1148,4 +1148,4 @@ function ProductBreadcrumb({ productId }) {
1148
1148
  //#endregion
1149
1149
  export { ShopScreen_exports as n, shopScreenPropertySchema as r, ShopScreen as t };
1150
1150
 
1151
- //# sourceMappingURL=ShopScreen-DQPEIpru.mjs.map
1151
+ //# sourceMappingURL=ShopScreen-1k9PZ8qQ.mjs.map