@fluid-app/portal-sdk 0.1.56 → 0.1.57

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 (111) hide show
  1. package/dist/{AppDownloadScreen-8nMV5KuQ.cjs → AppDownloadScreen-B3e3QH3E.cjs} +1 -1
  2. package/dist/{AppDownloadScreen-DL0cL6Hp.mjs → AppDownloadScreen-COuwjUfa.mjs} +1 -1
  3. package/dist/{AppDownloadScreen-DL0cL6Hp.mjs.map → AppDownloadScreen-COuwjUfa.mjs.map} +1 -1
  4. package/dist/{AppDownloadScreen-D9xFGiXb.mjs → AppDownloadScreen-DMTYrxWg.mjs} +1 -1
  5. package/dist/{AppDownloadScreen-BuxFOvdk.cjs → AppDownloadScreen-yDs-QtRS.cjs} +1 -1
  6. package/dist/{AppDownloadScreen-BuxFOvdk.cjs.map → AppDownloadScreen-yDs-QtRS.cjs.map} +1 -1
  7. package/dist/{ContactsScreen-uBuFHvAZ.mjs → ContactsScreen-1q6YYzXK.mjs} +190 -94
  8. package/dist/ContactsScreen-1q6YYzXK.mjs.map +1 -0
  9. package/dist/{ContactsScreen-DrfjJQRJ.cjs → ContactsScreen-BocpRIYk.cjs} +5 -3
  10. package/dist/{ContactsScreen-CsxYVQl_.cjs → ContactsScreen-EaQc1fQf.cjs} +190 -94
  11. package/dist/ContactsScreen-EaQc1fQf.cjs.map +1 -0
  12. package/dist/{ContactsScreen-BisspUdZ.mjs → ContactsScreen-U_UzEe8A.mjs} +5 -3
  13. package/dist/{MySiteScreen-BXotJdL4.cjs → MySiteScreen-BQDG1MIf.cjs} +3 -2
  14. package/dist/{MySiteScreen-DUTxskBE.mjs → MySiteScreen-BWE6kZNh.mjs} +24 -6
  15. package/dist/{MySiteScreen-DUTxskBE.mjs.map → MySiteScreen-BWE6kZNh.mjs.map} +1 -1
  16. package/dist/{MySiteScreen-C2M1r6n2.mjs → MySiteScreen-CMbbIem9.mjs} +3 -2
  17. package/dist/{MySiteScreen-DYtd8N1P.cjs → MySiteScreen-Dq34cH33.cjs} +23 -5
  18. package/dist/MySiteScreen-Dq34cH33.cjs.map +1 -0
  19. package/dist/{OrdersScreen-Cs6cia9e.mjs → OrdersScreen-Bez4E8IX.mjs} +3 -2
  20. package/dist/{OrdersScreen-2wR8W6ga.cjs → OrdersScreen-DFIm1noJ.cjs} +3 -2
  21. package/dist/{OrdersScreen-aJSG8C3f.mjs → OrdersScreen-DkMmE8c3.mjs} +79 -30
  22. package/dist/OrdersScreen-DkMmE8c3.mjs.map +1 -0
  23. package/dist/{OrdersScreen-BR7xTUEo.cjs → OrdersScreen-DvtDjt3L.cjs} +80 -31
  24. package/dist/OrdersScreen-DvtDjt3L.cjs.map +1 -0
  25. package/dist/{ProductsScreen-BiRq2hq5.cjs → ProductsScreen-BFsfS9XW.cjs} +5 -4
  26. package/dist/{ProductsScreen-C8rWxWSG.mjs → ProductsScreen-CNnlXg_I.mjs} +2 -2
  27. package/dist/{ProductsScreen-C8rWxWSG.mjs.map → ProductsScreen-CNnlXg_I.mjs.map} +1 -1
  28. package/dist/{ProductsScreen-C01TYRnt.mjs → ProductsScreen-CnywvrZt.mjs} +5 -4
  29. package/dist/{ProductsScreen-C2-Gmgf1.cjs → ProductsScreen-DO54qQyx.cjs} +2 -2
  30. package/dist/{ProductsScreen-C2-Gmgf1.cjs.map → ProductsScreen-DO54qQyx.cjs.map} +1 -1
  31. package/dist/{ProfileScreen-DC2pOZLZ.mjs → ProfileScreen-8nnWzPcP.mjs} +2 -1
  32. package/dist/{ProfileScreen-BHi41b6m.cjs → ProfileScreen-B6SwwR14.cjs} +2 -1
  33. package/dist/{ProfileScreen-DavG-OrZ.mjs → ProfileScreen-D4x5J95V.mjs} +10 -2
  34. package/dist/{ProfileScreen-DavG-OrZ.mjs.map → ProfileScreen-D4x5J95V.mjs.map} +1 -1
  35. package/dist/{ProfileScreen-BUQUWmWq.cjs → ProfileScreen-D5_7MMej.cjs} +9 -1
  36. package/dist/{ProfileScreen-BUQUWmWq.cjs.map → ProfileScreen-D5_7MMej.cjs.map} +1 -1
  37. package/dist/ScreenHeaderContext-CrdfLGKk.mjs +85 -0
  38. package/dist/ScreenHeaderContext-CrdfLGKk.mjs.map +1 -0
  39. package/dist/ScreenHeaderContext-eyKPyDoQ.cjs +109 -0
  40. package/dist/ScreenHeaderContext-eyKPyDoQ.cjs.map +1 -0
  41. package/dist/{ShareablesScreen-C_3E2Pgn.mjs → ShareablesScreen-2smGe_qj.mjs} +5 -4
  42. package/dist/{ShareablesScreen-BKPaCLC0.cjs → ShareablesScreen-CH9044d8.cjs} +3 -3
  43. package/dist/{ShareablesScreen-BKPaCLC0.cjs.map → ShareablesScreen-CH9044d8.cjs.map} +1 -1
  44. package/dist/{ShareablesScreen-BWrujM32.mjs → ShareablesScreen-DfGkgR72.mjs} +3 -3
  45. package/dist/{ShareablesScreen-BWrujM32.mjs.map → ShareablesScreen-DfGkgR72.mjs.map} +1 -1
  46. package/dist/{ShareablesScreen-BhcfHM0D.cjs → ShareablesScreen-vrbI04Hy.cjs} +5 -4
  47. package/dist/{ShopScreen-DwS8lZAC.cjs → ShopScreen-CHvoeAxg.cjs} +2 -1
  48. package/dist/{ShopScreen-DrRNRm1t.mjs → ShopScreen-CJY1sx1J.mjs} +2 -1
  49. package/dist/{ShopScreen-BvK9eQIi.cjs → ShopScreen-CrbD5rZR.cjs} +10 -2
  50. package/dist/{ShopScreen-BvK9eQIi.cjs.map → ShopScreen-CrbD5rZR.cjs.map} +1 -1
  51. package/dist/{ShopScreen-CG9l5JrT.mjs → ShopScreen-DwtVHSml.mjs} +11 -3
  52. package/dist/{ShopScreen-CG9l5JrT.mjs.map → ShopScreen-DwtVHSml.mjs.map} +1 -1
  53. package/dist/{SubscriptionsScreen-DV1yVAAc.mjs → SubscriptionsScreen-5NaNwpQ1.mjs} +108 -60
  54. package/dist/SubscriptionsScreen-5NaNwpQ1.mjs.map +1 -0
  55. package/dist/{SubscriptionsScreen-BB_c_4Q-.cjs → SubscriptionsScreen-BMVXP9cv.cjs} +4 -2
  56. package/dist/{SubscriptionsScreen-C4BJWeWK.mjs → SubscriptionsScreen-BmtUMKkL.mjs} +4 -2
  57. package/dist/{SubscriptionsScreen-DPOQbKs6.cjs → SubscriptionsScreen-vcSqCDso.cjs} +111 -63
  58. package/dist/SubscriptionsScreen-vcSqCDso.cjs.map +1 -0
  59. package/dist/{UpgradeScreen-D0WA4npm.cjs → UpgradeScreen-BbP-0Pcg.cjs} +1 -1
  60. package/dist/{UpgradeScreen-D0WA4npm.cjs.map → UpgradeScreen-BbP-0Pcg.cjs.map} +1 -1
  61. package/dist/{UpgradeScreen-N5cE1bG7.mjs → UpgradeScreen-D7LfdVSJ.mjs} +1 -1
  62. package/dist/{UpgradeScreen-N5cE1bG7.mjs.map → UpgradeScreen-D7LfdVSJ.mjs.map} +1 -1
  63. package/dist/{UpgradeScreen-C_rLnLD1.cjs → UpgradeScreen-DJKNVL-O.cjs} +1 -1
  64. package/dist/{dist-CayuD99K.mjs → dist-Cl4FsM3V.mjs} +1 -1
  65. package/dist/{dist-CayuD99K.mjs.map → dist-Cl4FsM3V.mjs.map} +1 -1
  66. package/dist/{dist-CSYoMydt.cjs → dist-Cs6PV1Tf.cjs} +1 -1
  67. package/dist/{dist-CSYoMydt.cjs.map → dist-Cs6PV1Tf.cjs.map} +1 -1
  68. package/dist/{dist-DxvUzsnh.cjs → dist-oTn1xy1Z.cjs} +1 -1
  69. package/dist/{dist-DxvUzsnh.cjs.map → dist-oTn1xy1Z.cjs.map} +1 -1
  70. package/dist/index.cjs +38 -36
  71. package/dist/index.cjs.map +1 -1
  72. package/dist/index.d.cts.map +1 -1
  73. package/dist/index.d.mts.map +1 -1
  74. package/dist/index.mjs +36 -34
  75. package/dist/index.mjs.map +1 -1
  76. package/dist/{src-BZnlJmdg.mjs → order-detail-DkMYJvzl.mjs} +1 -1
  77. package/dist/order-detail-DkMYJvzl.mjs.map +1 -0
  78. package/dist/{src-DIkOTlgf.cjs → order-detail-JVq0-ps1.cjs} +1 -1
  79. package/dist/order-detail-JVq0-ps1.cjs.map +1 -0
  80. package/dist/{products-B3q5DFx1.cjs → products-BtHCYNv6.cjs} +1 -1
  81. package/dist/{products-B3q5DFx1.cjs.map → products-BtHCYNv6.cjs.map} +1 -1
  82. package/dist/{products-Dkwd_Bh0.mjs → products-DCO1hF_Q.mjs} +1 -1
  83. package/dist/{products-Dkwd_Bh0.mjs.map → products-DCO1hF_Q.mjs.map} +1 -1
  84. package/dist/{sortable.esm-DFTEWOHN.mjs → sortable.esm-DreCqRxJ.mjs} +1 -1
  85. package/dist/{sortable.esm-DFTEWOHN.mjs.map → sortable.esm-DreCqRxJ.mjs.map} +1 -1
  86. package/dist/{src-B7MRMtgx.cjs → src-BYyxE-aF.cjs} +1 -1
  87. package/dist/{src-B7MRMtgx.cjs.map → src-BYyxE-aF.cjs.map} +1 -1
  88. package/dist/src-BakNjVTk.mjs +1 -0
  89. package/dist/{src-CEouYGbQ.mjs → src-CzK-t4_m.mjs} +192 -245
  90. package/dist/src-CzK-t4_m.mjs.map +1 -0
  91. package/dist/{src-DdlLVUFj.cjs → src-D1poJLOQ.cjs} +197 -262
  92. package/dist/src-D1poJLOQ.cjs.map +1 -0
  93. package/dist/src-DL_WTpu5.cjs +1 -0
  94. package/dist/{src-MTAap-Xx.mjs → src-sa7B0kBg.mjs} +1 -1
  95. package/dist/{src-MTAap-Xx.mjs.map → src-sa7B0kBg.mjs.map} +1 -1
  96. package/dist/{use-customer-account-D0zro9w6.cjs → use-customer-account-BRdjIAmX.cjs} +1 -1
  97. package/dist/{use-customer-account-D0zro9w6.cjs.map → use-customer-account-BRdjIAmX.cjs.map} +1 -1
  98. package/dist/{use-customer-account-CT3yrTXm.mjs → use-customer-account-CgmmbLJd.mjs} +1 -1
  99. package/dist/{use-customer-account-CT3yrTXm.mjs.map → use-customer-account-CgmmbLJd.mjs.map} +1 -1
  100. package/package.json +11 -11
  101. package/dist/ContactsScreen-CsxYVQl_.cjs.map +0 -1
  102. package/dist/ContactsScreen-uBuFHvAZ.mjs.map +0 -1
  103. package/dist/MySiteScreen-DYtd8N1P.cjs.map +0 -1
  104. package/dist/OrdersScreen-BR7xTUEo.cjs.map +0 -1
  105. package/dist/OrdersScreen-aJSG8C3f.mjs.map +0 -1
  106. package/dist/SubscriptionsScreen-DPOQbKs6.cjs.map +0 -1
  107. package/dist/SubscriptionsScreen-DV1yVAAc.mjs.map +0 -1
  108. package/dist/src-BZnlJmdg.mjs.map +0 -1
  109. package/dist/src-CEouYGbQ.mjs.map +0 -1
  110. package/dist/src-DIkOTlgf.cjs.map +0 -1
  111. package/dist/src-DdlLVUFj.cjs.map +0 -1
