@fluid-app/portal-sdk 0.1.206 → 0.1.208
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/{AlertWidget-Nx31UmWK.cjs → AlertWidget-Bli5ni5t.cjs} +2 -2
- package/dist/{AlertWidget-Nx31UmWK.cjs.map → AlertWidget-Bli5ni5t.cjs.map} +1 -1
- package/dist/{AlertWidget-D1kyQEgu.mjs → AlertWidget-C0wnu4-c.mjs} +2 -2
- package/dist/{AlertWidget-D1kyQEgu.mjs.map → AlertWidget-C0wnu4-c.mjs.map} +1 -1
- package/dist/{BulletListWidget-CouwHMJt.cjs → BulletListWidget-BHkly6-D.cjs} +2 -2
- package/dist/{BulletListWidget-CouwHMJt.cjs.map → BulletListWidget-BHkly6-D.cjs.map} +1 -1
- package/dist/{BulletListWidget-CHWI28yY.mjs → BulletListWidget-DRxFyFKI.mjs} +2 -2
- package/dist/{BulletListWidget-CHWI28yY.mjs.map → BulletListWidget-DRxFyFKI.mjs.map} +1 -1
- package/dist/{CalendarWidget-BtKzQFeO.cjs → CalendarWidget-BcZNsVQo.cjs} +2 -2
- package/dist/{CalendarWidget-BtKzQFeO.cjs.map → CalendarWidget-BcZNsVQo.cjs.map} +1 -1
- package/dist/{CalendarWidget-CZUo7mPL.mjs → CalendarWidget-kZBErtwM.mjs} +2 -2
- package/dist/{CalendarWidget-CZUo7mPL.mjs.map → CalendarWidget-kZBErtwM.mjs.map} +1 -1
- package/dist/{CardWidget-DVi0NVhb.cjs → CardWidget-BAl-3dJF.cjs} +2 -2
- package/dist/{CardWidget-DVi0NVhb.cjs.map → CardWidget-BAl-3dJF.cjs.map} +1 -1
- package/dist/{CardWidget-BVYjwdua.cjs → CardWidget-CFtUC9RB.cjs} +2 -2
- package/dist/{CardWidget-Cx5_Z-lR.mjs → CardWidget-gcPNwuZk.mjs} +2 -2
- package/dist/{CardWidget-Cx5_Z-lR.mjs.map → CardWidget-gcPNwuZk.mjs.map} +1 -1
- package/dist/{CarouselWidget-DLqTBIrf.cjs → CarouselWidget-BWpRWnUV.cjs} +2 -2
- package/dist/{CarouselWidget-DLqTBIrf.cjs.map → CarouselWidget-BWpRWnUV.cjs.map} +1 -1
- package/dist/{CarouselWidget-BENYmIwu.cjs → CarouselWidget-CrQFcQdL.cjs} +2 -2
- package/dist/{CarouselWidget-D1yzBwlG.mjs → CarouselWidget-DPFJhHro.mjs} +2 -2
- package/dist/{CarouselWidget-D1yzBwlG.mjs.map → CarouselWidget-DPFJhHro.mjs.map} +1 -1
- package/dist/{CatchUpWidget-J2SPvIqy.mjs → CatchUpWidget-DGucqTrd.mjs} +2 -2
- package/dist/{CatchUpWidget-J2SPvIqy.mjs.map → CatchUpWidget-DGucqTrd.mjs.map} +1 -1
- package/dist/{CatchUpWidget-BmibiEkX.cjs → CatchUpWidget-sUlMDu2k.cjs} +2 -2
- package/dist/{CatchUpWidget-BmibiEkX.cjs.map → CatchUpWidget-sUlMDu2k.cjs.map} +1 -1
- package/dist/{ChartWidget-B0vgP7df.cjs → ChartWidget-C2fmc4-R.cjs} +2 -2
- package/dist/{ChartWidget-B0vgP7df.cjs.map → ChartWidget-C2fmc4-R.cjs.map} +1 -1
- package/dist/{ChartWidget-C5DS5HRm.mjs → ChartWidget-C9jaZaxZ.mjs} +2 -2
- package/dist/{ChartWidget-C5DS5HRm.mjs.map → ChartWidget-C9jaZaxZ.mjs.map} +1 -1
- package/dist/{ChartWidget-DzgRlcNX.cjs → ChartWidget-DOmPdTxL.cjs} +2 -2
- package/dist/{ContactsScreen-BXWnpPXj.cjs → ContactsScreen-BozwvGrb.cjs} +65 -7
- package/dist/{ContactsScreen-BXWnpPXj.cjs.map → ContactsScreen-BozwvGrb.cjs.map} +1 -1
- package/dist/{ContactsScreen-DSnGEWTK.cjs → ContactsScreen-By3ap4Bv.cjs} +1 -1
- package/dist/{ContactsScreen-C25kLBcG.mjs → ContactsScreen-CCsst8bb.mjs} +67 -9
- package/dist/ContactsScreen-CCsst8bb.mjs.map +1 -0
- package/dist/{ContainerWidget-jI3cpmAu.mjs → ContainerWidget-6XsVE_8u.mjs} +3 -3
- package/dist/{ContainerWidget-jI3cpmAu.mjs.map → ContainerWidget-6XsVE_8u.mjs.map} +1 -1
- package/dist/{ContainerWidget-gtjlMITv.cjs → ContainerWidget-CWVH8szT.cjs} +3 -3
- package/dist/{ContainerWidget-DNo8CkQ7.cjs → ContainerWidget-DWp7gOZM.cjs} +3 -3
- package/dist/{ContainerWidget-DNo8CkQ7.cjs.map → ContainerWidget-DWp7gOZM.cjs.map} +1 -1
- package/dist/{EmbedWidget-BSfycJxm.mjs → EmbedWidget-Buij0edW.mjs} +2 -2
- package/dist/{EmbedWidget-BSfycJxm.mjs.map → EmbedWidget-Buij0edW.mjs.map} +1 -1
- package/dist/{EmbedWidget-CLArhSmx.cjs → EmbedWidget-PIWoA9sU.cjs} +2 -2
- package/dist/{EmbedWidget-CLArhSmx.cjs.map → EmbedWidget-PIWoA9sU.cjs.map} +1 -1
- package/dist/{FluidProvider-kEtG78-R.mjs → FluidProvider-0Mba_MWW.mjs} +48 -48
- package/dist/{FluidProvider-kEtG78-R.mjs.map → FluidProvider-0Mba_MWW.mjs.map} +1 -1
- package/dist/{FluidProvider-DgZSqdB4.cjs → FluidProvider-Df88VSWk.cjs} +48 -48
- package/dist/{FluidProvider-DgZSqdB4.cjs.map → FluidProvider-Df88VSWk.cjs.map} +1 -1
- package/dist/{ImageWidget-B7ui4-KU.cjs → ImageWidget-DbV--wn4.cjs} +2 -2
- package/dist/{ImageWidget-B7ui4-KU.cjs.map → ImageWidget-DbV--wn4.cjs.map} +1 -1
- package/dist/{ImageWidget-DAoPOp3e.mjs → ImageWidget-DuqgiO55.mjs} +2 -2
- package/dist/{ImageWidget-DAoPOp3e.mjs.map → ImageWidget-DuqgiO55.mjs.map} +1 -1
- package/dist/{LayoutWidget-DHlXzqUk.cjs → LayoutWidget-BbABNLAR.cjs} +2 -2
- package/dist/{LayoutWidget-DHlXzqUk.cjs.map → LayoutWidget-BbABNLAR.cjs.map} +1 -1
- package/dist/{LayoutWidget-CQYR0aDO.mjs → LayoutWidget-CQeqonHh.mjs} +2 -2
- package/dist/{LayoutWidget-CQYR0aDO.mjs.map → LayoutWidget-CQeqonHh.mjs.map} +1 -1
- package/dist/{LayoutWidget-D5gh0ejr.cjs → LayoutWidget-DFMSbGrN.cjs} +2 -2
- package/dist/{LinkWidget-DfVu-3zf.cjs → LinkWidget-Cn_4oI1U.cjs} +2 -2
- package/dist/{LinkWidget-BfvepYU9.cjs → LinkWidget-DMdMfamp.cjs} +5 -2
- package/dist/{LinkWidget-BfvepYU9.cjs.map → LinkWidget-DMdMfamp.cjs.map} +1 -1
- package/dist/{LinkWidget-BNHPtYLx.mjs → LinkWidget-muhFoV50.mjs} +5 -2
- package/dist/{LinkWidget-BNHPtYLx.mjs.map → LinkWidget-muhFoV50.mjs.map} +1 -1
- package/dist/{ListWidget-Da-YzDAs.cjs → ListWidget-B5jPU4m1.cjs} +2 -2
- package/dist/{ListWidget-Da-YzDAs.cjs.map → ListWidget-B5jPU4m1.cjs.map} +1 -1
- package/dist/{ListWidget-BAf2Vfsx.cjs → ListWidget-C_FkCsCJ.cjs} +2 -2
- package/dist/{ListWidget-cJKGHqJD.mjs → ListWidget-DvZQjspc.mjs} +2 -2
- package/dist/{ListWidget-cJKGHqJD.mjs.map → ListWidget-DvZQjspc.mjs.map} +1 -1
- package/dist/{MessagingScreen-Rr8rNnDM.cjs → MessagingScreen-BE9FZr7f.cjs} +2 -2
- package/dist/{MessagingScreen-Rr8rNnDM.cjs.map → MessagingScreen-BE9FZr7f.cjs.map} +1 -1
- package/dist/{MessagingScreen-B5F4cJL9.mjs → MessagingScreen-BKgNsHdQ.mjs} +2 -2
- package/dist/{MessagingScreen-B5F4cJL9.mjs.map → MessagingScreen-BKgNsHdQ.mjs.map} +1 -1
- package/dist/MessagingScreen-BrHK0nrA.cjs +45 -0
- package/dist/{MySiteScreen-DERelKhT.cjs → MySiteScreen-BPwzK-ks.cjs} +1 -1
- package/dist/{MySiteScreen-DUta9jeJ.mjs → MySiteScreen-Dz5htti5.mjs} +23 -3
- package/dist/MySiteScreen-Dz5htti5.mjs.map +1 -0
- package/dist/{MySiteScreen-WFFhf8WZ.cjs → MySiteScreen-aaL_vggP.cjs} +23 -3
- package/dist/MySiteScreen-aaL_vggP.cjs.map +1 -0
- package/dist/{MySiteWidget-ISV__1ng.cjs → MySiteWidget-C1OYAsZw.cjs} +2 -2
- package/dist/{MySiteWidget-ISV__1ng.cjs.map → MySiteWidget-C1OYAsZw.cjs.map} +1 -1
- package/dist/{MySiteWidget-D_XsC3n0.mjs → MySiteWidget-C6IZytLt.mjs} +2 -2
- package/dist/{MySiteWidget-D_XsC3n0.mjs.map → MySiteWidget-C6IZytLt.mjs.map} +1 -1
- package/dist/{NestedWidget-Bgrfl1S7.cjs → NestedWidget-B8ORvmp2.cjs} +2 -2
- package/dist/{NestedWidget-BBOHOg12.cjs → NestedWidget-BSNtbipH.cjs} +2 -2
- package/dist/{NestedWidget-BBOHOg12.cjs.map → NestedWidget-BSNtbipH.cjs.map} +1 -1
- package/dist/{NestedWidget-CGdxVlhr.mjs → NestedWidget-J9sJbt9s.mjs} +2 -2
- package/dist/{NestedWidget-CGdxVlhr.mjs.map → NestedWidget-J9sJbt9s.mjs.map} +1 -1
- package/dist/{OrdersScreen-Vcd072vf.cjs → OrdersScreen-CGvcgmLz.cjs} +1 -1
- package/dist/{OrdersScreen-CpU_Y_qI.cjs → OrdersScreen-Cx7xpzDk.cjs} +2 -2
- package/dist/{OrdersScreen-CpU_Y_qI.cjs.map → OrdersScreen-Cx7xpzDk.cjs.map} +1 -1
- package/dist/{OrdersScreen-jvCpiDDt.mjs → OrdersScreen-D4pe5mLs.mjs} +2 -2
- package/dist/{OrdersScreen-jvCpiDDt.mjs.map → OrdersScreen-D4pe5mLs.mjs.map} +1 -1
- package/dist/{PointsWidget-h0jqVXWf.cjs → PointsWidget-Bw08kgNE.cjs} +2 -2
- package/dist/{PointsWidget-h0jqVXWf.cjs.map → PointsWidget-Bw08kgNE.cjs.map} +1 -1
- package/dist/{PointsWidget-D8g-asFn.mjs → PointsWidget-CoDqvWC5.mjs} +2 -2
- package/dist/{PointsWidget-D8g-asFn.mjs.map → PointsWidget-CoDqvWC5.mjs.map} +1 -1
- package/dist/{PortalContentApiProvider-DxCHKK04.mjs → PortalContentApiProvider-B-miOfQl.mjs} +671 -768
- package/dist/PortalContentApiProvider-B-miOfQl.mjs.map +1 -0
- package/dist/{PortalContentApiProvider-DqAbDYgq.cjs → PortalContentApiProvider-Cec9tth6.cjs} +671 -768
- package/dist/PortalContentApiProvider-Cec9tth6.cjs.map +1 -0
- package/dist/{PortalProductsApiProvider-DaQUq6vq.cjs → PortalProductsApiProvider-Ca1oeTtJ.cjs} +2 -2
- package/dist/{PortalProductsApiProvider-DaQUq6vq.cjs.map → PortalProductsApiProvider-Ca1oeTtJ.cjs.map} +1 -1
- package/dist/{PortalProductsApiProvider-Y_4IQZBP.mjs → PortalProductsApiProvider-DHni3Y1V.mjs} +2 -2
- package/dist/{PortalProductsApiProvider-Y_4IQZBP.mjs.map → PortalProductsApiProvider-DHni3Y1V.mjs.map} +1 -1
- package/dist/{ProductsScreen-BQ4pOdSM.cjs → ProductsScreen-62Tzsdap.cjs} +3 -3
- package/dist/{ProductsScreen-BQ4pOdSM.cjs.map → ProductsScreen-62Tzsdap.cjs.map} +1 -1
- package/dist/{ProductsScreen-BXVezV86.mjs → ProductsScreen-CRSHQoVn.mjs} +3 -3
- package/dist/{ProductsScreen-BXVezV86.mjs.map → ProductsScreen-CRSHQoVn.mjs.map} +1 -1
- package/dist/{ProductsScreen-BuYB8ARn.mjs → ProductsScreen-CRV1_NVf.mjs} +3 -3
- package/dist/{ProductsScreen-CwuS5xwA.cjs → ProductsScreen-D1pyistU.cjs} +3 -3
- package/dist/ProfileScreen-DYHRKKVI.cjs +44 -0
- package/dist/{ProfileScreen-BwB62fMh.cjs → ProfileScreen-DtNJ1sdF.cjs} +2 -2
- package/dist/{ProfileScreen-BwB62fMh.cjs.map → ProfileScreen-DtNJ1sdF.cjs.map} +1 -1
- package/dist/{ProfileScreen-AEC-nP75.mjs → ProfileScreen-WC3LIwDh.mjs} +2 -2
- package/dist/{ProfileScreen-AEC-nP75.mjs.map → ProfileScreen-WC3LIwDh.mjs.map} +1 -1
- package/dist/{QuickShareWidget-C_p3tPs5.cjs → QuickShareWidget-DRbErOlt.cjs} +2 -2
- package/dist/{QuickShareWidget-C_p3tPs5.cjs.map → QuickShareWidget-DRbErOlt.cjs.map} +1 -1
- package/dist/{QuickShareWidget-rft-kn8a.mjs → QuickShareWidget-Dbjueevf.mjs} +2 -2
- package/dist/{QuickShareWidget-rft-kn8a.mjs.map → QuickShareWidget-Dbjueevf.mjs.map} +1 -1
- package/dist/{RecentActivityWidget-Ql-mGLEf.cjs → RecentActivityWidget-CWr6bFgP.cjs} +2 -2
- package/dist/{RecentActivityWidget-Ql-mGLEf.cjs.map → RecentActivityWidget-CWr6bFgP.cjs.map} +1 -1
- package/dist/{RecentActivityWidget-DxlhERm0.mjs → RecentActivityWidget-D-uJcFkE.mjs} +2 -2
- package/dist/{RecentActivityWidget-DxlhERm0.mjs.map → RecentActivityWidget-D-uJcFkE.mjs.map} +1 -1
- package/dist/{SeparatorWidget-_37ala5k.cjs → SeparatorWidget-CjVHbHzQ.cjs} +4 -2
- package/dist/{SeparatorWidget-_37ala5k.cjs.map → SeparatorWidget-CjVHbHzQ.cjs.map} +1 -1
- package/dist/{SeparatorWidget-C5kp4gzo.mjs → SeparatorWidget-Clm35u4g.mjs} +4 -2
- package/dist/{SeparatorWidget-C5kp4gzo.mjs.map → SeparatorWidget-Clm35u4g.mjs.map} +1 -1
- package/dist/{ShareablesScreen-BncSEvDU.mjs → ShareablesScreen-BZK_lSdi.mjs} +3 -3
- package/dist/{ShareablesScreen-BncSEvDU.mjs.map → ShareablesScreen-BZK_lSdi.mjs.map} +1 -1
- package/dist/{ShareablesScreen-DooJX53H.cjs → ShareablesScreen-BlX1v88I.cjs} +3 -3
- package/dist/{ShareablesScreen-DooJX53H.cjs.map → ShareablesScreen-BlX1v88I.cjs.map} +1 -1
- package/dist/{ShareablesScreen-BRLq4OJS.mjs → ShareablesScreen-Ce7kJAPw.mjs} +3 -3
- package/dist/{ShareablesScreen-iI_TDe30.cjs → ShareablesScreen-DELGijpZ.cjs} +3 -3
- package/dist/{ShopScreen-Ja1W8IMs.mjs → ShopScreen-BfexFHUc.mjs} +3 -3
- package/dist/{ShopScreen-Ja1W8IMs.mjs.map → ShopScreen-BfexFHUc.mjs.map} +1 -1
- package/dist/{ShopScreen-B-D-upOl.cjs → ShopScreen-Bo9YZ_EO.cjs} +3 -3
- package/dist/{ShopScreen-B-D-upOl.cjs.map → ShopScreen-Bo9YZ_EO.cjs.map} +1 -1
- package/dist/ShopScreen-MZm20clN.cjs +46 -0
- package/dist/{SubscriptionsScreen-e2lCfnL0.cjs → SubscriptionsScreen-CQQPtSbM.cjs} +1 -1
- package/dist/{SubscriptionsScreen-COOAJ8r5.mjs → SubscriptionsScreen-CuP9OfBI.mjs} +94 -11
- package/dist/SubscriptionsScreen-CuP9OfBI.mjs.map +1 -0
- package/dist/{SubscriptionsScreen-Cx6u1tDv.cjs → SubscriptionsScreen-YUtsF_Eq.cjs} +92 -9
- package/dist/SubscriptionsScreen-YUtsF_Eq.cjs.map +1 -0
- package/dist/{TableWidget-C7qiWZc3.cjs → TableWidget-BA99kJpe.cjs} +2 -2
- package/dist/{TableWidget-DUnz9hrD.cjs → TableWidget-DCWm-ENc.cjs} +2 -2
- package/dist/{TableWidget-DUnz9hrD.cjs.map → TableWidget-DCWm-ENc.cjs.map} +1 -1
- package/dist/{TableWidget-BVufe18A.mjs → TableWidget-DVfzScu1.mjs} +2 -2
- package/dist/{TableWidget-BVufe18A.mjs.map → TableWidget-DVfzScu1.mjs.map} +1 -1
- package/dist/{TextWidget-WKDCwape.mjs → TextWidget-BsDMvSQy.mjs} +8 -2
- package/dist/TextWidget-BsDMvSQy.mjs.map +1 -0
- package/dist/{TextWidget--UgOcUQx.cjs → TextWidget-D9H9WUPH.cjs} +8 -2
- package/dist/TextWidget-D9H9WUPH.cjs.map +1 -0
- package/dist/{ToDoWidget-CG0s98ed.mjs → ToDoWidget-DvNBsmgz.mjs} +2 -2
- package/dist/{ToDoWidget-CG0s98ed.mjs.map → ToDoWidget-DvNBsmgz.mjs.map} +1 -1
- package/dist/{ToDoWidget-B2qEGt7v.cjs → ToDoWidget-x86UGKLQ.cjs} +2 -2
- package/dist/{ToDoWidget-B2qEGt7v.cjs.map → ToDoWidget-x86UGKLQ.cjs.map} +1 -1
- package/dist/{VideoWidget-CHuSla09.mjs → VideoWidget-BpKJv_pg.mjs} +2 -2
- package/dist/{VideoWidget-CHuSla09.mjs.map → VideoWidget-BpKJv_pg.mjs.map} +1 -1
- package/dist/{VideoWidget-sEVQcp9o.cjs → VideoWidget-CvDmuMnA.cjs} +2 -2
- package/dist/{VideoWidget-sEVQcp9o.cjs.map → VideoWidget-CvDmuMnA.cjs.map} +1 -1
- package/dist/index.cjs +54 -54
- package/dist/index.d.cts +10 -0
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +10 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +54 -54
- package/dist/{portal_tenant-VLrtyCZ3.mjs → portal_tenant-Mu12SQA1.mjs} +2 -2
- package/dist/portal_tenant-Mu12SQA1.mjs.map +1 -0
- package/dist/{portal_tenant-DMF89PmN.cjs → portal_tenant-dfv03Fyi.cjs} +2 -2
- package/dist/portal_tenant-dfv03Fyi.cjs.map +1 -0
- package/dist/{registries-GJMHub-Q.cjs → registries-CpUM406S.cjs} +9 -1
- package/dist/registries-CpUM406S.cjs.map +1 -0
- package/dist/{registries-CyjQkRM-.mjs → registries-DT36l-bR.mjs} +9 -1
- package/dist/registries-DT36l-bR.mjs.map +1 -0
- package/package.json +13 -13
- package/dist/ContactsScreen-C25kLBcG.mjs.map +0 -1
- package/dist/MessagingScreen-BZNsf1M6.cjs +0 -45
- package/dist/MySiteScreen-DUta9jeJ.mjs.map +0 -1
- package/dist/MySiteScreen-WFFhf8WZ.cjs.map +0 -1
- package/dist/PortalContentApiProvider-DqAbDYgq.cjs.map +0 -1
- package/dist/PortalContentApiProvider-DxCHKK04.mjs.map +0 -1
- package/dist/ProfileScreen-BXyMS54d.cjs +0 -44
- package/dist/ShopScreen-CzPTkvqY.cjs +0 -46
- package/dist/SubscriptionsScreen-COOAJ8r5.mjs.map +0 -1
- package/dist/SubscriptionsScreen-Cx6u1tDv.cjs.map +0 -1
- package/dist/TextWidget--UgOcUQx.cjs.map +0 -1
- package/dist/TextWidget-WKDCwape.mjs.map +0 -1
- package/dist/portal_tenant-DMF89PmN.cjs.map +0 -1
- package/dist/portal_tenant-VLrtyCZ3.mjs.map +0 -1
- package/dist/registries-CyjQkRM-.mjs.map +0 -1
- package/dist/registries-GJMHub-Q.cjs.map +0 -1
package/dist/{PortalContentApiProvider-DxCHKK04.mjs → PortalContentApiProvider-B-miOfQl.mjs}
RENAMED
|
@@ -7,7 +7,7 @@ import { a as useEditor, o as Placeholder, r as EditorContent, t as StarterKit }
|
|
|
7
7
|
import { t as SearchSort } from "./SearchSort-TmuNOCwA.mjs";
|
|
8
8
|
import { n as TextAlign, t as Underline } from "./dist-DBPpJ567.mjs";
|
|
9
9
|
import { a as verticalListSortingStrategy, c as PointerSensor, d as useSensors, f as CSS, i as useSortable, l as closestCenter, n as arrayMove, o as DndContext, r as sortableKeyboardCoordinates, s as KeyboardSensor, t as SortableContext, u as useSensor } from "./sortable.esm-DFTEWOHN.mjs";
|
|
10
|
-
import { o as usePortalProductsApi } from "./PortalProductsApiProvider-
|
|
10
|
+
import { o as usePortalProductsApi } from "./PortalProductsApiProvider-DHni3Y1V.mjs";
|
|
11
11
|
import React, { PureComponent, createContext, createRef, forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
|
|
12
12
|
import { keepPreviousData, useInfiniteQuery, useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
13
13
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -508,9 +508,76 @@ function ShareProductCard({ product, mediaCount }) {
|
|
|
508
508
|
});
|
|
509
509
|
}
|
|
510
510
|
//#endregion
|
|
511
|
+
//#region ../../shareables/ui/src/components/shared/ShareableListLayout.tsx
|
|
512
|
+
/**
|
|
513
|
+
* Grid column class shared by all shareable listing screens (products, media,
|
|
514
|
+
* playlists, files). Exposed so the list-content slot can reuse it directly.
|
|
515
|
+
*/
|
|
516
|
+
const SHAREABLE_GRID_CLASS = "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";
|
|
517
|
+
/**
|
|
518
|
+
* Standard page chrome for shareable listing screens. Provides:
|
|
519
|
+
*
|
|
520
|
+
* - Page-level padding (matching all existing listing screens).
|
|
521
|
+
* - Loading skeleton (filter bar + grid of 8 card placeholders).
|
|
522
|
+
* - Inline error rendering.
|
|
523
|
+
* - Empty state rendering.
|
|
524
|
+
* - Optional filter/footer/sentinel slots.
|
|
525
|
+
*
|
|
526
|
+
* Domain-specific UI (cards, rows, filter controls) is slotted in via
|
|
527
|
+
* `filters` and `children`. This component does NOT own data fetching or
|
|
528
|
+
* any state — callers pass in the derived flags.
|
|
529
|
+
*/
|
|
530
|
+
function ShareableListLayout({ filters, children, isLoading, error, errorMessage = "Failed to load. Please try again.", isEmpty, emptyMessage, footer, loadingFilterShape = "search", sentinelRef }) {
|
|
531
|
+
if (isLoading) return /* @__PURE__ */ jsxs("div", {
|
|
532
|
+
className: "space-y-6 px-4 py-4 md:px-10 md:py-6",
|
|
533
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
534
|
+
className: "flex items-center gap-3",
|
|
535
|
+
children: [
|
|
536
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-10 flex-1" }),
|
|
537
|
+
loadingFilterShape === "search-view" && /* @__PURE__ */ jsx(Skeleton, { className: "h-10 w-10" }),
|
|
538
|
+
loadingFilterShape === "search-action" && /* @__PURE__ */ jsx(Skeleton, { className: "h-10 w-24" })
|
|
539
|
+
]
|
|
540
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
541
|
+
className: SHAREABLE_GRID_CLASS,
|
|
542
|
+
children: Array.from({ length: 8 }).map((_, i) => /* @__PURE__ */ jsxs("div", {
|
|
543
|
+
className: "space-y-2",
|
|
544
|
+
children: [
|
|
545
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "aspect-square w-full rounded-lg" }),
|
|
546
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-3/4" }),
|
|
547
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-3 w-1/2" })
|
|
548
|
+
]
|
|
549
|
+
}, i))
|
|
550
|
+
})]
|
|
551
|
+
});
|
|
552
|
+
if (error) return /* @__PURE__ */ jsx("div", {
|
|
553
|
+
className: "flex flex-col items-center justify-center py-16",
|
|
554
|
+
children: /* @__PURE__ */ jsx("p", {
|
|
555
|
+
className: "text-destructive text-sm",
|
|
556
|
+
children: errorMessage
|
|
557
|
+
})
|
|
558
|
+
});
|
|
559
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
560
|
+
className: "space-y-6 px-4 py-4 md:px-10 md:py-6",
|
|
561
|
+
children: [
|
|
562
|
+
filters,
|
|
563
|
+
isEmpty ? /* @__PURE__ */ jsx("div", {
|
|
564
|
+
className: "flex flex-col items-center justify-center py-16",
|
|
565
|
+
children: /* @__PURE__ */ jsx("p", {
|
|
566
|
+
className: "text-muted-foreground text-sm",
|
|
567
|
+
children: emptyMessage
|
|
568
|
+
})
|
|
569
|
+
}) : children,
|
|
570
|
+
footer,
|
|
571
|
+
sentinelRef && /* @__PURE__ */ jsx("div", {
|
|
572
|
+
ref: sentinelRef,
|
|
573
|
+
className: "h-1"
|
|
574
|
+
})
|
|
575
|
+
]
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
//#endregion
|
|
511
579
|
//#region ../../shareables/ui/src/components/screens/ProductsScreen.tsx
|
|
512
580
|
const PAGE_SIZE$4 = 24;
|
|
513
|
-
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";
|
|
514
581
|
const SORT_OPTIONS$1 = [
|
|
515
582
|
{
|
|
516
583
|
label: "Newest",
|
|
@@ -630,73 +697,42 @@ function ProductsScreen({ countryCode, fetchProducts: fetchPortalProducts, onNav
|
|
|
630
697
|
media_count: void 0
|
|
631
698
|
})) ?? [];
|
|
632
699
|
}, [data, usePortal]);
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
if (error) return /* @__PURE__ */ jsx("div", {
|
|
651
|
-
className: "flex flex-col items-center justify-center py-16",
|
|
652
|
-
children: /* @__PURE__ */ jsx("p", {
|
|
653
|
-
className: "text-destructive text-sm",
|
|
654
|
-
children: "Failed to load products. Please try again."
|
|
655
|
-
})
|
|
656
|
-
});
|
|
657
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
658
|
-
className: "space-y-6 px-4 py-4 md:px-10 md:py-6",
|
|
659
|
-
children: [
|
|
660
|
-
/* @__PURE__ */ jsx("div", {
|
|
661
|
-
className: "flex justify-end",
|
|
662
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
663
|
-
className: "w-full max-w-sm",
|
|
664
|
-
children: /* @__PURE__ */ jsx(SearchSort, {
|
|
665
|
-
searchValue: searchTerm,
|
|
666
|
-
onSearchChange: setSearchTerm,
|
|
667
|
-
placeholder: "Search products...",
|
|
668
|
-
sortOptions: SORT_OPTIONS$1,
|
|
669
|
-
sortValue,
|
|
670
|
-
onSortChange: setSortValue
|
|
671
|
-
})
|
|
672
|
-
})
|
|
673
|
-
}),
|
|
674
|
-
products.length === 0 ? /* @__PURE__ */ jsx("div", {
|
|
675
|
-
className: "flex flex-col items-center justify-center py-16",
|
|
676
|
-
children: /* @__PURE__ */ jsx("p", {
|
|
677
|
-
className: "text-muted-foreground text-sm",
|
|
678
|
-
children: debouncedSearch ? "No products match your search." : "No products available."
|
|
700
|
+
return /* @__PURE__ */ jsx(ShareableListLayout, {
|
|
701
|
+
isLoading,
|
|
702
|
+
error,
|
|
703
|
+
errorMessage: "Failed to load products. Please try again.",
|
|
704
|
+
isEmpty: products.length === 0,
|
|
705
|
+
emptyMessage: debouncedSearch ? "No products match your search." : "No products available.",
|
|
706
|
+
filters: /* @__PURE__ */ jsx("div", {
|
|
707
|
+
className: "flex justify-end",
|
|
708
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
709
|
+
className: "w-full max-w-sm",
|
|
710
|
+
children: /* @__PURE__ */ jsx(SearchSort, {
|
|
711
|
+
searchValue: searchTerm,
|
|
712
|
+
onSearchChange: setSearchTerm,
|
|
713
|
+
placeholder: "Search products...",
|
|
714
|
+
sortOptions: SORT_OPTIONS$1,
|
|
715
|
+
sortValue,
|
|
716
|
+
onSortChange: setSortValue
|
|
679
717
|
})
|
|
680
|
-
}) : /* @__PURE__ */ jsx("div", {
|
|
681
|
-
className: GRID_CLASS$3,
|
|
682
|
-
children: products.map((product) => /* @__PURE__ */ jsx(ShareProductCard, {
|
|
683
|
-
product: {
|
|
684
|
-
id: product.id,
|
|
685
|
-
title: product.title,
|
|
686
|
-
image_url: product.image_url
|
|
687
|
-
},
|
|
688
|
-
mediaCount: product.media_count
|
|
689
|
-
}, product.id))
|
|
690
|
-
}),
|
|
691
|
-
isFetchingNextPage && /* @__PURE__ */ jsx("div", {
|
|
692
|
-
className: "flex justify-center py-4",
|
|
693
|
-
children: /* @__PURE__ */ jsx("div", { className: "border-primary h-6 w-6 animate-spin rounded-full border-2 border-t-transparent" })
|
|
694
|
-
}),
|
|
695
|
-
/* @__PURE__ */ jsx("div", {
|
|
696
|
-
ref: observerTarget,
|
|
697
|
-
className: "h-1"
|
|
698
718
|
})
|
|
699
|
-
|
|
719
|
+
}),
|
|
720
|
+
footer: isFetchingNextPage && /* @__PURE__ */ jsx("div", {
|
|
721
|
+
className: "flex justify-center py-4",
|
|
722
|
+
children: /* @__PURE__ */ jsx("div", { className: "border-primary h-6 w-6 animate-spin rounded-full border-2 border-t-transparent" })
|
|
723
|
+
}),
|
|
724
|
+
sentinelRef: observerTarget,
|
|
725
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
726
|
+
className: SHAREABLE_GRID_CLASS,
|
|
727
|
+
children: products.map((product) => /* @__PURE__ */ jsx(ShareProductCard, {
|
|
728
|
+
product: {
|
|
729
|
+
id: product.id,
|
|
730
|
+
title: product.title,
|
|
731
|
+
image_url: product.image_url
|
|
732
|
+
},
|
|
733
|
+
mediaCount: product.media_count
|
|
734
|
+
}, product.id))
|
|
735
|
+
})
|
|
700
736
|
});
|
|
701
737
|
}
|
|
702
738
|
//#endregion
|
|
@@ -1215,13 +1251,85 @@ function MarketingAssetsGrid({ isLoading, error, activeTab, onTabChange, mediaIt
|
|
|
1215
1251
|
}
|
|
1216
1252
|
var MarketingAssetsGrid_default = React.memo(MarketingAssetsGrid);
|
|
1217
1253
|
//#endregion
|
|
1254
|
+
//#region ../../shareables/ui/src/components/shared/ShareableDetailLayout.tsx
|
|
1255
|
+
/**
|
|
1256
|
+
* Standard page chrome for shareable detail screens (product/media/playlist).
|
|
1257
|
+
* Provides the two-column hero + details layout, loading/not-found states,
|
|
1258
|
+
* title, and the read-more description block.
|
|
1259
|
+
*
|
|
1260
|
+
* Domain-specific chrome (breadcrumbs, header actions) is still wired up by
|
|
1261
|
+
* each screen via the shell header context — this layout purposefully does
|
|
1262
|
+
* NOT touch the shell header. Dialogs (delete confirmation, etc.) belong to
|
|
1263
|
+
* the caller and should be rendered as siblings to this component.
|
|
1264
|
+
*/
|
|
1265
|
+
function ShareableDetailLayout({ isLoading, notFound, notFoundMessage = "Not found or failed to load.", title, description, image, actions, meta, children, containerHeightClass = "md:h-[calc(100vh-140px)]" }) {
|
|
1266
|
+
if (isLoading) return /* @__PURE__ */ jsx("div", {
|
|
1267
|
+
className: "flex items-center justify-center py-16",
|
|
1268
|
+
children: /* @__PURE__ */ jsx(Spinner, { className: "size-8" })
|
|
1269
|
+
});
|
|
1270
|
+
if (notFound) return /* @__PURE__ */ jsx("div", {
|
|
1271
|
+
className: "flex flex-col items-center justify-center py-16",
|
|
1272
|
+
children: /* @__PURE__ */ jsx("p", {
|
|
1273
|
+
className: "text-destructive text-sm",
|
|
1274
|
+
children: notFoundMessage
|
|
1275
|
+
})
|
|
1276
|
+
});
|
|
1277
|
+
return /* @__PURE__ */ jsx("div", {
|
|
1278
|
+
className: "flex flex-col gap-4 px-4 py-4 md:px-10 md:py-6",
|
|
1279
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1280
|
+
className: `mx-auto flex w-full max-w-[480px] flex-col gap-6 md:max-w-none md:flex-row ${containerHeightClass}`,
|
|
1281
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1282
|
+
className: "aspect-square w-full md:aspect-auto md:h-full",
|
|
1283
|
+
children: image
|
|
1284
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1285
|
+
className: "flex w-full flex-col md:overflow-y-auto",
|
|
1286
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
1287
|
+
className: "space-y-4",
|
|
1288
|
+
children: [
|
|
1289
|
+
/* @__PURE__ */ jsx("h1", {
|
|
1290
|
+
className: "text-foreground text-[26px] leading-[1.2] font-semibold break-words",
|
|
1291
|
+
children: title
|
|
1292
|
+
}),
|
|
1293
|
+
/* @__PURE__ */ jsx(ShareableDescription, { html: description }),
|
|
1294
|
+
meta,
|
|
1295
|
+
actions
|
|
1296
|
+
]
|
|
1297
|
+
}), children]
|
|
1298
|
+
})]
|
|
1299
|
+
})
|
|
1300
|
+
});
|
|
1301
|
+
}
|
|
1302
|
+
/**
|
|
1303
|
+
* Read-more description block. Extracted so detail screens don't have to
|
|
1304
|
+
* reimplement the identical toggle + line-clamp logic. Pass the raw HTML
|
|
1305
|
+
* (e.g. mediaItem.description.body) — tags are stripped internally.
|
|
1306
|
+
*/
|
|
1307
|
+
function ShareableDescription({ html, threshold = 150 }) {
|
|
1308
|
+
const [isExpanded, setIsExpanded] = useState(false);
|
|
1309
|
+
const stripped = stripTags(html ?? "");
|
|
1310
|
+
if (!stripped) return null;
|
|
1311
|
+
const shouldShowReadMore = stripped.length > threshold;
|
|
1312
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
1313
|
+
className: "text-foreground/70 text-sm leading-relaxed",
|
|
1314
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1315
|
+
className: !isExpanded && shouldShowReadMore ? "line-clamp-3" : "",
|
|
1316
|
+
children: stripped
|
|
1317
|
+
}), shouldShowReadMore && /* @__PURE__ */ jsx(Button, {
|
|
1318
|
+
onClick: () => setIsExpanded((prev) => !prev),
|
|
1319
|
+
variant: "ghost",
|
|
1320
|
+
size: "sm",
|
|
1321
|
+
className: "text-foreground hover:text-foreground/80 mt-1 h-auto p-0 text-xs font-normal underline",
|
|
1322
|
+
children: isExpanded ? "Read less" : "Read more"
|
|
1323
|
+
})]
|
|
1324
|
+
});
|
|
1325
|
+
}
|
|
1326
|
+
//#endregion
|
|
1218
1327
|
//#region ../../shareables/ui/src/components/screens/ProductDetailScreen.tsx
|
|
1219
1328
|
function ProductDetailScreen({ productId, countryCode, fetchProduct: fetchPortalProduct, onNavigate, onBack }) {
|
|
1220
1329
|
const api = useShareablesApi();
|
|
1221
1330
|
const client = useShareablesClient();
|
|
1222
1331
|
const { navigate } = useShareablesUI();
|
|
1223
1332
|
const [activeTab, setActiveTab] = useState("All");
|
|
1224
|
-
const [isDescriptionExpanded, setIsDescriptionExpanded] = useState(false);
|
|
1225
1333
|
const { data: portalProductResponse, isLoading: isLoadingPortalProduct } = useQuery({
|
|
1226
1334
|
queryKey: [
|
|
1227
1335
|
"portal-products",
|
|
@@ -1277,8 +1385,6 @@ function ProductDetailScreen({ productId, countryCode, fetchProduct: fetchPortal
|
|
|
1277
1385
|
onBack,
|
|
1278
1386
|
navigate
|
|
1279
1387
|
]));
|
|
1280
|
-
const strippedDescription = stripTags(displayDescription);
|
|
1281
|
-
const shouldShowReadMore = strippedDescription.length > 150;
|
|
1282
1388
|
const displayPrice = (() => {
|
|
1283
1389
|
if (legacyProduct?.display_price) return legacyProduct.display_price;
|
|
1284
1390
|
const price = portalProduct?.price ?? legacyProduct?.price;
|
|
@@ -1311,114 +1417,74 @@ function ProductDetailScreen({ productId, countryCode, fetchProduct: fetchPortal
|
|
|
1311
1417
|
const handleMediaItemClick = useCallback((mediaItem) => {
|
|
1312
1418
|
onNavigate?.("media", String(mediaItem.id));
|
|
1313
1419
|
}, [onNavigate]);
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
className: "
|
|
1322
|
-
children:
|
|
1323
|
-
|
|
1324
|
-
});
|
|
1325
|
-
return /* @__PURE__ */ jsx("div", {
|
|
1326
|
-
className: "flex flex-col gap-4 px-4 py-4 md:px-10 md:py-6",
|
|
1327
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
1328
|
-
className: "mx-auto flex w-full max-w-480 flex-col gap-6 md:h-[calc(100vh-140px)] md:flex-row",
|
|
1329
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
1330
|
-
className: "aspect-square w-full md:aspect-auto md:h-full",
|
|
1331
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
1332
|
-
className: "relative h-full overflow-hidden rounded-2xl",
|
|
1333
|
-
children: !productImage ? /* @__PURE__ */ jsxs("div", {
|
|
1334
|
-
className: "bg-muted flex h-full w-full flex-col items-center justify-center rounded-2xl",
|
|
1335
|
-
children: [
|
|
1336
|
-
/* @__PURE__ */ jsx("div", {
|
|
1337
|
-
className: "mb-2 text-gray-400",
|
|
1338
|
-
children: /* @__PURE__ */ jsx(Image, { className: "mx-auto h-12 w-12" })
|
|
1339
|
-
}),
|
|
1340
|
-
/* @__PURE__ */ jsx("div", {
|
|
1341
|
-
className: "mb-1 text-sm text-gray-500",
|
|
1342
|
-
children: "No Product Image"
|
|
1343
|
-
}),
|
|
1344
|
-
/* @__PURE__ */ jsx("div", {
|
|
1345
|
-
className: "text-xs text-gray-400",
|
|
1346
|
-
children: "This product does not have any associated media"
|
|
1347
|
-
})
|
|
1348
|
-
]
|
|
1349
|
-
}) : /* @__PURE__ */ jsx(SharePageImageDisplay, {
|
|
1350
|
-
displayImage: productImage,
|
|
1351
|
-
displayTitle,
|
|
1352
|
-
isVideo: false,
|
|
1353
|
-
badgeLabel: "Product"
|
|
1354
|
-
})
|
|
1355
|
-
})
|
|
1356
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
1357
|
-
className: "flex w-full flex-col md:overflow-y-auto",
|
|
1420
|
+
return /* @__PURE__ */ jsxs(ShareableDetailLayout, {
|
|
1421
|
+
isLoading: isLoadingProduct,
|
|
1422
|
+
notFound: !product,
|
|
1423
|
+
notFoundMessage: "Product not found or failed to load.",
|
|
1424
|
+
title: displayTitle,
|
|
1425
|
+
description: displayDescription,
|
|
1426
|
+
image: /* @__PURE__ */ jsx("div", {
|
|
1427
|
+
className: "relative h-full overflow-hidden rounded-2xl",
|
|
1428
|
+
children: !productImage ? /* @__PURE__ */ jsxs("div", {
|
|
1429
|
+
className: "bg-muted flex h-full w-full flex-col items-center justify-center rounded-2xl",
|
|
1358
1430
|
children: [
|
|
1359
|
-
/* @__PURE__ */
|
|
1360
|
-
className: "
|
|
1361
|
-
children:
|
|
1362
|
-
/* @__PURE__ */ jsx("h1", {
|
|
1363
|
-
className: "text-foreground text-[26px] leading-[1.2] font-semibold",
|
|
1364
|
-
children: displayTitle
|
|
1365
|
-
}),
|
|
1366
|
-
strippedDescription && /* @__PURE__ */ jsxs("div", {
|
|
1367
|
-
className: "text-foreground/70 text-sm leading-relaxed",
|
|
1368
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
1369
|
-
className: !isDescriptionExpanded && shouldShowReadMore ? "line-clamp-3" : "",
|
|
1370
|
-
children: strippedDescription
|
|
1371
|
-
}), shouldShowReadMore && /* @__PURE__ */ jsx(Button, {
|
|
1372
|
-
onClick: () => setIsDescriptionExpanded(!isDescriptionExpanded),
|
|
1373
|
-
variant: "ghost",
|
|
1374
|
-
size: "sm",
|
|
1375
|
-
className: "text-foreground hover:text-foreground/80 mt-1 h-auto p-0 text-xs font-normal underline",
|
|
1376
|
-
children: isDescriptionExpanded ? "Read less" : "Read more"
|
|
1377
|
-
})]
|
|
1378
|
-
}),
|
|
1379
|
-
displayPrice && /* @__PURE__ */ jsxs("div", {
|
|
1380
|
-
className: "text-foreground flex items-center gap-2 text-sm",
|
|
1381
|
-
children: [
|
|
1382
|
-
/* @__PURE__ */ jsx("span", {
|
|
1383
|
-
className: "font-semibold",
|
|
1384
|
-
children: "Price"
|
|
1385
|
-
}),
|
|
1386
|
-
/* @__PURE__ */ jsx("span", { children: "|" }),
|
|
1387
|
-
/* @__PURE__ */ jsx("span", {
|
|
1388
|
-
className: "font-semibold",
|
|
1389
|
-
children: displayPrice
|
|
1390
|
-
})
|
|
1391
|
-
]
|
|
1392
|
-
}),
|
|
1393
|
-
/* @__PURE__ */ jsx(AssetActions, {
|
|
1394
|
-
downloadUrl: productImage || null,
|
|
1395
|
-
displayTitle,
|
|
1396
|
-
shareLink: shareLinkError ? null : shareLink || null,
|
|
1397
|
-
shareLinkLoading,
|
|
1398
|
-
isVideo: false,
|
|
1399
|
-
relateableId: Number(productId),
|
|
1400
|
-
relateableType: "Product"
|
|
1401
|
-
})
|
|
1402
|
-
]
|
|
1431
|
+
/* @__PURE__ */ jsx("div", {
|
|
1432
|
+
className: "mb-2 text-gray-400",
|
|
1433
|
+
children: /* @__PURE__ */ jsx(Image, { className: "mx-auto h-12 w-12" })
|
|
1403
1434
|
}),
|
|
1404
|
-
/* @__PURE__ */ jsx(Separator, { className: "border-foreground my-4" }),
|
|
1405
1435
|
/* @__PURE__ */ jsx("div", {
|
|
1406
|
-
className: "
|
|
1407
|
-
children:
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
mediaItems: filteredMediaItems,
|
|
1413
|
-
onMediaItemClick: handleMediaItemClick,
|
|
1414
|
-
showEmptyState: !hasMedia,
|
|
1415
|
-
activeMainTab: "Related Sharables",
|
|
1416
|
-
relateable_type: "Product"
|
|
1417
|
-
})
|
|
1436
|
+
className: "mb-1 text-sm text-gray-500",
|
|
1437
|
+
children: "No Product Image"
|
|
1438
|
+
}),
|
|
1439
|
+
/* @__PURE__ */ jsx("div", {
|
|
1440
|
+
className: "text-xs text-gray-400",
|
|
1441
|
+
children: "This product does not have any associated media"
|
|
1418
1442
|
})
|
|
1419
1443
|
]
|
|
1420
|
-
})
|
|
1421
|
-
|
|
1444
|
+
}) : /* @__PURE__ */ jsx(SharePageImageDisplay, {
|
|
1445
|
+
displayImage: productImage,
|
|
1446
|
+
displayTitle,
|
|
1447
|
+
isVideo: false,
|
|
1448
|
+
badgeLabel: "Product"
|
|
1449
|
+
})
|
|
1450
|
+
}),
|
|
1451
|
+
meta: displayPrice ? /* @__PURE__ */ jsxs("div", {
|
|
1452
|
+
className: "text-foreground flex items-center gap-2 text-sm",
|
|
1453
|
+
children: [
|
|
1454
|
+
/* @__PURE__ */ jsx("span", {
|
|
1455
|
+
className: "font-semibold",
|
|
1456
|
+
children: "Price"
|
|
1457
|
+
}),
|
|
1458
|
+
/* @__PURE__ */ jsx("span", { children: "|" }),
|
|
1459
|
+
/* @__PURE__ */ jsx("span", {
|
|
1460
|
+
className: "font-semibold",
|
|
1461
|
+
children: displayPrice
|
|
1462
|
+
})
|
|
1463
|
+
]
|
|
1464
|
+
}) : null,
|
|
1465
|
+
actions: /* @__PURE__ */ jsx(AssetActions, {
|
|
1466
|
+
downloadUrl: productImage || null,
|
|
1467
|
+
displayTitle,
|
|
1468
|
+
shareLink: shareLinkError ? null : shareLink || null,
|
|
1469
|
+
shareLinkLoading,
|
|
1470
|
+
isVideo: false,
|
|
1471
|
+
relateableId: Number(productId),
|
|
1472
|
+
relateableType: "Product"
|
|
1473
|
+
}),
|
|
1474
|
+
children: [/* @__PURE__ */ jsx(Separator, { className: "border-foreground my-4" }), /* @__PURE__ */ jsx("div", {
|
|
1475
|
+
className: "hide-scrollbar bg-background h-full overflow-y-auto rounded-lg",
|
|
1476
|
+
children: /* @__PURE__ */ jsx(MarketingAssetsGrid_default, {
|
|
1477
|
+
isLoading: isLoadingMedia,
|
|
1478
|
+
error: mediaError,
|
|
1479
|
+
activeTab,
|
|
1480
|
+
onTabChange: setActiveTab,
|
|
1481
|
+
mediaItems: filteredMediaItems,
|
|
1482
|
+
onMediaItemClick: handleMediaItemClick,
|
|
1483
|
+
showEmptyState: !hasMedia,
|
|
1484
|
+
activeMainTab: "Related Sharables",
|
|
1485
|
+
relateable_type: "Product"
|
|
1486
|
+
})
|
|
1487
|
+
})]
|
|
1422
1488
|
});
|
|
1423
1489
|
}
|
|
1424
1490
|
//#endregion
|
|
@@ -1453,7 +1519,6 @@ function OwnerFilterTabs({ value, onValueChange, myLabel = "Mine" }) {
|
|
|
1453
1519
|
//#endregion
|
|
1454
1520
|
//#region ../../shareables/ui/src/components/screens/MediaListingScreen.tsx
|
|
1455
1521
|
const PAGE_SIZE$3 = 24;
|
|
1456
|
-
const GRID_CLASS$2 = "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";
|
|
1457
1522
|
function getMediaKindLabel(kind) {
|
|
1458
1523
|
switch (kind) {
|
|
1459
1524
|
case "video": return "Video";
|
|
@@ -1573,229 +1638,203 @@ function MediaListingScreen({ onNavigate }) {
|
|
|
1573
1638
|
const allItems = data?.media ?? [];
|
|
1574
1639
|
const ownerFiltered = ownerFilter === "all" ? allItems : ownerFilter === "my" ? allItems.filter((item) => item.owner_type === "user") : allItems.filter((item) => item.owner_type === "company");
|
|
1575
1640
|
const filteredItems = kindFilter === "all" ? ownerFiltered : ownerFiltered.filter((item) => kindBucket(item.kind) === kindFilter);
|
|
1576
|
-
|
|
1577
|
-
className: "
|
|
1578
|
-
children: [/* @__PURE__ */
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
/* @__PURE__ */ jsx(
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1641
|
+
const filterBar = /* @__PURE__ */ jsxs("div", {
|
|
1642
|
+
className: "flex items-center gap-3",
|
|
1643
|
+
children: [/* @__PURE__ */ jsx(OwnerFilterTabs, {
|
|
1644
|
+
value: ownerFilter,
|
|
1645
|
+
onValueChange: setOwnerFilter,
|
|
1646
|
+
myLabel: "My Media"
|
|
1647
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1648
|
+
className: "ml-auto flex items-center gap-2",
|
|
1649
|
+
children: [
|
|
1650
|
+
/* @__PURE__ */ jsx("div", {
|
|
1651
|
+
className: "w-full max-w-sm",
|
|
1652
|
+
children: /* @__PURE__ */ jsx(SearchSort, {
|
|
1653
|
+
searchValue: searchTerm,
|
|
1654
|
+
onSearchChange: setSearchTerm,
|
|
1655
|
+
placeholder: "Search media...",
|
|
1656
|
+
sortOptions: [{
|
|
1657
|
+
label: "Name (A-Z)",
|
|
1658
|
+
value: "title_asc"
|
|
1659
|
+
}, {
|
|
1660
|
+
label: "Name (Z-A)",
|
|
1661
|
+
value: "title_desc"
|
|
1662
|
+
}],
|
|
1663
|
+
sortValue,
|
|
1664
|
+
onSortChange: setSortValue
|
|
1665
|
+
})
|
|
1666
|
+
}),
|
|
1667
|
+
/* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
|
|
1668
|
+
asChild: true,
|
|
1669
|
+
children: /* @__PURE__ */ jsxs(Button, {
|
|
1670
|
+
variant: "outline",
|
|
1671
|
+
"aria-label": `Filter: ${kindFilter === "all" ? "All types" : kindFilter}`,
|
|
1672
|
+
children: [/* @__PURE__ */ jsx(Filter, { className: "size-4" }), /* @__PURE__ */ jsx("span", {
|
|
1673
|
+
className: "hidden sm:inline",
|
|
1674
|
+
children: kindFilter === "all" ? "All types" : kindFilter === "image" ? "Images" : kindFilter === "video" ? "Videos" : "PDFs"
|
|
1675
|
+
})]
|
|
1676
|
+
})
|
|
1677
|
+
}), /* @__PURE__ */ jsx(DropdownMenuContent, {
|
|
1678
|
+
align: "end",
|
|
1679
|
+
children: [
|
|
1680
|
+
{
|
|
1681
|
+
label: "All types",
|
|
1682
|
+
value: "all"
|
|
1683
|
+
},
|
|
1684
|
+
{
|
|
1685
|
+
label: "Images",
|
|
1686
|
+
value: "image"
|
|
1687
|
+
},
|
|
1688
|
+
{
|
|
1689
|
+
label: "Videos",
|
|
1690
|
+
value: "video"
|
|
1691
|
+
},
|
|
1692
|
+
{
|
|
1693
|
+
label: "PDFs",
|
|
1694
|
+
value: "pdf"
|
|
1695
|
+
}
|
|
1696
|
+
].map((opt) => /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
1697
|
+
onClick: () => setKindFilter(opt.value),
|
|
1698
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
1699
|
+
className: "flex-1",
|
|
1700
|
+
children: opt.label
|
|
1701
|
+
}), kindFilter === opt.value && /* @__PURE__ */ jsx(Check, { className: "text-muted-foreground size-4" })]
|
|
1702
|
+
}, opt.value))
|
|
1703
|
+
})] }),
|
|
1704
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1705
|
+
className: "border-input bg-muted flex items-center rounded-lg border p-0.5",
|
|
1706
|
+
children: [/* @__PURE__ */ jsx("button", {
|
|
1707
|
+
type: "button",
|
|
1708
|
+
onClick: () => setViewMode("list"),
|
|
1709
|
+
className: `flex h-8 w-8 items-center justify-center rounded-md transition-all ${viewMode === "list" ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"}`,
|
|
1710
|
+
title: "List view",
|
|
1711
|
+
children: /* @__PURE__ */ jsx(List, { className: "h-4 w-4" })
|
|
1712
|
+
}), /* @__PURE__ */ jsx("button", {
|
|
1713
|
+
type: "button",
|
|
1714
|
+
onClick: () => setViewMode("grid"),
|
|
1715
|
+
className: `flex h-8 w-8 items-center justify-center rounded-md transition-all ${viewMode === "grid" ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"}`,
|
|
1716
|
+
title: "Grid view",
|
|
1717
|
+
children: /* @__PURE__ */ jsx(LayoutGrid, { className: "h-4 w-4" })
|
|
1718
|
+
})]
|
|
1719
|
+
})
|
|
1720
|
+
]
|
|
1591
1721
|
})]
|
|
1592
1722
|
});
|
|
1593
|
-
|
|
1594
|
-
className: "flex
|
|
1595
|
-
children: /* @__PURE__ */ jsx("p", {
|
|
1596
|
-
className: "text-destructive text-sm",
|
|
1597
|
-
children: "Failed to load media. Please try again."
|
|
1598
|
-
})
|
|
1599
|
-
});
|
|
1600
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
1601
|
-
className: "space-y-6 px-4 py-4 md:px-10 md:py-6",
|
|
1723
|
+
const paginationFooter = /* @__PURE__ */ jsxs("div", {
|
|
1724
|
+
className: "flex items-center justify-center gap-4 pt-4",
|
|
1602
1725
|
children: [
|
|
1603
|
-
/* @__PURE__ */ jsxs(
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
value: "pdf"
|
|
1657
|
-
}
|
|
1658
|
-
].map((opt) => /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
1659
|
-
onClick: () => setKindFilter(opt.value),
|
|
1660
|
-
children: [/* @__PURE__ */ jsx("span", {
|
|
1661
|
-
className: "flex-1",
|
|
1662
|
-
children: opt.label
|
|
1663
|
-
}), kindFilter === opt.value && /* @__PURE__ */ jsx(Check, { className: "text-muted-foreground size-4" })]
|
|
1664
|
-
}, opt.value))
|
|
1665
|
-
})] }),
|
|
1666
|
-
/* @__PURE__ */ jsxs("div", {
|
|
1667
|
-
className: "border-input bg-muted flex items-center rounded-lg border p-0.5",
|
|
1668
|
-
children: [/* @__PURE__ */ jsx("button", {
|
|
1669
|
-
type: "button",
|
|
1670
|
-
onClick: () => setViewMode("list"),
|
|
1671
|
-
className: `flex h-8 w-8 items-center justify-center rounded-md transition-all ${viewMode === "list" ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"}`,
|
|
1672
|
-
title: "List view",
|
|
1673
|
-
children: /* @__PURE__ */ jsx(List, { className: "h-4 w-4" })
|
|
1674
|
-
}), /* @__PURE__ */ jsx("button", {
|
|
1675
|
-
type: "button",
|
|
1676
|
-
onClick: () => setViewMode("grid"),
|
|
1677
|
-
className: `flex h-8 w-8 items-center justify-center rounded-md transition-all ${viewMode === "grid" ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"}`,
|
|
1678
|
-
title: "Grid view",
|
|
1679
|
-
children: /* @__PURE__ */ jsx(LayoutGrid, { className: "h-4 w-4" })
|
|
1726
|
+
/* @__PURE__ */ jsxs(Button, {
|
|
1727
|
+
variant: "outline",
|
|
1728
|
+
size: "sm",
|
|
1729
|
+
onClick: () => setPage((p) => p - 1),
|
|
1730
|
+
disabled: page === 1 || isFetching,
|
|
1731
|
+
children: [/* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4" }), "Previous"]
|
|
1732
|
+
}),
|
|
1733
|
+
/* @__PURE__ */ jsxs("span", {
|
|
1734
|
+
className: "text-muted-foreground text-sm",
|
|
1735
|
+
children: ["Page ", page]
|
|
1736
|
+
}),
|
|
1737
|
+
/* @__PURE__ */ jsxs(Button, {
|
|
1738
|
+
variant: "outline",
|
|
1739
|
+
size: "sm",
|
|
1740
|
+
onClick: () => setPage((p) => p + 1),
|
|
1741
|
+
disabled: !hasNextPage || isFetching,
|
|
1742
|
+
children: ["Next", /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4" })]
|
|
1743
|
+
})
|
|
1744
|
+
]
|
|
1745
|
+
});
|
|
1746
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(ShareableListLayout, {
|
|
1747
|
+
isLoading,
|
|
1748
|
+
error,
|
|
1749
|
+
errorMessage: "Failed to load media. Please try again.",
|
|
1750
|
+
isEmpty: filteredItems.length === 0,
|
|
1751
|
+
emptyMessage: getFilteredEmptyMessage({
|
|
1752
|
+
searchTerm: debouncedSearch,
|
|
1753
|
+
ownerFilter,
|
|
1754
|
+
hasOtherFilters: kindFilter !== "all",
|
|
1755
|
+
entityName: "media",
|
|
1756
|
+
defaultMessage: "No media available."
|
|
1757
|
+
}),
|
|
1758
|
+
filters: filterBar,
|
|
1759
|
+
footer: paginationFooter,
|
|
1760
|
+
loadingFilterShape: "search-view",
|
|
1761
|
+
children: viewMode === "grid" ? /* @__PURE__ */ jsx("div", {
|
|
1762
|
+
className: SHAREABLE_GRID_CLASS,
|
|
1763
|
+
children: filteredItems.map((item) => {
|
|
1764
|
+
const canEdit = !readOnly && item.owner_type === "user";
|
|
1765
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
1766
|
+
className: "relative",
|
|
1767
|
+
children: [/* @__PURE__ */ jsx(ShareItemCard, {
|
|
1768
|
+
title: item.title ?? "",
|
|
1769
|
+
imageUrl: item.image_url,
|
|
1770
|
+
href: `media/${item.id}`,
|
|
1771
|
+
badge: { text: getMediaKindLabel(item.kind) },
|
|
1772
|
+
isVideo: item.kind === "video",
|
|
1773
|
+
subtitle: /* @__PURE__ */ jsxs("span", {
|
|
1774
|
+
className: "flex items-center gap-1.5",
|
|
1775
|
+
children: [getMediaKindLabel(item.kind), item.owner_type === "user" && /* @__PURE__ */ jsx(Badge, {
|
|
1776
|
+
variant: "secondary",
|
|
1777
|
+
className: "px-1.5 py-0 text-[10px] leading-4",
|
|
1778
|
+
children: "My Media"
|
|
1680
1779
|
})]
|
|
1681
1780
|
})
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1781
|
+
}), canEdit && /* @__PURE__ */ jsx("div", {
|
|
1782
|
+
className: "absolute top-2 right-2",
|
|
1783
|
+
children: /* @__PURE__ */ jsx(MediaRowActionsMenu, { onDelete: () => setPendingDeleteId(item.id) })
|
|
1784
|
+
})]
|
|
1785
|
+
}, item.id);
|
|
1786
|
+
})
|
|
1787
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
1788
|
+
className: "divide-border divide-y rounded-lg border",
|
|
1789
|
+
children: filteredItems.map((item) => {
|
|
1790
|
+
const canEdit = !readOnly && item.owner_type === "user";
|
|
1791
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
1792
|
+
className: "hover:bg-muted flex items-center gap-4 px-4 py-3 transition-colors",
|
|
1793
|
+
children: [/* @__PURE__ */ jsxs("button", {
|
|
1794
|
+
type: "button",
|
|
1795
|
+
onClick: () => navigate(`media/${item.id}`),
|
|
1796
|
+
className: "flex min-w-0 flex-1 items-center gap-4 text-left",
|
|
1797
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1798
|
+
className: "bg-muted h-12 w-12 shrink-0 overflow-hidden rounded-md",
|
|
1799
|
+
children: item.image_url ? /* @__PURE__ */ jsx("img", {
|
|
1800
|
+
src: item.image_url,
|
|
1801
|
+
alt: item.title ?? "",
|
|
1802
|
+
className: "h-full w-full object-cover"
|
|
1803
|
+
}) : /* @__PURE__ */ jsx("div", { className: "bg-muted h-full w-full" })
|
|
1804
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1805
|
+
className: "min-w-0 flex-1",
|
|
1806
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
1807
|
+
className: "text-foreground truncate text-sm font-medium",
|
|
1808
|
+
children: item.title ?? "Untitled"
|
|
1809
|
+
}), /* @__PURE__ */ jsxs("p", {
|
|
1810
|
+
className: "text-muted-foreground flex items-center gap-1.5 text-xs",
|
|
1711
1811
|
children: [getMediaKindLabel(item.kind), item.owner_type === "user" && /* @__PURE__ */ jsx(Badge, {
|
|
1712
1812
|
variant: "secondary",
|
|
1713
1813
|
className: "px-1.5 py-0 text-[10px] leading-4",
|
|
1714
1814
|
children: "My Media"
|
|
1715
1815
|
})]
|
|
1716
|
-
})
|
|
1717
|
-
}), canEdit && /* @__PURE__ */ jsx("div", {
|
|
1718
|
-
className: "absolute top-2 right-2",
|
|
1719
|
-
children: /* @__PURE__ */ jsx(MediaRowActionsMenu, { onDelete: () => setPendingDeleteId(item.id) })
|
|
1720
|
-
})]
|
|
1721
|
-
}, item.id);
|
|
1722
|
-
})
|
|
1723
|
-
}) : /* @__PURE__ */ jsx("div", {
|
|
1724
|
-
className: "divide-border divide-y rounded-lg border",
|
|
1725
|
-
children: filteredItems.map((item) => {
|
|
1726
|
-
const canEdit = !readOnly && item.owner_type === "user";
|
|
1727
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
1728
|
-
className: "hover:bg-muted flex items-center gap-4 px-4 py-3 transition-colors",
|
|
1729
|
-
children: [/* @__PURE__ */ jsxs("button", {
|
|
1730
|
-
type: "button",
|
|
1731
|
-
onClick: () => navigate(`media/${item.id}`),
|
|
1732
|
-
className: "flex min-w-0 flex-1 items-center gap-4 text-left",
|
|
1733
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
1734
|
-
className: "bg-muted h-12 w-12 shrink-0 overflow-hidden rounded-md",
|
|
1735
|
-
children: item.image_url ? /* @__PURE__ */ jsx("img", {
|
|
1736
|
-
src: item.image_url,
|
|
1737
|
-
alt: item.title ?? "",
|
|
1738
|
-
className: "h-full w-full object-cover"
|
|
1739
|
-
}) : /* @__PURE__ */ jsx("div", { className: "bg-muted h-full w-full" })
|
|
1740
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
1741
|
-
className: "min-w-0 flex-1",
|
|
1742
|
-
children: [/* @__PURE__ */ jsx("p", {
|
|
1743
|
-
className: "text-foreground truncate text-sm font-medium",
|
|
1744
|
-
children: item.title ?? "Untitled"
|
|
1745
|
-
}), /* @__PURE__ */ jsxs("p", {
|
|
1746
|
-
className: "text-muted-foreground flex items-center gap-1.5 text-xs",
|
|
1747
|
-
children: [getMediaKindLabel(item.kind), item.owner_type === "user" && /* @__PURE__ */ jsx(Badge, {
|
|
1748
|
-
variant: "secondary",
|
|
1749
|
-
className: "px-1.5 py-0 text-[10px] leading-4",
|
|
1750
|
-
children: "My Media"
|
|
1751
|
-
})]
|
|
1752
|
-
})]
|
|
1753
1816
|
})]
|
|
1754
|
-
})
|
|
1755
|
-
}, item.id)
|
|
1756
|
-
})
|
|
1757
|
-
}),
|
|
1758
|
-
/* @__PURE__ */ jsx(AlertDialog, {
|
|
1759
|
-
open: pendingDeleteId !== null,
|
|
1760
|
-
onOpenChange: (open) => !open && setPendingDeleteId(null),
|
|
1761
|
-
children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Delete this media?" }), /* @__PURE__ */ jsx(AlertDialogDescription, { children: "This removes the item from your media library. Shared links that point to it will stop working." })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, {
|
|
1762
|
-
disabled: isDeleting,
|
|
1763
|
-
children: "Cancel"
|
|
1764
|
-
}), /* @__PURE__ */ jsx(AlertDialogAction, {
|
|
1765
|
-
onClick: (e) => {
|
|
1766
|
-
e.preventDefault();
|
|
1767
|
-
confirmDelete();
|
|
1768
|
-
},
|
|
1769
|
-
disabled: isDeleting,
|
|
1770
|
-
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
1771
|
-
children: isDeleting ? /* @__PURE__ */ jsx(Spinner, { className: "size-4" }) : "Delete"
|
|
1772
|
-
})] })] })
|
|
1773
|
-
}),
|
|
1774
|
-
/* @__PURE__ */ jsxs("div", {
|
|
1775
|
-
className: "flex items-center justify-center gap-4 pt-4",
|
|
1776
|
-
children: [
|
|
1777
|
-
/* @__PURE__ */ jsxs(Button, {
|
|
1778
|
-
variant: "outline",
|
|
1779
|
-
size: "sm",
|
|
1780
|
-
onClick: () => setPage((p) => p - 1),
|
|
1781
|
-
disabled: page === 1 || isFetching,
|
|
1782
|
-
children: [/* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4" }), "Previous"]
|
|
1783
|
-
}),
|
|
1784
|
-
/* @__PURE__ */ jsxs("span", {
|
|
1785
|
-
className: "text-muted-foreground text-sm",
|
|
1786
|
-
children: ["Page ", page]
|
|
1787
|
-
}),
|
|
1788
|
-
/* @__PURE__ */ jsxs(Button, {
|
|
1789
|
-
variant: "outline",
|
|
1790
|
-
size: "sm",
|
|
1791
|
-
onClick: () => setPage((p) => p + 1),
|
|
1792
|
-
disabled: !hasNextPage || isFetching,
|
|
1793
|
-
children: ["Next", /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4" })]
|
|
1794
|
-
})
|
|
1795
|
-
]
|
|
1817
|
+
})]
|
|
1818
|
+
}), canEdit && /* @__PURE__ */ jsx(MediaRowActionsMenu, { onDelete: () => setPendingDeleteId(item.id) })]
|
|
1819
|
+
}, item.id);
|
|
1796
1820
|
})
|
|
1797
|
-
|
|
1798
|
-
})
|
|
1821
|
+
})
|
|
1822
|
+
}), /* @__PURE__ */ jsx(AlertDialog, {
|
|
1823
|
+
open: pendingDeleteId !== null,
|
|
1824
|
+
onOpenChange: (open) => !open && setPendingDeleteId(null),
|
|
1825
|
+
children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Delete this media?" }), /* @__PURE__ */ jsx(AlertDialogDescription, { children: "This removes the item from your media library. Shared links that point to it will stop working." })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, {
|
|
1826
|
+
disabled: isDeleting,
|
|
1827
|
+
children: "Cancel"
|
|
1828
|
+
}), /* @__PURE__ */ jsx(AlertDialogAction, {
|
|
1829
|
+
onClick: (e) => {
|
|
1830
|
+
e.preventDefault();
|
|
1831
|
+
confirmDelete();
|
|
1832
|
+
},
|
|
1833
|
+
disabled: isDeleting,
|
|
1834
|
+
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
1835
|
+
children: isDeleting ? /* @__PURE__ */ jsx(Spinner, { className: "size-4" }) : "Delete"
|
|
1836
|
+
})] })] })
|
|
1837
|
+
})] });
|
|
1799
1838
|
}
|
|
1800
1839
|
//#endregion
|
|
1801
1840
|
//#region ../../shareables/ui/src/components/screens/MediaDetailScreen.tsx
|
|
@@ -1811,7 +1850,6 @@ function MediaDetailScreen({ mediaId, onNavigate: _onNavigate, onBack }) {
|
|
|
1811
1850
|
const api = useShareablesApi();
|
|
1812
1851
|
const repContext = useRepContext();
|
|
1813
1852
|
const { navigate, readOnly } = useShareablesUI();
|
|
1814
|
-
const [isDescriptionExpanded, setIsDescriptionExpanded] = useState(false);
|
|
1815
1853
|
const { data: mediaResponse, isLoading } = useQuery({
|
|
1816
1854
|
queryKey: shareablesKeys.media.detail(Number(mediaId), repContext),
|
|
1817
1855
|
queryFn: () => api.media.getMediaById(Number(mediaId))
|
|
@@ -1860,75 +1898,38 @@ function MediaDetailScreen({ mediaId, onNavigate: _onNavigate, onBack }) {
|
|
|
1860
1898
|
mediaId
|
|
1861
1899
|
]));
|
|
1862
1900
|
const badgeLabel = getBadgeLabel(mediaItem?.kind ?? null);
|
|
1863
|
-
const
|
|
1864
|
-
const shouldShowReadMore = strippedDescription.length > 150;
|
|
1901
|
+
const rawDescription = mediaItem?.description?.body || mediaItem?.stripped || "";
|
|
1865
1902
|
const downloadUrl = isVideo ? displayVideo : mediaItem?.pdf_url || displayImage;
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
displayImage,
|
|
1887
|
-
displayTitle,
|
|
1888
|
-
displayVideo: isVideo ? displayVideo : void 0,
|
|
1889
|
-
isVideo,
|
|
1890
|
-
badgeLabel,
|
|
1891
|
-
rounded: true,
|
|
1892
|
-
showBadge: false
|
|
1893
|
-
}), /* @__PURE__ */ jsx("span", {
|
|
1894
|
-
className: "bg-background/80 text-foreground absolute top-3 right-3 z-0 inline-flex h-8 items-center rounded-full px-3 text-xs font-medium shadow-md backdrop-blur-sm",
|
|
1895
|
-
children: badgeLabel
|
|
1896
|
-
})]
|
|
1897
|
-
})
|
|
1898
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
1899
|
-
className: "flex w-full flex-col md:overflow-y-auto",
|
|
1900
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
1901
|
-
className: "space-y-4",
|
|
1902
|
-
children: [
|
|
1903
|
-
/* @__PURE__ */ jsx("h1", {
|
|
1904
|
-
className: "text-foreground text-[26px] leading-[1.2] font-semibold break-words",
|
|
1905
|
-
children: displayTitle
|
|
1906
|
-
}),
|
|
1907
|
-
strippedDescription && /* @__PURE__ */ jsxs("div", {
|
|
1908
|
-
className: "text-foreground/70 text-sm leading-relaxed",
|
|
1909
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
1910
|
-
className: !isDescriptionExpanded && shouldShowReadMore ? "line-clamp-3" : "",
|
|
1911
|
-
children: strippedDescription
|
|
1912
|
-
}), shouldShowReadMore && /* @__PURE__ */ jsx(Button, {
|
|
1913
|
-
onClick: () => setIsDescriptionExpanded(!isDescriptionExpanded),
|
|
1914
|
-
variant: "ghost",
|
|
1915
|
-
size: "sm",
|
|
1916
|
-
className: "text-foreground hover:text-foreground/80 mt-1 h-auto p-0 text-xs font-normal underline",
|
|
1917
|
-
children: isDescriptionExpanded ? "Read less" : "Read more"
|
|
1918
|
-
})]
|
|
1919
|
-
}),
|
|
1920
|
-
/* @__PURE__ */ jsx(AssetActions, {
|
|
1921
|
-
downloadUrl: downloadUrl || null,
|
|
1922
|
-
displayTitle,
|
|
1923
|
-
shareLink: shareLinkError ? null : shareLink || null,
|
|
1924
|
-
shareLinkLoading,
|
|
1925
|
-
isVideo,
|
|
1926
|
-
relateableId: Number(mediaId),
|
|
1927
|
-
relateableType: "Medium"
|
|
1928
|
-
})
|
|
1929
|
-
]
|
|
1930
|
-
})
|
|
1903
|
+
return /* @__PURE__ */ jsx(ShareableDetailLayout, {
|
|
1904
|
+
isLoading,
|
|
1905
|
+
notFound: !mediaItem,
|
|
1906
|
+
notFoundMessage: "Media not found or failed to load.",
|
|
1907
|
+
title: displayTitle,
|
|
1908
|
+
description: rawDescription,
|
|
1909
|
+
containerHeightClass: "md:h-[calc(95vh-140px)]",
|
|
1910
|
+
image: /* @__PURE__ */ jsxs("div", {
|
|
1911
|
+
className: "relative h-full overflow-hidden",
|
|
1912
|
+
children: [/* @__PURE__ */ jsx(SharePageImageDisplay, {
|
|
1913
|
+
displayImage,
|
|
1914
|
+
displayTitle,
|
|
1915
|
+
displayVideo: isVideo ? displayVideo : void 0,
|
|
1916
|
+
isVideo,
|
|
1917
|
+
badgeLabel,
|
|
1918
|
+
rounded: true,
|
|
1919
|
+
showBadge: false
|
|
1920
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
1921
|
+
className: "bg-background/80 text-foreground absolute top-3 right-3 z-0 inline-flex h-8 items-center rounded-full px-3 text-xs font-medium shadow-md backdrop-blur-sm",
|
|
1922
|
+
children: badgeLabel
|
|
1931
1923
|
})]
|
|
1924
|
+
}),
|
|
1925
|
+
actions: /* @__PURE__ */ jsx(AssetActions, {
|
|
1926
|
+
downloadUrl: downloadUrl || null,
|
|
1927
|
+
displayTitle,
|
|
1928
|
+
shareLink: shareLinkError ? null : shareLink || null,
|
|
1929
|
+
shareLinkLoading,
|
|
1930
|
+
isVideo,
|
|
1931
|
+
relateableId: Number(mediaId),
|
|
1932
|
+
relateableType: "Medium"
|
|
1932
1933
|
})
|
|
1933
1934
|
});
|
|
1934
1935
|
}
|
|
@@ -8524,6 +8525,12 @@ function MediaCreateScreen({ onNavigate, onBack }) {
|
|
|
8524
8525
|
seoDescription,
|
|
8525
8526
|
seoBlockCrawler
|
|
8526
8527
|
]);
|
|
8528
|
+
useScreenHeaderActions(useMemo(() => /* @__PURE__ */ jsx(Button, {
|
|
8529
|
+
onClick: handleSave,
|
|
8530
|
+
disabled: isCreating,
|
|
8531
|
+
size: "sm",
|
|
8532
|
+
children: isCreating ? /* @__PURE__ */ jsx(Spinner, { className: "size-4" }) : "Save"
|
|
8533
|
+
}), [handleSave, isCreating]));
|
|
8527
8534
|
const handleFilesSelected = useCallback((results) => {
|
|
8528
8535
|
const result = results[0];
|
|
8529
8536
|
if (!result) return;
|
|
@@ -8549,15 +8556,6 @@ function MediaCreateScreen({ onNavigate, onBack }) {
|
|
|
8549
8556
|
return /* @__PURE__ */ jsxs("div", {
|
|
8550
8557
|
className: "flex flex-col gap-4 px-4 py-4 md:px-10 md:py-6",
|
|
8551
8558
|
children: [
|
|
8552
|
-
/* @__PURE__ */ jsx("div", {
|
|
8553
|
-
className: "mx-auto flex w-full max-w-5xl items-center justify-end",
|
|
8554
|
-
children: /* @__PURE__ */ jsx(Button, {
|
|
8555
|
-
onClick: handleSave,
|
|
8556
|
-
disabled: isCreating,
|
|
8557
|
-
size: "sm",
|
|
8558
|
-
children: isCreating ? /* @__PURE__ */ jsx(Spinner, { className: "size-4" }) : "Save"
|
|
8559
|
-
})
|
|
8560
|
-
}),
|
|
8561
8559
|
/* @__PURE__ */ jsx("div", {
|
|
8562
8560
|
className: "mx-auto flex w-full max-w-5xl items-center gap-3",
|
|
8563
8561
|
children: /* @__PURE__ */ jsx("h1", {
|
|
@@ -8915,7 +8913,7 @@ function BulkSelectionBar({ selectedCount, totalCount, onSelectAll, onClearSelec
|
|
|
8915
8913
|
//#endregion
|
|
8916
8914
|
//#region ../../shareables/ui/src/components/screens/PlaylistsListingScreen.tsx
|
|
8917
8915
|
const PAGE_SIZE$1 = 12;
|
|
8918
|
-
const GRID_CLASS
|
|
8916
|
+
const GRID_CLASS = "grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4";
|
|
8919
8917
|
function PlaylistsListingScreen(_props) {
|
|
8920
8918
|
const api = useShareablesApi();
|
|
8921
8919
|
const { navigate, showToast, user, onToggleFavorite, onDeletePlaylist, readOnly } = useShareablesUI();
|
|
@@ -9094,129 +9092,108 @@ function PlaylistsListingScreen(_props) {
|
|
|
9094
9092
|
const confirmDelete = useCallback(() => {
|
|
9095
9093
|
if (pendingDeleteId != null) deletePlaylist(pendingDeleteId);
|
|
9096
9094
|
}, [pendingDeleteId, deletePlaylist]);
|
|
9097
|
-
|
|
9098
|
-
|
|
9099
|
-
|
|
9100
|
-
|
|
9101
|
-
|
|
9095
|
+
const filterBar = hasSelection ? /* @__PURE__ */ jsx(BulkSelectionBar, {
|
|
9096
|
+
selectedCount: selectedIds.size,
|
|
9097
|
+
totalCount: filteredPlaylists.length,
|
|
9098
|
+
onSelectAll: handleSelectAll,
|
|
9099
|
+
onClearSelection: handleClearSelection,
|
|
9100
|
+
onBulkFavorite: handleBulkFavorite
|
|
9101
|
+
}) : /* @__PURE__ */ jsxs("div", {
|
|
9102
|
+
className: "flex items-center gap-3",
|
|
9103
|
+
children: [/* @__PURE__ */ jsx(OwnerFilterTabs, {
|
|
9104
|
+
value: ownerFilter,
|
|
9105
|
+
onValueChange: setOwnerFilter,
|
|
9106
|
+
myLabel: "My Playlists"
|
|
9102
9107
|
}), /* @__PURE__ */ jsx("div", {
|
|
9103
|
-
className:
|
|
9104
|
-
children:
|
|
9105
|
-
|
|
9106
|
-
|
|
9107
|
-
|
|
9108
|
-
|
|
9109
|
-
|
|
9110
|
-
|
|
9111
|
-
|
|
9112
|
-
children: [
|
|
9113
|
-
hasSelection ? /* @__PURE__ */ jsx(BulkSelectionBar, {
|
|
9114
|
-
selectedCount: selectedIds.size,
|
|
9115
|
-
totalCount: filteredPlaylists.length,
|
|
9116
|
-
onSelectAll: handleSelectAll,
|
|
9117
|
-
onClearSelection: handleClearSelection,
|
|
9118
|
-
onBulkFavorite: handleBulkFavorite
|
|
9119
|
-
}) : /* @__PURE__ */ jsxs("div", {
|
|
9120
|
-
className: "flex items-center gap-3",
|
|
9121
|
-
children: [/* @__PURE__ */ jsx(OwnerFilterTabs, {
|
|
9122
|
-
value: ownerFilter,
|
|
9123
|
-
onValueChange: setOwnerFilter,
|
|
9124
|
-
myLabel: "My Playlists"
|
|
9125
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
9126
|
-
className: "ml-auto w-full max-w-sm",
|
|
9127
|
-
children: /* @__PURE__ */ jsx(SearchSort, {
|
|
9128
|
-
searchValue: searchTerm,
|
|
9129
|
-
onSearchChange: setSearchTerm,
|
|
9130
|
-
placeholder: "Search playlists...",
|
|
9131
|
-
sortOptions: [
|
|
9132
|
-
{
|
|
9133
|
-
label: "Name (A-Z)",
|
|
9134
|
-
value: "title"
|
|
9135
|
-
},
|
|
9136
|
-
{
|
|
9137
|
-
label: "Name (Z-A)",
|
|
9138
|
-
value: "-title"
|
|
9139
|
-
},
|
|
9140
|
-
{
|
|
9141
|
-
label: "Date Created (Newest)",
|
|
9142
|
-
value: "-created_at"
|
|
9143
|
-
},
|
|
9144
|
-
{
|
|
9145
|
-
label: "Date Created (Oldest)",
|
|
9146
|
-
value: "created_at"
|
|
9147
|
-
}
|
|
9148
|
-
],
|
|
9149
|
-
sortValue,
|
|
9150
|
-
onSortChange: setSortValue
|
|
9151
|
-
})
|
|
9152
|
-
})]
|
|
9153
|
-
}),
|
|
9154
|
-
filteredPlaylists.length === 0 && !isFetchingNextPage && !hasNextPage ? /* @__PURE__ */ jsx("div", {
|
|
9155
|
-
className: "flex flex-col items-center justify-center py-16",
|
|
9156
|
-
children: /* @__PURE__ */ jsx("p", {
|
|
9157
|
-
className: "text-muted-foreground text-sm",
|
|
9158
|
-
children: getFilteredEmptyMessage({
|
|
9159
|
-
searchTerm,
|
|
9160
|
-
ownerFilter,
|
|
9161
|
-
entityName: "playlists",
|
|
9162
|
-
defaultMessage: "There are no playlists available at the moment."
|
|
9163
|
-
})
|
|
9164
|
-
})
|
|
9165
|
-
}) : /* @__PURE__ */ jsx("div", {
|
|
9166
|
-
className: GRID_CLASS$1,
|
|
9167
|
-
children: filteredPlaylists.map((playlist) => {
|
|
9168
|
-
const firstItem = playlist.items?.[0];
|
|
9169
|
-
const imageUrl = playlist.image_url ?? firstItem?.image_url ?? firstItem?.relateable?.image_url ?? firstItem?.relateable?.compressed_image_url;
|
|
9170
|
-
const itemCount = playlist.items_count ?? playlist.items?.length ?? 0;
|
|
9171
|
-
const canEdit = !readOnly && playlist.user_id === user?.id;
|
|
9172
|
-
return /* @__PURE__ */ jsx(PlaylistCard, {
|
|
9173
|
-
title: playlist.title || "Untitled Playlist",
|
|
9174
|
-
imageUrl,
|
|
9175
|
-
href: `playlists/${playlist.id}`,
|
|
9176
|
-
itemCount,
|
|
9177
|
-
isFavorited: playlist.is_favorited,
|
|
9178
|
-
isSelectable: true,
|
|
9179
|
-
isSelected: selectedIds.has(playlist.id),
|
|
9180
|
-
canEdit,
|
|
9181
|
-
onSelectionChange: (selected) => handleToggleSelection(playlist.id, selected),
|
|
9182
|
-
onToggleFavorite: onToggleFavorite ? () => handleFavorite(playlist.id) : void 0,
|
|
9183
|
-
onEdit: () => handleEdit(playlist.id),
|
|
9184
|
-
onDelete: onDeletePlaylist ? () => setPendingDeleteId(playlist.id) : void 0
|
|
9185
|
-
}, playlist.id);
|
|
9186
|
-
})
|
|
9187
|
-
}),
|
|
9188
|
-
isFetchingNextPage && /* @__PURE__ */ jsx("div", {
|
|
9189
|
-
className: "flex justify-center py-4",
|
|
9190
|
-
children: /* @__PURE__ */ jsx("div", { className: "border-primary h-6 w-6 animate-spin rounded-full border-2 border-t-transparent" })
|
|
9191
|
-
}),
|
|
9192
|
-
/* @__PURE__ */ jsx("div", {
|
|
9193
|
-
ref: observerTarget,
|
|
9194
|
-
className: "h-1"
|
|
9195
|
-
}),
|
|
9196
|
-
error && /* @__PURE__ */ jsxs("p", {
|
|
9197
|
-
className: "bg-destructive/10 text-destructive rounded-lg px-3 py-2",
|
|
9198
|
-
children: ["Error: ", error.message]
|
|
9199
|
-
}),
|
|
9200
|
-
/* @__PURE__ */ jsx(AlertDialog, {
|
|
9201
|
-
open: pendingDeleteId !== null,
|
|
9202
|
-
onOpenChange: (open) => {
|
|
9203
|
-
if (!open && !isDeleting) setPendingDeleteId(null);
|
|
9204
|
-
},
|
|
9205
|
-
children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Delete this playlist?" }), /* @__PURE__ */ jsx(AlertDialogDescription, { children: "This removes the playlist from your library. Shared links that point to it will stop working." })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, {
|
|
9206
|
-
disabled: isDeleting,
|
|
9207
|
-
children: "Cancel"
|
|
9208
|
-
}), /* @__PURE__ */ jsx(AlertDialogAction, {
|
|
9209
|
-
onClick: (e) => {
|
|
9210
|
-
e.preventDefault();
|
|
9211
|
-
confirmDelete();
|
|
9108
|
+
className: "ml-auto w-full max-w-sm",
|
|
9109
|
+
children: /* @__PURE__ */ jsx(SearchSort, {
|
|
9110
|
+
searchValue: searchTerm,
|
|
9111
|
+
onSearchChange: setSearchTerm,
|
|
9112
|
+
placeholder: "Search playlists...",
|
|
9113
|
+
sortOptions: [
|
|
9114
|
+
{
|
|
9115
|
+
label: "Name (A-Z)",
|
|
9116
|
+
value: "title"
|
|
9212
9117
|
},
|
|
9213
|
-
|
|
9214
|
-
|
|
9215
|
-
|
|
9216
|
-
|
|
9118
|
+
{
|
|
9119
|
+
label: "Name (Z-A)",
|
|
9120
|
+
value: "-title"
|
|
9121
|
+
},
|
|
9122
|
+
{
|
|
9123
|
+
label: "Date Created (Newest)",
|
|
9124
|
+
value: "-created_at"
|
|
9125
|
+
},
|
|
9126
|
+
{
|
|
9127
|
+
label: "Date Created (Oldest)",
|
|
9128
|
+
value: "created_at"
|
|
9129
|
+
}
|
|
9130
|
+
],
|
|
9131
|
+
sortValue,
|
|
9132
|
+
onSortChange: setSortValue
|
|
9217
9133
|
})
|
|
9218
|
-
]
|
|
9134
|
+
})]
|
|
9219
9135
|
});
|
|
9136
|
+
const footer = /* @__PURE__ */ jsxs(Fragment$1, { children: [isFetchingNextPage && /* @__PURE__ */ jsx("div", {
|
|
9137
|
+
className: "flex justify-center py-4",
|
|
9138
|
+
children: /* @__PURE__ */ jsx("div", { className: "border-primary h-6 w-6 animate-spin rounded-full border-2 border-t-transparent" })
|
|
9139
|
+
}), error && /* @__PURE__ */ jsxs("p", {
|
|
9140
|
+
className: "bg-destructive/10 text-destructive rounded-lg px-3 py-2",
|
|
9141
|
+
children: ["Error: ", error.message]
|
|
9142
|
+
})] });
|
|
9143
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(ShareableListLayout, {
|
|
9144
|
+
isLoading,
|
|
9145
|
+
filters: filterBar,
|
|
9146
|
+
isEmpty: filteredPlaylists.length === 0 && !isFetchingNextPage && !hasNextPage,
|
|
9147
|
+
emptyMessage: getFilteredEmptyMessage({
|
|
9148
|
+
searchTerm,
|
|
9149
|
+
ownerFilter,
|
|
9150
|
+
entityName: "playlists",
|
|
9151
|
+
defaultMessage: "There are no playlists available at the moment."
|
|
9152
|
+
}),
|
|
9153
|
+
footer,
|
|
9154
|
+
sentinelRef: observerTarget,
|
|
9155
|
+
loadingFilterShape: "search-action",
|
|
9156
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
9157
|
+
className: GRID_CLASS,
|
|
9158
|
+
children: filteredPlaylists.map((playlist) => {
|
|
9159
|
+
const firstItem = playlist.items?.[0];
|
|
9160
|
+
const imageUrl = playlist.image_url ?? firstItem?.image_url ?? firstItem?.relateable?.image_url ?? firstItem?.relateable?.compressed_image_url;
|
|
9161
|
+
const itemCount = playlist.items_count ?? playlist.items?.length ?? 0;
|
|
9162
|
+
const canEdit = !readOnly && playlist.user_id === user?.id;
|
|
9163
|
+
return /* @__PURE__ */ jsx(PlaylistCard, {
|
|
9164
|
+
title: playlist.title || "Untitled Playlist",
|
|
9165
|
+
imageUrl,
|
|
9166
|
+
href: `playlists/${playlist.id}`,
|
|
9167
|
+
itemCount,
|
|
9168
|
+
isFavorited: playlist.is_favorited,
|
|
9169
|
+
isSelectable: true,
|
|
9170
|
+
isSelected: selectedIds.has(playlist.id),
|
|
9171
|
+
canEdit,
|
|
9172
|
+
onSelectionChange: (selected) => handleToggleSelection(playlist.id, selected),
|
|
9173
|
+
onToggleFavorite: onToggleFavorite ? () => handleFavorite(playlist.id) : void 0,
|
|
9174
|
+
onEdit: () => handleEdit(playlist.id),
|
|
9175
|
+
onDelete: onDeletePlaylist ? () => setPendingDeleteId(playlist.id) : void 0
|
|
9176
|
+
}, playlist.id);
|
|
9177
|
+
})
|
|
9178
|
+
})
|
|
9179
|
+
}), /* @__PURE__ */ jsx(AlertDialog, {
|
|
9180
|
+
open: pendingDeleteId !== null,
|
|
9181
|
+
onOpenChange: (open) => {
|
|
9182
|
+
if (!open && !isDeleting) setPendingDeleteId(null);
|
|
9183
|
+
},
|
|
9184
|
+
children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Delete this playlist?" }), /* @__PURE__ */ jsx(AlertDialogDescription, { children: "This removes the playlist from your library. Shared links that point to it will stop working." })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, {
|
|
9185
|
+
disabled: isDeleting,
|
|
9186
|
+
children: "Cancel"
|
|
9187
|
+
}), /* @__PURE__ */ jsx(AlertDialogAction, {
|
|
9188
|
+
onClick: (e) => {
|
|
9189
|
+
e.preventDefault();
|
|
9190
|
+
confirmDelete();
|
|
9191
|
+
},
|
|
9192
|
+
disabled: isDeleting,
|
|
9193
|
+
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
9194
|
+
children: isDeleting ? /* @__PURE__ */ jsx(Spinner, { className: "size-4" }) : "Delete"
|
|
9195
|
+
})] })] })
|
|
9196
|
+
})] });
|
|
9220
9197
|
}
|
|
9221
9198
|
//#endregion
|
|
9222
9199
|
//#region ../../shareables/ui/src/constants.ts
|
|
@@ -9482,7 +9459,6 @@ const DEFAULT_IMAGE$1 = "https://assets.fluid.app/fluid-admin/images/we-commerce
|
|
|
9482
9459
|
function PlaylistDetailScreen({ playlistId, onNavigate }) {
|
|
9483
9460
|
const api = useShareablesApi();
|
|
9484
9461
|
const { navigate, user, readOnly } = useShareablesUI();
|
|
9485
|
-
const [isDescriptionExpanded, setIsDescriptionExpanded] = useState(false);
|
|
9486
9462
|
const [selectedPlaylistItemIndex, setSelectedPlaylistItemIndex] = useState(0);
|
|
9487
9463
|
const { data: playlistResponse, isLoading } = useQuery({
|
|
9488
9464
|
queryKey: shareablesKeys.playlists.detail(Number(playlistId)),
|
|
@@ -9528,94 +9504,53 @@ function PlaylistDetailScreen({ playlistId, onNavigate }) {
|
|
|
9528
9504
|
}) }), [displayTitle, navigate]));
|
|
9529
9505
|
const selectedPlaylistItem = playlist?.items?.[selectedPlaylistItemIndex];
|
|
9530
9506
|
const displayImage = selectedPlaylistItem?.image_url ?? selectedPlaylistItem?.relateable?.image_url ?? selectedPlaylistItem?.relateable?.compressed_image_url ?? DEFAULT_IMAGE$1;
|
|
9531
|
-
const
|
|
9532
|
-
const shouldShowReadMore = strippedDescription.length > 150;
|
|
9507
|
+
const displayDescription = playlist?.description || playlist?.search_engine_optimizer?.description || "";
|
|
9533
9508
|
const selectedKind = selectedPlaylistItem?.kind ?? selectedPlaylistItem?.relateable?.kind;
|
|
9534
9509
|
const displayVideo = selectedKind === "video" ? selectedPlaylistItem?.video_url ?? selectedPlaylistItem?.relateable?.video_url ?? void 0 : void 0;
|
|
9535
9510
|
const isVideo = selectedKind === "video" && !!displayVideo;
|
|
9536
9511
|
const taggedProducts = playlist?.items?.filter((item) => item.relateable_type === "Product").map((item) => item.relateable).filter((p) => !!p) || [];
|
|
9537
|
-
|
|
9538
|
-
|
|
9539
|
-
|
|
9540
|
-
|
|
9541
|
-
|
|
9542
|
-
|
|
9543
|
-
|
|
9544
|
-
className: "
|
|
9545
|
-
children:
|
|
9546
|
-
|
|
9547
|
-
|
|
9548
|
-
|
|
9549
|
-
|
|
9550
|
-
|
|
9551
|
-
|
|
9552
|
-
|
|
9553
|
-
|
|
9554
|
-
|
|
9555
|
-
|
|
9556
|
-
|
|
9557
|
-
|
|
9558
|
-
|
|
9559
|
-
|
|
9560
|
-
|
|
9561
|
-
|
|
9562
|
-
|
|
9563
|
-
|
|
9564
|
-
|
|
9565
|
-
|
|
9566
|
-
|
|
9567
|
-
|
|
9568
|
-
|
|
9569
|
-
|
|
9570
|
-
|
|
9571
|
-
|
|
9572
|
-
|
|
9573
|
-
|
|
9574
|
-
|
|
9575
|
-
|
|
9576
|
-
|
|
9577
|
-
className: !isDescriptionExpanded && shouldShowReadMore ? "line-clamp-3" : "",
|
|
9578
|
-
children: strippedDescription
|
|
9579
|
-
}), shouldShowReadMore && /* @__PURE__ */ jsx(Button, {
|
|
9580
|
-
onClick: () => setIsDescriptionExpanded(!isDescriptionExpanded),
|
|
9581
|
-
variant: "ghost",
|
|
9582
|
-
size: "sm",
|
|
9583
|
-
className: "text-foreground hover:text-foreground/80 mt-1 h-auto p-0 text-xs font-normal underline",
|
|
9584
|
-
children: isDescriptionExpanded ? "Read less" : "Read more"
|
|
9585
|
-
})]
|
|
9586
|
-
}),
|
|
9587
|
-
/* @__PURE__ */ jsx(AssetActions, {
|
|
9588
|
-
downloadUrl: null,
|
|
9589
|
-
displayTitle,
|
|
9590
|
-
shareLink: shareLinkError ? null : shareLink || null,
|
|
9591
|
-
shareLinkLoading,
|
|
9592
|
-
isVideo,
|
|
9593
|
-
relateableId: Number(playlistId),
|
|
9594
|
-
relateableType: "Library"
|
|
9595
|
-
})
|
|
9596
|
-
]
|
|
9597
|
-
}),
|
|
9598
|
-
/* @__PURE__ */ jsx(Separator, { className: "border-foreground my-4" }),
|
|
9599
|
-
/* @__PURE__ */ jsxs("div", {
|
|
9600
|
-
className: "bg-background rounded-lg",
|
|
9601
|
-
children: [/* @__PURE__ */ jsx(TaggedProductsList, {
|
|
9602
|
-
products: taggedProducts,
|
|
9603
|
-
onProductClick: (productId) => onNavigate?.("product", String(productId))
|
|
9604
|
-
}), /* @__PURE__ */ jsx(PlaylistItemsList, {
|
|
9605
|
-
items: playlist?.items || [],
|
|
9606
|
-
onSelectItem: setSelectedPlaylistItemIndex,
|
|
9607
|
-
selectedItemIndex: selectedPlaylistItemIndex,
|
|
9608
|
-
onNavigateToItem: (itemId, relateableType) => {
|
|
9609
|
-
if (!NAVIGABLE_RELATEABLE_TYPES.has(relateableType ?? "")) return;
|
|
9610
|
-
if (relateableType === "Product") onNavigate?.("product", String(itemId));
|
|
9611
|
-
else if (relateableType === "Page") onNavigate?.("page", String(itemId));
|
|
9612
|
-
else if (relateableType === "Medium") onNavigate?.("media", String(itemId));
|
|
9613
|
-
}
|
|
9614
|
-
})]
|
|
9615
|
-
})
|
|
9616
|
-
]
|
|
9512
|
+
return /* @__PURE__ */ jsxs(ShareableDetailLayout, {
|
|
9513
|
+
isLoading,
|
|
9514
|
+
notFound: !playlist,
|
|
9515
|
+
notFoundMessage: "Playlist not found or failed to load.",
|
|
9516
|
+
title: displayTitle,
|
|
9517
|
+
description: displayDescription,
|
|
9518
|
+
image: /* @__PURE__ */ jsx("div", {
|
|
9519
|
+
className: "relative h-full overflow-hidden rounded-2xl",
|
|
9520
|
+
children: /* @__PURE__ */ jsx(SharePageImageDisplay, {
|
|
9521
|
+
displayImage,
|
|
9522
|
+
displayTitle,
|
|
9523
|
+
displayVideo,
|
|
9524
|
+
isVideo,
|
|
9525
|
+
badgeLabel: "Playlist"
|
|
9526
|
+
})
|
|
9527
|
+
}),
|
|
9528
|
+
actions: /* @__PURE__ */ jsx(AssetActions, {
|
|
9529
|
+
downloadUrl: null,
|
|
9530
|
+
displayTitle,
|
|
9531
|
+
shareLink: shareLinkError ? null : shareLink || null,
|
|
9532
|
+
shareLinkLoading,
|
|
9533
|
+
isVideo,
|
|
9534
|
+
relateableId: Number(playlistId),
|
|
9535
|
+
relateableType: "Library"
|
|
9536
|
+
}),
|
|
9537
|
+
children: [/* @__PURE__ */ jsx(Separator, { className: "border-foreground my-4" }), /* @__PURE__ */ jsxs("div", {
|
|
9538
|
+
className: "bg-background rounded-lg",
|
|
9539
|
+
children: [/* @__PURE__ */ jsx(TaggedProductsList, {
|
|
9540
|
+
products: taggedProducts,
|
|
9541
|
+
onProductClick: (productId) => onNavigate?.("product", String(productId))
|
|
9542
|
+
}), /* @__PURE__ */ jsx(PlaylistItemsList, {
|
|
9543
|
+
items: playlist?.items || [],
|
|
9544
|
+
onSelectItem: setSelectedPlaylistItemIndex,
|
|
9545
|
+
selectedItemIndex: selectedPlaylistItemIndex,
|
|
9546
|
+
onNavigateToItem: (itemId, relateableType) => {
|
|
9547
|
+
if (!NAVIGABLE_RELATEABLE_TYPES.has(relateableType ?? "")) return;
|
|
9548
|
+
if (relateableType === "Product") onNavigate?.("product", String(itemId));
|
|
9549
|
+
else if (relateableType === "Page") onNavigate?.("page", String(itemId));
|
|
9550
|
+
else if (relateableType === "Medium") onNavigate?.("media", String(itemId));
|
|
9551
|
+
}
|
|
9617
9552
|
})]
|
|
9618
|
-
})
|
|
9553
|
+
})]
|
|
9619
9554
|
});
|
|
9620
9555
|
}
|
|
9621
9556
|
//#endregion
|
|
@@ -10669,7 +10604,6 @@ function PlaylistCreateScreen({ playlistId, onBack, hideHeader, renderHeaderSlot
|
|
|
10669
10604
|
//#endregion
|
|
10670
10605
|
//#region ../../shareables/ui/src/components/screens/FilesListingScreen.tsx
|
|
10671
10606
|
const PAGE_SIZE = 24;
|
|
10672
|
-
const GRID_CLASS = "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";
|
|
10673
10607
|
function formatFileSize(bytes) {
|
|
10674
10608
|
if (bytes < 1024) return `${bytes} B`;
|
|
10675
10609
|
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
|
|
@@ -10729,110 +10663,79 @@ function FilesListingScreen({ onNavigate }) {
|
|
|
10729
10663
|
observer.observe(target);
|
|
10730
10664
|
return () => observer.disconnect();
|
|
10731
10665
|
}, [handleIntersect]);
|
|
10732
|
-
|
|
10733
|
-
|
|
10734
|
-
|
|
10735
|
-
|
|
10736
|
-
|
|
10737
|
-
}
|
|
10738
|
-
|
|
10739
|
-
|
|
10740
|
-
|
|
10741
|
-
|
|
10742
|
-
|
|
10743
|
-
|
|
10744
|
-
|
|
10745
|
-
|
|
10746
|
-
}, i))
|
|
10747
|
-
})]
|
|
10748
|
-
});
|
|
10749
|
-
if (error) return /* @__PURE__ */ jsx("div", {
|
|
10750
|
-
className: "flex flex-col items-center justify-center py-16",
|
|
10751
|
-
children: /* @__PURE__ */ jsx("p", {
|
|
10752
|
-
className: "text-destructive text-sm",
|
|
10753
|
-
children: "Failed to load files. Please try again."
|
|
10754
|
-
})
|
|
10755
|
-
});
|
|
10756
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
10757
|
-
className: "space-y-6 px-4 py-4 md:px-10 md:py-6",
|
|
10758
|
-
children: [
|
|
10759
|
-
/* @__PURE__ */ jsx("div", {
|
|
10760
|
-
className: "flex justify-end",
|
|
10761
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
10762
|
-
className: "w-full max-w-sm",
|
|
10763
|
-
children: /* @__PURE__ */ jsx(SearchSort, {
|
|
10764
|
-
searchValue: searchTerm,
|
|
10765
|
-
onSearchChange: setSearchTerm,
|
|
10766
|
-
placeholder: "Search files..."
|
|
10767
|
-
})
|
|
10768
|
-
})
|
|
10769
|
-
}),
|
|
10770
|
-
files.length === 0 ? /* @__PURE__ */ jsx("div", {
|
|
10771
|
-
className: "flex flex-col items-center justify-center py-16",
|
|
10772
|
-
children: /* @__PURE__ */ jsx("p", {
|
|
10773
|
-
className: "text-muted-foreground text-sm",
|
|
10774
|
-
children: debouncedSearch ? `No files match "${debouncedSearch}". Try a different search term.` : "No files available."
|
|
10666
|
+
return /* @__PURE__ */ jsx(ShareableListLayout, {
|
|
10667
|
+
isLoading,
|
|
10668
|
+
error,
|
|
10669
|
+
errorMessage: "Failed to load files. Please try again.",
|
|
10670
|
+
isEmpty: files.length === 0,
|
|
10671
|
+
emptyMessage: debouncedSearch ? `No files match "${debouncedSearch}". Try a different search term.` : "No files available.",
|
|
10672
|
+
filters: /* @__PURE__ */ jsx("div", {
|
|
10673
|
+
className: "flex justify-end",
|
|
10674
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
10675
|
+
className: "w-full max-w-sm",
|
|
10676
|
+
children: /* @__PURE__ */ jsx(SearchSort, {
|
|
10677
|
+
searchValue: searchTerm,
|
|
10678
|
+
onSearchChange: setSearchTerm,
|
|
10679
|
+
placeholder: "Search files..."
|
|
10775
10680
|
})
|
|
10776
|
-
})
|
|
10777
|
-
|
|
10778
|
-
|
|
10779
|
-
|
|
10780
|
-
|
|
10781
|
-
|
|
10782
|
-
|
|
10783
|
-
|
|
10784
|
-
|
|
10785
|
-
|
|
10786
|
-
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
|
|
10790
|
-
|
|
10791
|
-
|
|
10792
|
-
|
|
10793
|
-
|
|
10794
|
-
|
|
10795
|
-
|
|
10796
|
-
|
|
10797
|
-
|
|
10798
|
-
|
|
10799
|
-
|
|
10800
|
-
|
|
10801
|
-
|
|
10802
|
-
|
|
10803
|
-
|
|
10804
|
-
|
|
10805
|
-
|
|
10806
|
-
|
|
10807
|
-
|
|
10808
|
-
|
|
10809
|
-
|
|
10810
|
-
|
|
10811
|
-
|
|
10681
|
+
})
|
|
10682
|
+
}),
|
|
10683
|
+
footer: isFetchingNextPage && /* @__PURE__ */ jsx("div", {
|
|
10684
|
+
className: "flex justify-center py-4",
|
|
10685
|
+
children: /* @__PURE__ */ jsx("div", { className: "border-primary h-6 w-6 animate-spin rounded-full border-2 border-t-transparent" })
|
|
10686
|
+
}),
|
|
10687
|
+
sentinelRef: observerTarget,
|
|
10688
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
10689
|
+
className: SHAREABLE_GRID_CLASS,
|
|
10690
|
+
children: files.map((file) => {
|
|
10691
|
+
const isVideo = file.content_type?.startsWith("video/");
|
|
10692
|
+
const fileUrl = file.url || "#";
|
|
10693
|
+
return /* @__PURE__ */ jsxs(Card, {
|
|
10694
|
+
role: "button",
|
|
10695
|
+
tabIndex: 0,
|
|
10696
|
+
onClick: () => window.open(fileUrl, "_blank"),
|
|
10697
|
+
onKeyDown: (e) => {
|
|
10698
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
10699
|
+
e.preventDefault();
|
|
10700
|
+
window.open(fileUrl, "_blank");
|
|
10701
|
+
}
|
|
10702
|
+
},
|
|
10703
|
+
className: "group hover:bg-muted cursor-pointer gap-0 overflow-hidden rounded-lg border-0 p-0 shadow-none transition-colors",
|
|
10704
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
10705
|
+
className: "bg-muted relative aspect-square overflow-hidden rounded-lg",
|
|
10706
|
+
children: [
|
|
10707
|
+
renderImage({
|
|
10708
|
+
src: file.preview_image_url || DEFAULT_IMAGE,
|
|
10709
|
+
alt: file.filename || "Untitled File",
|
|
10710
|
+
fill: true,
|
|
10711
|
+
className: "object-cover transition-transform group-hover:scale-105"
|
|
10712
|
+
}),
|
|
10713
|
+
isVideo && /* @__PURE__ */ jsx("div", {
|
|
10714
|
+
className: "absolute inset-0 flex items-center justify-center",
|
|
10715
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
10716
|
+
className: "bg-foreground/50 flex h-16 w-16 items-center justify-center rounded-full backdrop-blur-sm",
|
|
10717
|
+
children: /* @__PURE__ */ jsx(CirclePlay, { className: "text-background h-12 w-12" })
|
|
10812
10718
|
})
|
|
10813
|
-
|
|
10814
|
-
|
|
10815
|
-
|
|
10816
|
-
|
|
10817
|
-
|
|
10818
|
-
|
|
10819
|
-
|
|
10820
|
-
|
|
10821
|
-
|
|
10822
|
-
|
|
10719
|
+
}),
|
|
10720
|
+
!isVideo && /* @__PURE__ */ jsx(Badge, {
|
|
10721
|
+
className: "absolute top-2 right-2 shadow-lg",
|
|
10722
|
+
variant: "default",
|
|
10723
|
+
children: formatFileSize(file.content_size)
|
|
10724
|
+
})
|
|
10725
|
+
]
|
|
10726
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
10727
|
+
className: "px-2 pt-2 pb-4",
|
|
10728
|
+
children: [/* @__PURE__ */ jsx("h3", {
|
|
10729
|
+
className: "text-foreground line-clamp-2 text-sm leading-tight font-bold",
|
|
10730
|
+
children: file.filename || "Untitled File"
|
|
10731
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
10732
|
+
className: "text-muted-foreground mt-1 text-xs",
|
|
10733
|
+
children: file.content_type || "File"
|
|
10823
10734
|
})]
|
|
10824
|
-
}
|
|
10825
|
-
})
|
|
10826
|
-
}),
|
|
10827
|
-
isFetchingNextPage && /* @__PURE__ */ jsx("div", {
|
|
10828
|
-
className: "flex justify-center py-4",
|
|
10829
|
-
children: /* @__PURE__ */ jsx("div", { className: "border-primary h-6 w-6 animate-spin rounded-full border-2 border-t-transparent" })
|
|
10830
|
-
}),
|
|
10831
|
-
/* @__PURE__ */ jsx("div", {
|
|
10832
|
-
ref: observerTarget,
|
|
10833
|
-
className: "h-1"
|
|
10735
|
+
})]
|
|
10736
|
+
}, file.id);
|
|
10834
10737
|
})
|
|
10835
|
-
|
|
10738
|
+
})
|
|
10836
10739
|
});
|
|
10837
10740
|
}
|
|
10838
10741
|
//#endregion
|
|
@@ -11950,4 +11853,4 @@ function PortalContentApiProvider({ children }) {
|
|
|
11950
11853
|
//#endregion
|
|
11951
11854
|
export { ShareablesApp as a, ShareablesCoreProvider as c, ProductsApp as i, usePortalContentContext as n, useFilePickerApi as o, toggleFavorite as r, ShareablesUIProvider as s, PortalContentApiProvider as t };
|
|
11952
11855
|
|
|
11953
|
-
//# sourceMappingURL=PortalContentApiProvider-
|
|
11856
|
+
//# sourceMappingURL=PortalContentApiProvider-B-miOfQl.mjs.map
|