@fluid-app/portal-sdk 0.1.34 → 0.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AppNavigationContext-v_y8OYHo.mjs → AppNavigationContext-CcRZ_LqM.mjs} +1 -1
- package/dist/{AppNavigationContext-v_y8OYHo.mjs.map → AppNavigationContext-CcRZ_LqM.mjs.map} +1 -1
- package/dist/{AppNavigationContext-0Ij6tU2H.cjs → AppNavigationContext-Dt02ymnf.cjs} +1 -1
- package/dist/{AppNavigationContext-0Ij6tU2H.cjs.map → AppNavigationContext-Dt02ymnf.cjs.map} +1 -1
- package/dist/{ContactsScreen-Ck_ngCS3.cjs → ContactsScreen-BZSNw0uV.cjs} +2 -2
- package/dist/{ContactsScreen-Ck_ngCS3.cjs.map → ContactsScreen-BZSNw0uV.cjs.map} +1 -1
- package/dist/{ContactsScreen-BmggZSZU.cjs → ContactsScreen-XI4f7ix6.cjs} +2 -2
- package/dist/{ContactsScreen-DXstI3Jj.mjs → ContactsScreen-eDQWCAQK.mjs} +2 -2
- package/dist/{ContactsScreen-DXstI3Jj.mjs.map → ContactsScreen-eDQWCAQK.mjs.map} +1 -1
- package/dist/{CustomersScreen-CeIiZKrq.cjs → CustomersScreen-B5k86dq0.cjs} +1 -1
- package/dist/{CustomersScreen-CeIiZKrq.cjs.map → CustomersScreen-B5k86dq0.cjs.map} +1 -1
- package/dist/{CustomersScreen-DEFY3mRL.mjs → CustomersScreen-DiXO5M5q.mjs} +1 -1
- package/dist/{CustomersScreen-DEFY3mRL.mjs.map → CustomersScreen-DiXO5M5q.mjs.map} +1 -1
- package/dist/{MessagingScreen-Kij03Kn-.mjs → MessagingScreen-CXA3RIlu2.mjs} +2 -2
- package/dist/{MessagingScreen-CUkIqREX.mjs → MessagingScreen-Df6yRSZ5.mjs} +2 -2
- package/dist/{MessagingScreen-CUkIqREX.mjs.map → MessagingScreen-Df6yRSZ5.mjs.map} +1 -1
- package/dist/{MessagingScreen-BZWaW9H_.cjs → MessagingScreen-Dp3t7kpp.cjs} +2 -2
- package/dist/{MessagingScreen-CbBgOUSs.cjs → MessagingScreen-onjDz5S1.cjs} +2 -2
- package/dist/{MessagingScreen-CbBgOUSs.cjs.map → MessagingScreen-onjDz5S1.cjs.map} +1 -1
- package/dist/{OrdersScreen-BEIE6mCd.cjs → OrdersScreen-BeUKNA_f.cjs} +5 -5
- package/dist/{OrdersScreen-BEIE6mCd.cjs.map → OrdersScreen-BeUKNA_f.cjs.map} +1 -1
- package/dist/{OrdersScreen-DrvVSd4b.cjs → OrdersScreen-DJFlTTTO.cjs} +2 -2
- package/dist/{OrdersScreen-CBxsKlnU.mjs → OrdersScreen-DTF-zAqR.mjs} +5 -5
- package/dist/{OrdersScreen-CBxsKlnU.mjs.map → OrdersScreen-DTF-zAqR.mjs.map} +1 -1
- package/dist/{ProductsScreen-CoHFvcO_.mjs → ProductsScreen-CNz_p26B.mjs} +3 -3
- package/dist/{ProductsScreen-DVxAFERc.mjs → ProductsScreen-CtGow3-U.mjs} +7 -7
- package/dist/ProductsScreen-CtGow3-U.mjs.map +1 -0
- package/dist/{ProductsScreen-D_crd0ir.cjs → ProductsScreen-CzbRJMF4.cjs} +7 -7
- package/dist/ProductsScreen-CzbRJMF4.cjs.map +1 -0
- package/dist/{ProductsScreen-Dzq3KP63.cjs → ProductsScreen-UgEr2Y6M.cjs} +3 -3
- package/dist/{ProfileScreen-B1_m1WId.cjs → ProfileScreen-CNOAZaoe.cjs} +1 -1
- package/dist/{ProfileScreen-BACkWuAC.cjs → ProfileScreen-CzARNtFJ.cjs} +5 -4
- package/dist/{ProfileScreen-BACkWuAC.cjs.map → ProfileScreen-CzARNtFJ.cjs.map} +1 -1
- package/dist/{ProfileScreen-Cn4iihgD.mjs → ProfileScreen-DCFj7ETG.mjs} +3 -2
- package/dist/{ProfileScreen-Cn4iihgD.mjs.map → ProfileScreen-DCFj7ETG.mjs.map} +1 -1
- package/dist/{ShareablesScreen-BhrhYh4W.cjs → ShareablesScreen-DSJ7x0Ww.cjs} +8 -8
- package/dist/ShareablesScreen-DSJ7x0Ww.cjs.map +1 -0
- package/dist/{ShareablesScreen-D588qo6a.mjs → ShareablesScreen-Dofp37E4.mjs} +3 -3
- package/dist/{ShareablesScreen-6fpWI08O.cjs → ShareablesScreen-cpwboVjB.cjs} +3 -3
- package/dist/{ShareablesScreen-BEFG54-I.mjs → ShareablesScreen-w3DGRfIr.mjs} +8 -8
- package/dist/ShareablesScreen-w3DGRfIr.mjs.map +1 -0
- package/dist/{ShopScreen-Drg27OZM.mjs → ShopScreen-BlyzHYeU.mjs} +6 -4
- package/dist/{ShopScreen-Drg27OZM.mjs.map → ShopScreen-BlyzHYeU.mjs.map} +1 -1
- package/dist/{ShopScreen-B7mMrj2I.cjs → ShopScreen-ByjnSNho.cjs} +6 -4
- package/dist/ShopScreen-ByjnSNho.cjs.map +1 -0
- package/dist/{ShopScreen-B3EgfJsG.cjs → ShopScreen-vbGhD5GJ.cjs} +1 -1
- package/dist/{SubscriptionsScreen-DsHjhOII.cjs → SubscriptionsScreen-BNjDelpe.cjs} +2 -2
- package/dist/{SubscriptionsScreen-DMFug2Kk.cjs → SubscriptionsScreen-DawiAb7q.cjs} +5 -5
- package/dist/{SubscriptionsScreen-DMFug2Kk.cjs.map → SubscriptionsScreen-DawiAb7q.cjs.map} +1 -1
- package/dist/{SubscriptionsScreen-DtcFH3sB.mjs → SubscriptionsScreen-tUrUZ3VC.mjs} +5 -5
- package/dist/{SubscriptionsScreen-DtcFH3sB.mjs.map → SubscriptionsScreen-tUrUZ3VC.mjs.map} +1 -1
- package/dist/customers-BHw3-Lg-.mjs +19 -0
- package/dist/customers-BHw3-Lg-.mjs.map +1 -0
- package/dist/customers-DIn-CxMl.cjs +30 -0
- package/dist/customers-DIn-CxMl.cjs.map +1 -0
- package/dist/{es-DZKcJZKh.mjs → es-BPF1dsEO.mjs} +1 -1
- package/dist/{es-DZKcJZKh.mjs.map → es-BPF1dsEO.mjs.map} +1 -1
- package/dist/{es-B1uNuoqD.cjs → es-DfGWLS4J.cjs} +1 -1
- package/dist/{es-B1uNuoqD.cjs.map → es-DfGWLS4J.cjs.map} +1 -1
- package/dist/index.cjs +32 -32
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +32 -32
- package/dist/index.mjs.map +1 -1
- package/dist/{src-BHiCoWU5.cjs → src-B7JarYAL.cjs} +1 -1
- package/dist/{src-BHiCoWU5.cjs.map → src-B7JarYAL.cjs.map} +1 -1
- package/dist/{src-J8sXTG9i.mjs → src-C2NjWMLg.mjs} +1 -1
- package/dist/{src-J8sXTG9i.mjs.map → src-C2NjWMLg.mjs.map} +1 -1
- package/dist/{src-C1qfvUE4.cjs → src-CsjWsZwA.cjs} +2 -2
- package/dist/{src-C1qfvUE4.cjs.map → src-CsjWsZwA.cjs.map} +1 -1
- package/dist/{src-D7GSa3rY.mjs → src-rgyT4GpO.mjs} +2 -2
- package/dist/{src-D7GSa3rY.mjs.map → src-rgyT4GpO.mjs.map} +1 -1
- package/dist/{use-account-clients-ak24jQa5.mjs → use-account-clients-DAQe3cFz.mjs} +2 -18
- package/dist/use-account-clients-DAQe3cFz.mjs.map +1 -0
- package/dist/{use-account-clients-D7BxTeLW.cjs → use-account-clients-T32HqoLD.cjs} +1 -29
- package/dist/use-account-clients-T32HqoLD.cjs.map +1 -0
- package/dist/{use-customer-account-BnnxuHea.mjs → use-customer-account-BV3IWOWw.mjs} +3 -2
- package/dist/{use-customer-account-BnnxuHea.mjs.map → use-customer-account-BV3IWOWw.mjs.map} +1 -1
- package/dist/{use-customer-account-KDDX2Irm.cjs → use-customer-account-C1oG0PQ5.cjs} +4 -3
- package/dist/{use-customer-account-KDDX2Irm.cjs.map → use-customer-account-C1oG0PQ5.cjs.map} +1 -1
- package/package.json +13 -13
- package/dist/ProductsScreen-DVxAFERc.mjs.map +0 -1
- package/dist/ProductsScreen-D_crd0ir.cjs.map +0 -1
- package/dist/ShareablesScreen-BEFG54-I.mjs.map +0 -1
- package/dist/ShareablesScreen-BhrhYh4W.cjs.map +0 -1
- package/dist/ShopScreen-B7mMrj2I.cjs.map +0 -1
- package/dist/use-account-clients-D7BxTeLW.cjs.map +0 -1
- package/dist/use-account-clients-ak24jQa5.mjs.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
require("./chunk-9hOWP6kD.cjs");
|
|
2
|
-
const require_FluidProvider = require("./FluidProvider-BXxRdatZ.cjs");
|
|
3
2
|
const require_products = require("./products-Q7fqnjYK.cjs");
|
|
4
|
-
const
|
|
5
|
-
const
|
|
3
|
+
const require_use_account_clients = require("./use-account-clients-T32HqoLD.cjs");
|
|
4
|
+
const require_AppNavigationContext = require("./AppNavigationContext-Dt02ymnf.cjs");
|
|
5
|
+
const require_src = require("./src-CsjWsZwA.cjs");
|
|
6
6
|
let react = require("react");
|
|
7
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
8
|
//#region ../../file-picker/api-client/src/client.ts
|
|
@@ -43,7 +43,7 @@ function parseShareablesRoute(currentSlug) {
|
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
function ShareablesScreen({ background, textColor, accentColor, padding, borderRadius, ...divProps }) {
|
|
46
|
-
const
|
|
46
|
+
const domainClient = require_use_account_clients.useSdkClient();
|
|
47
47
|
const { data: userData } = require_products.useCurrentUser();
|
|
48
48
|
const { currentSlug, navigate } = require_AppNavigationContext.useAppNavigation();
|
|
49
49
|
const { screen, detailId } = parseShareablesRoute(currentSlug);
|
|
@@ -59,10 +59,10 @@ function ShareablesScreen({ background, textColor, accentColor, padding, borderR
|
|
|
59
59
|
screen
|
|
60
60
|
]);
|
|
61
61
|
const coreConfig = (0, react.useMemo)(() => ({
|
|
62
|
-
client:
|
|
62
|
+
client: domainClient,
|
|
63
63
|
user: userData ? { id: userData.id } : null
|
|
64
|
-
}), [
|
|
65
|
-
const filePickerClient = (0, react.useMemo)(() => createFilePickerClient({ fetchClient:
|
|
64
|
+
}), [domainClient, userData]);
|
|
65
|
+
const filePickerClient = (0, react.useMemo)(() => createFilePickerClient({ fetchClient: domainClient }), [domainClient]);
|
|
66
66
|
const uiConfig = (0, react.useMemo)(() => ({
|
|
67
67
|
user: userData ? {
|
|
68
68
|
id: userData.id,
|
|
@@ -124,4 +124,4 @@ Object.defineProperty(exports, "shareablesScreenPropertySchema", {
|
|
|
124
124
|
}
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
-
//# sourceMappingURL=ShareablesScreen-
|
|
127
|
+
//# sourceMappingURL=ShareablesScreen-DSJ7x0Ww.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShareablesScreen-DSJ7x0Ww.cjs","names":["useSdkClient","useCurrentUser","useAppNavigation","ShareablesCoreProvider","ShareablesUIProvider","ShareablesApp"],"sources":["../../../file-picker/api-client/src/client.ts","../src/screens/ShareablesScreen.tsx"],"sourcesContent":["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\";\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} {\n // Strip the \"share\" prefix\n const slugWithoutPrefix = currentSlug.replace(/^share\\/?/, \"\");\n if (!slugWithoutPrefix) {\n return { screen: null, detailId: null };\n }\n\n const parts = slugWithoutPrefix.split(\"/\");\n const screen = parts[0] || null;\n const detailId = parts[1] || null;\n return { screen, detailId };\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\n const { screen, detailId } = 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 }),\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 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 }),\n [userData, navigate, filePickerClient],\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 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":";;;;;;;;AA4BA,SAAgB,uBACd,QACkB;AAClB,QAAO;EACL,aAAa,OAAO;EACpB,gBAAgB,OAAO;EACvB,mBAAmB,OAAO;EAC1B,eAAe,OAAO,iBAAiB;EACxC;;;;;;;;;;;;;;;;;;ACCH,SAAS,qBAAqB,aAG5B;CAEA,MAAM,oBAAoB,YAAY,QAAQ,aAAa,GAAG;AAC9D,KAAI,CAAC,kBACH,QAAO;EAAE,QAAQ;EAAM,UAAU;EAAM;CAGzC,MAAM,QAAQ,kBAAkB,MAAM,IAAI;AAG1C,QAAO;EAAE,QAFM,MAAM,MAAM;EAEV,UADA,MAAM,MAAM;EACF;;AAG7B,SAAgB,iBAAiB,EAE/B,YACA,WACA,aACA,SACA,cAEA,GAAG,YACwC;CAC3C,MAAM,eAAeA,4BAAAA,cAAc;CACnC,MAAM,EAAE,MAAM,aAAaC,iBAAAA,gBAAgB;CAC3C,MAAM,EAAE,aAAa,aAAaC,6BAAAA,kBAAkB;CAEpD,MAAM,EAAE,QAAQ,aAAa,qBAAqB,YAAY;CAE9D,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,OAEd,UAAS,SAAS,SAAS;MAG3B,UAAS,iBAAiB;IAE3B;EAAC;EAAU;EAAU;EAAO,CAAC;CAEhC,MAAM,cAAA,GAAA,MAAA,gBACG;EACL,QAAQ;EACR,MAAM,WAAW,EAAE,IAAI,SAAS,IAAI,GAAG;EACxC,GACD,CAAC,cAAc,SAAS,CACzB;CAED,MAAM,oBAAA,GAAA,MAAA,eACE,uBAAuB,EAAE,aAAa,cAAc,CAAC,EAC3D,CAAC,aAAa,CACf;CAED,MAAM,YAAA,GAAA,MAAA,gBACG;EACL,MAAM,WACF;GACE,IAAI,SAAS;GACb,SAAS,SAAS,UACd,EAAE,UAAU,SAAS,QAAQ,UAAU,GACvC;GACL,GACD,KAAA;EACJ,UAAU;EACV,WAAW,SAAiB;GAE1B,MAAM,YAAY,KAAK,QAAQ,OAAO,GAAG;AAKzC,YAHiB,UAAU,WAAW,SAAS,GAC3C,YACA,SAAS,YACK;;EAEpB,YAAY,SAGN;AACJ,WAAQ,KAAK,gBAAgB,KAAK,KAAK,IAAI,KAAK,QAAQ;;EAE1D;EACD,GACD;EAAC;EAAU;EAAU;EAAiB,CACvC;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,GAAI;EAAU,WAAW,UAAU,SAAS,aAAa;YAC5D,iBAAA,GAAA,kBAAA,KAACC,YAAAA,wBAAD;GAAwB,QAAQ;aAC9B,iBAAA,GAAA,kBAAA,KAACC,YAAAA,sBAAD;IAAsB,QAAQ;cAC5B,iBAAA,GAAA,kBAAA,KAACC,YAAAA,eAAD;KACU;KACE;KACV,gBAAgB,UAAU,SAAS;KACnC,aAAa,UAAU,SAAS;KAChC,YAAY;KACZ,QAAQ;KACR,CAAA;IACmB,CAAA;GACA,CAAA;EACrB,CAAA;;AAIV,MAAa,iCAAuD;CAClE,YAAY;CACZ,aAAa;CACb,YAAY,CAAC;EAAE,IAAI;EAAW,OAAO;EAAW,CAAC;CACjD,QAAQ,EAAE;CACX"}
|
|
@@ -26,7 +26,7 @@ import "./SpacerWidget-DXXnYNIX.mjs";
|
|
|
26
26
|
import "./TableWidget-DCiqxLv5.mjs";
|
|
27
27
|
import "./ToDoWidget-CmJIUKr0.mjs";
|
|
28
28
|
import "./VideoWidget-D6aWKmRN.mjs";
|
|
29
|
-
import "./es-
|
|
30
|
-
import "./src-
|
|
31
|
-
import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-
|
|
29
|
+
import "./es-BPF1dsEO.mjs";
|
|
30
|
+
import "./src-rgyT4GpO.mjs";
|
|
31
|
+
import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-w3DGRfIr.mjs";
|
|
32
32
|
export { ShareablesScreen, shareablesScreenPropertySchema };
|
|
@@ -27,8 +27,8 @@ require("./SpacerWidget-DyZ49XpL.cjs");
|
|
|
27
27
|
require("./TableWidget-CCEwDiby.cjs");
|
|
28
28
|
require("./ToDoWidget-CrZ9xJV1.cjs");
|
|
29
29
|
require("./VideoWidget-BJrnmHCe.cjs");
|
|
30
|
-
require("./es-
|
|
31
|
-
require("./src-
|
|
32
|
-
const require_ShareablesScreen = require("./ShareablesScreen-
|
|
30
|
+
require("./es-DfGWLS4J.cjs");
|
|
31
|
+
require("./src-CsjWsZwA.cjs");
|
|
32
|
+
const require_ShareablesScreen = require("./ShareablesScreen-DSJ7x0Ww.cjs");
|
|
33
33
|
exports.ShareablesScreen = require_ShareablesScreen.ShareablesScreen;
|
|
34
34
|
exports.shareablesScreenPropertySchema = require_ShareablesScreen.shareablesScreenPropertySchema;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as useFluidContext } from "./FluidProvider-CWC6LA9W.mjs";
|
|
2
1
|
import { i as useCurrentUser } from "./products-CBjo08FD.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { i as useSdkClient } from "./use-account-clients-DAQe3cFz.mjs";
|
|
3
|
+
import { n as useAppNavigation } from "./AppNavigationContext-CcRZ_LqM.mjs";
|
|
4
|
+
import { i as ShareablesCoreProvider, n as ShareablesApp, r as ShareablesUIProvider } from "./src-rgyT4GpO.mjs";
|
|
5
5
|
import { useCallback, useMemo } from "react";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
7
7
|
//#region ../../file-picker/api-client/src/client.ts
|
|
@@ -42,7 +42,7 @@ function parseShareablesRoute(currentSlug) {
|
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
function ShareablesScreen({ background, textColor, accentColor, padding, borderRadius, ...divProps }) {
|
|
45
|
-
const
|
|
45
|
+
const domainClient = useSdkClient();
|
|
46
46
|
const { data: userData } = useCurrentUser();
|
|
47
47
|
const { currentSlug, navigate } = useAppNavigation();
|
|
48
48
|
const { screen, detailId } = parseShareablesRoute(currentSlug);
|
|
@@ -58,10 +58,10 @@ function ShareablesScreen({ background, textColor, accentColor, padding, borderR
|
|
|
58
58
|
screen
|
|
59
59
|
]);
|
|
60
60
|
const coreConfig = useMemo(() => ({
|
|
61
|
-
client:
|
|
61
|
+
client: domainClient,
|
|
62
62
|
user: userData ? { id: userData.id } : null
|
|
63
|
-
}), [
|
|
64
|
-
const filePickerClient = useMemo(() => createFilePickerClient({ fetchClient:
|
|
63
|
+
}), [domainClient, userData]);
|
|
64
|
+
const filePickerClient = useMemo(() => createFilePickerClient({ fetchClient: domainClient }), [domainClient]);
|
|
65
65
|
const uiConfig = useMemo(() => ({
|
|
66
66
|
user: userData ? {
|
|
67
67
|
id: userData.id,
|
|
@@ -112,4 +112,4 @@ const shareablesScreenPropertySchema = {
|
|
|
112
112
|
//#endregion
|
|
113
113
|
export { shareablesScreenPropertySchema as n, ShareablesScreen as t };
|
|
114
114
|
|
|
115
|
-
//# sourceMappingURL=ShareablesScreen-
|
|
115
|
+
//# sourceMappingURL=ShareablesScreen-w3DGRfIr.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShareablesScreen-w3DGRfIr.mjs","names":[],"sources":["../../../file-picker/api-client/src/client.ts","../src/screens/ShareablesScreen.tsx"],"sourcesContent":["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\";\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} {\n // Strip the \"share\" prefix\n const slugWithoutPrefix = currentSlug.replace(/^share\\/?/, \"\");\n if (!slugWithoutPrefix) {\n return { screen: null, detailId: null };\n }\n\n const parts = slugWithoutPrefix.split(\"/\");\n const screen = parts[0] || null;\n const detailId = parts[1] || null;\n return { screen, detailId };\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\n const { screen, detailId } = 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 }),\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 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 }),\n [userData, navigate, filePickerClient],\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 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":";;;;;;;AA4BA,SAAgB,uBACd,QACkB;AAClB,QAAO;EACL,aAAa,OAAO;EACpB,gBAAgB,OAAO;EACvB,mBAAmB,OAAO;EAC1B,eAAe,OAAO,iBAAiB;EACxC;;;;;;;;;;;;;;;;;;ACCH,SAAS,qBAAqB,aAG5B;CAEA,MAAM,oBAAoB,YAAY,QAAQ,aAAa,GAAG;AAC9D,KAAI,CAAC,kBACH,QAAO;EAAE,QAAQ;EAAM,UAAU;EAAM;CAGzC,MAAM,QAAQ,kBAAkB,MAAM,IAAI;AAG1C,QAAO;EAAE,QAFM,MAAM,MAAM;EAEV,UADA,MAAM,MAAM;EACF;;AAG7B,SAAgB,iBAAiB,EAE/B,YACA,WACA,aACA,SACA,cAEA,GAAG,YACwC;CAC3C,MAAM,eAAe,cAAc;CACnC,MAAM,EAAE,MAAM,aAAa,gBAAgB;CAC3C,MAAM,EAAE,aAAa,aAAa,kBAAkB;CAEpD,MAAM,EAAE,QAAQ,aAAa,qBAAqB,YAAY;CAE9D,MAAM,iBAAiB,aACpB,WAAmB,OAAgB;AAElC,WADa,KAAK,SAAS,UAAU,GAAG,OAAO,SAAS,YAC1C;IAEhB,CAAC,SAAS,CACX;CAED,MAAM,aAAa,kBAAkB;AACnC,MAAI,YAAY,OAEd,UAAS,SAAS,SAAS;MAG3B,UAAS,iBAAiB;IAE3B;EAAC;EAAU;EAAU;EAAO,CAAC;CAEhC,MAAM,aAAa,eACV;EACL,QAAQ;EACR,MAAM,WAAW,EAAE,IAAI,SAAS,IAAI,GAAG;EACxC,GACD,CAAC,cAAc,SAAS,CACzB;CAED,MAAM,mBAAmB,cACjB,uBAAuB,EAAE,aAAa,cAAc,CAAC,EAC3D,CAAC,aAAa,CACf;CAED,MAAM,WAAW,eACR;EACL,MAAM,WACF;GACE,IAAI,SAAS;GACb,SAAS,SAAS,UACd,EAAE,UAAU,SAAS,QAAQ,UAAU,GACvC;GACL,GACD,KAAA;EACJ,UAAU;EACV,WAAW,SAAiB;GAE1B,MAAM,YAAY,KAAK,QAAQ,OAAO,GAAG;AAKzC,YAHiB,UAAU,WAAW,SAAS,GAC3C,YACA,SAAS,YACK;;EAEpB,YAAY,SAGN;AACJ,WAAQ,KAAK,gBAAgB,KAAK,KAAK,IAAI,KAAK,QAAQ;;EAE1D;EACD,GACD;EAAC;EAAU;EAAU;EAAiB,CACvC;AAED,QACE,oBAAC,OAAD;EAAK,GAAI;EAAU,WAAW,UAAU,SAAS,aAAa;YAC5D,oBAAC,wBAAD;GAAwB,QAAQ;aAC9B,oBAAC,sBAAD;IAAsB,QAAQ;cAC5B,oBAAC,eAAD;KACU;KACE;KACV,gBAAgB,UAAU,SAAS;KACnC,aAAa,UAAU,SAAS;KAChC,YAAY;KACZ,QAAQ;KACR,CAAA;IACmB,CAAA;GACA,CAAA;EACrB,CAAA;;AAIV,MAAa,iCAAuD;CAClE,YAAY;CACZ,aAAa;CACb,YAAY,CAAC;EAAE,IAAI;EAAW,OAAO;EAAW,CAAC;CACjD,QAAQ,EAAE;CACX"}
|
|
@@ -2,7 +2,8 @@ import { n as __exportAll } from "./chunk-ByhMGyNw.mjs";
|
|
|
2
2
|
import { n as useFluidContext } from "./FluidProvider-CWC6LA9W.mjs";
|
|
3
3
|
import { C as SelectContent, D as RadioGroup, E as SelectValue, O as RadioGroupItem, S as Select, T as SelectTrigger, Yt as Button, b as Skeleton, dt as Card, k as Input, w as SelectItem } from "./src-S_xL86wk.mjs";
|
|
4
4
|
import { i as useCurrentUser, n as listProducts, t as getProduct } from "./products-CBjo08FD.mjs";
|
|
5
|
-
import {
|
|
5
|
+
import { i as useSdkClient } from "./use-account-clients-DAQe3cFz.mjs";
|
|
6
|
+
import { n as useAppNavigation } from "./AppNavigationContext-CcRZ_LqM.mjs";
|
|
6
7
|
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
7
8
|
import { useInfiniteQuery, useQuery } from "@tanstack/react-query";
|
|
8
9
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1553,7 +1554,8 @@ var ShopScreen_exports = /* @__PURE__ */ __exportAll({
|
|
|
1553
1554
|
shopScreenPropertySchema: () => shopScreenPropertySchema
|
|
1554
1555
|
});
|
|
1555
1556
|
function ShopScreen({ background, textColor, accentColor, padding, borderRadius, ...divProps }) {
|
|
1556
|
-
const { config
|
|
1557
|
+
const { config } = useFluidContext();
|
|
1558
|
+
const domainClient = useSdkClient();
|
|
1557
1559
|
const { data: userData } = useCurrentUser();
|
|
1558
1560
|
const { currentSlug, navigate } = useAppNavigation();
|
|
1559
1561
|
const countryCode = config.countryIso ?? userData?.country?.iso ?? "US";
|
|
@@ -1562,7 +1564,7 @@ function ShopScreen({ background, textColor, accentColor, padding, borderRadius,
|
|
|
1562
1564
|
...divProps,
|
|
1563
1565
|
className: `h-full ${divProps.className ?? ""}`,
|
|
1564
1566
|
children: /* @__PURE__ */ jsx(ProductsCoreProvider, {
|
|
1565
|
-
client:
|
|
1567
|
+
client: domainClient,
|
|
1566
1568
|
children: /* @__PURE__ */ jsx(ShopApp, {
|
|
1567
1569
|
countryCode,
|
|
1568
1570
|
companyLogoUrl: userData?.company?.logo_url,
|
|
@@ -1585,4 +1587,4 @@ const shopScreenPropertySchema = {
|
|
|
1585
1587
|
//#endregion
|
|
1586
1588
|
export { ShopScreen_exports as n, shopScreenPropertySchema as r, ShopScreen as t };
|
|
1587
1589
|
|
|
1588
|
-
//# sourceMappingURL=ShopScreen-
|
|
1590
|
+
//# sourceMappingURL=ShopScreen-BlyzHYeU.mjs.map
|