@@ -1,11 +1,12 @@
1
1
  const require_chunk = require("./chunk-DAgNkxik.cjs");
2
2
  const require_src = require("./src-DqIS-4ns.cjs");
3
+ const require_ScreenHeaderContext = require("./ScreenHeaderContext-eyKPyDoQ.cjs");
3
4
  const require_dist$3 = require("./dist-NpiIdjkL.cjs");
4
5
  const require_es = require("./es-qN_AsxTa.cjs");
5
- const require_dist$4 = require("./dist-CSYoMydt.cjs");
6
- const require_src$1 = require("./src-B7MRMtgx.cjs");
7
- const require_products = require("./products-B3q5DFx1.cjs");
8
- const require_dist$5 = require("./dist-DxvUzsnh.cjs");
6
+ const require_dist$4 = require("./dist-Cs6PV1Tf.cjs");
7
+ const require_src$1 = require("./src-BYyxE-aF.cjs");
8
+ const require_products = require("./products-BtHCYNv6.cjs");
9
+ const require_dist$5 = require("./dist-oTn1xy1Z.cjs");
9
10
  let react = require("react");
10
11
  react = require_chunk.__toESM(react);
11
12
  let _tanstack_react_query = require("@tanstack/react-query");
@@ -14,86 +15,6 @@ let zod = require("zod");
14
15
  zod = require_chunk.__toESM(zod);
