@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.
- package/dist/{AppDownloadScreen-8nMV5KuQ.cjs → AppDownloadScreen-B3e3QH3E.cjs} +1 -1
- package/dist/{AppDownloadScreen-DL0cL6Hp.mjs → AppDownloadScreen-COuwjUfa.mjs} +1 -1
- package/dist/{AppDownloadScreen-DL0cL6Hp.mjs.map → AppDownloadScreen-COuwjUfa.mjs.map} +1 -1
- package/dist/{AppDownloadScreen-D9xFGiXb.mjs → AppDownloadScreen-DMTYrxWg.mjs} +1 -1
- package/dist/{AppDownloadScreen-BuxFOvdk.cjs → AppDownloadScreen-yDs-QtRS.cjs} +1 -1
- package/dist/{AppDownloadScreen-BuxFOvdk.cjs.map → AppDownloadScreen-yDs-QtRS.cjs.map} +1 -1
- package/dist/{ContactsScreen-uBuFHvAZ.mjs → ContactsScreen-1q6YYzXK.mjs} +190 -94
- package/dist/ContactsScreen-1q6YYzXK.mjs.map +1 -0
- package/dist/{ContactsScreen-DrfjJQRJ.cjs → ContactsScreen-BocpRIYk.cjs} +5 -3
- package/dist/{ContactsScreen-CsxYVQl_.cjs → ContactsScreen-EaQc1fQf.cjs} +190 -94
- package/dist/ContactsScreen-EaQc1fQf.cjs.map +1 -0
- package/dist/{ContactsScreen-BisspUdZ.mjs → ContactsScreen-U_UzEe8A.mjs} +5 -3
- package/dist/{MySiteScreen-BXotJdL4.cjs → MySiteScreen-BQDG1MIf.cjs} +3 -2
- package/dist/{MySiteScreen-DUTxskBE.mjs → MySiteScreen-BWE6kZNh.mjs} +24 -6
- package/dist/{MySiteScreen-DUTxskBE.mjs.map → MySiteScreen-BWE6kZNh.mjs.map} +1 -1
- package/dist/{MySiteScreen-C2M1r6n2.mjs → MySiteScreen-CMbbIem9.mjs} +3 -2
- package/dist/{MySiteScreen-DYtd8N1P.cjs → MySiteScreen-Dq34cH33.cjs} +23 -5
- package/dist/MySiteScreen-Dq34cH33.cjs.map +1 -0
- package/dist/{OrdersScreen-Cs6cia9e.mjs → OrdersScreen-Bez4E8IX.mjs} +3 -2
- package/dist/{OrdersScreen-2wR8W6ga.cjs → OrdersScreen-DFIm1noJ.cjs} +3 -2
- package/dist/{OrdersScreen-aJSG8C3f.mjs → OrdersScreen-DkMmE8c3.mjs} +79 -30
- package/dist/OrdersScreen-DkMmE8c3.mjs.map +1 -0
- package/dist/{OrdersScreen-BR7xTUEo.cjs → OrdersScreen-DvtDjt3L.cjs} +80 -31
- package/dist/OrdersScreen-DvtDjt3L.cjs.map +1 -0
- package/dist/{ProductsScreen-BiRq2hq5.cjs → ProductsScreen-BFsfS9XW.cjs} +5 -4
- package/dist/{ProductsScreen-C8rWxWSG.mjs → ProductsScreen-CNnlXg_I.mjs} +2 -2
- package/dist/{ProductsScreen-C8rWxWSG.mjs.map → ProductsScreen-CNnlXg_I.mjs.map} +1 -1
- package/dist/{ProductsScreen-C01TYRnt.mjs → ProductsScreen-CnywvrZt.mjs} +5 -4
- package/dist/{ProductsScreen-C2-Gmgf1.cjs → ProductsScreen-DO54qQyx.cjs} +2 -2
- package/dist/{ProductsScreen-C2-Gmgf1.cjs.map → ProductsScreen-DO54qQyx.cjs.map} +1 -1
- package/dist/{ProfileScreen-DC2pOZLZ.mjs → ProfileScreen-8nnWzPcP.mjs} +2 -1
- package/dist/{ProfileScreen-BHi41b6m.cjs → ProfileScreen-B6SwwR14.cjs} +2 -1
- package/dist/{ProfileScreen-DavG-OrZ.mjs → ProfileScreen-D4x5J95V.mjs} +10 -2
- package/dist/{ProfileScreen-DavG-OrZ.mjs.map → ProfileScreen-D4x5J95V.mjs.map} +1 -1
- package/dist/{ProfileScreen-BUQUWmWq.cjs → ProfileScreen-D5_7MMej.cjs} +9 -1
- package/dist/{ProfileScreen-BUQUWmWq.cjs.map → ProfileScreen-D5_7MMej.cjs.map} +1 -1
- package/dist/ScreenHeaderContext-CrdfLGKk.mjs +85 -0
- package/dist/ScreenHeaderContext-CrdfLGKk.mjs.map +1 -0
- package/dist/ScreenHeaderContext-eyKPyDoQ.cjs +109 -0
- package/dist/ScreenHeaderContext-eyKPyDoQ.cjs.map +1 -0
- package/dist/{ShareablesScreen-C_3E2Pgn.mjs → ShareablesScreen-2smGe_qj.mjs} +5 -4
- package/dist/{ShareablesScreen-BKPaCLC0.cjs → ShareablesScreen-CH9044d8.cjs} +3 -3
- package/dist/{ShareablesScreen-BKPaCLC0.cjs.map → ShareablesScreen-CH9044d8.cjs.map} +1 -1
- package/dist/{ShareablesScreen-BWrujM32.mjs → ShareablesScreen-DfGkgR72.mjs} +3 -3
- package/dist/{ShareablesScreen-BWrujM32.mjs.map → ShareablesScreen-DfGkgR72.mjs.map} +1 -1
- package/dist/{ShareablesScreen-BhcfHM0D.cjs → ShareablesScreen-vrbI04Hy.cjs} +5 -4
- package/dist/{ShopScreen-DwS8lZAC.cjs → ShopScreen-CHvoeAxg.cjs} +2 -1
- package/dist/{ShopScreen-DrRNRm1t.mjs → ShopScreen-CJY1sx1J.mjs} +2 -1
- package/dist/{ShopScreen-BvK9eQIi.cjs → ShopScreen-CrbD5rZR.cjs} +10 -2
- package/dist/{ShopScreen-BvK9eQIi.cjs.map → ShopScreen-CrbD5rZR.cjs.map} +1 -1
- package/dist/{ShopScreen-CG9l5JrT.mjs → ShopScreen-DwtVHSml.mjs} +11 -3
- package/dist/{ShopScreen-CG9l5JrT.mjs.map → ShopScreen-DwtVHSml.mjs.map} +1 -1
- package/dist/{SubscriptionsScreen-DV1yVAAc.mjs → SubscriptionsScreen-5NaNwpQ1.mjs} +108 -60
- package/dist/SubscriptionsScreen-5NaNwpQ1.mjs.map +1 -0
- package/dist/{SubscriptionsScreen-BB_c_4Q-.cjs → SubscriptionsScreen-BMVXP9cv.cjs} +4 -2
- package/dist/{SubscriptionsScreen-C4BJWeWK.mjs → SubscriptionsScreen-BmtUMKkL.mjs} +4 -2
- package/dist/{SubscriptionsScreen-DPOQbKs6.cjs → SubscriptionsScreen-vcSqCDso.cjs} +111 -63
- package/dist/SubscriptionsScreen-vcSqCDso.cjs.map +1 -0
- package/dist/{UpgradeScreen-D0WA4npm.cjs → UpgradeScreen-BbP-0Pcg.cjs} +1 -1
- package/dist/{UpgradeScreen-D0WA4npm.cjs.map → UpgradeScreen-BbP-0Pcg.cjs.map} +1 -1
- package/dist/{UpgradeScreen-N5cE1bG7.mjs → UpgradeScreen-D7LfdVSJ.mjs} +1 -1
- package/dist/{UpgradeScreen-N5cE1bG7.mjs.map → UpgradeScreen-D7LfdVSJ.mjs.map} +1 -1
- package/dist/{UpgradeScreen-C_rLnLD1.cjs → UpgradeScreen-DJKNVL-O.cjs} +1 -1
- package/dist/{dist-CayuD99K.mjs → dist-Cl4FsM3V.mjs} +1 -1
- package/dist/{dist-CayuD99K.mjs.map → dist-Cl4FsM3V.mjs.map} +1 -1
- package/dist/{dist-CSYoMydt.cjs → dist-Cs6PV1Tf.cjs} +1 -1
- package/dist/{dist-CSYoMydt.cjs.map → dist-Cs6PV1Tf.cjs.map} +1 -1
- package/dist/{dist-DxvUzsnh.cjs → dist-oTn1xy1Z.cjs} +1 -1
- package/dist/{dist-DxvUzsnh.cjs.map → dist-oTn1xy1Z.cjs.map} +1 -1
- package/dist/index.cjs +38 -36
- 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 +36 -34
- package/dist/index.mjs.map +1 -1
- package/dist/{src-BZnlJmdg.mjs → order-detail-DkMYJvzl.mjs} +1 -1
- package/dist/order-detail-DkMYJvzl.mjs.map +1 -0
- package/dist/{src-DIkOTlgf.cjs → order-detail-JVq0-ps1.cjs} +1 -1
- package/dist/order-detail-JVq0-ps1.cjs.map +1 -0
- package/dist/{products-B3q5DFx1.cjs → products-BtHCYNv6.cjs} +1 -1
- package/dist/{products-B3q5DFx1.cjs.map → products-BtHCYNv6.cjs.map} +1 -1
- package/dist/{products-Dkwd_Bh0.mjs → products-DCO1hF_Q.mjs} +1 -1
- package/dist/{products-Dkwd_Bh0.mjs.map → products-DCO1hF_Q.mjs.map} +1 -1
- package/dist/{sortable.esm-DFTEWOHN.mjs → sortable.esm-DreCqRxJ.mjs} +1 -1
- package/dist/{sortable.esm-DFTEWOHN.mjs.map → sortable.esm-DreCqRxJ.mjs.map} +1 -1
- package/dist/{src-B7MRMtgx.cjs → src-BYyxE-aF.cjs} +1 -1
- package/dist/{src-B7MRMtgx.cjs.map → src-BYyxE-aF.cjs.map} +1 -1
- package/dist/src-BakNjVTk.mjs +1 -0
- package/dist/{src-CEouYGbQ.mjs → src-CzK-t4_m.mjs} +192 -245
- package/dist/src-CzK-t4_m.mjs.map +1 -0
- package/dist/{src-DdlLVUFj.cjs → src-D1poJLOQ.cjs} +197 -262
- package/dist/src-D1poJLOQ.cjs.map +1 -0
- package/dist/src-DL_WTpu5.cjs +1 -0
- package/dist/{src-MTAap-Xx.mjs → src-sa7B0kBg.mjs} +1 -1
- package/dist/{src-MTAap-Xx.mjs.map → src-sa7B0kBg.mjs.map} +1 -1
- package/dist/{use-customer-account-D0zro9w6.cjs → use-customer-account-BRdjIAmX.cjs} +1 -1
- package/dist/{use-customer-account-D0zro9w6.cjs.map → use-customer-account-BRdjIAmX.cjs.map} +1 -1
- package/dist/{use-customer-account-CT3yrTXm.mjs → use-customer-account-CgmmbLJd.mjs} +1 -1
- package/dist/{use-customer-account-CT3yrTXm.mjs.map → use-customer-account-CgmmbLJd.mjs.map} +1 -1
- package/package.json +11 -11
- package/dist/ContactsScreen-CsxYVQl_.cjs.map +0 -1
- package/dist/ContactsScreen-uBuFHvAZ.mjs.map +0 -1
- package/dist/MySiteScreen-DYtd8N1P.cjs.map +0 -1
- package/dist/OrdersScreen-BR7xTUEo.cjs.map +0 -1
- package/dist/OrdersScreen-aJSG8C3f.mjs.map +0 -1
- package/dist/SubscriptionsScreen-DPOQbKs6.cjs.map +0 -1
- package/dist/SubscriptionsScreen-DV1yVAAc.mjs.map +0 -1
- package/dist/src-BZnlJmdg.mjs.map +0 -1
- package/dist/src-CEouYGbQ.mjs.map +0 -1
- package/dist/src-DIkOTlgf.cjs.map +0 -1
- 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-
|
|
6
|
-
const require_src$1 = require("./src-
|
|
7
|
-
const require_products = require("./products-
|
|
8
|
-
const require_dist$5 = require("./dist-
|
|
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
|
|
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.
|
|
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:
|
|
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.
|
|
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:
|
|
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
|
-
|
|
6649
|
-
|
|
6650
|
-
|
|
6651
|
-
|
|
6652
|
-
|
|
6653
|
-
|
|
6654
|
-
|
|
6655
|
-
|
|
6656
|
-
|
|
6657
|
-
|
|
6658
|
-
|
|
6659
|
-
|
|
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)(
|
|
6677
|
-
|
|
6678
|
-
|
|
6679
|
-
}),
|
|
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
|
-
|
|
6695
|
-
|
|
6696
|
-
children:
|
|
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
|
-
|
|
6703
|
-
|
|
6704
|
-
|
|
6705
|
-
|
|
6706
|
-
|
|
6707
|
-
|
|
6708
|
-
|
|
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
|
-
|
|
6718
|
-
|
|
6719
|
-
|
|
6720
|
-
|
|
6721
|
-
|
|
6722
|
-
|
|
6723
|
-
|
|
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
|
-
|
|
6735
|
-
|
|
6736
|
-
|
|
6737
|
-
|
|
6738
|
-
|
|
6739
|
-
|
|
6740
|
-
|
|
6741
|
-
|
|
6742
|
-
|
|
6743
|
-
|
|
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
|
-
|
|
6747
|
-
|
|
6748
|
-
|
|
6749
|
-
|
|
6750
|
-
|
|
6751
|
-
|
|
6752
|
-
|
|
6753
|
-
|
|
6754
|
-
|
|
6755
|
-
|
|
6756
|
-
|
|
6757
|
-
|
|
6758
|
-
|
|
6759
|
-
|
|
6760
|
-
|
|
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-
|
|
9018
|
+
//# sourceMappingURL=src-D1poJLOQ.cjs.map
|