@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.
Files changed (134) hide show
  1. package/dist/{CalendarWidget-BaGML5Xh.mjs → CalendarWidget-BXxNxHDV.mjs} +2 -2
  2. package/dist/{CalendarWidget-BaGML5Xh.mjs.map → CalendarWidget-BXxNxHDV.mjs.map} +1 -1
  3. package/dist/{CalendarWidget-oGK122s9.cjs → CalendarWidget-VjQXZW8B.cjs} +2 -2
  4. package/dist/{CalendarWidget-oGK122s9.cjs.map → CalendarWidget-VjQXZW8B.cjs.map} +1 -1
  5. package/dist/{CardWidget-CqYjGkq-.mjs → CardWidget-BNkMlxQ3.mjs} +2 -2
  6. package/dist/{CardWidget-CqYjGkq-.mjs.map → CardWidget-BNkMlxQ3.mjs.map} +1 -1
  7. package/dist/{CardWidget-CSLSlKM6.cjs → CardWidget-C3I9OwgS.cjs} +2 -2
  8. package/dist/{CardWidget-CSLSlKM6.cjs.map → CardWidget-C3I9OwgS.cjs.map} +1 -1
  9. package/dist/{CardWidget-DjhK0yr-.cjs → CardWidget-CraWMttj.cjs} +3 -3
  10. package/dist/{CarouselWidget-DlxYQB5j.cjs → CarouselWidget-CiKlooUF.cjs} +2 -2
  11. package/dist/{CarouselWidget-DlxYQB5j.cjs.map → CarouselWidget-CiKlooUF.cjs.map} +1 -1
  12. package/dist/{CarouselWidget-CdQhlRrW.mjs → CarouselWidget-p8Z6L-G5.mjs} +2 -2
  13. package/dist/{CarouselWidget-CdQhlRrW.mjs.map → CarouselWidget-p8Z6L-G5.mjs.map} +1 -1
  14. package/dist/{CatchUpWidget-BQjtjcGR.mjs → CatchUpWidget-B9DQlzd_.mjs} +2 -2
  15. package/dist/{CatchUpWidget-BQjtjcGR.mjs.map → CatchUpWidget-B9DQlzd_.mjs.map} +1 -1
  16. package/dist/{CatchUpWidget-B1Muaurg.cjs → CatchUpWidget-SY7hOHk6.cjs} +2 -2
  17. package/dist/{CatchUpWidget-B1Muaurg.cjs.map → CatchUpWidget-SY7hOHk6.cjs.map} +1 -1
  18. package/dist/{ContainerWidget-Cjwrq2MS.cjs → ContainerWidget-BXpdj06u.cjs} +2 -2
  19. package/dist/{ContainerWidget-Cjwrq2MS.cjs.map → ContainerWidget-BXpdj06u.cjs.map} +1 -1
  20. package/dist/{ContainerWidget-DYThUtiZ.mjs → ContainerWidget-CpwvcxFm.mjs} +2 -2
  21. package/dist/{ContainerWidget-DYThUtiZ.mjs.map → ContainerWidget-CpwvcxFm.mjs.map} +1 -1
  22. package/dist/ContainerWidget-CyfPYEAv.cjs +8 -0
  23. package/dist/{FluidProvider-BazvsIwu.mjs → FluidProvider-DL5rChtj.mjs} +67 -84
  24. package/dist/FluidProvider-DL5rChtj.mjs.map +1 -0
  25. package/dist/{FluidProvider-Dxn7Ehiz.cjs → FluidProvider-D_PHVlUU.cjs} +67 -84
  26. package/dist/FluidProvider-D_PHVlUU.cjs.map +1 -0
  27. package/dist/{ImageWidget-xcE0sFf-.cjs → ImageWidget-CbQVxMe3.cjs} +2 -2
  28. package/dist/{ImageWidget-xcE0sFf-.cjs.map → ImageWidget-CbQVxMe3.cjs.map} +1 -1
  29. package/dist/{ImageWidget-CFTpbu8X.mjs → ImageWidget-vNWT_O1E.mjs} +2 -2
  30. package/dist/{ImageWidget-CFTpbu8X.mjs.map → ImageWidget-vNWT_O1E.mjs.map} +1 -1
  31. package/dist/{LayoutWidget-CK-SvFQL.cjs → LayoutWidget-BIfNHlVE.cjs} +2 -2
  32. package/dist/{LayoutWidget-CK-SvFQL.cjs.map → LayoutWidget-BIfNHlVE.cjs.map} +1 -1
  33. package/dist/{LayoutWidget-Cx5ZyXSU.mjs → LayoutWidget-CC3oK78H.mjs} +2 -2
  34. package/dist/{LayoutWidget-Cx5ZyXSU.mjs.map → LayoutWidget-CC3oK78H.mjs.map} +1 -1
  35. package/dist/{LayoutWidget-DuueFNAS.cjs → LayoutWidget-LdF_cKrB.cjs} +3 -3
  36. package/dist/{LinkWidget-B14FTQP7.cjs → LinkWidget-BoR7nVbH.cjs} +2 -2
  37. package/dist/{LinkWidget-B14FTQP7.cjs.map → LinkWidget-BoR7nVbH.cjs.map} +1 -1
  38. package/dist/{LinkWidget-CQHmKO-O.mjs → LinkWidget-CO-Cxf7Z.mjs} +2 -2
  39. package/dist/{LinkWidget-CQHmKO-O.mjs.map → LinkWidget-CO-Cxf7Z.mjs.map} +1 -1
  40. package/dist/{LinkWidget-CPmE8gpd.cjs → LinkWidget-M9YzMJT8.cjs} +2 -2
  41. package/dist/{ListWidget-YvCp7XDq.cjs → ListWidget-CuSjvwEw.cjs} +3 -3
  42. package/dist/{ListWidget-wBDnXWxa.cjs → ListWidget-CzljZ1LA.cjs} +3 -3
  43. package/dist/{ListWidget-wBDnXWxa.cjs.map → ListWidget-CzljZ1LA.cjs.map} +1 -1
  44. package/dist/{ListWidget-BnyD2Hpc.mjs → ListWidget-f88QhcGI.mjs} +3 -3
  45. package/dist/{ListWidget-BnyD2Hpc.mjs.map → ListWidget-f88QhcGI.mjs.map} +1 -1
  46. package/dist/{MediaRenderer-CfgWd0cC.cjs → MediaRenderer-CvN8Ku0i.cjs} +4 -4
  47. package/dist/MediaRenderer-CvN8Ku0i.cjs.map +1 -0
  48. package/dist/{MediaRenderer-CqUpv3St.mjs → MediaRenderer-DMdb_5xw.mjs} +4 -4
  49. package/dist/MediaRenderer-DMdb_5xw.mjs.map +1 -0
  50. package/dist/{MessagingScreen-40YCQbX9.cjs → MessagingScreen-Dkh3Dsp7.cjs} +2 -2
  51. package/dist/{MessagingScreen-40YCQbX9.cjs.map → MessagingScreen-Dkh3Dsp7.cjs.map} +1 -1
  52. package/dist/{MessagingScreen-CrdiB4M3.cjs → MessagingScreen-Dxy2VQbO.cjs} +22 -22
  53. package/dist/{MessagingScreen-RItZgONw.mjs → MessagingScreen-mt1u3Bs1.mjs} +2 -2
  54. package/dist/{MessagingScreen-RItZgONw.mjs.map → MessagingScreen-mt1u3Bs1.mjs.map} +1 -1
  55. package/dist/{MySiteWidget-B0dc_7Dc.mjs → MySiteWidget-BnjPrQxE.mjs} +23 -30
  56. package/dist/MySiteWidget-BnjPrQxE.mjs.map +1 -0
  57. package/dist/{MySiteWidget-BkqAS0aY.cjs → MySiteWidget-C8eFWHOT.cjs} +23 -30
  58. package/dist/MySiteWidget-C8eFWHOT.cjs.map +1 -0
  59. package/dist/{NestedWidget-C_2XwnW0.cjs → NestedWidget-CEoAO2sp.cjs} +3 -3
  60. package/dist/{NestedWidget-C_2XwnW0.cjs.map → NestedWidget-CEoAO2sp.cjs.map} +1 -1
  61. package/dist/{NestedWidget-CXIvsJdD.cjs → NestedWidget-CMCZjV6t.cjs} +3 -3
  62. package/dist/{NestedWidget-WJoWOFda.mjs → NestedWidget-RuyrOrFn.mjs} +3 -3
  63. package/dist/{NestedWidget-WJoWOFda.mjs.map → NestedWidget-RuyrOrFn.mjs.map} +1 -1
  64. package/dist/{PointsWidget-DoUljaNY.mjs → PointsWidget-C2KB4k48.mjs} +2 -2
  65. package/dist/{PointsWidget-DoUljaNY.mjs.map → PointsWidget-C2KB4k48.mjs.map} +1 -1
  66. package/dist/{PointsWidget-CLUWrFjZ.cjs → PointsWidget-DLp-PYus.cjs} +2 -2
  67. package/dist/{PointsWidget-CLUWrFjZ.cjs.map → PointsWidget-DLp-PYus.cjs.map} +1 -1
  68. package/dist/{ProfileScreen-CEKbhSRz.cjs → ProfileScreen-BMe-dQi7.cjs} +2 -2
  69. package/dist/{ProfileScreen-CEKbhSRz.cjs.map → ProfileScreen-BMe-dQi7.cjs.map} +1 -1
  70. package/dist/{ProfileScreen-Dex8VHSB.cjs → ProfileScreen-ChCZZ91o.cjs} +22 -22
  71. package/dist/{ProfileScreen-CeD1jq89.mjs → ProfileScreen-_1GlBr7z.mjs} +2 -2
  72. package/dist/{ProfileScreen-CeD1jq89.mjs.map → ProfileScreen-_1GlBr7z.mjs.map} +1 -1
  73. package/dist/{RecentActivityWidget-C6RwlUUw.cjs → RecentActivityWidget-BNW9aFT4.cjs} +2 -2
  74. package/dist/{RecentActivityWidget-C6RwlUUw.cjs.map → RecentActivityWidget-BNW9aFT4.cjs.map} +1 -1
  75. package/dist/{RecentActivityWidget-zQxtUECm.mjs → RecentActivityWidget-DelPdiwR.mjs} +2 -2
  76. package/dist/{RecentActivityWidget-zQxtUECm.mjs.map → RecentActivityWidget-DelPdiwR.mjs.map} +1 -1
  77. package/dist/{ScreenRenderer-Bk23YOtN.mjs → ScreenRenderer-ClYgfQf_.mjs} +2 -2
  78. package/dist/{ScreenRenderer-Bk23YOtN.mjs.map → ScreenRenderer-ClYgfQf_.mjs.map} +1 -1
  79. package/dist/{ScreenRenderer-aYfgv6mR.cjs → ScreenRenderer-Ct1w4PNu.cjs} +2 -2
  80. package/dist/{ScreenRenderer-aYfgv6mR.cjs.map → ScreenRenderer-Ct1w4PNu.cjs.map} +1 -1
  81. package/dist/{ShareablesScreen-Bt0E1aya.cjs → ShareablesScreen-A69L0Nok.cjs} +136 -108
  82. package/dist/ShareablesScreen-A69L0Nok.cjs.map +1 -0
  83. package/dist/{ShareablesScreen-LSyiDa6q.cjs → ShareablesScreen-BUYG-mjj.cjs} +1 -1
  84. package/dist/{ShareablesScreen-D3Hfqg9-.mjs → ShareablesScreen-sieWBlAl.mjs} +136 -108
  85. package/dist/ShareablesScreen-sieWBlAl.mjs.map +1 -0
  86. package/dist/{ShopScreen-dAe71cdL.mjs → ShopScreen-BBfOte5o.mjs} +2 -2
  87. package/dist/{ShopScreen-dAe71cdL.mjs.map → ShopScreen-BBfOte5o.mjs.map} +1 -1
  88. package/dist/{ShopScreen-Cgro0M1d.cjs → ShopScreen-CZ_290EP.cjs} +22 -22
  89. package/dist/{ShopScreen-BiqZPyiB.cjs → ShopScreen-DWLGH2gt.cjs} +2 -2
  90. package/dist/{ShopScreen-BiqZPyiB.cjs.map → ShopScreen-DWLGH2gt.cjs.map} +1 -1
  91. package/dist/{TableWidget-D4jQN-to.cjs → TableWidget-BIn1oRiJ.cjs} +4 -4
  92. package/dist/TableWidget-BIn1oRiJ.cjs.map +1 -0
  93. package/dist/{TableWidget-DWAYgQcl.cjs → TableWidget-C--8TSX7.cjs} +3 -3
  94. package/dist/{TableWidget-B0CRdzNf.mjs → TableWidget-dfUvhH0S.mjs} +4 -4
  95. package/dist/TableWidget-dfUvhH0S.mjs.map +1 -0
  96. package/dist/{ToDoWidget-BbeXt99H.cjs → ToDoWidget-Bjoan2Rm.cjs} +2 -2
  97. package/dist/{ToDoWidget-BbeXt99H.cjs.map → ToDoWidget-Bjoan2Rm.cjs.map} +1 -1
  98. package/dist/{ToDoWidget-VSaNmtWH.mjs → ToDoWidget-CYDsZA0Z.mjs} +2 -2
  99. package/dist/{ToDoWidget-VSaNmtWH.mjs.map → ToDoWidget-CYDsZA0Z.mjs.map} +1 -1
  100. package/dist/{ToDoWidget-YHmoDbVU.cjs → ToDoWidget-C_CvWdLi.cjs} +2 -2
  101. package/dist/{VideoWidget-Bc6ZAAaA.cjs → VideoWidget-CDcV0J5W.cjs} +2 -2
  102. package/dist/{VideoWidget-Bc6ZAAaA.cjs.map → VideoWidget-CDcV0J5W.cjs.map} +1 -1
  103. package/dist/{VideoWidget-DcWm239R.mjs → VideoWidget-Dj9wue7j.mjs} +2 -2
  104. package/dist/{VideoWidget-DcWm239R.mjs.map → VideoWidget-Dj9wue7j.mjs.map} +1 -1
  105. package/dist/WidgetInteractionContext-B1mELhQ_.mjs +28 -0
  106. package/dist/{WidgetInteractionContext-D0TJv70C.mjs.map → WidgetInteractionContext-B1mELhQ_.mjs.map} +1 -1
  107. package/dist/WidgetInteractionContext-DvPmzGqB.cjs +41 -0
  108. package/dist/{WidgetInteractionContext-Bs3LkFFH.cjs.map → WidgetInteractionContext-DvPmzGqB.cjs.map} +1 -1
  109. package/dist/index.cjs +84 -55
  110. package/dist/index.cjs.map +1 -1
  111. package/dist/index.d.cts.map +1 -1
  112. package/dist/index.d.mts.map +1 -1
  113. package/dist/index.mjs +84 -55
  114. package/dist/index.mjs.map +1 -1
  115. package/dist/{registry-context-BDH0vNHR.mjs → registry-context-BahYMRqn.mjs} +12 -20
  116. package/dist/registry-context-BahYMRqn.mjs.map +1 -0
  117. package/dist/{registry-context-C7-RLxVt.cjs → registry-context-bf52ZIJX.cjs} +12 -20
  118. package/dist/registry-context-bf52ZIJX.cjs.map +1 -0
  119. package/package.json +12 -12
  120. package/dist/ContainerWidget-NFBqSeRV.cjs +0 -8
  121. package/dist/FluidProvider-BazvsIwu.mjs.map +0 -1
  122. package/dist/FluidProvider-Dxn7Ehiz.cjs.map +0 -1
  123. package/dist/MediaRenderer-CfgWd0cC.cjs.map +0 -1
  124. package/dist/MediaRenderer-CqUpv3St.mjs.map +0 -1
  125. package/dist/MySiteWidget-B0dc_7Dc.mjs.map +0 -1
  126. package/dist/MySiteWidget-BkqAS0aY.cjs.map +0 -1
  127. package/dist/ShareablesScreen-Bt0E1aya.cjs.map +0 -1
  128. package/dist/ShareablesScreen-D3Hfqg9-.mjs.map +0 -1
  129. package/dist/TableWidget-B0CRdzNf.mjs.map +0 -1
  130. package/dist/TableWidget-D4jQN-to.cjs.map +0 -1
  131. package/dist/WidgetInteractionContext-Bs3LkFFH.cjs +0 -18
  132. package/dist/WidgetInteractionContext-D0TJv70C.mjs +0 -11
  133. package/dist/registry-context-BDH0vNHR.mjs.map +0 -1
  134. 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: _onNavigate, onBack }) {
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$5 = "https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png";
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$5 : imageUrl || DEFAULT_IMAGE$5,
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-Bt0E1aya.cjs.map
13500
+ //# sourceMappingURL=ShareablesScreen-A69L0Nok.cjs.map