15
16
  let lucide_react = require("lucide-react");
16
17
  let react_dom = require("react-dom");
17
- //#region ../react/src/shell/ScreenHeaderContext.tsx
18
- /**
19
- * Split into separate read/write contexts so that components calling
20
- * useScreenHeaderActions (writers) don't re-render when the actions
21
- * state changes — only the ScreenHeader (reader) re-renders.
22
- */
23
- const ScreenHeaderWriteContext = (0, react.createContext)(null);
24
- const ScreenHeaderReadContext = (0, react.createContext)(null);
25
- const ScreenHeaderBreadcrumbsWriteContext = (0, react.createContext)(null);
26
- const ScreenHeaderBreadcrumbsReadContext = (0, react.createContext)(null);
27
- function ScreenHeaderProvider({ children }) {
28
- const [actions, setActions] = (0, react.useState)(null);
29
- const [breadcrumbs, setBreadcrumbs] = (0, react.useState)(null);
30
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ScreenHeaderWriteContext.Provider, {
31
- value: setActions,
32
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ScreenHeaderReadContext.Provider, {
33
- value: actions,
34
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ScreenHeaderBreadcrumbsWriteContext.Provider, {
35
- value: setBreadcrumbs,
36
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ScreenHeaderBreadcrumbsReadContext.Provider, {
37
- value: breadcrumbs,
38
- children
39
- })
40
- })
41
- })
42
- });
43
- }
44
- /**
45
- * Sets actions to display in the ScreenHeader.
46
- * Returns `true` if inside a ScreenHeaderProvider (i.e., in the portal shell),
47
- * `false` otherwise. Pages can use this boolean to conditionally skip
48
- * rendering their own PageHeader.
49
- *
50
- * Cleans up actions on unmount so navigating away doesn't leave stale actions.
51
- */
52
- function useScreenHeaderActions(actions) {
53
- const setActions = (0, react.useContext)(ScreenHeaderWriteContext);
54
- const setActionsRef = (0, react.useRef)(setActions);
55
- setActionsRef.current = setActions;
56
- (0, react.useEffect)(() => {
57
- if (!setActions) return;
58
- setActions(actions);
59
- }, [actions, setActions]);
60
- (0, react.useEffect)(() => {
61
- return () => setActionsRef.current?.(null);
62
- }, []);
63
- return setActions !== null;
64
- }
65
- /**
66
- * Sets breadcrumbs to display in the ScreenHeader (in place of the plain title).
67
- * Returns `true` if inside a ScreenHeaderProvider (i.e., in the portal shell),
68
- * `false` otherwise.
69
- *
70
- * Cleans up breadcrumbs on unmount so navigating away doesn't leave stale breadcrumbs.
71
- */
72
- function useScreenHeaderBreadcrumbs(breadcrumbs) {
73
- const setBreadcrumbs = (0, react.useContext)(ScreenHeaderBreadcrumbsWriteContext);
74
- const setBreadcrumbsRef = (0, react.useRef)(setBreadcrumbs);
75
- setBreadcrumbsRef.current = setBreadcrumbs;
76
- (0, react.useEffect)(() => {
77
- if (!setBreadcrumbs) return;
78
- setBreadcrumbs(breadcrumbs);
79
- }, [breadcrumbs, setBreadcrumbs]);
80
- (0, react.useEffect)(() => {
81
- return () => setBreadcrumbsRef.current?.(null);
82
- }, []);
83
- return setBreadcrumbs !== null;
84
- }
85
- /**
86
- * Reads the current screen header actions and breadcrumbs. Used internally by ScreenHeader.
87
- */
88
- function useScreenHeaderContext() {
89
- const actions = (0, react.useContext)(ScreenHeaderReadContext);
90
- const breadcrumbs = (0, react.useContext)(ScreenHeaderBreadcrumbsReadContext);
91
- return {
92
- actions: actions ?? null,
93
- breadcrumbs: breadcrumbs ?? null
94
- };
95
- }
96
- //#endregion
97
18
  //#region ../../shareables/core/src/context.tsx
