@fluid-app/portal-sdk 0.1.237 → 0.1.239
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/{CalendarWidget-BaGML5Xh.mjs → CalendarWidget-BXxNxHDV.mjs} +2 -2
- package/dist/{CalendarWidget-BaGML5Xh.mjs.map → CalendarWidget-BXxNxHDV.mjs.map} +1 -1
- package/dist/{CalendarWidget-oGK122s9.cjs → CalendarWidget-VjQXZW8B.cjs} +2 -2
- package/dist/{CalendarWidget-oGK122s9.cjs.map → CalendarWidget-VjQXZW8B.cjs.map} +1 -1
- package/dist/{CardWidget-CqYjGkq-.mjs → CardWidget-BNkMlxQ3.mjs} +2 -2
- package/dist/{CardWidget-CqYjGkq-.mjs.map → CardWidget-BNkMlxQ3.mjs.map} +1 -1
- package/dist/{CardWidget-CSLSlKM6.cjs → CardWidget-C3I9OwgS.cjs} +2 -2
- package/dist/{CardWidget-CSLSlKM6.cjs.map → CardWidget-C3I9OwgS.cjs.map} +1 -1
- package/dist/{CardWidget-DjhK0yr-.cjs → CardWidget-CraWMttj.cjs} +3 -3
- package/dist/{CarouselWidget-DlxYQB5j.cjs → CarouselWidget-CiKlooUF.cjs} +2 -2
- package/dist/{CarouselWidget-DlxYQB5j.cjs.map → CarouselWidget-CiKlooUF.cjs.map} +1 -1
- package/dist/{CarouselWidget-CdQhlRrW.mjs → CarouselWidget-p8Z6L-G5.mjs} +2 -2
- package/dist/{CarouselWidget-CdQhlRrW.mjs.map → CarouselWidget-p8Z6L-G5.mjs.map} +1 -1
- package/dist/{CatchUpWidget-BQjtjcGR.mjs → CatchUpWidget-B9DQlzd_.mjs} +2 -2
- package/dist/{CatchUpWidget-BQjtjcGR.mjs.map → CatchUpWidget-B9DQlzd_.mjs.map} +1 -1
- package/dist/{CatchUpWidget-B1Muaurg.cjs → CatchUpWidget-SY7hOHk6.cjs} +2 -2
- package/dist/{CatchUpWidget-B1Muaurg.cjs.map → CatchUpWidget-SY7hOHk6.cjs.map} +1 -1
- package/dist/{ContainerWidget-Cjwrq2MS.cjs → ContainerWidget-BXpdj06u.cjs} +2 -2
- package/dist/{ContainerWidget-Cjwrq2MS.cjs.map → ContainerWidget-BXpdj06u.cjs.map} +1 -1
- package/dist/{ContainerWidget-DYThUtiZ.mjs → ContainerWidget-CpwvcxFm.mjs} +2 -2
- package/dist/{ContainerWidget-DYThUtiZ.mjs.map → ContainerWidget-CpwvcxFm.mjs.map} +1 -1
- package/dist/ContainerWidget-CyfPYEAv.cjs +8 -0
- package/dist/{FluidProvider-BazvsIwu.mjs → FluidProvider-DL5rChtj.mjs} +67 -84
- package/dist/FluidProvider-DL5rChtj.mjs.map +1 -0
- package/dist/{FluidProvider-Dxn7Ehiz.cjs → FluidProvider-D_PHVlUU.cjs} +67 -84
- package/dist/FluidProvider-D_PHVlUU.cjs.map +1 -0
- package/dist/{ImageWidget-xcE0sFf-.cjs → ImageWidget-CbQVxMe3.cjs} +2 -2
- package/dist/{ImageWidget-xcE0sFf-.cjs.map → ImageWidget-CbQVxMe3.cjs.map} +1 -1
- package/dist/{ImageWidget-CFTpbu8X.mjs → ImageWidget-vNWT_O1E.mjs} +2 -2
- package/dist/{ImageWidget-CFTpbu8X.mjs.map → ImageWidget-vNWT_O1E.mjs.map} +1 -1
- package/dist/{LayoutWidget-CK-SvFQL.cjs → LayoutWidget-BIfNHlVE.cjs} +2 -2
- package/dist/{LayoutWidget-CK-SvFQL.cjs.map → LayoutWidget-BIfNHlVE.cjs.map} +1 -1
- package/dist/{LayoutWidget-Cx5ZyXSU.mjs → LayoutWidget-CC3oK78H.mjs} +2 -2
- package/dist/{LayoutWidget-Cx5ZyXSU.mjs.map → LayoutWidget-CC3oK78H.mjs.map} +1 -1
- package/dist/{LayoutWidget-DuueFNAS.cjs → LayoutWidget-LdF_cKrB.cjs} +3 -3
- package/dist/{LinkWidget-B14FTQP7.cjs → LinkWidget-BoR7nVbH.cjs} +2 -2
- package/dist/{LinkWidget-B14FTQP7.cjs.map → LinkWidget-BoR7nVbH.cjs.map} +1 -1
- package/dist/{LinkWidget-CQHmKO-O.mjs → LinkWidget-CO-Cxf7Z.mjs} +2 -2
- package/dist/{LinkWidget-CQHmKO-O.mjs.map → LinkWidget-CO-Cxf7Z.mjs.map} +1 -1
- package/dist/{LinkWidget-CPmE8gpd.cjs → LinkWidget-M9YzMJT8.cjs} +2 -2
- package/dist/{ListWidget-YvCp7XDq.cjs → ListWidget-CuSjvwEw.cjs} +3 -3
- package/dist/{ListWidget-wBDnXWxa.cjs → ListWidget-CzljZ1LA.cjs} +3 -3
- package/dist/{ListWidget-wBDnXWxa.cjs.map → ListWidget-CzljZ1LA.cjs.map} +1 -1
- package/dist/{ListWidget-BnyD2Hpc.mjs → ListWidget-f88QhcGI.mjs} +3 -3
- package/dist/{ListWidget-BnyD2Hpc.mjs.map → ListWidget-f88QhcGI.mjs.map} +1 -1
- package/dist/{MediaRenderer-CfgWd0cC.cjs → MediaRenderer-CvN8Ku0i.cjs} +4 -4
- package/dist/MediaRenderer-CvN8Ku0i.cjs.map +1 -0
- package/dist/{MediaRenderer-CqUpv3St.mjs → MediaRenderer-DMdb_5xw.mjs} +4 -4
- package/dist/MediaRenderer-DMdb_5xw.mjs.map +1 -0
- package/dist/{MessagingScreen-40YCQbX9.cjs → MessagingScreen-Dkh3Dsp7.cjs} +2 -2
- package/dist/{MessagingScreen-40YCQbX9.cjs.map → MessagingScreen-Dkh3Dsp7.cjs.map} +1 -1
- package/dist/{MessagingScreen-CrdiB4M3.cjs → MessagingScreen-Dxy2VQbO.cjs} +22 -22
- package/dist/{MessagingScreen-RItZgONw.mjs → MessagingScreen-mt1u3Bs1.mjs} +2 -2
- package/dist/{MessagingScreen-RItZgONw.mjs.map → MessagingScreen-mt1u3Bs1.mjs.map} +1 -1
- package/dist/{MySiteWidget-B0dc_7Dc.mjs → MySiteWidget-BnjPrQxE.mjs} +23 -30
- package/dist/MySiteWidget-BnjPrQxE.mjs.map +1 -0
- package/dist/{MySiteWidget-BkqAS0aY.cjs → MySiteWidget-C8eFWHOT.cjs} +23 -30
- package/dist/MySiteWidget-C8eFWHOT.cjs.map +1 -0
- package/dist/{NestedWidget-C_2XwnW0.cjs → NestedWidget-CEoAO2sp.cjs} +3 -3
- package/dist/{NestedWidget-C_2XwnW0.cjs.map → NestedWidget-CEoAO2sp.cjs.map} +1 -1
- package/dist/{NestedWidget-CXIvsJdD.cjs → NestedWidget-CMCZjV6t.cjs} +3 -3
- package/dist/{NestedWidget-WJoWOFda.mjs → NestedWidget-RuyrOrFn.mjs} +3 -3
- package/dist/{NestedWidget-WJoWOFda.mjs.map → NestedWidget-RuyrOrFn.mjs.map} +1 -1
- package/dist/{PointsWidget-DoUljaNY.mjs → PointsWidget-C2KB4k48.mjs} +2 -2
- package/dist/{PointsWidget-DoUljaNY.mjs.map → PointsWidget-C2KB4k48.mjs.map} +1 -1
- package/dist/{PointsWidget-CLUWrFjZ.cjs → PointsWidget-DLp-PYus.cjs} +2 -2
- package/dist/{PointsWidget-CLUWrFjZ.cjs.map → PointsWidget-DLp-PYus.cjs.map} +1 -1
- package/dist/{ProfileScreen-CEKbhSRz.cjs → ProfileScreen-BMe-dQi7.cjs} +2 -2
- package/dist/{ProfileScreen-CEKbhSRz.cjs.map → ProfileScreen-BMe-dQi7.cjs.map} +1 -1
- package/dist/{ProfileScreen-Dex8VHSB.cjs → ProfileScreen-ChCZZ91o.cjs} +22 -22
- package/dist/{ProfileScreen-CeD1jq89.mjs → ProfileScreen-_1GlBr7z.mjs} +2 -2
- package/dist/{ProfileScreen-CeD1jq89.mjs.map → ProfileScreen-_1GlBr7z.mjs.map} +1 -1
- package/dist/{RecentActivityWidget-C6RwlUUw.cjs → RecentActivityWidget-BNW9aFT4.cjs} +2 -2
- package/dist/{RecentActivityWidget-C6RwlUUw.cjs.map → RecentActivityWidget-BNW9aFT4.cjs.map} +1 -1
- package/dist/{RecentActivityWidget-zQxtUECm.mjs → RecentActivityWidget-DelPdiwR.mjs} +2 -2
- package/dist/{RecentActivityWidget-zQxtUECm.mjs.map → RecentActivityWidget-DelPdiwR.mjs.map} +1 -1
- package/dist/{ScreenRenderer-Bk23YOtN.mjs → ScreenRenderer-ClYgfQf_.mjs} +2 -2
- package/dist/{ScreenRenderer-Bk23YOtN.mjs.map → ScreenRenderer-ClYgfQf_.mjs.map} +1 -1
- package/dist/{ScreenRenderer-aYfgv6mR.cjs → ScreenRenderer-Ct1w4PNu.cjs} +2 -2
- package/dist/{ScreenRenderer-aYfgv6mR.cjs.map → ScreenRenderer-Ct1w4PNu.cjs.map} +1 -1
- package/dist/{ShareablesScreen-Bt0E1aya.cjs → ShareablesScreen-A69L0Nok.cjs} +136 -108
- package/dist/ShareablesScreen-A69L0Nok.cjs.map +1 -0
- package/dist/{ShareablesScreen-LSyiDa6q.cjs → ShareablesScreen-BUYG-mjj.cjs} +1 -1
- package/dist/{ShareablesScreen-D3Hfqg9-.mjs → ShareablesScreen-sieWBlAl.mjs} +136 -108
- package/dist/ShareablesScreen-sieWBlAl.mjs.map +1 -0
- package/dist/{ShopScreen-dAe71cdL.mjs → ShopScreen-BBfOte5o.mjs} +2 -2
- package/dist/{ShopScreen-dAe71cdL.mjs.map → ShopScreen-BBfOte5o.mjs.map} +1 -1
- package/dist/{ShopScreen-Cgro0M1d.cjs → ShopScreen-CZ_290EP.cjs} +22 -22
- package/dist/{ShopScreen-BiqZPyiB.cjs → ShopScreen-DWLGH2gt.cjs} +2 -2
- package/dist/{ShopScreen-BiqZPyiB.cjs.map → ShopScreen-DWLGH2gt.cjs.map} +1 -1
- package/dist/{TableWidget-D4jQN-to.cjs → TableWidget-BIn1oRiJ.cjs} +4 -4
- package/dist/TableWidget-BIn1oRiJ.cjs.map +1 -0
- package/dist/{TableWidget-DWAYgQcl.cjs → TableWidget-C--8TSX7.cjs} +3 -3
- package/dist/{TableWidget-B0CRdzNf.mjs → TableWidget-dfUvhH0S.mjs} +4 -4
- package/dist/TableWidget-dfUvhH0S.mjs.map +1 -0
- package/dist/{ToDoWidget-BbeXt99H.cjs → ToDoWidget-Bjoan2Rm.cjs} +2 -2
- package/dist/{ToDoWidget-BbeXt99H.cjs.map → ToDoWidget-Bjoan2Rm.cjs.map} +1 -1
- package/dist/{ToDoWidget-VSaNmtWH.mjs → ToDoWidget-CYDsZA0Z.mjs} +2 -2
- package/dist/{ToDoWidget-VSaNmtWH.mjs.map → ToDoWidget-CYDsZA0Z.mjs.map} +1 -1
- package/dist/{ToDoWidget-YHmoDbVU.cjs → ToDoWidget-C_CvWdLi.cjs} +2 -2
- package/dist/{VideoWidget-Bc6ZAAaA.cjs → VideoWidget-CDcV0J5W.cjs} +2 -2
- package/dist/{VideoWidget-Bc6ZAAaA.cjs.map → VideoWidget-CDcV0J5W.cjs.map} +1 -1
- package/dist/{VideoWidget-DcWm239R.mjs → VideoWidget-Dj9wue7j.mjs} +2 -2
- package/dist/{VideoWidget-DcWm239R.mjs.map → VideoWidget-Dj9wue7j.mjs.map} +1 -1
- package/dist/WidgetInteractionContext-B1mELhQ_.mjs +28 -0
- package/dist/{WidgetInteractionContext-D0TJv70C.mjs.map → WidgetInteractionContext-B1mELhQ_.mjs.map} +1 -1
- package/dist/WidgetInteractionContext-DvPmzGqB.cjs +41 -0
- package/dist/{WidgetInteractionContext-Bs3LkFFH.cjs.map → WidgetInteractionContext-DvPmzGqB.cjs.map} +1 -1
- package/dist/index.cjs +84 -55
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +84 -55
- package/dist/index.mjs.map +1 -1
- package/dist/{registry-context-BDH0vNHR.mjs → registry-context-BahYMRqn.mjs} +12 -20
- package/dist/registry-context-BahYMRqn.mjs.map +1 -0
- package/dist/{registry-context-C7-RLxVt.cjs → registry-context-bf52ZIJX.cjs} +12 -20
- package/dist/registry-context-bf52ZIJX.cjs.map +1 -0
- package/package.json +12 -12
- package/dist/ContainerWidget-NFBqSeRV.cjs +0 -8
- package/dist/FluidProvider-BazvsIwu.mjs.map +0 -1
- package/dist/FluidProvider-Dxn7Ehiz.cjs.map +0 -1
- package/dist/MediaRenderer-CfgWd0cC.cjs.map +0 -1
- package/dist/MediaRenderer-CqUpv3St.mjs.map +0 -1
- package/dist/MySiteWidget-B0dc_7Dc.mjs.map +0 -1
- package/dist/MySiteWidget-BkqAS0aY.cjs.map +0 -1
- package/dist/ShareablesScreen-Bt0E1aya.cjs.map +0 -1
- package/dist/ShareablesScreen-D3Hfqg9-.mjs.map +0 -1
- package/dist/TableWidget-B0CRdzNf.mjs.map +0 -1
- package/dist/TableWidget-D4jQN-to.cjs.map +0 -1
- package/dist/WidgetInteractionContext-Bs3LkFFH.cjs +0 -18
- package/dist/WidgetInteractionContext-D0TJv70C.mjs +0 -11
- package/dist/registry-context-BDH0vNHR.mjs.map +0 -1
- package/dist/registry-context-C7-RLxVt.cjs.map +0 -1
|
@@ -105,6 +105,14 @@ const shareablesKeys = {
|
|
|
105
105
|
id
|
|
106
106
|
]
|
|
107
107
|
},
|
|
108
|
+
mediaProducts: {
|
|
109
|
+
all: ["mediaProducts"],
|
|
110
|
+
list: (mediaId) => [
|
|
111
|
+
"mediaProducts",
|
|
112
|
+
"list",
|
|
113
|
+
mediaId
|
|
114
|
+
]
|
|
115
|
+
},
|
|
108
116
|
shareLinks: {
|
|
109
117
|
all: ["shareLinks"],
|
|
110
118
|
link: (type, id, contactId, locale) => [
|
|
@@ -1952,6 +1960,108 @@ function MediaListingScreen(_props) {
|
|
|
1952
1960
|
})] });
|
|
1953
1961
|
}
|
|
1954
1962
|
//#endregion
|
|
1963
|
+
//#region ../../shareables/ui/src/components/SharePage/TaggedProductsList.tsx
|
|
1964
|
+
const DEFAULT_IMAGE$5 = "https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png";
|
|
1965
|
+
function resolvePrice(product) {
|
|
1966
|
+
let price = product.display_price || product.price;
|
|
1967
|
+
if (product.variants && product.variants.length > 0) {
|
|
1968
|
+
const firstVariant = product.variants[0];
|
|
1969
|
+
if (firstVariant?.display_price) price = firstVariant.display_price;
|
|
1970
|
+
else if (firstVariant?.price) price = firstVariant.price;
|
|
1971
|
+
}
|
|
1972
|
+
if (!price) return null;
|
|
1973
|
+
const numPrice = parseFloat(price.replace(/[^0-9.-]/g, ""));
|
|
1974
|
+
if (Number.isNaN(numPrice) || numPrice <= 0) return null;
|
|
1975
|
+
if (price.includes("$")) return price;
|
|
1976
|
+
return `$${numPrice.toFixed(2)}`;
|
|
1977
|
+
}
|
|
1978
|
+
function TaggedProductsList({ products, onProductClick }) {
|
|
1979
|
+
const renderImage = useRenderImage();
|
|
1980
|
+
const handleProductClick = (productId, e) => {
|
|
1981
|
+
e.stopPropagation();
|
|
1982
|
+
if (productId == null) return;
|
|
1983
|
+
onProductClick?.(productId);
|
|
1984
|
+
};
|
|
1985
|
+
if (!products || products.length === 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1986
|
+
className: "mb-6",
|
|
1987
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1988
|
+
className: "mb-4 px-4",
|
|
1989
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
|
|
1990
|
+
className: "text-foreground text-[15px] leading-[1.4] font-semibold",
|
|
1991
|
+
children: "Tagged Products (0)"
|
|
1992
|
+
})
|
|
1993
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1994
|
+
className: "flex flex-1 items-center justify-center px-6 py-12",
|
|
1995
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1996
|
+
className: "text-center",
|
|
1997
|
+
children: [
|
|
1998
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1999
|
+
className: "text-muted-foreground mb-2",
|
|
2000
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ShoppingBag, { className: "mx-auto h-12 w-12" })
|
|
2001
|
+
}),
|
|
2002
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
2003
|
+
className: "text-foreground mb-1 text-sm",
|
|
2004
|
+
children: "No Tagged Products"
|
|
2005
|
+
}),
|
|
2006
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
2007
|
+
className: "text-muted-foreground text-xs",
|
|
2008
|
+
children: "No products are tagged in this playlist"
|
|
2009
|
+
})
|
|
2010
|
+
]
|
|
2011
|
+
})
|
|
2012
|
+
})]
|
|
2013
|
+
});
|
|
2014
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2015
|
+
className: "mb-6",
|
|
2016
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
2017
|
+
className: "mb-4 px-4",
|
|
2018
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("h2", {
|
|
2019
|
+
className: "text-foreground text-[15px] leading-[1.4] font-semibold",
|
|
2020
|
+
children: [
|
|
2021
|
+
"Tagged Products (",
|
|
2022
|
+
products.length,
|
|
2023
|
+
")"
|
|
2024
|
+
]
|
|
2025
|
+
})
|
|
2026
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
2027
|
+
className: "px-4",
|
|
2028
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
2029
|
+
className: "scrollbar-none flex gap-4 overflow-x-auto pb-2",
|
|
2030
|
+
children: products.map((product, index) => {
|
|
2031
|
+
const imageUrl = product.images?.[0]?.image_url || product.image_url || product.compressed_image_url || DEFAULT_IMAGE$5;
|
|
2032
|
+
const title = product.title || "Untitled";
|
|
2033
|
+
const displayPrice = resolvePrice(product);
|
|
2034
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
2035
|
+
onClick: (e) => handleProductClick(product.id, e),
|
|
2036
|
+
className: "group bg-muted hover:bg-muted/60 flex w-[168px] shrink-0 flex-col gap-2 rounded-lg p-3 text-left transition-all",
|
|
2037
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
2038
|
+
className: "bg-background relative h-[168px] w-full overflow-hidden rounded-lg",
|
|
2039
|
+
children: renderImage({
|
|
2040
|
+
src: imageUrl,
|
|
2041
|
+
alt: title,
|
|
2042
|
+
fill: true,
|
|
2043
|
+
className: "object-cover"
|
|
2044
|
+
})
|
|
2045
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2046
|
+
className: "flex min-w-0 flex-col gap-1",
|
|
2047
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("h3", {
|
|
2048
|
+
className: "text-foreground flex items-start gap-1.5 text-[15px] leading-[1.4] font-semibold",
|
|
2049
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
2050
|
+
className: "line-clamp-2",
|
|
2051
|
+
children: title
|
|
2052
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ArrowUpRight, { className: "text-foreground mt-0.5 h-3 w-3 shrink-0 opacity-0 transition-opacity group-hover:opacity-100" })]
|
|
2053
|
+
}), displayPrice && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
2054
|
+
className: "text-foreground text-[15px] leading-[1.4] font-normal",
|
|
2055
|
+
children: displayPrice
|
|
2056
|
+
})]
|
|
2057
|
+
})]
|
|
2058
|
+
}, product.id ?? index);
|
|
2059
|
+
})
|
|
2060
|
+
})
|
|
2061
|
+
})]
|
|
2062
|
+
});
|
|
2063
|
+
}
|
|
2064
|
+
//#endregion
|
|
1955
2065
|
//#region ../../shareables/ui/src/components/screens/MediaDetailScreen.tsx
|
|
1956
2066
|
function getBadgeLabel(kind) {
|
|
1957
2067
|
switch (kind) {
|
|
@@ -1961,15 +2071,28 @@ function getBadgeLabel(kind) {
|
|
|
1961
2071
|
default: return "Media";
|
|
1962
2072
|
}
|
|
1963
2073
|
}
|
|
1964
|
-
function MediaDetailScreen({ mediaId, onNavigate
|
|
2074
|
+
function MediaDetailScreen({ mediaId, onNavigate, onBack }) {
|
|
1965
2075
|
const api = useShareablesApi();
|
|
1966
2076
|
const repContext = useRepContext();
|
|
1967
|
-
const { navigate, readOnly } = useShareablesUI();
|
|
2077
|
+
const { navigate, readOnly, mediaProductsApi } = useShareablesUI();
|
|
1968
2078
|
const { data: mediaResponse, isLoading } = (0, _tanstack_react_query.useQuery)({
|
|
1969
2079
|
queryKey: shareablesKeys.media.detail(Number(mediaId), repContext),
|
|
1970
2080
|
queryFn: () => api.media.getMediaById(Number(mediaId))
|
|
1971
2081
|
});
|
|
1972
2082
|
const { shareLink, loading: shareLinkLoading, error: shareLinkError } = useShareLink({ id: Number(mediaId) }, "Medium");
|
|
2083
|
+
const { data: mediaProductsData } = (0, _tanstack_react_query.useQuery)({
|
|
2084
|
+
queryKey: shareablesKeys.mediaProducts.list(Number(mediaId)),
|
|
2085
|
+
queryFn: () => mediaProductsApi.listMediaProducts(Number(mediaId)),
|
|
2086
|
+
enabled: !!mediaProductsApi
|
|
2087
|
+
});
|
|
2088
|
+
const taggedProducts = (0, react.useMemo)(() => mediaProductsData?.media_products?.map((p) => ({
|
|
2089
|
+
id: p.id,
|
|
2090
|
+
title: p.name ?? null,
|
|
2091
|
+
image_url: p.image_url ?? null,
|
|
2092
|
+
price: p.price ?? null,
|
|
2093
|
+
slug: p.slug ?? null,
|
|
2094
|
+
sku: p.sku ?? null
|
|
2095
|
+
})) ?? [], [mediaProductsData]);
|
|
1973
2096
|
const mediaItem = mediaResponse?.media;
|
|
1974
2097
|
const displayTitle = mediaItem?.title || "";
|
|
1975
2098
|
const displayImage = mediaItem?.image_url || "";
|
|
@@ -2045,7 +2168,14 @@ function MediaDetailScreen({ mediaId, onNavigate: _onNavigate, onBack }) {
|
|
|
2045
2168
|
isVideo,
|
|
2046
2169
|
relateableId: Number(mediaId),
|
|
2047
2170
|
relateableType: "Medium"
|
|
2048
|
-
})
|
|
2171
|
+
}),
|
|
2172
|
+
children: taggedProducts.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Separator, { className: "bg-foreground my-4" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
2173
|
+
className: "bg-background rounded-lg",
|
|
2174
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TaggedProductsList, {
|
|
2175
|
+
products: taggedProducts,
|
|
2176
|
+
onProductClick: (productId) => onNavigate?.("product", String(productId))
|
|
2177
|
+
})
|
|
2178
|
+
})] })
|
|
2049
2179
|
});
|
|
2050
2180
|
}
|
|
2051
2181
|
//#endregion
|
|
@@ -9489,7 +9619,7 @@ function MediaCreateScreen({ onNavigate, onBack }) {
|
|
|
9489
9619
|
}
|
|
9490
9620
|
//#endregion
|
|
9491
9621
|
//#region ../../shareables/ui/src/components/playlists/PlaylistCard.tsx
|
|
9492
|
-
const DEFAULT_IMAGE$
|
|
9622
|
+
const DEFAULT_IMAGE$4 = "https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png";
|
|
9493
9623
|
function PlaylistCard({ title, imageUrl, href, itemCount, isFavorited = false, isSelectable = false, isSelected = false, canEdit = false, onSelectionChange, onToggleFavorite, onEdit, onDelete }) {
|
|
9494
9624
|
const { navigate } = useShareablesUI();
|
|
9495
9625
|
const renderImage = useRenderImage();
|
|
@@ -9514,7 +9644,7 @@ function PlaylistCard({ title, imageUrl, href, itemCount, isFavorited = false, i
|
|
|
9514
9644
|
className: "bg-muted relative aspect-square overflow-hidden rounded-lg",
|
|
9515
9645
|
children: [
|
|
9516
9646
|
renderImage({
|
|
9517
|
-
src: imgError ? DEFAULT_IMAGE$
|
|
9647
|
+
src: imgError ? DEFAULT_IMAGE$4 : imageUrl || DEFAULT_IMAGE$4,
|
|
9518
9648
|
alt: title,
|
|
9519
9649
|
fill: true,
|
|
9520
9650
|
className: "object-cover transition-transform group-hover:scale-105",
|
|
@@ -9969,108 +10099,6 @@ const NAVIGABLE_RELATEABLE_TYPES = new Set([
|
|
|
9969
10099
|
"Medium"
|
|
9970
10100
|
]);
|
|
9971
10101
|
//#endregion
|
|
9972
|
-
//#region ../../shareables/ui/src/components/SharePage/TaggedProductsList.tsx
|
|
9973
|
-
const DEFAULT_IMAGE$4 = "https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png";
|
|
9974
|
-
function resolvePrice(product) {
|
|
9975
|
-
let price = product.display_price || product.price;
|
|
9976
|
-
if (product.variants && product.variants.length > 0) {
|
|
9977
|
-
const firstVariant = product.variants[0];
|
|
9978
|
-
if (firstVariant?.display_price) price = firstVariant.display_price;
|
|
9979
|
-
else if (firstVariant?.price) price = firstVariant.price;
|
|
9980
|
-
}
|
|
9981
|
-
if (!price) return null;
|
|
9982
|
-
const numPrice = parseFloat(price.replace(/[^0-9.-]/g, ""));
|
|
9983
|
-
if (Number.isNaN(numPrice) || numPrice <= 0) return null;
|
|
9984
|
-
if (price.includes("$")) return price;
|
|
9985
|
-
return `$${numPrice.toFixed(2)}`;
|
|
9986
|
-
}
|
|
9987
|
-
function TaggedProductsList({ products, onProductClick }) {
|
|
9988
|
-
const renderImage = useRenderImage();
|
|
9989
|
-
const handleProductClick = (productId, e) => {
|
|
9990
|
-
e.stopPropagation();
|
|
9991
|
-
if (productId == null) return;
|
|
9992
|
-
onProductClick?.(productId);
|
|
9993
|
-
};
|
|
9994
|
-
if (!products || products.length === 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9995
|
-
className: "mb-6",
|
|
9996
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
9997
|
-
className: "mb-4 px-4",
|
|
9998
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
|
|
9999
|
-
className: "text-foreground text-[15px] leading-[1.4] font-semibold",
|
|
10000
|
-
children: "Tagged Products (0)"
|
|
10001
|
-
})
|
|
10002
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10003
|
-
className: "flex flex-1 items-center justify-center px-6 py-12",
|
|
10004
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10005
|
-
className: "text-center",
|
|
10006
|
-
children: [
|
|
10007
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10008
|
-
className: "text-muted-foreground mb-2",
|
|
10009
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ShoppingBag, { className: "mx-auto h-12 w-12" })
|
|
10010
|
-
}),
|
|
10011
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10012
|
-
className: "text-foreground mb-1 text-sm",
|
|
10013
|
-
children: "No Tagged Products"
|
|
10014
|
-
}),
|
|
10015
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10016
|
-
className: "text-muted-foreground text-xs",
|
|
10017
|
-
children: "No products are tagged in this playlist"
|
|
10018
|
-
})
|
|
10019
|
-
]
|
|
10020
|
-
})
|
|
10021
|
-
})]
|
|
10022
|
-
});
|
|
10023
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10024
|
-
className: "mb-6",
|
|
10025
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10026
|
-
className: "mb-4 px-4",
|
|
10027
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("h2", {
|
|
10028
|
-
className: "text-foreground text-[15px] leading-[1.4] font-semibold",
|
|
10029
|
-
children: [
|
|
10030
|
-
"Tagged Products (",
|
|
10031
|
-
products.length,
|
|
10032
|
-
")"
|
|
10033
|
-
]
|
|
10034
|
-
})
|
|
10035
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10036
|
-
className: "px-4",
|
|
10037
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10038
|
-
className: "scrollbar-none flex gap-4 overflow-x-auto pb-2",
|
|
10039
|
-
children: products.map((product, index) => {
|
|
10040
|
-
const imageUrl = product.images?.[0]?.image_url || product.image_url || product.compressed_image_url || DEFAULT_IMAGE$4;
|
|
10041
|
-
const title = product.title || "Untitled";
|
|
10042
|
-
const displayPrice = resolvePrice(product);
|
|
10043
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
10044
|
-
onClick: (e) => handleProductClick(product.id, e),
|
|
10045
|
-
className: "group bg-muted hover:bg-muted/60 flex w-[168px] shrink-0 flex-col gap-2 rounded-lg p-3 text-left transition-all",
|
|
10046
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10047
|
-
className: "bg-background relative h-[168px] w-full overflow-hidden rounded-lg",
|
|
10048
|
-
children: renderImage({
|
|
10049
|
-
src: imageUrl,
|
|
10050
|
-
alt: title,
|
|
10051
|
-
fill: true,
|
|
10052
|
-
className: "object-cover"
|
|
10053
|
-
})
|
|
10054
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10055
|
-
className: "flex min-w-0 flex-col gap-1",
|
|
10056
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("h3", {
|
|
10057
|
-
className: "text-foreground flex items-start gap-1.5 text-[15px] leading-[1.4] font-semibold",
|
|
10058
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10059
|
-
className: "line-clamp-2",
|
|
10060
|
-
children: title
|
|
10061
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ArrowUpRight, { className: "text-foreground mt-0.5 h-3 w-3 shrink-0 opacity-0 transition-opacity group-hover:opacity-100" })]
|
|
10062
|
-
}), displayPrice && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
10063
|
-
className: "text-foreground text-[15px] leading-[1.4] font-normal",
|
|
10064
|
-
children: displayPrice
|
|
10065
|
-
})]
|
|
10066
|
-
})]
|
|
10067
|
-
}, product.id ?? index);
|
|
10068
|
-
})
|
|
10069
|
-
})
|
|
10070
|
-
})]
|
|
10071
|
-
});
|
|
10072
|
-
}
|
|
10073
|
-
//#endregion
|
|
10074
10102
|
//#region ../../shareables/ui/src/components/SharePage/PlaylistItemsList.tsx
|
|
10075
10103
|
const DEFAULT_IMAGE$3 = "https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png";
|
|
10076
10104
|
function getItemType(type, kind) {
|
|
@@ -13469,4 +13497,4 @@ Object.defineProperty(exports, "shareablesScreenPropertySchema", {
|
|
|
13469
13497
|
}
|
|
13470
13498
|
});
|
|
13471
13499
|
|
|
13472
|
-
//# sourceMappingURL=ShareablesScreen-
|
|
13500
|
+
//# sourceMappingURL=ShareablesScreen-A69L0Nok.cjs.map
|