@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/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./es-DmEK0Umf.mjs";
|
|
2
|
-
import { a as createScreen, c as FluidThemeProvider, h as deleteDatabase, i as widgetPropertySchemas, l as useThemeContext, m as createPersister, n as useFluidContext, o as createWidgetFromShareable, p as useAppDefinitionApi, r as DEFAULT_SDK_WIDGET_REGISTRY, s as createWidgetRegistry, t as FluidProvider } from "./FluidProvider-
|
|
2
|
+
import { a as createScreen, c as FluidThemeProvider, h as deleteDatabase, i as widgetPropertySchemas, l as useThemeContext, m as createPersister, n as useFluidContext, o as createWidgetFromShareable, p as useAppDefinitionApi, r as DEFAULT_SDK_WIDGET_REGISTRY, s as createWidgetRegistry, t as FluidProvider } from "./FluidProvider-0Mba_MWW.mjs";
|
|
3
3
|
import { a as assertNever, i as assertDefined, n as DataAwareWidget, o as isWidgetType, r as WIDGET_TYPE_NAMES, s as isWidgetTypeName, u as useRegistry } from "./ScreenRenderer-Cv2rxvtF.mjs";
|
|
4
4
|
import "./account-api-context-BIZ_aibJ.mjs";
|
|
5
5
|
import "./store-api-context-C1lXT_3d.mjs";
|
|
@@ -8,60 +8,60 @@ import { C as resolveTheme, D as SEMANTIC_COLOR_NAMES, E as RADIUS_KEYS, S as pa
|
|
|
8
8
|
import { n as usePortalTenantClient } from "./PortalTenantClientProvider-4ZmY6hac.mjs";
|
|
9
9
|
import "./registry-context-CrKm3pxA.mjs";
|
|
10
10
|
import "./WidgetInteractionContext-CS5--u84.mjs";
|
|
11
|
-
import { a as useRepUser, i as RepUserProvider, r as embedWidgetPropertySchema, t as EmbedWidget } from "./EmbedWidget-
|
|
11
|
+
import { a as useRepUser, i as RepUserProvider, r as embedWidgetPropertySchema, t as EmbedWidget } from "./EmbedWidget-Buij0edW.mjs";
|
|
12
12
|
import "./error-state-DSJb-3r5.mjs";
|
|
13
|
-
import { a as sectionLayoutConfig, i as groupChildrenByColumn, r as layoutWidgetPropertySchema, t as LayoutWidget } from "./LayoutWidget-
|
|
14
|
-
import { g as isPropertyFieldType, h as PROPERTY_FIELD_TYPES, r as gapValues } from "./registries-
|
|
13
|
+
import { a as sectionLayoutConfig, i as groupChildrenByColumn, r as layoutWidgetPropertySchema, t as LayoutWidget } from "./LayoutWidget-CQeqonHh.mjs";
|
|
14
|
+
import { g as isPropertyFieldType, h as PROPERTY_FIELD_TYPES, r as gapValues } from "./registries-DT36l-bR.mjs";
|
|
15
15
|
import "./fields-BW20NYWO.mjs";
|
|
16
|
-
import { r as textWidgetPropertySchema, t as TextWidget } from "./TextWidget-
|
|
17
|
-
import { r as alertWidgetPropertySchema, t as AlertWidget } from "./AlertWidget-
|
|
18
|
-
import { r as bulletListWidgetPropertySchema, t as BulletListWidget } from "./BulletListWidget-
|
|
19
|
-
import { r as calendarWidgetPropertySchema, t as CalendarWidget } from "./CalendarWidget-
|
|
20
|
-
import { r as cardWidgetPropertySchema, t as CardWidget } from "./CardWidget-
|
|
16
|
+
import { r as textWidgetPropertySchema, t as TextWidget } from "./TextWidget-BsDMvSQy.mjs";
|
|
17
|
+
import { r as alertWidgetPropertySchema, t as AlertWidget } from "./AlertWidget-C0wnu4-c.mjs";
|
|
18
|
+
import { r as bulletListWidgetPropertySchema, t as BulletListWidget } from "./BulletListWidget-DRxFyFKI.mjs";
|
|
19
|
+
import { r as calendarWidgetPropertySchema, t as CalendarWidget } from "./CalendarWidget-kZBErtwM.mjs";
|
|
20
|
+
import { r as cardWidgetPropertySchema, t as CardWidget } from "./CardWidget-gcPNwuZk.mjs";
|
|
21
21
|
import "./purify.es-Bl6SBkmi.mjs";
|
|
22
22
|
import { C as Skeleton$1, En as Button, Pn as cn$1, _t as CollapsibleContent, gt as Collapsible, ht as PopoverTrigger, mt as PopoverContent, pt as Popover, vt as CollapsibleTrigger, x as Toaster } from "./src-BEx23d86.mjs";
|
|
23
|
-
import { a as useMessagingConfig, i as createFluidFileUploader, o as useMessagingAuth, r as messagingScreenPropertySchema, t as MessagingScreen } from "./MessagingScreen-
|
|
24
|
-
import { r as subscriptionsScreenPropertySchema, t as SubscriptionsScreen } from "./SubscriptionsScreen-
|
|
23
|
+
import { a as useMessagingConfig, i as createFluidFileUploader, o as useMessagingAuth, r as messagingScreenPropertySchema, t as MessagingScreen } from "./MessagingScreen-BKgNsHdQ.mjs";
|
|
24
|
+
import { r as subscriptionsScreenPropertySchema, t as SubscriptionsScreen } from "./SubscriptionsScreen-CuP9OfBI.mjs";
|
|
25
25
|
import "./scroll-arrows-CYshgsiB.mjs";
|
|
26
26
|
import "./MediaRenderer-CEtrOi5O.mjs";
|
|
27
|
-
import { r as carouselWidgetPropertySchema, t as CarouselWidget } from "./CarouselWidget-
|
|
28
|
-
import { r as catchUpWidgetPropertySchema, t as CatchUpWidget } from "./CatchUpWidget-
|
|
29
|
-
import { r as chartWidgetPropertySchema, t as ChartWidget } from "./ChartWidget-
|
|
30
|
-
import { r as containerWidgetPropertySchema, t as ContainerWidget } from "./ContainerWidget-
|
|
31
|
-
import { r as imageWidgetPropertySchema, t as ImageWidget } from "./ImageWidget-
|
|
32
|
-
import { r as linkWidgetPropertySchema, t as LinkWidget } from "./LinkWidget-
|
|
33
|
-
import { r as listWidgetPropertySchema, t as ListWidget } from "./ListWidget-
|
|
34
|
-
import { r as mySiteWidgetPropertySchema, t as MySiteWidget } from "./MySiteWidget-
|
|
35
|
-
import { r as nestedWidgetPropertySchema, t as NestedWidget } from "./NestedWidget-
|
|
36
|
-
import { r as pointsWidgetPropertySchema, t as PointsWidget } from "./PointsWidget-
|
|
37
|
-
import { r as quickShareWidgetPropertySchema, t as QuickShareWidget } from "./QuickShareWidget-
|
|
38
|
-
import { r as recentActivityWidgetPropertySchema, t as RecentActivityWidget } from "./RecentActivityWidget-
|
|
39
|
-
import { r as separatorWidgetPropertySchema, t as SeparatorWidget } from "./SeparatorWidget-
|
|
27
|
+
import { r as carouselWidgetPropertySchema, t as CarouselWidget } from "./CarouselWidget-DPFJhHro.mjs";
|
|
28
|
+
import { r as catchUpWidgetPropertySchema, t as CatchUpWidget } from "./CatchUpWidget-DGucqTrd.mjs";
|
|
29
|
+
import { r as chartWidgetPropertySchema, t as ChartWidget } from "./ChartWidget-C9jaZaxZ.mjs";
|
|
30
|
+
import { r as containerWidgetPropertySchema, t as ContainerWidget } from "./ContainerWidget-6XsVE_8u.mjs";
|
|
31
|
+
import { r as imageWidgetPropertySchema, t as ImageWidget } from "./ImageWidget-DuqgiO55.mjs";
|
|
32
|
+
import { r as linkWidgetPropertySchema, t as LinkWidget } from "./LinkWidget-muhFoV50.mjs";
|
|
33
|
+
import { r as listWidgetPropertySchema, t as ListWidget } from "./ListWidget-DvZQjspc.mjs";
|
|
34
|
+
import { r as mySiteWidgetPropertySchema, t as MySiteWidget } from "./MySiteWidget-C6IZytLt.mjs";
|
|
35
|
+
import { r as nestedWidgetPropertySchema, t as NestedWidget } from "./NestedWidget-J9sJbt9s.mjs";
|
|
36
|
+
import { r as pointsWidgetPropertySchema, t as PointsWidget } from "./PointsWidget-CoDqvWC5.mjs";
|
|
37
|
+
import { r as quickShareWidgetPropertySchema, t as QuickShareWidget } from "./QuickShareWidget-Dbjueevf.mjs";
|
|
38
|
+
import { r as recentActivityWidgetPropertySchema, t as RecentActivityWidget } from "./RecentActivityWidget-D-uJcFkE.mjs";
|
|
39
|
+
import { r as separatorWidgetPropertySchema, t as SeparatorWidget } from "./SeparatorWidget-Clm35u4g.mjs";
|
|
40
40
|
import { r as spacerWidgetPropertySchema, t as SpacerWidget } from "./SpacerWidget-JyChGNdx.mjs";
|
|
41
|
-
import { r as tableWidgetPropertySchema, t as TableWidget } from "./TableWidget-
|
|
42
|
-
import { r as toDoWidgetPropertySchema, t as ToDoWidget } from "./ToDoWidget-
|
|
43
|
-
import { r as videoWidgetPropertySchema, t as VideoWidget } from "./VideoWidget-
|
|
41
|
+
import { r as tableWidgetPropertySchema, t as TableWidget } from "./TableWidget-DVfzScu1.mjs";
|
|
42
|
+
import { r as toDoWidgetPropertySchema, t as ToDoWidget } from "./ToDoWidget-DvNBsmgz.mjs";
|
|
43
|
+
import { r as videoWidgetPropertySchema, t as VideoWidget } from "./VideoWidget-BpKJv_pg.mjs";
|
|
44
44
|
import { i as useScreenHeaderContext, t as ScreenHeaderProvider } from "./ScreenHeaderContext-FYyYk97y.mjs";
|
|
45
45
|
import { t as useAccount } from "./use-account-B16Tor2Q.mjs";
|
|
46
46
|
import { t as useStore } from "./use-store-BnHhQDYo.mjs";
|
|
47
47
|
import { i as CoreScreenPlaceholder, r as customersScreenPropertySchema, t as CustomersScreen } from "./CustomersScreen-CeLL33Gu.mjs";
|
|
48
48
|
import { n as useAppNavigation, t as AppNavigationProvider } from "./AppNavigationContext-BW3lSpfT.mjs";
|
|
49
|
-
import { r as profileScreenPropertySchema, t as ProfileScreen } from "./ProfileScreen-
|
|
49
|
+
import { r as profileScreenPropertySchema, t as ProfileScreen } from "./ProfileScreen-WC3LIwDh.mjs";
|
|
50
50
|
import "./dist-BETEuYfn.mjs";
|
|
51
|
-
import { r as contactsScreenPropertySchema, t as ContactsScreen } from "./ContactsScreen-
|
|
51
|
+
import { r as contactsScreenPropertySchema, t as ContactsScreen } from "./ContactsScreen-CCsst8bb.mjs";
|
|
52
52
|
import "./SearchSort-TmuNOCwA.mjs";
|
|
53
53
|
import "./InfiniteScrollSentinel-BnPwh0Hr.mjs";
|
|
54
54
|
import "./dist-DBPpJ567.mjs";
|
|
55
55
|
import "./order-status-badge-BfOyK_Yi.mjs";
|
|
56
|
-
import { r as ordersScreenPropertySchema, t as OrdersScreen } from "./OrdersScreen-
|
|
57
|
-
import "./PortalContentApiProvider-
|
|
56
|
+
import { r as ordersScreenPropertySchema, t as OrdersScreen } from "./OrdersScreen-D4pe5mLs.mjs";
|
|
57
|
+
import "./PortalContentApiProvider-B-miOfQl.mjs";
|
|
58
58
|
import "./sortable.esm-DFTEWOHN.mjs";
|
|
59
|
-
import "./PortalProductsApiProvider-
|
|
60
|
-
import { n as productsScreenPropertySchema, t as ProductsScreen } from "./ProductsScreen-
|
|
59
|
+
import "./PortalProductsApiProvider-DHni3Y1V.mjs";
|
|
60
|
+
import { n as productsScreenPropertySchema, t as ProductsScreen } from "./ProductsScreen-CRSHQoVn.mjs";
|
|
61
61
|
import "./use-mysite-portal-axe_PFzR.mjs";
|
|
62
|
-
import { r as mySiteScreenPropertySchema, t as MySiteScreen } from "./MySiteScreen-
|
|
63
|
-
import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-
|
|
64
|
-
import { r as shopScreenPropertySchema, t as ShopScreen } from "./ShopScreen-
|
|
62
|
+
import { r as mySiteScreenPropertySchema, t as MySiteScreen } from "./MySiteScreen-Dz5htti5.mjs";
|
|
63
|
+
import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-BZK_lSdi.mjs";
|
|
64
|
+
import { r as shopScreenPropertySchema, t as ShopScreen } from "./ShopScreen-BfexFHUc.mjs";
|
|
65
65
|
import "./UpgradeScreen-K1atEcyx.mjs";
|
|
66
66
|
import "./AppDownloadScreen-CLSjQhHn.mjs";
|
|
67
67
|
import * as React$1 from "react";
|
|
@@ -2132,16 +2132,16 @@ function AccountManageLayout({ children }) {
|
|
|
2132
2132
|
}
|
|
2133
2133
|
//#endregion
|
|
2134
2134
|
//#region src/shell/system-screen-map.ts
|
|
2135
|
-
const ProfileScreen$1 = lazy(() => import("./ProfileScreen-
|
|
2136
|
-
const OrdersScreen$1 = lazy(() => import("./OrdersScreen-
|
|
2137
|
-
const SubscriptionsScreen$1 = lazy(() => import("./SubscriptionsScreen-
|
|
2138
|
-
const MessagingScreen$1 = lazy(() => import("./MessagingScreen-
|
|
2139
|
-
const ContactsScreen$1 = lazy(() => import("./ContactsScreen-
|
|
2140
|
-
const ShopScreen$1 = lazy(() => import("./ShopScreen-
|
|
2135
|
+
const ProfileScreen$1 = lazy(() => import("./ProfileScreen-WC3LIwDh.mjs").then((n) => n.n).then((m) => ({ default: m.ProfileScreen })));
|
|
2136
|
+
const OrdersScreen$1 = lazy(() => import("./OrdersScreen-D4pe5mLs.mjs").then((n) => n.n).then((m) => ({ default: m.OrdersScreen })));
|
|
2137
|
+
const SubscriptionsScreen$1 = lazy(() => import("./SubscriptionsScreen-CuP9OfBI.mjs").then((n) => n.n).then((m) => ({ default: m.SubscriptionsScreen })));
|
|
2138
|
+
const MessagingScreen$1 = lazy(() => import("./MessagingScreen-BKgNsHdQ.mjs").then((n) => n.n).then((m) => ({ default: m.MessagingScreen })));
|
|
2139
|
+
const ContactsScreen$1 = lazy(() => import("./ContactsScreen-CCsst8bb.mjs").then((n) => n.n).then((m) => ({ default: m.ContactsScreen })));
|
|
2140
|
+
const ShopScreen$1 = lazy(() => import("./ShopScreen-BfexFHUc.mjs").then((n) => n.n).then((m) => ({ default: m.ShopScreen })));
|
|
2141
2141
|
const CustomersScreen$1 = lazy(() => import("./CustomersScreen-CeLL33Gu.mjs").then((n) => n.n).then((m) => ({ default: m.CustomersScreen })));
|
|
2142
|
-
const ProductsScreen$1 = lazy(() => import("./ProductsScreen-
|
|
2143
|
-
const ShareablesScreen$1 = lazy(() => import("./ShareablesScreen-
|
|
2144
|
-
const MySiteScreen$1 = lazy(() => import("./MySiteScreen-
|
|
2142
|
+
const ProductsScreen$1 = lazy(() => import("./ProductsScreen-CRV1_NVf.mjs").then((m) => ({ default: m.ProductsScreen })));
|
|
2143
|
+
const ShareablesScreen$1 = lazy(() => import("./ShareablesScreen-Ce7kJAPw.mjs").then((m) => ({ default: m.ShareablesScreen })));
|
|
2144
|
+
const MySiteScreen$1 = lazy(() => import("./MySiteScreen-Dz5htti5.mjs").then((n) => n.n).then((m) => ({ default: m.MySiteScreen })));
|
|
2145
2145
|
const UpgradeScreen = lazy(() => import("./UpgradeScreen-K1atEcyx.mjs").then((n) => n.t).then((m) => ({ default: m.UpgradeScreen })));
|
|
2146
2146
|
const AppDownloadScreen = lazy(() => import("./AppDownloadScreen-CLSjQhHn.mjs").then((n) => n.t).then((m) => ({ default: m.AppDownloadScreen })));
|
|
2147
2147
|
const SYSTEM_SLUG_SCREEN_MAP = {
|
|
@@ -3627,16 +3627,16 @@ z.object({
|
|
|
3627
3627
|
//#endregion
|
|
3628
3628
|
//#region src/screens/index.ts
|
|
3629
3629
|
const screenPropertySchemas = {
|
|
3630
|
-
ProfileScreen: () => import("./ProfileScreen-
|
|
3631
|
-
MessagingScreen: () => import("./MessagingScreen-
|
|
3632
|
-
ContactsScreen: () => import("./ContactsScreen-
|
|
3633
|
-
OrdersScreen: () => import("./OrdersScreen-
|
|
3634
|
-
SubscriptionsScreen: () => import("./SubscriptionsScreen-
|
|
3630
|
+
ProfileScreen: () => import("./ProfileScreen-WC3LIwDh.mjs").then((n) => n.n).then((m) => m.profileScreenPropertySchema),
|
|
3631
|
+
MessagingScreen: () => import("./MessagingScreen-BKgNsHdQ.mjs").then((n) => n.n).then((m) => m.messagingScreenPropertySchema),
|
|
3632
|
+
ContactsScreen: () => import("./ContactsScreen-CCsst8bb.mjs").then((n) => n.n).then((m) => m.contactsScreenPropertySchema),
|
|
3633
|
+
OrdersScreen: () => import("./OrdersScreen-D4pe5mLs.mjs").then((n) => n.n).then((m) => m.ordersScreenPropertySchema),
|
|
3634
|
+
SubscriptionsScreen: () => import("./SubscriptionsScreen-CuP9OfBI.mjs").then((n) => n.n).then((m) => m.subscriptionsScreenPropertySchema),
|
|
3635
3635
|
CustomersScreen: () => import("./CustomersScreen-CeLL33Gu.mjs").then((n) => n.n).then((m) => m.customersScreenPropertySchema),
|
|
3636
|
-
ProductsScreen: () => import("./ProductsScreen-
|
|
3637
|
-
MySiteScreen: () => import("./MySiteScreen-
|
|
3638
|
-
ShareablesScreen: () => import("./ShareablesScreen-
|
|
3639
|
-
ShopScreen: () => import("./ShopScreen-
|
|
3636
|
+
ProductsScreen: () => import("./ProductsScreen-CRV1_NVf.mjs").then((m) => m.productsScreenPropertySchema),
|
|
3637
|
+
MySiteScreen: () => import("./MySiteScreen-Dz5htti5.mjs").then((n) => n.n).then((m) => m.mySiteScreenPropertySchema),
|
|
3638
|
+
ShareablesScreen: () => import("./ShareablesScreen-Ce7kJAPw.mjs").then((m) => m.shareablesScreenPropertySchema),
|
|
3639
|
+
ShopScreen: () => import("./ShopScreen-BfexFHUc.mjs").then((n) => n.n).then((m) => m.shopScreenPropertySchema),
|
|
3640
3640
|
UpgradeScreen: () => import("./UpgradeScreen-K1atEcyx.mjs").then((n) => n.t).then((m) => m.upgradeScreenPropertySchema),
|
|
3641
3641
|
AppDownloadScreen: () => import("./AppDownloadScreen-CLSjQhHn.mjs").then((n) => n.t).then((m) => m.appDownloadScreenPropertySchema)
|
|
3642
3642
|
};
|
|
@@ -141,7 +141,7 @@ async function subscriptions_show(client, token) {
|
|
|
141
141
|
}
|
|
142
142
|
/**
|
|
143
143
|
* Update a subscription
|
|
144
|
-
* Updates a subscription's default payment method.
|
|
144
|
+
* Updates a subscription's default payment method or quantity.
|
|
145
145
|
*
|
|
146
146
|
* @param client - Fetch client instance
|
|
147
147
|
* @param token - token
|
|
@@ -255,4 +255,4 @@ async function enrollment_pack_metrics_share_visits(client, params) {
|
|
|
255
255
|
//#endregion
|
|
256
256
|
export { subscriptions_skip as C, subscriptions_show as S, todos_list as T, subscriptions_cancel as _, enrollment_pack_metrics_share_visits as a, subscriptions_reactivate as b, orders_list as c, product_metrics_visits as d, products_list as f, store_show as g, products_show as h, calendar_events_list as i, orders_show as l, products_search as m, account_update as n, enrollment_pack_metrics_visits as o, products_media_list as p, app_manifest_show as r, enrollment_packs_show as s, account_show as t, product_metrics_share_visits as u, subscriptions_list as v, subscriptions_update as w, subscriptions_resume as x, subscriptions_pause as y };
|
|
257
257
|
|
|
258
|
-
//# sourceMappingURL=portal_tenant-
|
|
258
|
+
//# sourceMappingURL=portal_tenant-Mu12SQA1.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal_tenant-Mu12SQA1.mjs","names":[],"sources":["../../../api-clients/portal-tenant/src/namespaces/portal_tenant.ts"],"sourcesContent":["/**\n * Generated API client functions for portal_tenant\n *\n * DO NOT EDIT THIS FILE DIRECTLY\n * This file is auto-generated. To update:\n * 1. Update the OpenAPI spec file\n * 2. Run: pnpm generate\n */\n\nimport type { FetchClient } from \"../lib/fetch-client\";\nimport type { operations } from \"../generated/portal-tenant\";\n\n// ============================================================================\n// account\n// ============================================================================\n\n/**\n * Get current account\n * Returns the authenticated member's account profile and company context. This is the primary endpoint the SPA calls to check auth status and display user information.\n *\n * @param client - Fetch client instance\n \n */\nexport async function account_show(\n client: FetchClient,\n): Promise<\n operations[\"account_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/account`);\n}\n\n/**\n * Update current account\n * Updates the authenticated member's profile fields such as name, phone, bio, avatar, and social links.\n *\n * @param client - Fetch client instance\n * @param body - body\n */\nexport async function account_update(\n client: FetchClient,\n body: operations[\"account_update\"][\"requestBody\"][\"content\"][\"application/json\"],\n): Promise<\n operations[\"account_update\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.patch(`/api/account`, body);\n}\n\n// ============================================================================\n// store\n// ============================================================================\n\n/**\n * Get store branding\n * Returns the tenant company's store branding including logo, icon, and app store URLs.\n *\n * @param client - Fetch client instance\n \n */\nexport async function store_show(\n client: FetchClient,\n): Promise<\n operations[\"store_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/store`);\n}\n\n// ============================================================================\n// app\n// ============================================================================\n\n/**\n * Get the app manifest\n * Returns the rendered manifest for the tenant company's active FluidOS definition, matched against the current user's country, rank, and roles.\n *\n * @param client - Fetch client instance\n \n */\nexport async function app_manifest_show(\n client: FetchClient,\n): Promise<\n operations[\"app_manifest_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/app/manifest`);\n}\n\n// ============================================================================\n// calendar_events\n// ============================================================================\n\n/**\n * List calendar events\n * Returns a paginated list of upcoming and ongoing calendar events for the tenant company, optionally filtered by the authenticated member's country when one is set.\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function calendar_events_list(\n client: FetchClient,\n params?: operations[\"calendar_events_list\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"calendar_events_list\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/calendar/events`, params);\n}\n\n// ============================================================================\n// orders\n// ============================================================================\n\n/**\n * List orders\n * Returns a paginated list of orders placed through the tenant company, optionally filtered by status.\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function orders_list(\n client: FetchClient,\n params?: operations[\"orders_list\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"orders_list\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/orders`, params);\n}\n\n/**\n * Get an order\n * Returns a single order by token with its line items.\n *\n * @param client - Fetch client instance\n * @param token - token\n */\nexport async function orders_show(\n client: FetchClient,\n token: string | number,\n): Promise<\n operations[\"orders_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/orders/${token}`);\n}\n\n// ============================================================================\n// products\n// ============================================================================\n\n/**\n * List products\n * Returns a paginated list of products available in the tenant company's catalog. Supports sorting and filtering by title, product type, collection, and stock availability.\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function products_list(\n client: FetchClient,\n params?: operations[\"products_list\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"products_list\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/products`, params);\n}\n\n/**\n * Get a product\n * Returns a single product by ID with its variants.\n *\n * @param client - Fetch client instance\n * @param id - id\n */\nexport async function products_show(\n client: FetchClient,\n id: string | number,\n): Promise<\n operations[\"products_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/products/${id}`);\n}\n\n/**\n * Search products\n * Searches the tenant company's product catalog by keyword, returning paginated results.\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function products_search(\n client: FetchClient,\n params?: operations[\"products_search\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"products_search\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/products/search`, params);\n}\n\n/**\n * List product media\n * Returns all media (images, videos) attached to a product.\n *\n * @param client - Fetch client instance\n * @param id - id\n */\nexport async function products_media_list(\n client: FetchClient,\n id: string | number,\n): Promise<\n operations[\"products_media_list\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/products/${id}/media`);\n}\n\n// ============================================================================\n// enrollment_packs\n// ============================================================================\n\n/**\n * Get an enrollment pack\n * Returns a single active, non-discarded enrollment pack scoped to the current portal tenant's company.\n *\n * @param client - Fetch client instance\n * @param id - id\n */\nexport async function enrollment_packs_show(\n client: FetchClient,\n id: string | number,\n): Promise<\n operations[\"enrollment_packs_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/enrollment_packs/${id}`);\n}\n\n// ============================================================================\n// subscriptions\n// ============================================================================\n\n/**\n * List subscriptions\n * Returns a paginated list of the member's active and historical subscriptions. Supports filtering by lifecycle state and a free-text search across product and plan names.\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function subscriptions_list(\n client: FetchClient,\n params?: operations[\"subscriptions_list\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"subscriptions_list\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/subscriptions`, params);\n}\n\n/**\n * Get a subscription\n * Returns a single subscription by its token.\n *\n * @param client - Fetch client instance\n * @param token - token\n */\nexport async function subscriptions_show(\n client: FetchClient,\n token: string | number,\n): Promise<\n operations[\"subscriptions_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/subscriptions/${token}`);\n}\n\n/**\n * Update a subscription\n * Updates a subscription's default payment method or quantity.\n *\n * @param client - Fetch client instance\n * @param token - token\n * @param body - body\n */\nexport async function subscriptions_update(\n client: FetchClient,\n token: string | number,\n body: operations[\"subscriptions_update\"][\"requestBody\"][\"content\"][\"application/json\"],\n): Promise<\n operations[\"subscriptions_update\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.put(`/api/subscriptions/${token}`, body);\n}\n\n/**\n * Pause a subscription\n * Pauses billing on an active subscription. When neither `next_bill_date` nor `number_of_orders` is provided, the subscription is paused indefinitely. Specifying both is rejected.\n *\n * @param client - Fetch client instance\n * @param token - token\n * @param [body] - body\n */\nexport async function subscriptions_pause(\n client: FetchClient,\n token: string | number,\n body?: NonNullable<\n operations[\"subscriptions_pause\"][\"requestBody\"]\n >[\"content\"][\"application/json\"],\n): Promise<\n operations[\"subscriptions_pause\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.post(`/api/subscriptions/${token}/pause`, body);\n}\n\n/**\n * Resume a subscription\n * Resumes billing on a paused subscription. When `next_bill_date` is omitted, the plan's next bill date from today is used.\n *\n * @param client - Fetch client instance\n * @param token - token\n * @param [body] - body\n */\nexport async function subscriptions_resume(\n client: FetchClient,\n token: string | number,\n body?: NonNullable<\n operations[\"subscriptions_resume\"][\"requestBody\"]\n >[\"content\"][\"application/json\"],\n): Promise<\n operations[\"subscriptions_resume\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.post(`/api/subscriptions/${token}/resume`, body);\n}\n\n/**\n * Skip next billing cycle\n * Skips the next billing cycle for a subscription without pausing it.\n *\n * @param client - Fetch client instance\n * @param token - token\n */\nexport async function subscriptions_skip(\n client: FetchClient,\n token: string | number,\n): Promise<\n operations[\"subscriptions_skip\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.post(`/api/subscriptions/${token}/skip_next_billing`);\n}\n\n/**\n * Cancel a subscription\n * Cancels an active subscription.\n *\n * @param client - Fetch client instance\n * @param token - token\n */\nexport async function subscriptions_cancel(\n client: FetchClient,\n token: string | number,\n): Promise<\n operations[\"subscriptions_cancel\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.post(`/api/subscriptions/${token}/cancel`);\n}\n\n/**\n * Reactivate a subscription\n * Reactivates a previously cancelled subscription.\n *\n * @param client - Fetch client instance\n * @param token - token\n */\nexport async function subscriptions_reactivate(\n client: FetchClient,\n token: string | number,\n): Promise<\n operations[\"subscriptions_reactivate\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.post(`/api/subscriptions/${token}/reactivate`);\n}\n\n// ============================================================================\n// todos\n// ============================================================================\n\n/**\n * List todos\n * Returns a paginated list of incomplete tasks scoped to the authenticated member. Ordered by due date ascending, tasks without a due date sort last.\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function todos_list(\n client: FetchClient,\n params?: operations[\"todos_list\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"todos_list\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/todos`, params);\n}\n\n// ============================================================================\n// carts\n// ============================================================================\n\n/**\n * Claim a cart\n * Assigns the logged-in member as buyer_rep on an unclaimed FairShare cart. Any portal member (rep or customer) can claim. Returns an error if the cart has already been claimed.\n *\n * @param client - Fetch client instance\n * @param token - token\n */\nexport async function carts_claim(\n client: FetchClient,\n token: string | number,\n): Promise<\n operations[\"carts_claim\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.post(`/api/carts/${token}/claim`);\n}\n\n// ============================================================================\n// product_metrics\n// ============================================================================\n\n/**\n * Top products by direct visits\n * Ranked list of the company's products by total visits to the product page (aggregates metrics_product_visits across all visit sources).\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function product_metrics_visits(\n client: FetchClient,\n params?: operations[\"product_metrics_visits\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"product_metrics_visits\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/products/metrics/visits`, params);\n}\n\n/**\n * Top products by share-link visits\n * Ranked list of the company's products by click-throughs on rep share links (aggregates metrics_share_shareable_visits where shareable_type='Product').\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function product_metrics_share_visits(\n client: FetchClient,\n params?: operations[\"product_metrics_share_visits\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"product_metrics_share_visits\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/products/metrics/share_visits`, params);\n}\n\n// ============================================================================\n// enrollment_pack_metrics\n// ============================================================================\n\n/**\n * Top enrollment packs by direct visits\n * Ranked list of the company's enrollment packs by total visits to the pack page (aggregates metrics_enrollment_pack_visits across all visit sources).\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function enrollment_pack_metrics_visits(\n client: FetchClient,\n params?: operations[\"enrollment_pack_metrics_visits\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"enrollment_pack_metrics_visits\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/enrollment_packs/metrics/visits`, params);\n}\n\n/**\n * Top enrollment packs by share-link visits\n * Ranked list of the company's enrollment packs by click-throughs on rep share links (aggregates metrics_share_shareable_visits where shareable_type='EnrollmentPack').\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function enrollment_pack_metrics_share_visits(\n client: FetchClient,\n params?: operations[\"enrollment_pack_metrics_share_visits\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"enrollment_pack_metrics_share_visits\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/enrollment_packs/metrics/share_visits`, params);\n}\n"],"mappings":";;;;;;;;AAuBA,eAAsB,aACpB,QAGA;AACA,QAAO,OAAO,IAAI,eAAe;;;;;;;;;AAUnC,eAAsB,eACpB,QACA,MAGA;AACA,QAAO,OAAO,MAAM,gBAAgB,KAAK;;;;;;;;;AAc3C,eAAsB,WACpB,QAGA;AACA,QAAO,OAAO,IAAI,aAAa;;;;;;;;;AAcjC,eAAsB,kBACpB,QAGA;AACA,QAAO,OAAO,IAAI,oBAAoB;;;;;;;;;AAcxC,eAAsB,qBACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,wBAAwB,OAAO;;;;;;;;;AAcnD,eAAsB,YACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,eAAe,OAAO;;;;;;;;;AAU1C,eAAsB,YACpB,QACA,OAGA;AACA,QAAO,OAAO,IAAI,eAAe,QAAQ;;;;;;;;;AAc3C,eAAsB,cACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,iBAAiB,OAAO;;;;;;;;;AAU5C,eAAsB,cACpB,QACA,IAGA;AACA,QAAO,OAAO,IAAI,iBAAiB,KAAK;;;;;;;;;AAU1C,eAAsB,gBACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,wBAAwB,OAAO;;;;;;;;;AAUnD,eAAsB,oBACpB,QACA,IAGA;AACA,QAAO,OAAO,IAAI,iBAAiB,GAAG,QAAQ;;;;;;;;;AAchD,eAAsB,sBACpB,QACA,IAGA;AACA,QAAO,OAAO,IAAI,yBAAyB,KAAK;;;;;;;;;AAclD,eAAsB,mBACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,sBAAsB,OAAO;;;;;;;;;AAUjD,eAAsB,mBACpB,QACA,OAGA;AACA,QAAO,OAAO,IAAI,sBAAsB,QAAQ;;;;;;;;;;AAWlD,eAAsB,qBACpB,QACA,OACA,MAGA;AACA,QAAO,OAAO,IAAI,sBAAsB,SAAS,KAAK;;;;;;;;;;AAWxD,eAAsB,oBACpB,QACA,OACA,MAKA;AACA,QAAO,OAAO,KAAK,sBAAsB,MAAM,SAAS,KAAK;;;;;;;;;;AAW/D,eAAsB,qBACpB,QACA,OACA,MAKA;AACA,QAAO,OAAO,KAAK,sBAAsB,MAAM,UAAU,KAAK;;;;;;;;;AAUhE,eAAsB,mBACpB,QACA,OAGA;AACA,QAAO,OAAO,KAAK,sBAAsB,MAAM,oBAAoB;;;;;;;;;AAUrE,eAAsB,qBACpB,QACA,OAGA;AACA,QAAO,OAAO,KAAK,sBAAsB,MAAM,SAAS;;;;;;;;;AAU1D,eAAsB,yBACpB,QACA,OAGA;AACA,QAAO,OAAO,KAAK,sBAAsB,MAAM,aAAa;;;;;;;;;AAc9D,eAAsB,WACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,cAAc,OAAO;;;;;;;;;AAkCzC,eAAsB,uBACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,gCAAgC,OAAO;;;;;;;;;AAU3D,eAAsB,6BACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,sCAAsC,OAAO;;;;;;;;;AAcjE,eAAsB,+BACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,wCAAwC,OAAO;;;;;;;;;AAUnE,eAAsB,qCACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,8CAA8C,OAAO"}
|
|
@@ -141,7 +141,7 @@ async function subscriptions_show(client, token) {
|
|
|
141
141
|
}
|
|
142
142
|
/**
|
|
143
143
|
* Update a subscription
|
|
144
|
-
* Updates a subscription's default payment method.
|
|
144
|
+
* Updates a subscription's default payment method or quantity.
|
|
145
145
|
*
|
|
146
146
|
* @param client - Fetch client instance
|
|
147
147
|
* @param token - token
|
|
@@ -404,4 +404,4 @@ Object.defineProperty(exports, "todos_list", {
|
|
|
404
404
|
}
|
|
405
405
|
});
|
|
406
406
|
|
|
407
|
-
//# sourceMappingURL=portal_tenant-
|
|
407
|
+
//# sourceMappingURL=portal_tenant-dfv03Fyi.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal_tenant-dfv03Fyi.cjs","names":[],"sources":["../../../api-clients/portal-tenant/src/namespaces/portal_tenant.ts"],"sourcesContent":["/**\n * Generated API client functions for portal_tenant\n *\n * DO NOT EDIT THIS FILE DIRECTLY\n * This file is auto-generated. To update:\n * 1. Update the OpenAPI spec file\n * 2. Run: pnpm generate\n */\n\nimport type { FetchClient } from \"../lib/fetch-client\";\nimport type { operations } from \"../generated/portal-tenant\";\n\n// ============================================================================\n// account\n// ============================================================================\n\n/**\n * Get current account\n * Returns the authenticated member's account profile and company context. This is the primary endpoint the SPA calls to check auth status and display user information.\n *\n * @param client - Fetch client instance\n \n */\nexport async function account_show(\n client: FetchClient,\n): Promise<\n operations[\"account_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/account`);\n}\n\n/**\n * Update current account\n * Updates the authenticated member's profile fields such as name, phone, bio, avatar, and social links.\n *\n * @param client - Fetch client instance\n * @param body - body\n */\nexport async function account_update(\n client: FetchClient,\n body: operations[\"account_update\"][\"requestBody\"][\"content\"][\"application/json\"],\n): Promise<\n operations[\"account_update\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.patch(`/api/account`, body);\n}\n\n// ============================================================================\n// store\n// ============================================================================\n\n/**\n * Get store branding\n * Returns the tenant company's store branding including logo, icon, and app store URLs.\n *\n * @param client - Fetch client instance\n \n */\nexport async function store_show(\n client: FetchClient,\n): Promise<\n operations[\"store_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/store`);\n}\n\n// ============================================================================\n// app\n// ============================================================================\n\n/**\n * Get the app manifest\n * Returns the rendered manifest for the tenant company's active FluidOS definition, matched against the current user's country, rank, and roles.\n *\n * @param client - Fetch client instance\n \n */\nexport async function app_manifest_show(\n client: FetchClient,\n): Promise<\n operations[\"app_manifest_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/app/manifest`);\n}\n\n// ============================================================================\n// calendar_events\n// ============================================================================\n\n/**\n * List calendar events\n * Returns a paginated list of upcoming and ongoing calendar events for the tenant company, optionally filtered by the authenticated member's country when one is set.\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function calendar_events_list(\n client: FetchClient,\n params?: operations[\"calendar_events_list\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"calendar_events_list\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/calendar/events`, params);\n}\n\n// ============================================================================\n// orders\n// ============================================================================\n\n/**\n * List orders\n * Returns a paginated list of orders placed through the tenant company, optionally filtered by status.\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function orders_list(\n client: FetchClient,\n params?: operations[\"orders_list\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"orders_list\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/orders`, params);\n}\n\n/**\n * Get an order\n * Returns a single order by token with its line items.\n *\n * @param client - Fetch client instance\n * @param token - token\n */\nexport async function orders_show(\n client: FetchClient,\n token: string | number,\n): Promise<\n operations[\"orders_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/orders/${token}`);\n}\n\n// ============================================================================\n// products\n// ============================================================================\n\n/**\n * List products\n * Returns a paginated list of products available in the tenant company's catalog. Supports sorting and filtering by title, product type, collection, and stock availability.\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function products_list(\n client: FetchClient,\n params?: operations[\"products_list\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"products_list\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/products`, params);\n}\n\n/**\n * Get a product\n * Returns a single product by ID with its variants.\n *\n * @param client - Fetch client instance\n * @param id - id\n */\nexport async function products_show(\n client: FetchClient,\n id: string | number,\n): Promise<\n operations[\"products_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/products/${id}`);\n}\n\n/**\n * Search products\n * Searches the tenant company's product catalog by keyword, returning paginated results.\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function products_search(\n client: FetchClient,\n params?: operations[\"products_search\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"products_search\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/products/search`, params);\n}\n\n/**\n * List product media\n * Returns all media (images, videos) attached to a product.\n *\n * @param client - Fetch client instance\n * @param id - id\n */\nexport async function products_media_list(\n client: FetchClient,\n id: string | number,\n): Promise<\n operations[\"products_media_list\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/products/${id}/media`);\n}\n\n// ============================================================================\n// enrollment_packs\n// ============================================================================\n\n/**\n * Get an enrollment pack\n * Returns a single active, non-discarded enrollment pack scoped to the current portal tenant's company.\n *\n * @param client - Fetch client instance\n * @param id - id\n */\nexport async function enrollment_packs_show(\n client: FetchClient,\n id: string | number,\n): Promise<\n operations[\"enrollment_packs_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/enrollment_packs/${id}`);\n}\n\n// ============================================================================\n// subscriptions\n// ============================================================================\n\n/**\n * List subscriptions\n * Returns a paginated list of the member's active and historical subscriptions. Supports filtering by lifecycle state and a free-text search across product and plan names.\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function subscriptions_list(\n client: FetchClient,\n params?: operations[\"subscriptions_list\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"subscriptions_list\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/subscriptions`, params);\n}\n\n/**\n * Get a subscription\n * Returns a single subscription by its token.\n *\n * @param client - Fetch client instance\n * @param token - token\n */\nexport async function subscriptions_show(\n client: FetchClient,\n token: string | number,\n): Promise<\n operations[\"subscriptions_show\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/subscriptions/${token}`);\n}\n\n/**\n * Update a subscription\n * Updates a subscription's default payment method or quantity.\n *\n * @param client - Fetch client instance\n * @param token - token\n * @param body - body\n */\nexport async function subscriptions_update(\n client: FetchClient,\n token: string | number,\n body: operations[\"subscriptions_update\"][\"requestBody\"][\"content\"][\"application/json\"],\n): Promise<\n operations[\"subscriptions_update\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.put(`/api/subscriptions/${token}`, body);\n}\n\n/**\n * Pause a subscription\n * Pauses billing on an active subscription. When neither `next_bill_date` nor `number_of_orders` is provided, the subscription is paused indefinitely. Specifying both is rejected.\n *\n * @param client - Fetch client instance\n * @param token - token\n * @param [body] - body\n */\nexport async function subscriptions_pause(\n client: FetchClient,\n token: string | number,\n body?: NonNullable<\n operations[\"subscriptions_pause\"][\"requestBody\"]\n >[\"content\"][\"application/json\"],\n): Promise<\n operations[\"subscriptions_pause\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.post(`/api/subscriptions/${token}/pause`, body);\n}\n\n/**\n * Resume a subscription\n * Resumes billing on a paused subscription. When `next_bill_date` is omitted, the plan's next bill date from today is used.\n *\n * @param client - Fetch client instance\n * @param token - token\n * @param [body] - body\n */\nexport async function subscriptions_resume(\n client: FetchClient,\n token: string | number,\n body?: NonNullable<\n operations[\"subscriptions_resume\"][\"requestBody\"]\n >[\"content\"][\"application/json\"],\n): Promise<\n operations[\"subscriptions_resume\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.post(`/api/subscriptions/${token}/resume`, body);\n}\n\n/**\n * Skip next billing cycle\n * Skips the next billing cycle for a subscription without pausing it.\n *\n * @param client - Fetch client instance\n * @param token - token\n */\nexport async function subscriptions_skip(\n client: FetchClient,\n token: string | number,\n): Promise<\n operations[\"subscriptions_skip\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.post(`/api/subscriptions/${token}/skip_next_billing`);\n}\n\n/**\n * Cancel a subscription\n * Cancels an active subscription.\n *\n * @param client - Fetch client instance\n * @param token - token\n */\nexport async function subscriptions_cancel(\n client: FetchClient,\n token: string | number,\n): Promise<\n operations[\"subscriptions_cancel\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.post(`/api/subscriptions/${token}/cancel`);\n}\n\n/**\n * Reactivate a subscription\n * Reactivates a previously cancelled subscription.\n *\n * @param client - Fetch client instance\n * @param token - token\n */\nexport async function subscriptions_reactivate(\n client: FetchClient,\n token: string | number,\n): Promise<\n operations[\"subscriptions_reactivate\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.post(`/api/subscriptions/${token}/reactivate`);\n}\n\n// ============================================================================\n// todos\n// ============================================================================\n\n/**\n * List todos\n * Returns a paginated list of incomplete tasks scoped to the authenticated member. Ordered by due date ascending, tasks without a due date sort last.\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function todos_list(\n client: FetchClient,\n params?: operations[\"todos_list\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"todos_list\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/todos`, params);\n}\n\n// ============================================================================\n// carts\n// ============================================================================\n\n/**\n * Claim a cart\n * Assigns the logged-in member as buyer_rep on an unclaimed FairShare cart. Any portal member (rep or customer) can claim. Returns an error if the cart has already been claimed.\n *\n * @param client - Fetch client instance\n * @param token - token\n */\nexport async function carts_claim(\n client: FetchClient,\n token: string | number,\n): Promise<\n operations[\"carts_claim\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.post(`/api/carts/${token}/claim`);\n}\n\n// ============================================================================\n// product_metrics\n// ============================================================================\n\n/**\n * Top products by direct visits\n * Ranked list of the company's products by total visits to the product page (aggregates metrics_product_visits across all visit sources).\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function product_metrics_visits(\n client: FetchClient,\n params?: operations[\"product_metrics_visits\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"product_metrics_visits\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/products/metrics/visits`, params);\n}\n\n/**\n * Top products by share-link visits\n * Ranked list of the company's products by click-throughs on rep share links (aggregates metrics_share_shareable_visits where shareable_type='Product').\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function product_metrics_share_visits(\n client: FetchClient,\n params?: operations[\"product_metrics_share_visits\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"product_metrics_share_visits\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/products/metrics/share_visits`, params);\n}\n\n// ============================================================================\n// enrollment_pack_metrics\n// ============================================================================\n\n/**\n * Top enrollment packs by direct visits\n * Ranked list of the company's enrollment packs by total visits to the pack page (aggregates metrics_enrollment_pack_visits across all visit sources).\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function enrollment_pack_metrics_visits(\n client: FetchClient,\n params?: operations[\"enrollment_pack_metrics_visits\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"enrollment_pack_metrics_visits\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/enrollment_packs/metrics/visits`, params);\n}\n\n/**\n * Top enrollment packs by share-link visits\n * Ranked list of the company's enrollment packs by click-throughs on rep share links (aggregates metrics_share_shareable_visits where shareable_type='EnrollmentPack').\n *\n * @param client - Fetch client instance\n * @param [params] - params\n */\nexport async function enrollment_pack_metrics_share_visits(\n client: FetchClient,\n params?: operations[\"enrollment_pack_metrics_share_visits\"][\"parameters\"][\"query\"],\n): Promise<\n operations[\"enrollment_pack_metrics_share_visits\"][\"responses\"][200][\"content\"][\"application/json\"]\n> {\n return client.get(`/api/enrollment_packs/metrics/share_visits`, params);\n}\n"],"mappings":";;;;;;;;AAuBA,eAAsB,aACpB,QAGA;AACA,QAAO,OAAO,IAAI,eAAe;;;;;;;;;AAUnC,eAAsB,eACpB,QACA,MAGA;AACA,QAAO,OAAO,MAAM,gBAAgB,KAAK;;;;;;;;;AAc3C,eAAsB,WACpB,QAGA;AACA,QAAO,OAAO,IAAI,aAAa;;;;;;;;;AAcjC,eAAsB,kBACpB,QAGA;AACA,QAAO,OAAO,IAAI,oBAAoB;;;;;;;;;AAcxC,eAAsB,qBACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,wBAAwB,OAAO;;;;;;;;;AAcnD,eAAsB,YACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,eAAe,OAAO;;;;;;;;;AAU1C,eAAsB,YACpB,QACA,OAGA;AACA,QAAO,OAAO,IAAI,eAAe,QAAQ;;;;;;;;;AAc3C,eAAsB,cACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,iBAAiB,OAAO;;;;;;;;;AAU5C,eAAsB,cACpB,QACA,IAGA;AACA,QAAO,OAAO,IAAI,iBAAiB,KAAK;;;;;;;;;AAU1C,eAAsB,gBACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,wBAAwB,OAAO;;;;;;;;;AAUnD,eAAsB,oBACpB,QACA,IAGA;AACA,QAAO,OAAO,IAAI,iBAAiB,GAAG,QAAQ;;;;;;;;;AAchD,eAAsB,sBACpB,QACA,IAGA;AACA,QAAO,OAAO,IAAI,yBAAyB,KAAK;;;;;;;;;AAclD,eAAsB,mBACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,sBAAsB,OAAO;;;;;;;;;AAUjD,eAAsB,mBACpB,QACA,OAGA;AACA,QAAO,OAAO,IAAI,sBAAsB,QAAQ;;;;;;;;;;AAWlD,eAAsB,qBACpB,QACA,OACA,MAGA;AACA,QAAO,OAAO,IAAI,sBAAsB,SAAS,KAAK;;;;;;;;;;AAWxD,eAAsB,oBACpB,QACA,OACA,MAKA;AACA,QAAO,OAAO,KAAK,sBAAsB,MAAM,SAAS,KAAK;;;;;;;;;;AAW/D,eAAsB,qBACpB,QACA,OACA,MAKA;AACA,QAAO,OAAO,KAAK,sBAAsB,MAAM,UAAU,KAAK;;;;;;;;;AAUhE,eAAsB,mBACpB,QACA,OAGA;AACA,QAAO,OAAO,KAAK,sBAAsB,MAAM,oBAAoB;;;;;;;;;AAUrE,eAAsB,qBACpB,QACA,OAGA;AACA,QAAO,OAAO,KAAK,sBAAsB,MAAM,SAAS;;;;;;;;;AAU1D,eAAsB,yBACpB,QACA,OAGA;AACA,QAAO,OAAO,KAAK,sBAAsB,MAAM,aAAa;;;;;;;;;AAc9D,eAAsB,WACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,cAAc,OAAO;;;;;;;;;AAkCzC,eAAsB,uBACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,gCAAgC,OAAO;;;;;;;;;AAU3D,eAAsB,6BACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,sCAAsC,OAAO;;;;;;;;;AAcjE,eAAsB,+BACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,wCAAwC,OAAO;;;;;;;;;AAUnE,eAAsB,qCACpB,QACA,QAGA;AACA,QAAO,OAAO,IAAI,8CAA8C,OAAO"}
|
|
@@ -51,11 +51,13 @@ const getColorField = (props) => {
|
|
|
51
51
|
};
|
|
52
52
|
const getBorderRadiusField = (props) => {
|
|
53
53
|
return {
|
|
54
|
+
advanced: true,
|
|
54
55
|
...props,
|
|
55
56
|
type: "buttonGroup",
|
|
56
57
|
options: [
|
|
57
58
|
{
|
|
58
59
|
icon: lucide_react.Ban,
|
|
60
|
+
ariaLabel: "No radius",
|
|
59
61
|
value: "none"
|
|
60
62
|
},
|
|
61
63
|
{
|
|
@@ -83,11 +85,13 @@ const getBorderRadiusField = (props) => {
|
|
|
83
85
|
};
|
|
84
86
|
const getPaddingField = (props) => {
|
|
85
87
|
return {
|
|
88
|
+
advanced: true,
|
|
86
89
|
...props,
|
|
87
90
|
type: "buttonGroup",
|
|
88
91
|
options: [
|
|
89
92
|
{
|
|
90
93
|
icon: lucide_react.Ban,
|
|
94
|
+
ariaLabel: "No padding",
|
|
91
95
|
value: 0
|
|
92
96
|
},
|
|
93
97
|
{
|
|
@@ -174,6 +178,7 @@ const getGapField = (props) => {
|
|
|
174
178
|
options: [
|
|
175
179
|
{
|
|
176
180
|
icon: lucide_react.Ban,
|
|
181
|
+
ariaLabel: "No gap",
|
|
177
182
|
value: "none"
|
|
178
183
|
},
|
|
179
184
|
{
|
|
@@ -227,6 +232,7 @@ const getHeightField = (props) => {
|
|
|
227
232
|
};
|
|
228
233
|
const getBorderRadiusCompositeField = (props) => {
|
|
229
234
|
return {
|
|
235
|
+
advanced: true,
|
|
230
236
|
...props,
|
|
231
237
|
type: "borderRadius",
|
|
232
238
|
keys: props.keys ?? {
|
|
@@ -250,11 +256,13 @@ const gapValues = {
|
|
|
250
256
|
xl: 8
|
|
251
257
|
};
|
|
252
258
|
const getBorderWidthField = (props) => ({
|
|
259
|
+
advanced: true,
|
|
253
260
|
...props,
|
|
254
261
|
type: "buttonGroup",
|
|
255
262
|
options: [
|
|
256
263
|
{
|
|
257
264
|
icon: lucide_react.Ban,
|
|
265
|
+
ariaLabel: "No border",
|
|
258
266
|
value: "none"
|
|
259
267
|
},
|
|
260
268
|
{
|
|
@@ -393,4 +401,4 @@ Object.defineProperty(exports, "isPropertyFieldType", {
|
|
|
393
401
|
}
|
|
394
402
|
});
|
|
395
403
|
|
|
396
|
-
//# sourceMappingURL=registries-
|
|
404
|
+
//# sourceMappingURL=registries-CpUM406S.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registries-CpUM406S.cjs","names":["Ban"],"sources":["../../core/src/registries/property-schema-types.ts","../../core/src/registries/field-helpers.ts"],"sourcesContent":["import type { LucideIcon } from \"lucide-react\";\nimport type {\n WidgetType,\n WidgetSchema,\n AlignOptions,\n ColorOptions,\n FontSizeOptions,\n SectionLayoutType,\n StrictOmit,\n BorderRadiusOptions,\n} from \"../types\";\n\n/**\n * Tab configuration for organizing properties\n */\nexport interface TabConfig {\n /** Unique identifier for the tab */\n id: string;\n /** Display label for the tab */\n label: string;\n}\n\n// ============================================================================\n// Property Field Types - Derive from constant for single source of truth\n// ============================================================================\n\n/**\n * Property field type constant - single source of truth for field types.\n * Use PROPERTY_FIELD_TYPES.text instead of \"text\" for type-safe comparisons.\n */\nexport const PROPERTY_FIELD_TYPES = {\n text: \"text\",\n textarea: \"textarea\",\n number: \"number\",\n boolean: \"boolean\",\n select: \"select\",\n color: \"color\",\n range: \"range\",\n dataSource: \"dataSource\",\n resource: \"resource\",\n image: \"image\",\n alignment: \"alignment\",\n slider: \"slider\",\n colorPicker: \"colorPicker\",\n sectionHeader: \"sectionHeader\",\n separator: \"separator\",\n buttonGroup: \"buttonGroup\",\n colorSelect: \"colorSelect\",\n sectionLayoutSelect: \"sectionLayoutSelect\",\n background: \"background\",\n contentPosition: \"contentPosition\",\n textSizeSelect: \"textSizeSelect\",\n cssUnit: \"cssUnit\",\n fontPicker: \"fontPicker\",\n stringArray: \"stringArray\",\n borderRadius: \"borderRadius\",\n screenPicker: \"screenPicker\",\n} as const;\n\n/**\n * Union type of all property field types, derived from PROPERTY_FIELD_TYPES constant.\n * @see deriving-typeof-for-object-keys pattern\n */\nexport type PropertyFieldType =\n (typeof PROPERTY_FIELD_TYPES)[keyof typeof PROPERTY_FIELD_TYPES];\n\n/**\n * Runtime validation for property field types.\n * @param value - The value to check\n * @returns true if value is a valid PropertyFieldType\n */\nexport function isPropertyFieldType(value: string): value is PropertyFieldType {\n return Object.values(PROPERTY_FIELD_TYPES).includes(\n value as PropertyFieldType,\n );\n}\n\n/**\n * Group label for fields that override theme-derived styling.\n * Rendered last within a tab and collapsed by default so the primary\n * configuration surface stays clean.\n */\nexport const CUSTOM_STYLING_GROUP = \"Custom styling\";\n\n/**\n * Base schema for a property field\n */\nexport interface PropertyFieldSchema {\n /** Property key in the widget props */\n key: string;\n /** Display label for the field */\n label: string;\n /** Field type determines the input control */\n type: PropertyFieldType;\n /** Optional description/help text */\n description?: string;\n /** Optional default value */\n defaultValue?: unknown;\n /** Optional tab ID (must match a TabConfig id if widget has tabsConfig) */\n tab?: string;\n /** Optional group for organizing fields within a tab */\n group?: string;\n /**\n * When true, this field is treated as an override of a value that can\n * otherwise be inherited from the active theme (e.g. border radius,\n * padding, border width). Advanced fields are automatically bucketed\n * into the `CUSTOM_STYLING_GROUP` at the bottom of their tab and\n * rendered collapsed by default so the default surface area stays\n * minimal.\n */\n advanced?: boolean;\n /**\n * @deprecated Use requiresKeyValue instead\n */\n requiresKeyToBeTrue?: string;\n /** Optional requires a specific key to have a specific value. Supports single condition or array (AND logic). */\n requiresKeyValue?:\n | { key: string; value: unknown }\n | Array<{ key: string; value: unknown }>;\n}\n\n/**\n * Text field schema\n */\nexport interface TextFieldSchema extends PropertyFieldSchema {\n type: \"text\";\n placeholder?: string;\n maxLength?: number;\n}\n\n/**\n * Textarea field schema\n */\nexport interface TextareaFieldSchema extends PropertyFieldSchema {\n type: \"textarea\";\n placeholder?: string;\n rows?: number;\n maxLength?: number;\n}\n\n/**\n * Number field schema\n */\nexport interface NumberFieldSchema extends PropertyFieldSchema {\n type: \"number\";\n min?: number;\n max?: number;\n step?: number;\n}\n\n/**\n * Boolean field schema\n */\nexport interface BooleanFieldSchema extends PropertyFieldSchema {\n type: \"boolean\";\n}\n\n/**\n * Select field schema with type-safe option values.\n * Uses StrictOmit to ensure \"defaultValue\" key exists on PropertyFieldSchema.\n */\nexport interface SelectFieldSchema<\n T extends string | number = string | number,\n> extends StrictOmit<PropertyFieldSchema, \"defaultValue\"> {\n type: \"select\";\n options: Array<{ label: string; value: T }>;\n defaultValue?: T;\n}\n\n/**\n * Color field schema\n */\nexport interface ColorFieldSchema extends PropertyFieldSchema {\n type: \"color\";\n}\n\n/**\n * Range slider field schema\n */\nexport interface RangeFieldSchema extends PropertyFieldSchema {\n type: \"range\";\n min: number;\n max: number;\n step?: number;\n}\n\n/**\n * Data source field schema for configuring widget data sources\n */\nexport interface DataSourceFieldSchema extends PropertyFieldSchema {\n type: \"dataSource\";\n}\n\n/**\n * Resource field schema for selecting a single resource from the selection modal\n */\nexport interface ResourceFieldSchema extends PropertyFieldSchema {\n type: \"resource\";\n /** Optional filter to specific shareable types */\n allowedTypes?: string[];\n}\n\n/**\n * Image field schema for selecting a single image from the image picker\n */\nexport interface ImageFieldSchema extends PropertyFieldSchema {\n type: \"image\";\n}\n\n/**\n * Alignment field schema\n */\nexport interface AlignmentFieldSchema extends PropertyFieldSchema {\n type: \"alignment\";\n options: {\n verticalEnabled: boolean;\n horizontalEnabled: boolean;\n };\n defaultValue?: AlignOptions;\n}\n\n/**\n * Slider field schema with optional unit suffix (e.g., \"rem\", \"px\")\n */\nexport interface SliderFieldSchema extends PropertyFieldSchema {\n type: \"slider\";\n min: number;\n max: number;\n step?: number;\n unit?: string;\n}\n\n/**\n * Color picker field schema with optional swatches\n */\nexport interface ColorPickerFieldSchema extends PropertyFieldSchema {\n type: \"colorPicker\";\n swatches?: string[];\n}\n\n/**\n * Section header field schema for visual grouping\n */\nexport interface SectionHeaderFieldSchema extends PropertyFieldSchema {\n type: \"sectionHeader\";\n subtitle?: string;\n}\n\n/**\n * Separator field schema for visual separation\n */\nexport interface SeparatorFieldSchema extends PropertyFieldSchema {\n type: \"separator\";\n}\n\n/**\n * Button group field schema.\n * Uses StrictOmit to ensure \"defaultValue\" key exists on PropertyFieldSchema.\n */\nexport interface ButtonGroupFieldSchema<\n T extends string | number = string | number,\n> extends StrictOmit<PropertyFieldSchema, \"defaultValue\"> {\n type: \"buttonGroup\";\n options: Array<{\n label?: string;\n ariaLabel?: string;\n icon?: LucideIcon;\n value: T;\n }>;\n defaultValue?: T;\n}\n\n/**\n * Color select field schema\n */\nexport interface ColorSelectFieldSchema extends PropertyFieldSchema {\n type: \"colorSelect\";\n defaultValue?: ColorOptions;\n excludeColors?: ColorOptions[];\n}\n\n/**\n * Section layout select field schema for visual masonry layout selector\n */\nexport interface SectionLayoutSelectFieldSchema extends PropertyFieldSchema {\n type: \"sectionLayoutSelect\";\n defaultValue?: SectionLayoutType;\n}\n\n/**\n * Background field combines resource selection and color properties.\n * Uses StrictOmit to exclude conflicting \"type\" discriminant from parents.\n */\nexport interface BackgroundFieldSchema\n extends\n StrictOmit<ResourceFieldSchema, \"type\">,\n StrictOmit<ColorFieldSchema, \"type\"> {\n type: \"background\";\n}\n\n/**\n * Content position field schema for 3x3 grid position picker\n */\nexport interface ContentPositionFieldSchema extends PropertyFieldSchema {\n type: \"contentPosition\";\n defaultValue?: string;\n}\n\n/**\n * Text size select field schema for visual font size selector\n */\nexport interface TextSizeSelectFieldSchema extends PropertyFieldSchema {\n type: \"textSizeSelect\";\n defaultValue?: FontSizeOptions;\n}\n\n/**\n * CSS unit type for height/width fields\n */\nexport type CssUnit = \"px\" | \"rem\" | \"vh\" | \"%\";\n\n/**\n * CSS unit field schema for numeric values with selectable units (px, rem, vh, %)\n */\nexport interface CssUnitFieldSchema extends PropertyFieldSchema {\n type: \"cssUnit\";\n minByUnit?: Partial<Record<CssUnit, number>>;\n maxByUnit?: Partial<Record<CssUnit, number>>;\n stepByUnit?: Partial<Record<CssUnit, number>>;\n allowedUnits?: CssUnit[];\n defaultUnit?: CssUnit;\n}\n\n/**\n * Font picker field schema for Google Fonts selection\n */\nexport interface FontPickerFieldSchema extends PropertyFieldSchema {\n type: \"fontPicker\";\n placeholder?: string;\n}\n\n/**\n * String array field schema for managing lists of text items\n */\nexport interface StringArrayFieldSchema extends PropertyFieldSchema {\n type: \"stringArray\";\n placeholder?: string;\n defaultValue?: string[];\n}\n\n/**\n * Border radius composite field schema for controlling 4 corners with a single field.\n * Maps to 4 individual widget prop keys (topLeft, topRight, bottomLeft, bottomRight).\n */\nexport interface BorderRadiusFieldSchema extends PropertyFieldSchema {\n type: \"borderRadius\";\n keys: {\n topLeft: string;\n topRight: string;\n bottomLeft: string;\n bottomRight: string;\n };\n defaultValue?: BorderRadiusOptions;\n}\n\n/**\n * Screen picker field schema for selecting a portal screen (navigation, system, or available)\n */\nexport interface ScreenPickerFieldSchema extends PropertyFieldSchema {\n type: \"screenPicker\";\n /** Whether to include system navigation items in the picker */\n includeSystemItems?: boolean;\n}\n\n/**\n * Union of all field schema types\n */\nexport type PropertyField =\n | TextFieldSchema\n | TextareaFieldSchema\n | NumberFieldSchema\n | BooleanFieldSchema\n | SelectFieldSchema<string | number>\n | ColorFieldSchema\n | RangeFieldSchema\n | DataSourceFieldSchema\n | ResourceFieldSchema\n | ImageFieldSchema\n | AlignmentFieldSchema\n | SliderFieldSchema\n | ColorPickerFieldSchema\n | SectionHeaderFieldSchema\n | SeparatorFieldSchema\n | ButtonGroupFieldSchema<string | number>\n | ColorSelectFieldSchema\n | SectionLayoutSelectFieldSchema\n | BackgroundFieldSchema\n | ContentPositionFieldSchema\n | TextSizeSelectFieldSchema\n | CssUnitFieldSchema\n | FontPickerFieldSchema\n | StringArrayFieldSchema\n | BorderRadiusFieldSchema\n | ScreenPickerFieldSchema;\n\n/**\n * Schema for per-item configuration in custom data sources.\n * Widgets can define this to allow users to configure widget-specific\n * settings for each selected item (e.g., title, description, button).\n */\nexport interface ItemConfigSchema {\n /** Fields available for per-item configuration */\n fields: PropertyField[];\n /** Optional description shown at top of item config panel */\n description?: string;\n}\n\n/**\n * Schema for a widget's editable properties\n */\nexport interface WidgetPropertySchema {\n /** Widget type this schema applies to */\n widgetType: WidgetType;\n /** Display name for the widget */\n displayName: string;\n /** Optional tab configuration - if present, tabs are enabled */\n tabsConfig?: TabConfig[];\n /** Editable property fields */\n fields: PropertyField[];\n /** Optional custom validator function */\n validate?: (props: Record<string, unknown>) => string | null;\n /** Props that can be populated from data sources */\n dataSourceTargetProps?: string[];\n /** Optional schema for per-item configurations in custom data sources */\n itemConfigSchema?: ItemConfigSchema;\n}\n\n/**\n * Registry mapping widget types to their property schemas\n */\nexport type PropertySchemaRegistry = Record<WidgetType, WidgetPropertySchema>;\n\n/**\n * Group property fields by their group property.\n *\n * Fields flagged with `advanced: true` are collected into the\n * `CUSTOM_STYLING_GROUP` bucket regardless of their declared `group`,\n * and that bucket is always placed last so it renders at the bottom of\n * the tab. Non-advanced fields keep their author-declared group and\n * their relative insertion order, including fields that explicitly use\n * `CUSTOM_STYLING_GROUP`.\n */\nexport function groupPropertyFields(\n fields: readonly PropertyField[],\n): Record<string, PropertyField[]> {\n const grouped: Record<string, PropertyField[]> = {};\n const advancedFields: PropertyField[] = [];\n\n fields.forEach((field) => {\n if (field.advanced) {\n advancedFields.push(field);\n return;\n }\n const group = field.group || \"General\";\n if (!grouped[group]) {\n grouped[group] = [];\n }\n grouped[group].push(field);\n });\n\n if (advancedFields.length > 0) {\n const customStylingFields = grouped[CUSTOM_STYLING_GROUP] ?? [];\n delete grouped[CUSTOM_STYLING_GROUP];\n grouped[CUSTOM_STYLING_GROUP] = [...customStylingFields, ...advancedFields];\n }\n\n return grouped;\n}\n\n/**\n * Extract current values from widget props based on property fields\n */\nexport function extractPropertyValues(\n widget: Readonly<WidgetSchema>,\n fields: readonly PropertyField[],\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n\n fields.forEach((field) => {\n // For borderRadius composite fields, skip the top-level key —\n // it is a schema grouping identifier, not a real widget prop.\n if (field.type === \"borderRadius\") {\n for (const subKey of Object.values(field.keys)) {\n const subValue = widget.props[subKey];\n values[subKey] = subValue !== undefined ? subValue : field.defaultValue;\n }\n return;\n }\n\n const value = widget.props[field.key];\n values[field.key] = value !== undefined ? value : field.defaultValue;\n });\n\n return values;\n}\n\n/**\n * Apply property values to widget props\n */\nexport function applyPropertyValues(\n widget: Readonly<WidgetSchema>,\n values: Readonly<Record<string, unknown>>,\n): WidgetSchema {\n return {\n ...widget,\n props: {\n ...widget.props,\n ...values,\n },\n };\n}\n","import type {\n BorderRadiusFieldSchema,\n ButtonGroupFieldSchema,\n ColorSelectFieldSchema,\n CssUnitFieldSchema,\n TextSizeSelectFieldSchema,\n} from \"./property-schema-types\";\nimport type {\n BorderRadiusOptions,\n BorderWidthOptions,\n ColorOptions,\n FontWeightOptions,\n PaddingOptions,\n ButtonSizeOptions,\n GapOptions,\n} from \"../types\";\nimport { Ban } from \"lucide-react\";\n\nexport const getColorField = (\n props: Readonly<Omit<ColorSelectFieldSchema, \"type\">>,\n): ColorSelectFieldSchema => {\n return {\n ...props,\n type: \"colorSelect\",\n };\n};\n\nexport const getBorderRadiusField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<BorderRadiusOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<BorderRadiusOptions> => {\n return {\n // Border radius inherits from the active theme by default. Mark as\n // advanced so widget-level overrides collapse into the \"Custom\n // styling\" disclosure.\n //\n // Note: `groupPropertyFields` ignores `field.group` whenever\n // `field.advanced` is true. If a widget explicitly wants this\n // control to live in its own group, pass `advanced: false`\n // alongside `group: \"...\"` to opt out.\n advanced: true,\n ...props,\n type: \"buttonGroup\",\n options: [\n { icon: Ban, ariaLabel: \"No radius\", value: \"none\" },\n { label: \"SM\", value: \"sm\" },\n { label: \"MD\", value: \"md\" },\n { label: \"LG\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n { label: \"FULL\", value: \"full\" },\n ],\n };\n};\n\nexport const getPaddingField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<PaddingOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<PaddingOptions> => {\n return {\n // Padding follows the theme's global spacing scale by default.\n // Mark as advanced so widget-level overrides collapse into the\n // \"Custom styling\" disclosure. To keep this field in a different\n // group, pass `advanced: false` alongside `group: \"...\"`.\n advanced: true,\n ...props,\n type: \"buttonGroup\",\n options: [\n { icon: Ban, ariaLabel: \"No padding\", value: 0 },\n { label: \"SM\", value: 2 },\n { label: \"MD\", value: 4 },\n { label: \"LG\", value: 6 },\n { label: \"XL\", value: 8 },\n { label: \"FULL\", value: 10 },\n ],\n };\n};\n\nexport const getButtonSizeField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<ButtonSizeOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<ButtonSizeOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { label: \"SM\", value: \"sm\" },\n { label: \"MD\", value: \"default\" },\n { label: \"LG\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n };\n};\n\nexport const getFontWeightField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<FontWeightOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<FontWeightOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { label: \"Normal\", value: \"normal\" },\n { label: \"Medium\", value: \"medium\" },\n { label: \"Semibold\", value: \"semibold\" },\n { label: \"Bold\", value: \"bold\" },\n ],\n };\n};\n\nexport const getFontSizeField = (\n props: Readonly<Omit<TextSizeSelectFieldSchema, \"type\">>,\n): TextSizeSelectFieldSchema => {\n return {\n ...props,\n type: \"textSizeSelect\",\n };\n};\n\nexport const getGapField = (\n props: Readonly<Omit<ButtonGroupFieldSchema<GapOptions>, \"options\" | \"type\">>,\n): ButtonGroupFieldSchema<GapOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { icon: Ban, ariaLabel: \"No gap\", value: \"none\" },\n { label: \"XS\", value: \"xs\" },\n { label: \"SM\", value: \"sm\" },\n { label: \"MD\", value: \"md\" },\n { label: \"LG\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n };\n};\n\nexport const getHeightField = (\n props: Readonly<\n Omit<\n CssUnitFieldSchema,\n \"type\" | \"minByUnit\" | \"maxByUnit\" | \"stepByUnit\" | \"allowedUnits\"\n >\n >,\n): CssUnitFieldSchema => {\n return {\n ...props,\n type: \"cssUnit\",\n allowedUnits: [\"px\", \"vh\", \"rem\"],\n minByUnit: { px: 10, vh: 1, rem: 1 },\n maxByUnit: { px: 1200, vh: 100, rem: 75 },\n stepByUnit: { px: 10, vh: 1, rem: 1 },\n };\n};\n\nexport const getBorderRadiusCompositeField = (\n props: Readonly<\n Omit<BorderRadiusFieldSchema, \"type\" | \"keys\"> & {\n keys?: BorderRadiusFieldSchema[\"keys\"];\n }\n >,\n): BorderRadiusFieldSchema => {\n return {\n // Per-corner radius controls are theme-derivable in the same way as\n // the simpler `getBorderRadiusField`. Pass `advanced: false`\n // alongside `group: \"...\"` to opt out of Custom Styling.\n advanced: true,\n ...props,\n type: \"borderRadius\",\n keys: props.keys ?? {\n topLeft: \"borderRadiusTL\",\n topRight: \"borderRadiusTR\",\n bottomLeft: \"borderRadiusBL\",\n bottomRight: \"borderRadiusBR\",\n },\n };\n};\n\n/**\n * Gap value mapping - use `as const satisfies` for compile-time validation\n * with literal type preservation.\n */\nexport const gapValues: {\n readonly none: 0;\n readonly xs: 1;\n readonly sm: 2;\n readonly md: 4;\n readonly lg: 6;\n readonly xl: 8;\n} = {\n none: 0,\n xs: 1,\n sm: 2,\n md: 4,\n lg: 6,\n xl: 8,\n} as const satisfies Record<GapOptions, number>;\n\nexport const getBorderWidthField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<BorderWidthOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<BorderWidthOptions> => ({\n // Border width is a styling override of a theme-derivable decision.\n // Pass `advanced: false` alongside `group: \"...\"` to opt out of\n // Custom Styling.\n advanced: true,\n ...props,\n type: \"buttonGroup\",\n options: [\n { icon: Ban, ariaLabel: \"No border\", value: \"none\" },\n { label: \"THIN\", value: \"thin\" },\n { label: \"MD\", value: \"medium\" },\n { label: \"THICK\", value: \"thick\" },\n ],\n});\n\nexport const getBorderColorField: (\n props: Readonly<Omit<ColorSelectFieldSchema, \"type\">>,\n) => ColorSelectFieldSchema = getColorField;\n\n/**\n * Border width class mapping - full literal Tailwind classes for scanner.\n */\nexport const borderWidthClasses: {\n readonly none: \"border-0\";\n readonly thin: \"border\";\n readonly medium: \"border-2\";\n readonly thick: \"border-4\";\n} = {\n none: \"border-0\",\n thin: \"border\",\n medium: \"border-2\",\n thick: \"border-4\",\n} as const satisfies Record<BorderWidthOptions, string>;\n\n/**\n * Border color class mapping - full literal Tailwind classes for scanner.\n */\nexport const borderColorClasses: {\n readonly background: \"border-background\";\n readonly foreground: \"border-foreground\";\n readonly primary: \"border-primary\";\n readonly secondary: \"border-secondary\";\n readonly accent: \"border-accent\";\n readonly border: \"border-border\";\n readonly muted: \"border-muted\";\n readonly destructive: \"border-destructive\";\n readonly transparent: \"border-transparent\";\n} = {\n background: \"border-background\",\n foreground: \"border-foreground\",\n primary: \"border-primary\",\n secondary: \"border-secondary\",\n accent: \"border-accent\",\n border: \"border-border\",\n muted: \"border-muted\",\n destructive: \"border-destructive\",\n transparent: \"border-transparent\",\n} as const satisfies Record<ColorOptions, string>;\n"],"mappings":"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"}
|
|
@@ -50,11 +50,13 @@ const getColorField = (props) => {
|
|
|
50
50
|
};
|
|
51
51
|
const getBorderRadiusField = (props) => {
|
|
52
52
|
return {
|
|
53
|
+
advanced: true,
|
|
53
54
|
...props,
|
|
54
55
|
type: "buttonGroup",
|
|
55
56
|
options: [
|
|
56
57
|
{
|
|
57
58
|
icon: Ban,
|
|
59
|
+
ariaLabel: "No radius",
|
|
58
60
|
value: "none"
|
|
59
61
|
},
|
|
60
62
|
{
|
|
@@ -82,11 +84,13 @@ const getBorderRadiusField = (props) => {
|
|
|
82
84
|
};
|
|
83
85
|
const getPaddingField = (props) => {
|
|
84
86
|
return {
|
|
87
|
+
advanced: true,
|
|
85
88
|
...props,
|
|
86
89
|
type: "buttonGroup",
|
|
87
90
|
options: [
|
|
88
91
|
{
|
|
89
92
|
icon: Ban,
|
|
93
|
+
ariaLabel: "No padding",
|
|
90
94
|
value: 0
|
|
91
95
|
},
|
|
92
96
|
{
|
|
@@ -173,6 +177,7 @@ const getGapField = (props) => {
|
|
|
173
177
|
options: [
|
|
174
178
|
{
|
|
175
179
|
icon: Ban,
|
|
180
|
+
ariaLabel: "No gap",
|
|
176
181
|
value: "none"
|
|
177
182
|
},
|
|
178
183
|
{
|
|
@@ -226,6 +231,7 @@ const getHeightField = (props) => {
|
|
|
226
231
|
};
|
|
227
232
|
const getBorderRadiusCompositeField = (props) => {
|
|
228
233
|
return {
|
|
234
|
+
advanced: true,
|
|
229
235
|
...props,
|
|
230
236
|
type: "borderRadius",
|
|
231
237
|
keys: props.keys ?? {
|
|
@@ -249,11 +255,13 @@ const gapValues = {
|
|
|
249
255
|
xl: 8
|
|
250
256
|
};
|
|
251
257
|
const getBorderWidthField = (props) => ({
|
|
258
|
+
advanced: true,
|
|
252
259
|
...props,
|
|
253
260
|
type: "buttonGroup",
|
|
254
261
|
options: [
|
|
255
262
|
{
|
|
256
263
|
icon: Ban,
|
|
264
|
+
ariaLabel: "No border",
|
|
257
265
|
value: "none"
|
|
258
266
|
},
|
|
259
267
|
{
|
|
@@ -297,4 +305,4 @@ const borderColorClasses = {
|
|
|
297
305
|
//#endregion
|
|
298
306
|
export { getBorderRadiusCompositeField as a, getButtonSizeField as c, getFontWeightField as d, getGapField as f, isPropertyFieldType as g, PROPERTY_FIELD_TYPES as h, getBorderColorField as i, getColorField as l, getPaddingField as m, borderWidthClasses as n, getBorderRadiusField as o, getHeightField as p, gapValues as r, getBorderWidthField as s, borderColorClasses as t, getFontSizeField as u };
|
|
299
307
|
|
|
300
|
-
//# sourceMappingURL=registries-
|
|
308
|
+
//# sourceMappingURL=registries-DT36l-bR.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registries-DT36l-bR.mjs","names":[],"sources":["../../core/src/registries/property-schema-types.ts","../../core/src/registries/field-helpers.ts"],"sourcesContent":["import type { LucideIcon } from \"lucide-react\";\nimport type {\n WidgetType,\n WidgetSchema,\n AlignOptions,\n ColorOptions,\n FontSizeOptions,\n SectionLayoutType,\n StrictOmit,\n BorderRadiusOptions,\n} from \"../types\";\n\n/**\n * Tab configuration for organizing properties\n */\nexport interface TabConfig {\n /** Unique identifier for the tab */\n id: string;\n /** Display label for the tab */\n label: string;\n}\n\n// ============================================================================\n// Property Field Types - Derive from constant for single source of truth\n// ============================================================================\n\n/**\n * Property field type constant - single source of truth for field types.\n * Use PROPERTY_FIELD_TYPES.text instead of \"text\" for type-safe comparisons.\n */\nexport const PROPERTY_FIELD_TYPES = {\n text: \"text\",\n textarea: \"textarea\",\n number: \"number\",\n boolean: \"boolean\",\n select: \"select\",\n color: \"color\",\n range: \"range\",\n dataSource: \"dataSource\",\n resource: \"resource\",\n image: \"image\",\n alignment: \"alignment\",\n slider: \"slider\",\n colorPicker: \"colorPicker\",\n sectionHeader: \"sectionHeader\",\n separator: \"separator\",\n buttonGroup: \"buttonGroup\",\n colorSelect: \"colorSelect\",\n sectionLayoutSelect: \"sectionLayoutSelect\",\n background: \"background\",\n contentPosition: \"contentPosition\",\n textSizeSelect: \"textSizeSelect\",\n cssUnit: \"cssUnit\",\n fontPicker: \"fontPicker\",\n stringArray: \"stringArray\",\n borderRadius: \"borderRadius\",\n screenPicker: \"screenPicker\",\n} as const;\n\n/**\n * Union type of all property field types, derived from PROPERTY_FIELD_TYPES constant.\n * @see deriving-typeof-for-object-keys pattern\n */\nexport type PropertyFieldType =\n (typeof PROPERTY_FIELD_TYPES)[keyof typeof PROPERTY_FIELD_TYPES];\n\n/**\n * Runtime validation for property field types.\n * @param value - The value to check\n * @returns true if value is a valid PropertyFieldType\n */\nexport function isPropertyFieldType(value: string): value is PropertyFieldType {\n return Object.values(PROPERTY_FIELD_TYPES).includes(\n value as PropertyFieldType,\n );\n}\n\n/**\n * Group label for fields that override theme-derived styling.\n * Rendered last within a tab and collapsed by default so the primary\n * configuration surface stays clean.\n */\nexport const CUSTOM_STYLING_GROUP = \"Custom styling\";\n\n/**\n * Base schema for a property field\n */\nexport interface PropertyFieldSchema {\n /** Property key in the widget props */\n key: string;\n /** Display label for the field */\n label: string;\n /** Field type determines the input control */\n type: PropertyFieldType;\n /** Optional description/help text */\n description?: string;\n /** Optional default value */\n defaultValue?: unknown;\n /** Optional tab ID (must match a TabConfig id if widget has tabsConfig) */\n tab?: string;\n /** Optional group for organizing fields within a tab */\n group?: string;\n /**\n * When true, this field is treated as an override of a value that can\n * otherwise be inherited from the active theme (e.g. border radius,\n * padding, border width). Advanced fields are automatically bucketed\n * into the `CUSTOM_STYLING_GROUP` at the bottom of their tab and\n * rendered collapsed by default so the default surface area stays\n * minimal.\n */\n advanced?: boolean;\n /**\n * @deprecated Use requiresKeyValue instead\n */\n requiresKeyToBeTrue?: string;\n /** Optional requires a specific key to have a specific value. Supports single condition or array (AND logic). */\n requiresKeyValue?:\n | { key: string; value: unknown }\n | Array<{ key: string; value: unknown }>;\n}\n\n/**\n * Text field schema\n */\nexport interface TextFieldSchema extends PropertyFieldSchema {\n type: \"text\";\n placeholder?: string;\n maxLength?: number;\n}\n\n/**\n * Textarea field schema\n */\nexport interface TextareaFieldSchema extends PropertyFieldSchema {\n type: \"textarea\";\n placeholder?: string;\n rows?: number;\n maxLength?: number;\n}\n\n/**\n * Number field schema\n */\nexport interface NumberFieldSchema extends PropertyFieldSchema {\n type: \"number\";\n min?: number;\n max?: number;\n step?: number;\n}\n\n/**\n * Boolean field schema\n */\nexport interface BooleanFieldSchema extends PropertyFieldSchema {\n type: \"boolean\";\n}\n\n/**\n * Select field schema with type-safe option values.\n * Uses StrictOmit to ensure \"defaultValue\" key exists on PropertyFieldSchema.\n */\nexport interface SelectFieldSchema<\n T extends string | number = string | number,\n> extends StrictOmit<PropertyFieldSchema, \"defaultValue\"> {\n type: \"select\";\n options: Array<{ label: string; value: T }>;\n defaultValue?: T;\n}\n\n/**\n * Color field schema\n */\nexport interface ColorFieldSchema extends PropertyFieldSchema {\n type: \"color\";\n}\n\n/**\n * Range slider field schema\n */\nexport interface RangeFieldSchema extends PropertyFieldSchema {\n type: \"range\";\n min: number;\n max: number;\n step?: number;\n}\n\n/**\n * Data source field schema for configuring widget data sources\n */\nexport interface DataSourceFieldSchema extends PropertyFieldSchema {\n type: \"dataSource\";\n}\n\n/**\n * Resource field schema for selecting a single resource from the selection modal\n */\nexport interface ResourceFieldSchema extends PropertyFieldSchema {\n type: \"resource\";\n /** Optional filter to specific shareable types */\n allowedTypes?: string[];\n}\n\n/**\n * Image field schema for selecting a single image from the image picker\n */\nexport interface ImageFieldSchema extends PropertyFieldSchema {\n type: \"image\";\n}\n\n/**\n * Alignment field schema\n */\nexport interface AlignmentFieldSchema extends PropertyFieldSchema {\n type: \"alignment\";\n options: {\n verticalEnabled: boolean;\n horizontalEnabled: boolean;\n };\n defaultValue?: AlignOptions;\n}\n\n/**\n * Slider field schema with optional unit suffix (e.g., \"rem\", \"px\")\n */\nexport interface SliderFieldSchema extends PropertyFieldSchema {\n type: \"slider\";\n min: number;\n max: number;\n step?: number;\n unit?: string;\n}\n\n/**\n * Color picker field schema with optional swatches\n */\nexport interface ColorPickerFieldSchema extends PropertyFieldSchema {\n type: \"colorPicker\";\n swatches?: string[];\n}\n\n/**\n * Section header field schema for visual grouping\n */\nexport interface SectionHeaderFieldSchema extends PropertyFieldSchema {\n type: \"sectionHeader\";\n subtitle?: string;\n}\n\n/**\n * Separator field schema for visual separation\n */\nexport interface SeparatorFieldSchema extends PropertyFieldSchema {\n type: \"separator\";\n}\n\n/**\n * Button group field schema.\n * Uses StrictOmit to ensure \"defaultValue\" key exists on PropertyFieldSchema.\n */\nexport interface ButtonGroupFieldSchema<\n T extends string | number = string | number,\n> extends StrictOmit<PropertyFieldSchema, \"defaultValue\"> {\n type: \"buttonGroup\";\n options: Array<{\n label?: string;\n ariaLabel?: string;\n icon?: LucideIcon;\n value: T;\n }>;\n defaultValue?: T;\n}\n\n/**\n * Color select field schema\n */\nexport interface ColorSelectFieldSchema extends PropertyFieldSchema {\n type: \"colorSelect\";\n defaultValue?: ColorOptions;\n excludeColors?: ColorOptions[];\n}\n\n/**\n * Section layout select field schema for visual masonry layout selector\n */\nexport interface SectionLayoutSelectFieldSchema extends PropertyFieldSchema {\n type: \"sectionLayoutSelect\";\n defaultValue?: SectionLayoutType;\n}\n\n/**\n * Background field combines resource selection and color properties.\n * Uses StrictOmit to exclude conflicting \"type\" discriminant from parents.\n */\nexport interface BackgroundFieldSchema\n extends\n StrictOmit<ResourceFieldSchema, \"type\">,\n StrictOmit<ColorFieldSchema, \"type\"> {\n type: \"background\";\n}\n\n/**\n * Content position field schema for 3x3 grid position picker\n */\nexport interface ContentPositionFieldSchema extends PropertyFieldSchema {\n type: \"contentPosition\";\n defaultValue?: string;\n}\n\n/**\n * Text size select field schema for visual font size selector\n */\nexport interface TextSizeSelectFieldSchema extends PropertyFieldSchema {\n type: \"textSizeSelect\";\n defaultValue?: FontSizeOptions;\n}\n\n/**\n * CSS unit type for height/width fields\n */\nexport type CssUnit = \"px\" | \"rem\" | \"vh\" | \"%\";\n\n/**\n * CSS unit field schema for numeric values with selectable units (px, rem, vh, %)\n */\nexport interface CssUnitFieldSchema extends PropertyFieldSchema {\n type: \"cssUnit\";\n minByUnit?: Partial<Record<CssUnit, number>>;\n maxByUnit?: Partial<Record<CssUnit, number>>;\n stepByUnit?: Partial<Record<CssUnit, number>>;\n allowedUnits?: CssUnit[];\n defaultUnit?: CssUnit;\n}\n\n/**\n * Font picker field schema for Google Fonts selection\n */\nexport interface FontPickerFieldSchema extends PropertyFieldSchema {\n type: \"fontPicker\";\n placeholder?: string;\n}\n\n/**\n * String array field schema for managing lists of text items\n */\nexport interface StringArrayFieldSchema extends PropertyFieldSchema {\n type: \"stringArray\";\n placeholder?: string;\n defaultValue?: string[];\n}\n\n/**\n * Border radius composite field schema for controlling 4 corners with a single field.\n * Maps to 4 individual widget prop keys (topLeft, topRight, bottomLeft, bottomRight).\n */\nexport interface BorderRadiusFieldSchema extends PropertyFieldSchema {\n type: \"borderRadius\";\n keys: {\n topLeft: string;\n topRight: string;\n bottomLeft: string;\n bottomRight: string;\n };\n defaultValue?: BorderRadiusOptions;\n}\n\n/**\n * Screen picker field schema for selecting a portal screen (navigation, system, or available)\n */\nexport interface ScreenPickerFieldSchema extends PropertyFieldSchema {\n type: \"screenPicker\";\n /** Whether to include system navigation items in the picker */\n includeSystemItems?: boolean;\n}\n\n/**\n * Union of all field schema types\n */\nexport type PropertyField =\n | TextFieldSchema\n | TextareaFieldSchema\n | NumberFieldSchema\n | BooleanFieldSchema\n | SelectFieldSchema<string | number>\n | ColorFieldSchema\n | RangeFieldSchema\n | DataSourceFieldSchema\n | ResourceFieldSchema\n | ImageFieldSchema\n | AlignmentFieldSchema\n | SliderFieldSchema\n | ColorPickerFieldSchema\n | SectionHeaderFieldSchema\n | SeparatorFieldSchema\n | ButtonGroupFieldSchema<string | number>\n | ColorSelectFieldSchema\n | SectionLayoutSelectFieldSchema\n | BackgroundFieldSchema\n | ContentPositionFieldSchema\n | TextSizeSelectFieldSchema\n | CssUnitFieldSchema\n | FontPickerFieldSchema\n | StringArrayFieldSchema\n | BorderRadiusFieldSchema\n | ScreenPickerFieldSchema;\n\n/**\n * Schema for per-item configuration in custom data sources.\n * Widgets can define this to allow users to configure widget-specific\n * settings for each selected item (e.g., title, description, button).\n */\nexport interface ItemConfigSchema {\n /** Fields available for per-item configuration */\n fields: PropertyField[];\n /** Optional description shown at top of item config panel */\n description?: string;\n}\n\n/**\n * Schema for a widget's editable properties\n */\nexport interface WidgetPropertySchema {\n /** Widget type this schema applies to */\n widgetType: WidgetType;\n /** Display name for the widget */\n displayName: string;\n /** Optional tab configuration - if present, tabs are enabled */\n tabsConfig?: TabConfig[];\n /** Editable property fields */\n fields: PropertyField[];\n /** Optional custom validator function */\n validate?: (props: Record<string, unknown>) => string | null;\n /** Props that can be populated from data sources */\n dataSourceTargetProps?: string[];\n /** Optional schema for per-item configurations in custom data sources */\n itemConfigSchema?: ItemConfigSchema;\n}\n\n/**\n * Registry mapping widget types to their property schemas\n */\nexport type PropertySchemaRegistry = Record<WidgetType, WidgetPropertySchema>;\n\n/**\n * Group property fields by their group property.\n *\n * Fields flagged with `advanced: true` are collected into the\n * `CUSTOM_STYLING_GROUP` bucket regardless of their declared `group`,\n * and that bucket is always placed last so it renders at the bottom of\n * the tab. Non-advanced fields keep their author-declared group and\n * their relative insertion order, including fields that explicitly use\n * `CUSTOM_STYLING_GROUP`.\n */\nexport function groupPropertyFields(\n fields: readonly PropertyField[],\n): Record<string, PropertyField[]> {\n const grouped: Record<string, PropertyField[]> = {};\n const advancedFields: PropertyField[] = [];\n\n fields.forEach((field) => {\n if (field.advanced) {\n advancedFields.push(field);\n return;\n }\n const group = field.group || \"General\";\n if (!grouped[group]) {\n grouped[group] = [];\n }\n grouped[group].push(field);\n });\n\n if (advancedFields.length > 0) {\n const customStylingFields = grouped[CUSTOM_STYLING_GROUP] ?? [];\n delete grouped[CUSTOM_STYLING_GROUP];\n grouped[CUSTOM_STYLING_GROUP] = [...customStylingFields, ...advancedFields];\n }\n\n return grouped;\n}\n\n/**\n * Extract current values from widget props based on property fields\n */\nexport function extractPropertyValues(\n widget: Readonly<WidgetSchema>,\n fields: readonly PropertyField[],\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n\n fields.forEach((field) => {\n // For borderRadius composite fields, skip the top-level key —\n // it is a schema grouping identifier, not a real widget prop.\n if (field.type === \"borderRadius\") {\n for (const subKey of Object.values(field.keys)) {\n const subValue = widget.props[subKey];\n values[subKey] = subValue !== undefined ? subValue : field.defaultValue;\n }\n return;\n }\n\n const value = widget.props[field.key];\n values[field.key] = value !== undefined ? value : field.defaultValue;\n });\n\n return values;\n}\n\n/**\n * Apply property values to widget props\n */\nexport function applyPropertyValues(\n widget: Readonly<WidgetSchema>,\n values: Readonly<Record<string, unknown>>,\n): WidgetSchema {\n return {\n ...widget,\n props: {\n ...widget.props,\n ...values,\n },\n };\n}\n","import type {\n BorderRadiusFieldSchema,\n ButtonGroupFieldSchema,\n ColorSelectFieldSchema,\n CssUnitFieldSchema,\n TextSizeSelectFieldSchema,\n} from \"./property-schema-types\";\nimport type {\n BorderRadiusOptions,\n BorderWidthOptions,\n ColorOptions,\n FontWeightOptions,\n PaddingOptions,\n ButtonSizeOptions,\n GapOptions,\n} from \"../types\";\nimport { Ban } from \"lucide-react\";\n\nexport const getColorField = (\n props: Readonly<Omit<ColorSelectFieldSchema, \"type\">>,\n): ColorSelectFieldSchema => {\n return {\n ...props,\n type: \"colorSelect\",\n };\n};\n\nexport const getBorderRadiusField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<BorderRadiusOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<BorderRadiusOptions> => {\n return {\n // Border radius inherits from the active theme by default. Mark as\n // advanced so widget-level overrides collapse into the \"Custom\n // styling\" disclosure.\n //\n // Note: `groupPropertyFields` ignores `field.group` whenever\n // `field.advanced` is true. If a widget explicitly wants this\n // control to live in its own group, pass `advanced: false`\n // alongside `group: \"...\"` to opt out.\n advanced: true,\n ...props,\n type: \"buttonGroup\",\n options: [\n { icon: Ban, ariaLabel: \"No radius\", value: \"none\" },\n { label: \"SM\", value: \"sm\" },\n { label: \"MD\", value: \"md\" },\n { label: \"LG\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n { label: \"FULL\", value: \"full\" },\n ],\n };\n};\n\nexport const getPaddingField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<PaddingOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<PaddingOptions> => {\n return {\n // Padding follows the theme's global spacing scale by default.\n // Mark as advanced so widget-level overrides collapse into the\n // \"Custom styling\" disclosure. To keep this field in a different\n // group, pass `advanced: false` alongside `group: \"...\"`.\n advanced: true,\n ...props,\n type: \"buttonGroup\",\n options: [\n { icon: Ban, ariaLabel: \"No padding\", value: 0 },\n { label: \"SM\", value: 2 },\n { label: \"MD\", value: 4 },\n { label: \"LG\", value: 6 },\n { label: \"XL\", value: 8 },\n { label: \"FULL\", value: 10 },\n ],\n };\n};\n\nexport const getButtonSizeField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<ButtonSizeOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<ButtonSizeOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { label: \"SM\", value: \"sm\" },\n { label: \"MD\", value: \"default\" },\n { label: \"LG\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n };\n};\n\nexport const getFontWeightField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<FontWeightOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<FontWeightOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { label: \"Normal\", value: \"normal\" },\n { label: \"Medium\", value: \"medium\" },\n { label: \"Semibold\", value: \"semibold\" },\n { label: \"Bold\", value: \"bold\" },\n ],\n };\n};\n\nexport const getFontSizeField = (\n props: Readonly<Omit<TextSizeSelectFieldSchema, \"type\">>,\n): TextSizeSelectFieldSchema => {\n return {\n ...props,\n type: \"textSizeSelect\",\n };\n};\n\nexport const getGapField = (\n props: Readonly<Omit<ButtonGroupFieldSchema<GapOptions>, \"options\" | \"type\">>,\n): ButtonGroupFieldSchema<GapOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { icon: Ban, ariaLabel: \"No gap\", value: \"none\" },\n { label: \"XS\", value: \"xs\" },\n { label: \"SM\", value: \"sm\" },\n { label: \"MD\", value: \"md\" },\n { label: \"LG\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n };\n};\n\nexport const getHeightField = (\n props: Readonly<\n Omit<\n CssUnitFieldSchema,\n \"type\" | \"minByUnit\" | \"maxByUnit\" | \"stepByUnit\" | \"allowedUnits\"\n >\n >,\n): CssUnitFieldSchema => {\n return {\n ...props,\n type: \"cssUnit\",\n allowedUnits: [\"px\", \"vh\", \"rem\"],\n minByUnit: { px: 10, vh: 1, rem: 1 },\n maxByUnit: { px: 1200, vh: 100, rem: 75 },\n stepByUnit: { px: 10, vh: 1, rem: 1 },\n };\n};\n\nexport const getBorderRadiusCompositeField = (\n props: Readonly<\n Omit<BorderRadiusFieldSchema, \"type\" | \"keys\"> & {\n keys?: BorderRadiusFieldSchema[\"keys\"];\n }\n >,\n): BorderRadiusFieldSchema => {\n return {\n // Per-corner radius controls are theme-derivable in the same way as\n // the simpler `getBorderRadiusField`. Pass `advanced: false`\n // alongside `group: \"...\"` to opt out of Custom Styling.\n advanced: true,\n ...props,\n type: \"borderRadius\",\n keys: props.keys ?? {\n topLeft: \"borderRadiusTL\",\n topRight: \"borderRadiusTR\",\n bottomLeft: \"borderRadiusBL\",\n bottomRight: \"borderRadiusBR\",\n },\n };\n};\n\n/**\n * Gap value mapping - use `as const satisfies` for compile-time validation\n * with literal type preservation.\n */\nexport const gapValues: {\n readonly none: 0;\n readonly xs: 1;\n readonly sm: 2;\n readonly md: 4;\n readonly lg: 6;\n readonly xl: 8;\n} = {\n none: 0,\n xs: 1,\n sm: 2,\n md: 4,\n lg: 6,\n xl: 8,\n} as const satisfies Record<GapOptions, number>;\n\nexport const getBorderWidthField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<BorderWidthOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<BorderWidthOptions> => ({\n // Border width is a styling override of a theme-derivable decision.\n // Pass `advanced: false` alongside `group: \"...\"` to opt out of\n // Custom Styling.\n advanced: true,\n ...props,\n type: \"buttonGroup\",\n options: [\n { icon: Ban, ariaLabel: \"No border\", value: \"none\" },\n { label: \"THIN\", value: \"thin\" },\n { label: \"MD\", value: \"medium\" },\n { label: \"THICK\", value: \"thick\" },\n ],\n});\n\nexport const getBorderColorField: (\n props: Readonly<Omit<ColorSelectFieldSchema, \"type\">>,\n) => ColorSelectFieldSchema = getColorField;\n\n/**\n * Border width class mapping - full literal Tailwind classes for scanner.\n */\nexport const borderWidthClasses: {\n readonly none: \"border-0\";\n readonly thin: \"border\";\n readonly medium: \"border-2\";\n readonly thick: \"border-4\";\n} = {\n none: \"border-0\",\n thin: \"border\",\n medium: \"border-2\",\n thick: \"border-4\",\n} as const satisfies Record<BorderWidthOptions, string>;\n\n/**\n * Border color class mapping - full literal Tailwind classes for scanner.\n */\nexport const borderColorClasses: {\n readonly background: \"border-background\";\n readonly foreground: \"border-foreground\";\n readonly primary: \"border-primary\";\n readonly secondary: \"border-secondary\";\n readonly accent: \"border-accent\";\n readonly border: \"border-border\";\n readonly muted: \"border-muted\";\n readonly destructive: \"border-destructive\";\n readonly transparent: \"border-transparent\";\n} = {\n background: \"border-background\",\n foreground: \"border-foreground\",\n primary: \"border-primary\",\n secondary: \"border-secondary\",\n accent: \"border-accent\",\n border: \"border-border\",\n muted: \"border-muted\",\n destructive: \"border-destructive\",\n transparent: \"border-transparent\",\n} as const satisfies Record<ColorOptions, string>;\n"],"mappings":"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"}
|