98
19
  const ShareablesCoreContext = (0, react.createContext)(null);
99
20
  function ShareablesCoreProvider({ config, children }) {
@@ -587,6 +508,13 @@ const PAGE_SIZE$3 = 24;
587
508
  const GRID_CLASS$3 = "grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-4";
588
509
  function ProductsScreen({ countryCode, onNavigate }) {
589
510
  const client = useShareablesClient();
511
+ require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbList, {
512
+ className: "text-lg",
513
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
514
+ className: "font-semibold",
515
+ children: "Products"
516
+ }) })
517
+ }) }), []));
590
518
  const [searchTerm, setSearchTerm] = (0, react.useState)("");
591
519
  const [debouncedSearch, setDebouncedSearch] = (0, react.useState)("");
592
520
  const [sortDesc, setSortDesc] = (0, react.useState)(false);
@@ -666,10 +594,6 @@ function ProductsScreen({ countryCode, onNavigate }) {
666
594
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
667
595
  className: "space-y-6 px-4 py-4 md:px-10 md:py-6",
668
596
  children: [
669
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", {
670
- className: "text-foreground text-lg font-semibold",
671
- children: "Products"
672
- }),
673
597
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
674
598
  className: "flex items-center gap-3",
675
599
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -1162,7 +1086,7 @@ var MarketingAssetsGrid_default = react.default.memo(MarketingAssetsGrid);
1162
1086
  //#region ../../shareables/ui/src/components/screens/ProductDetailScreen.tsx
1163
1087
  function ProductDetailScreen({ productId, countryCode, onNavigate, onBack }) {
1164
1088
  const client = useShareablesClient();
1165
- const { showToast, onFileDownload } = useShareablesUI();
1089
+ const { navigate, showToast, onFileDownload } = useShareablesUI();
1166
1090
  const [activeTab, setActiveTab] = (0, react.useState)("All");
1167
1091
  const [isDescriptionExpanded, setIsDescriptionExpanded] = (0, react.useState)(false);
1168
1092
  const { data: productResponse, isLoading: isLoadingProduct } = (0, _tanstack_react_query.useQuery)({
@@ -1181,7 +1105,30 @@ function ProductDetailScreen({ productId, countryCode, onNavigate, onBack }) {
1181
1105
  const product = productResponse?.product;
1182
1106
  const displayTitle = product?.title || "";
1183
1107
  const displayImage = product?.image_url || "";
1184
- const strippedDescription = stripTags(product?.description || product?.stripped || "");
1108
+ const displayDescription = product?.description || product?.stripped || "";
1109
+ require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.BreadcrumbList, {
1110
+ className: "text-lg",
1111
+ children: [
1112
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbLink, {
1113
+ href: "#",
1114
+ onClick: (e) => {
1115
+ e.preventDefault();
1116
+ (onBack ?? (() => navigate("products")))();
1117
+ },
1118
+ children: "Products"
1119
+ }) }),
1120
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbSeparator, {}),
1121
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
1122
+ className: "font-semibold",
1123
+ children: displayTitle || "Product"
1124
+ }) })
1125
+ ]
1126
+ }) }), [
1127
+ displayTitle,
1128
+ onBack,
1129
+ navigate
1130
+ ]));
1131
+ const strippedDescription = stripTags(displayDescription);
1185
1132
  const shouldShowReadMore = strippedDescription.length > 150;
1186
1133
  const displayPrice = product?.display_price || (product?.price ? `$${product.price}` : void 0);
1187
1134
  const filteredMediaItems = (productMediaResponse?.media ?? []).filter((item) => {
@@ -1228,23 +1175,9 @@ function ProductDetailScreen({ productId, countryCode, onNavigate, onBack }) {
1228
1175
  children: "Product not found or failed to load."
1229
1176
  })
1230
1177
  });
1231
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1178
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1232
1179
  className: "flex flex-col gap-4 px-4 py-4 md:px-10 md:py-6",
1233
- children: [onBack && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("nav", {
1234
- className: "flex items-center gap-1.5 text-sm",
1235
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1236
- type: "button",
1237
- onClick: onBack,
1238
- className: "text-muted-foreground hover:text-foreground",
1239
- children: "Products"
1240
- }), displayTitle && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1241
- className: "text-muted-foreground",
1242
- children: "/"
1243
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1244
- className: "text-foreground font-medium",
1245
- children: displayTitle
1246
- })] })]
1247
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1180
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1248
1181
  className: "mx-auto flex w-full max-w-480 flex-col gap-6 md:h-[calc(100vh-140px)] md:flex-row",
1249
1182
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1250
1183
  className: "aspect-square w-full md:aspect-auto md:h-full",
@@ -1329,7 +1262,7 @@ function ProductDetailScreen({ productId, countryCode, onNavigate, onBack }) {
1329
1262
  })
1330
1263
  ]
1331
1264
  })]
1332
- })]
1265
+ })
1333
1266
  });
1334
1267
  }
1335
1268
  //#endregion
@@ -1347,6 +1280,18 @@ function MediaListingScreen({ onNavigate }) {
1347
1280
  const client = useShareablesClient();
1348
1281
  const repContext = useRepContext();
1349
1282
  const { navigate } = useShareablesUI();
1283
+ require_ScreenHeaderContext.useScreenHeaderActions((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
1284
+ onClick: () => navigate("media/new"),
1285
+ size: "sm",
1286
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Plus, { className: "mr-1 h-4 w-4" }), "Add Media"]
1287
+ }), [navigate]));
1288
+ require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbList, {
1289
+ className: "text-lg",
1290
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
1291
+ className: "font-semibold",
1292
+ children: "Media"
1293
+ }) })
1294
+ }) }), []));
1350
1295
  const [searchTerm, setSearchTerm] = (0, react.useState)("");
1351
1296
  const [debouncedSearch, setDebouncedSearch] = (0, react.useState)("");
1352
1297
  const [sortDesc, setSortDesc] = (0, react.useState)(false);
@@ -1416,10 +1361,6 @@ function MediaListingScreen({ onNavigate }) {
1416
1361
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1417
1362
  className: "space-y-6 px-4 py-4 md:px-10 md:py-6",
1418
1363
  children: [
1419
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", {
1420
- className: "text-foreground text-lg font-semibold",
1421
- children: "Media"
1422
- }),
1423
1364
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1424
1365
  className: "flex items-center gap-3",
1425
1366
  children: [
@@ -1454,11 +1395,6 @@ function MediaListingScreen({ onNavigate }) {
1454
1395
  title: "Grid view",
1455
1396
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.LayoutGrid, { className: "h-4 w-4" })
1456
1397
  })]
1457
- }),
1458
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
1459
- onClick: () => navigate("media/new"),
1460
- size: "sm",
1461
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Plus, { className: "mr-1 h-4 w-4" }), "Add Media"]
1462
1398
  })
1463
1399
  ]
1464
1400
  }),
@@ -1527,7 +1463,7 @@ function getBadgeLabel(kind) {
1527
1463
  function MediaDetailScreen({ mediaId, onNavigate: _onNavigate, onBack }) {
1528
1464
  const client = useShareablesClient();
1529
1465
  const repContext = useRepContext();
1530
- const { showToast, onFileDownload } = useShareablesUI();
1466
+ const { navigate, showToast, onFileDownload } = useShareablesUI();
1531
1467
  const [isDescriptionExpanded, setIsDescriptionExpanded] = (0, react.useState)(false);
1532
1468
  const { data: mediaResponse, isLoading } = (0, _tanstack_react_query.useQuery)({
1533
1469
  queryKey: shareablesKeys.media.detail(Number(mediaId), repContext),
@@ -1539,6 +1475,28 @@ function MediaDetailScreen({ mediaId, onNavigate: _onNavigate, onBack }) {
1539
1475
  const displayImage = mediaItem?.image_url || "";
1540
1476
  const displayVideo = mediaItem?.video_url || "";
1541
1477
  const isVideo = mediaItem?.kind === "video" && !!displayVideo;
1478
+ require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.BreadcrumbList, {
1479
+ className: "text-lg",
1480
+ children: [
1481
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbLink, {
1482
+ href: "#",
1483
+ onClick: (e) => {
1484
+ e.preventDefault();
1485
+ (onBack ?? (() => navigate("media")))();
1486
+ },
1487
+ children: "Media"
1488
+ }) }),
1489
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbSeparator, {}),
1490
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
1491
+ className: "font-semibold",
1492
+ children: displayTitle || "Media"
1493
+ }) })
1494
+ ]
1495
+ }) }), [
1496
+ displayTitle,
1497
+ onBack,
1498
+ navigate
1499
+ ]));
1542
1500
  const badgeLabel = getBadgeLabel(mediaItem?.kind ?? null);
1543
1501
  const strippedDescription = stripTags(mediaItem?.description?.body || mediaItem?.stripped || "");
1544
1502
  const shouldShowReadMore = strippedDescription.length > 150;
@@ -1570,23 +1528,9 @@ function MediaDetailScreen({ mediaId, onNavigate: _onNavigate, onBack }) {
1570
1528
  children: "Media not found or failed to load."
1571
1529
  })
1572
1530
  });
1573
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1531
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1574
1532
  className: "flex flex-col gap-4 px-4 py-4 md:px-10 md:py-6",
1575
- children: [onBack && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("nav", {
1576
- className: "flex items-center gap-1.5 text-sm",
1577
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1578
- type: "button",
1579
- onClick: onBack,
1580
- className: "text-muted-foreground hover:text-foreground",
1581
- children: "Media"
1582
- }), displayTitle && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1583
- className: "text-muted-foreground",
1584
- children: "/"
1585
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1586
- className: "text-foreground font-medium",
1587
- children: displayTitle
1588
- })] })]
1589
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1533
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1590
1534
  className: "mx-auto flex w-full max-w-480 flex-col gap-6 md:h-[calc(100vh-140px)] md:flex-row",
1591
1535
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1592
1536
  className: "aspect-square w-full md:aspect-auto md:h-full",
@@ -1641,7 +1585,7 @@ function MediaDetailScreen({ mediaId, onNavigate: _onNavigate, onBack }) {
1641
1585
  ]
1642
1586
  })
1643
1587
  })]
1644
- })]
1588
+ })
1645
1589
  });
1646
1590
  }
1647
1591
  //#endregion
@@ -6551,8 +6495,26 @@ function FilePreview({ result, mediaType }) {
6551
6495
  });
6552
6496
  }
6553
6497
  function MediaCreateScreen({ onNavigate, onBack }) {
6554
- const { showToast, filePickerClient } = useShareablesUI();
6498
+ const { navigate, showToast, filePickerClient } = useShareablesUI();
6555
6499
  const user = useShareablesUser();
6500
+ require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.BreadcrumbList, {
6501
+ className: "text-lg",
6502
+ children: [
6503
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbLink, {
6504
+ href: "#",
6505
+ onClick: (e) => {
6506
+ e.preventDefault();
6507
+ (onBack ?? (() => navigate("media")))();
6508
+ },
6509
+ children: "Media"
6510
+ }) }),
6511
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbSeparator, {}),
6512
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
6513
+ className: "font-semibold",
6514
+ children: "New Media"
6515
+ }) })
6516
+ ]
6517
+ }) }), [onBack, navigate]));
6556
6518
  const [title, setTitle] = (0, react.useState)("");
6557
6519
  const [description, setDescription] = (0, react.useState)("");
6558
6520
  const [active, setActive] = (0, react.useState)(true);
@@ -6644,123 +6606,101 @@ function MediaCreateScreen({ onNavigate, onBack }) {
6644
6606
  }, [filePickerClient, showToast]);
6645
6607
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6646
6608
  className: "flex flex-col gap-4 px-4 py-4 md:px-10 md:py-6",
6647
- children: [
6648
- onBack && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("nav", {
6649
- className: "flex items-center gap-1.5 text-sm",
6650
- children: [
6651
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
6652
- type: "button",
6653
- onClick: onBack,
6654
- className: "text-muted-foreground hover:text-foreground",
6655
- children: "Media"
6656
- }),
6657
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6658
- className: "text-muted-foreground",
6659
- children: "/"
6660
- }),
6661
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6662
- className: "text-foreground font-medium",
6663
- children: "Add Media"
6664
- })
6665
- ]
6666
- }),
6667
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6668
- className: "mx-auto flex w-full max-w-lg flex-col gap-6",
6669
- children: [
6670
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", {
6671
- className: "text-foreground text-[26px] leading-[1.2] font-semibold",
6672
- children: "Add Media"
6673
- }),
6674
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6609
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6610
+ className: "mx-auto flex w-full max-w-lg flex-col gap-6",
6611
+ children: [
6612
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", {
6613
+ className: "text-foreground text-[26px] leading-[1.2] font-semibold",
6614
+ children: "Add Media"
6615
+ }),
6616
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6617
+ className: "flex flex-col gap-2",
6618
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
6619
+ className: "text-foreground text-sm font-medium",
6620
+ children: "File"
6621
+ }), selectedResult && mediaType ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6675
6622
  className: "flex flex-col gap-2",
6676
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
6677
- className: "text-foreground text-sm font-medium",
6678
- children: "File"
6679
- }), selectedResult && mediaType ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6680
- className: "flex flex-col gap-2",
6681
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(FilePreview, {
6682
- result: selectedResult,
6683
- mediaType
6684
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
6685
- onClick: () => setIsPickerOpen(true),
6686
- variant: "outline",
6687
- size: "sm",
6688
- className: "w-fit",
6689
- children: "Change File"
6690
- })]
6691
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
6623
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(FilePreview, {
6624
+ result: selectedResult,
6625
+ mediaType
6626
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
6692
6627
  onClick: () => setIsPickerOpen(true),
6693
6628
  variant: "outline",
6694
- className: "flex h-32 w-full flex-col items-center justify-center gap-2 border-dashed",
6695
- disabled: !filePickerClient,
6696
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Upload, { className: "text-muted-foreground h-6 w-6" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6697
- className: "text-muted-foreground text-sm",
6698
- children: "Select File"
6699
- })]
6629
+ size: "sm",
6630
+ className: "w-fit",
6631
+ children: "Change File"
6700
6632
  })]
6701
- }),
6702
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6703
- className: "flex flex-col gap-2",
6704
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
6705
- className: "text-foreground text-sm font-medium",
6706
- children: ["Title ", /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6707
- className: "text-red-500",
6708
- children: "*"
6709
- })]
6710
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Input, {
6711
- value: title,
6712
- onChange: (e) => setTitle(e.target.value),
6713
- placeholder: "Enter media title",
6714
- required: true
6633
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
6634
+ onClick: () => setIsPickerOpen(true),
6635
+ variant: "outline",
6636
+ className: "flex h-32 w-full flex-col items-center justify-center gap-2 border-dashed",
6637
+ disabled: !filePickerClient,
6638
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Upload, { className: "text-muted-foreground h-6 w-6" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6639
+ className: "text-muted-foreground text-sm",
6640
+ children: "Select File"
6715
6641
  })]
6716
- }),
6717
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6718
- className: "flex flex-col gap-2",
6719
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
6720
- className: "text-foreground text-sm font-medium",
6721
- children: ["Description ", /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6722
- className: "text-red-500",
6723
- children: "*"
6724
- })]
6725
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
6726
- value: description,
6727
- onChange: (e) => setDescription(e.target.value),
6728
- placeholder: "Enter description",
6729
- required: true,
6730
- rows: 3,
6731
- className: "border-input bg-background text-foreground placeholder:text-muted-foreground rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none"
6642
+ })]
6643
+ }),
6644
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6645
+ className: "flex flex-col gap-2",
6646
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
6647
+ className: "text-foreground text-sm font-medium",
6648
+ children: ["Title ", /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6649
+ className: "text-red-500",
6650
+ children: "*"
6732
6651
  })]
6733
- }),
6734
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
6735
- className: "flex items-center gap-3",
6736
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
6737
- type: "checkbox",
6738
- checked: active,
6739
- onChange: (e) => setActive(e.target.checked),
6740
- className: "h-4 w-4 rounded"
6741
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6742
- className: "text-foreground text-sm font-medium",
6743
- children: "Active"
6652
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Input, {
6653
+ value: title,
6654
+ onChange: (e) => setTitle(e.target.value),
6655
+ placeholder: "Enter media title",
6656
+ required: true
6657
+ })]
6658
+ }),
6659
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6660
+ className: "flex flex-col gap-2",
6661
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
6662
+ className: "text-foreground text-sm font-medium",
6663
+ children: ["Description ", /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6664
+ className: "text-red-500",
6665
+ children: "*"
6744
6666
  })]
6745
- }),
6746
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
6747
- onClick: handleSave,
6748
- disabled: isCreating,
6749
- className: "bg-foreground text-background hover:bg-foreground/70 flex h-10 w-full items-center justify-center rounded-lg px-4 transition-all",
6750
- children: isCreating ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Spinner, { className: "size-4" }) : "Save Media"
6751
- })
6752
- ]
6753
- }),
6754
- filePickerContextValue && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FilePickerProvider, {
6755
- value: filePickerContextValue,
6756
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FilePicker, {
6757
- open: isPickerOpen,
6758
- onFilesSelected: handleFilesSelected,
6759
- onClose: () => setIsPickerOpen(false),
6760
- config: { maxFiles: 1 }
6667
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
6668
+ value: description,
6669
+ onChange: (e) => setDescription(e.target.value),
6670
+ placeholder: "Enter description",
6671
+ required: true,
6672
+ rows: 3,
6673
+ className: "border-input bg-background text-foreground placeholder:text-muted-foreground rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none"
6674
+ })]
6675
+ }),
6676
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
6677
+ className: "flex items-center gap-3",
6678
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
6679
+ type: "checkbox",
6680
+ checked: active,
6681
+ onChange: (e) => setActive(e.target.checked),
6682
+ className: "h-4 w-4 rounded"
6683
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6684
+ className: "text-foreground text-sm font-medium",
6685
+ children: "Active"
6686
+ })]
6687
+ }),
6688
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
6689
+ onClick: handleSave,
6690
+ disabled: isCreating,
6691
+ className: "bg-foreground text-background hover:bg-foreground/70 flex h-10 w-full items-center justify-center rounded-lg px-4 transition-all",
6692
+ children: isCreating ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Spinner, { className: "size-4" }) : "Save Media"
6761
6693
  })
6694
+ ]
6695
+ }), filePickerContextValue && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FilePickerProvider, {
6696
+ value: filePickerContextValue,
6697
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FilePicker, {
6698
+ open: isPickerOpen,
6699
+ onFilesSelected: handleFilesSelected,
6700
+ onClose: () => setIsPickerOpen(false),
6701
+ config: { maxFiles: 1 }
6762
6702
  })
6763
- ]
6703
+ })]
6764
6704
  });
6765
6705
  }
6766
6706
  //#endregion
@@ -7004,12 +6944,12 @@ function PlaylistsListingScreen(_props) {
7004
6944
  const client = useShareablesClient();
7005
6945
  const { navigate, showToast, user, onToggleFavorite, onDeletePlaylist } = useShareablesUI();
7006
6946
  const queryClient = (0, _tanstack_react_query.useQueryClient)();
7007
- useScreenHeaderActions((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
6947
+ require_ScreenHeaderContext.useScreenHeaderActions((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
7008
6948
  onClick: () => navigate("playlists/new"),
7009
6949
  size: "sm",
7010
6950
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Plus, { className: "mr-1 h-4 w-4" }), "Create Playlist"]
7011
6951
  }), [navigate]));
7012
- useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbList, {
6952
+ require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbList, {
7013
6953
  className: "text-lg",
7014
6954
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
7015
6955
  className: "font-semibold",
@@ -7499,7 +7439,7 @@ function PlaylistDetailScreen({ playlistId, onNavigate }) {
7499
7439
  const playlist = playlistResponse?.playlist;
7500
7440
  const canEdit = playlist?.user_id === user?.id;
7501
7441
  const displayTitle = playlist?.title || "";
7502
- useScreenHeaderActions((0, react.useMemo)(() => {
7442
+ require_ScreenHeaderContext.useScreenHeaderActions((0, react.useMemo)(() => {
7503
7443
  if (!canEdit) return null;
7504
7444
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7505
7445
  className: "flex items-center gap-2",
@@ -7521,7 +7461,7 @@ function PlaylistDetailScreen({ playlistId, onNavigate }) {
7521
7461
  playlistId,
7522
7462
  onDeletePlaylist
7523
7463
  ]));
7524
- useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.BreadcrumbList, {
7464
+ require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.BreadcrumbList, {
7525
7465
  className: "text-lg",
7526
7466
  children: [
7527
7467
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbLink, {
@@ -7861,7 +7801,7 @@ function PlaylistFormHeader({ playlistId, isEditMode, onSubmit, isSaving }) {
7861
7801
  setIsDeleteOpen(false);
7862
7802
  }
7863
7803
  };
7864
- useScreenHeaderActions((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7804
+ require_ScreenHeaderContext.useScreenHeaderActions((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7865
7805
  className: "flex items-center gap-2",
7866
7806
  children: [playlistId && onDeletePlaylist && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
7867
7807
  variant: "destructive",
@@ -7886,7 +7826,7 @@ function PlaylistFormHeader({ playlistId, isEditMode, onSubmit, isSaving }) {
7886
7826
  isSaving,
7887
7827
  onSubmit
7888
7828
  ]));
7889
- useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.BreadcrumbList, {
7829
+ require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.BreadcrumbList, {
7890
7830
  className: "text-lg",
7891
7831
  children: [
7892
7832
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbLink, {
@@ -8822,6 +8762,13 @@ const DEFAULT_IMAGE = "https://assets.fluid.app/fluid-admin/images/we-commerce/w
8822
8762
  function FilesListingScreen({ onNavigate }) {
8823
8763
  const client = useShareablesClient();
8824
8764
  const renderImage = useRenderImage();
8765
+ require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbList, {
8766
+ className: "text-lg",
8767
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
8768
+ className: "font-semibold",
8769
+ children: "Files"
8770
+ }) })
8771
+ }) }), []));
8825
8772
  const [searchTerm, setSearchTerm] = (0, react.useState)("");
8826
8773
  const [debouncedSearch, setDebouncedSearch] = (0, react.useState)("");
8827
8774
  const observerTarget = (0, react.useRef)(null);
@@ -9049,12 +8996,6 @@ Object.defineProperty(exports, "ProductsApp", {
9049
8996
  return ProductsApp;
9050
8997
  }
9051
8998
  });
9052
- Object.defineProperty(exports, "ScreenHeaderProvider", {
9053
- enumerable: true,
9054
- get: function() {
9055
- return ScreenHeaderProvider;
9056
- }
9057
- });
9058
8999
  Object.defineProperty(exports, "ShareablesApp", {
9059
9000
  enumerable: true,
9060
9001
  get: function() {
@@ -9073,11 +9014,5 @@ Object.defineProperty(exports, "ShareablesUIProvider", {
9073
9014
  return ShareablesUIProvider;
9074
9015
  }
9075
9016
  });
9076
- Object.defineProperty(exports, "useScreenHeaderContext", {
9077
- enumerable: true,
9078
- get: function() {
9079
- return useScreenHeaderContext;
9080
- }
9081
- });
9082
9017
 
9083
- //# sourceMappingURL=src-DdlLVUFj.cjs.map
9018
+ //# sourceMappingURL=src-D1poJLOQ.cjs.map