@actuate-media/cms-admin 0.6.0 → 0.7.1
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/AdminRoot.d.ts.map +1 -1
- package/dist/AdminRoot.js +17 -0
- package/dist/AdminRoot.js.map +1 -1
- package/dist/actuate-admin.css +1 -1
- package/dist/components/ErrorBoundary.js +1 -1
- package/dist/components/ErrorBoundary.js.map +1 -1
- package/dist/hooks/useBuilderState.d.ts +49 -0
- package/dist/hooks/useBuilderState.d.ts.map +1 -0
- package/dist/hooks/useBuilderState.js +238 -0
- package/dist/hooks/useBuilderState.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/layout/Sidebar.d.ts.map +1 -1
- package/dist/layout/Sidebar.js +2 -2
- package/dist/layout/Sidebar.js.map +1 -1
- package/dist/views/FormSubmissions.js +11 -11
- package/dist/views/FormSubmissions.js.map +1 -1
- package/dist/views/Forms.js +1 -1
- package/dist/views/Forms.js.map +1 -1
- package/dist/views/MediaBrowser.d.ts.map +1 -1
- package/dist/views/MediaBrowser.js +28 -8
- package/dist/views/MediaBrowser.js.map +1 -1
- package/dist/views/Posts.js +1 -1
- package/dist/views/Posts.js.map +1 -1
- package/dist/views/Redirects.js +2 -2
- package/dist/views/Redirects.js.map +1 -1
- package/dist/views/SEO.js +3 -3
- package/dist/views/SEO.js.map +1 -1
- package/dist/views/Users.js +3 -3
- package/dist/views/Users.js.map +1 -1
- package/dist/views/page-builder/AIBlockAssist.d.ts +9 -0
- package/dist/views/page-builder/AIBlockAssist.d.ts.map +1 -0
- package/dist/views/page-builder/AIBlockAssist.js +40 -0
- package/dist/views/page-builder/AIBlockAssist.js.map +1 -0
- package/dist/views/page-builder/AIGenerateDialog.d.ts +8 -0
- package/dist/views/page-builder/AIGenerateDialog.d.ts.map +1 -0
- package/dist/views/page-builder/AIGenerateDialog.js +170 -0
- package/dist/views/page-builder/AIGenerateDialog.js.map +1 -0
- package/dist/views/page-builder/BlockEditor.d.ts +11 -0
- package/dist/views/page-builder/BlockEditor.d.ts.map +1 -0
- package/dist/views/page-builder/BlockEditor.js +67 -0
- package/dist/views/page-builder/BlockEditor.js.map +1 -0
- package/dist/views/page-builder/BlockPicker.d.ts +7 -0
- package/dist/views/page-builder/BlockPicker.d.ts.map +1 -0
- package/dist/views/page-builder/BlockPicker.js +102 -0
- package/dist/views/page-builder/BlockPicker.js.map +1 -0
- package/dist/views/page-builder/BottomBar.d.ts +9 -0
- package/dist/views/page-builder/BottomBar.d.ts.map +1 -0
- package/dist/views/page-builder/BottomBar.js +13 -0
- package/dist/views/page-builder/BottomBar.js.map +1 -0
- package/dist/views/page-builder/BuilderToolbar.d.ts +21 -0
- package/dist/views/page-builder/BuilderToolbar.d.ts.map +1 -0
- package/dist/views/page-builder/BuilderToolbar.js +18 -0
- package/dist/views/page-builder/BuilderToolbar.js.map +1 -0
- package/dist/views/page-builder/ContextPanel.d.ts +20 -0
- package/dist/views/page-builder/ContextPanel.d.ts.map +1 -0
- package/dist/views/page-builder/ContextPanel.js +40 -0
- package/dist/views/page-builder/ContextPanel.js.map +1 -0
- package/dist/views/page-builder/DesignScore.d.ts +6 -0
- package/dist/views/page-builder/DesignScore.d.ts.map +1 -0
- package/dist/views/page-builder/DesignScore.js +93 -0
- package/dist/views/page-builder/DesignScore.js.map +1 -0
- package/dist/views/page-builder/NodeSettings.d.ts +12 -0
- package/dist/views/page-builder/NodeSettings.d.ts.map +1 -0
- package/dist/views/page-builder/NodeSettings.js +80 -0
- package/dist/views/page-builder/NodeSettings.js.map +1 -0
- package/dist/views/page-builder/PageBuilder.d.ts +8 -0
- package/dist/views/page-builder/PageBuilder.d.ts.map +1 -0
- package/dist/views/page-builder/PageBuilder.js +126 -0
- package/dist/views/page-builder/PageBuilder.js.map +1 -0
- package/dist/views/page-builder/PageSettings.d.ts +7 -0
- package/dist/views/page-builder/PageSettings.d.ts.map +1 -0
- package/dist/views/page-builder/PageSettings.js +27 -0
- package/dist/views/page-builder/PageSettings.js.map +1 -0
- package/dist/views/page-builder/PageTemplates.d.ts +5 -0
- package/dist/views/page-builder/PageTemplates.d.ts.map +1 -0
- package/dist/views/page-builder/PageTemplates.js +13 -0
- package/dist/views/page-builder/PageTemplates.js.map +1 -0
- package/dist/views/page-builder/SEOPanel.d.ts +10 -0
- package/dist/views/page-builder/SEOPanel.d.ts.map +1 -0
- package/dist/views/page-builder/SEOPanel.js +105 -0
- package/dist/views/page-builder/SEOPanel.js.map +1 -0
- package/dist/views/page-builder/SavedSections.d.ts +6 -0
- package/dist/views/page-builder/SavedSections.d.ts.map +1 -0
- package/dist/views/page-builder/SavedSections.js +145 -0
- package/dist/views/page-builder/SavedSections.js.map +1 -0
- package/dist/views/page-builder/TemplatePicker.d.ts +7 -0
- package/dist/views/page-builder/TemplatePicker.d.ts.map +1 -0
- package/dist/views/page-builder/TemplatePicker.js +68 -0
- package/dist/views/page-builder/TemplatePicker.js.map +1 -0
- package/dist/views/page-builder/block-renderers/CTAPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/CTAPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/CTAPreview.js +19 -0
- package/dist/views/page-builder/block-renderers/CTAPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/CardsPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/CardsPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/CardsPreview.js +22 -0
- package/dist/views/page-builder/block-renderers/CardsPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/CodePreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/CodePreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/CodePreview.js +16 -0
- package/dist/views/page-builder/block-renderers/CodePreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/FAQPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/FAQPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/FAQPreview.js +24 -0
- package/dist/views/page-builder/block-renderers/FAQPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/FallbackPreview.d.ts +6 -0
- package/dist/views/page-builder/block-renderers/FallbackPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/FallbackPreview.js +7 -0
- package/dist/views/page-builder/block-renderers/FallbackPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/FormPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/FormPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/FormPreview.js +14 -0
- package/dist/views/page-builder/block-renderers/FormPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/GalleryPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/GalleryPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/GalleryPreview.js +21 -0
- package/dist/views/page-builder/block-renderers/GalleryPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/HeroPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/HeroPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/HeroPreview.js +19 -0
- package/dist/views/page-builder/block-renderers/HeroPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/ImagePreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/ImagePreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/ImagePreview.js +17 -0
- package/dist/views/page-builder/block-renderers/ImagePreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/TextPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/TextPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/TextPreview.js +26 -0
- package/dist/views/page-builder/block-renderers/TextPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/VideoPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/VideoPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/VideoPreview.js +21 -0
- package/dist/views/page-builder/block-renderers/VideoPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/index.d.ts +9 -0
- package/dist/views/page-builder/block-renderers/index.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/index.js +25 -0
- package/dist/views/page-builder/block-renderers/index.js.map +1 -0
- package/dist/views/page-builder/canvas/BlockRenderer.d.ts +8 -0
- package/dist/views/page-builder/canvas/BlockRenderer.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/BlockRenderer.js +30 -0
- package/dist/views/page-builder/canvas/BlockRenderer.js.map +1 -0
- package/dist/views/page-builder/canvas/BuilderCanvas.d.ts +10 -0
- package/dist/views/page-builder/canvas/BuilderCanvas.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/BuilderCanvas.js +26 -0
- package/dist/views/page-builder/canvas/BuilderCanvas.js.map +1 -0
- package/dist/views/page-builder/canvas/ColumnRenderer.d.ts +8 -0
- package/dist/views/page-builder/canvas/ColumnRenderer.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/ColumnRenderer.js +36 -0
- package/dist/views/page-builder/canvas/ColumnRenderer.js.map +1 -0
- package/dist/views/page-builder/canvas/ContainerRenderer.d.ts +8 -0
- package/dist/views/page-builder/canvas/ContainerRenderer.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/ContainerRenderer.js +33 -0
- package/dist/views/page-builder/canvas/ContainerRenderer.js.map +1 -0
- package/dist/views/page-builder/canvas/RowRenderer.d.ts +8 -0
- package/dist/views/page-builder/canvas/RowRenderer.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/RowRenderer.js +32 -0
- package/dist/views/page-builder/canvas/RowRenderer.js.map +1 -0
- package/dist/views/page-builder/canvas/SectionRenderer.d.ts +8 -0
- package/dist/views/page-builder/canvas/SectionRenderer.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/SectionRenderer.js +54 -0
- package/dist/views/page-builder/canvas/SectionRenderer.js.map +1 -0
- package/dist/views/page-builder/canvas/index.d.ts +3 -0
- package/dist/views/page-builder/canvas/index.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/index.js +2 -0
- package/dist/views/page-builder/canvas/index.js.map +1 -0
- package/package.json +3 -2
- package/src/AdminRoot.tsx +21 -0
- package/src/components/ErrorBoundary.tsx +3 -3
- package/src/hooks/useBuilderState.ts +328 -0
- package/src/index.ts +4 -0
- package/src/layout/Sidebar.tsx +5 -0
- package/src/views/FormSubmissions.tsx +12 -12
- package/src/views/Forms.tsx +1 -1
- package/src/views/MediaBrowser.tsx +46 -15
- package/src/views/Posts.tsx +1 -1
- package/src/views/Redirects.tsx +2 -2
- package/src/views/SEO.tsx +3 -3
- package/src/views/Users.tsx +3 -3
- package/src/views/page-builder/AIBlockAssist.tsx +68 -0
- package/src/views/page-builder/AIGenerateDialog.tsx +574 -0
- package/src/views/page-builder/BlockEditor.tsx +352 -0
- package/src/views/page-builder/BlockPicker.tsx +338 -0
- package/src/views/page-builder/BottomBar.tsx +64 -0
- package/src/views/page-builder/BuilderToolbar.tsx +218 -0
- package/src/views/page-builder/ContextPanel.tsx +145 -0
- package/src/views/page-builder/DesignScore.tsx +258 -0
- package/src/views/page-builder/NodeSettings.tsx +515 -0
- package/src/views/page-builder/PageBuilder.tsx +288 -0
- package/src/views/page-builder/PageSettings.tsx +161 -0
- package/src/views/page-builder/PageTemplates.tsx +105 -0
- package/src/views/page-builder/SEOPanel.tsx +485 -0
- package/src/views/page-builder/SavedSections.tsx +486 -0
- package/src/views/page-builder/TemplatePicker.tsx +201 -0
- package/src/views/page-builder/block-renderers/CTAPreview.tsx +81 -0
- package/src/views/page-builder/block-renderers/CardsPreview.tsx +71 -0
- package/src/views/page-builder/block-renderers/CodePreview.tsx +46 -0
- package/src/views/page-builder/block-renderers/FAQPreview.tsx +90 -0
- package/src/views/page-builder/block-renderers/FallbackPreview.tsx +18 -0
- package/src/views/page-builder/block-renderers/FormPreview.tsx +69 -0
- package/src/views/page-builder/block-renderers/GalleryPreview.tsx +93 -0
- package/src/views/page-builder/block-renderers/HeroPreview.tsx +103 -0
- package/src/views/page-builder/block-renderers/ImagePreview.tsx +54 -0
- package/src/views/page-builder/block-renderers/TextPreview.tsx +81 -0
- package/src/views/page-builder/block-renderers/VideoPreview.tsx +78 -0
- package/src/views/page-builder/block-renderers/index.ts +34 -0
- package/src/views/page-builder/canvas/BlockRenderer.tsx +62 -0
- package/src/views/page-builder/canvas/BuilderCanvas.tsx +90 -0
- package/src/views/page-builder/canvas/ColumnRenderer.tsx +86 -0
- package/src/views/page-builder/canvas/ContainerRenderer.tsx +71 -0
- package/src/views/page-builder/canvas/RowRenderer.tsx +72 -0
- package/src/views/page-builder/canvas/SectionRenderer.tsx +97 -0
- package/src/views/page-builder/canvas/index.ts +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageSettings.js","sourceRoot":"","sources":["../../../src/views/page-builder/PageSettings.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAQpC,MAAM,WAAW,GACf,uHAAuH,CAAC;AAC1H,MAAM,WAAW,GAAG,gDAAgD,CAAC;AACrE,MAAM,qBAAqB,GAAG,yEAAyE,CAAC;AAExG,MAAM,YAAY,GAAG;IACnB,SAAS;IACT,eAAe;IACf,SAAS;IACT,SAAS;IACT,SAAS;IACT,cAAc;IACd,OAAO;IACP,QAAQ;IACR,OAAO;IACP,gBAAgB;CACjB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAqB;IAC1E,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,GAAuB,EAAE,KAAa,EAAE,EAAE;QACzC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7B,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC1D,MAAM,cAAc,GAAG,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAE/D,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,aAC5B,YAAG,SAAS,EAAE,qBAAqB,wBAAa,EAEhD,0BACE,gBAAO,SAAS,EAAE,WAAW,sBAAe,EAC5C,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAChD,WAAW,EAAC,YAAY,EACxB,SAAS,EAAE,WAAW,GACtB,IACE,EAEN,0BACE,gBAAO,SAAS,EAAE,WAAW,qBAAc,EAC3C,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,QAAQ,CAAC,IAAI,EACpB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC/C,WAAW,EAAC,YAAY,EACxB,SAAS,EAAE,WAAW,GACtB,IACE,EAEN,0BACE,gBAAO,SAAS,EAAE,WAAW,yBAAkB,EAC/C,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,EAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACnD,WAAW,EAAC,SAAS,EACrB,SAAS,EAAE,WAAW,EACtB,QAAQ,SACR,IACE,EAEN,YAAG,SAAS,EAAE,qBAAqB,oBAAS,EAE5C,0BACE,eAAK,SAAS,EAAC,wCAAwC,aACrD,gBAAO,SAAS,EAAC,qCAAqC,2BAAmB,EACzE,gBACE,SAAS,EAAE,WACT,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,uBAC9C,EAAE,aAED,eAAe,WACX,IACH,EACN,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,QAAQ,CAAC,SAAS,IAAI,EAAE,EAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACpD,WAAW,EAAC,WAAW,EACvB,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,WAAW,GACtB,IACE,EAEN,0BACE,eAAK,SAAS,EAAC,wCAAwC,aACrD,gBAAO,SAAS,EAAC,qCAAqC,iCAAyB,EAC/E,gBACE,SAAS,EAAE,WACT,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,uBAC9C,EAAE,aAED,cAAc,YACV,IACH,EACN,mBACE,KAAK,EAAE,QAAQ,CAAC,eAAe,IAAI,EAAE,EACrC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC1D,WAAW,EAAC,sCAAsC,EAClD,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,GAAG,WAAW,WAAW,GACpC,IACE,EAEN,0BACE,gBAAO,SAAS,EAAE,WAAW,yBAAkB,EAC/C,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE,EAC7B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAClD,WAAW,EAAC,+BAA+B,EAC3C,SAAS,EAAE,WAAW,GACtB,IACE,EAEN,0BACE,gBAAO,SAAS,EAAE,WAAW,gCAAyB,EACtD,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,QAAQ,CAAC,cAAc,IAAI,EAAE,EACpC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzD,WAAW,EAAC,iBAAiB,EAC7B,SAAS,EAAE,WAAW,GACtB,IACE,EAEN,0BACE,gBAAO,SAAS,EAAE,WAAW,4BAAqB,EAClD,kBACE,KAAK,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACrD,SAAS,EAAE,WAAW,aAEtB,iBAAQ,KAAK,EAAC,EAAE,sCAA+B,EAC9C,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,iBAAmB,KAAK,EAAE,IAAI,YAC3B,IAAI,IADM,IAAI,CAER,CACV,CAAC,IACK,IACL,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageTemplates.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/PageTemplates.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,aAAa,CAAC,EAAE,UAAU,EAAE,EAAE,kBAAkB,2CAsF/D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { AlertTriangle, Layers, Loader2, RefreshCw } from 'lucide-react';
|
|
4
|
+
import { useApiData } from '../../lib/useApiData.js';
|
|
5
|
+
export function PageTemplates({ onNavigate }) {
|
|
6
|
+
const { data, loading, error, refetch } = useApiData('/page-templates');
|
|
7
|
+
const templates = data ?? [];
|
|
8
|
+
if (loading) {
|
|
9
|
+
return (_jsxs("div", { className: "flex h-64 items-center justify-center p-4", role: "status", "aria-live": "polite", children: [_jsx(Loader2, { className: "h-6 w-6 animate-spin text-primary" }), _jsx("span", { className: "sr-only", children: "Loading page templates" })] }));
|
|
10
|
+
}
|
|
11
|
+
return (_jsxs("div", { className: "p-4 pr-8", children: [error && (_jsxs("div", { className: "mb-4 flex items-center gap-3 rounded-lg border border-border bg-card p-3", children: [_jsx(AlertTriangle, { className: "h-5 w-5 shrink-0 text-muted-foreground" }), _jsx("span", { className: "flex-1 text-sm text-foreground", children: error }), _jsx("button", { type: "button", onClick: refetch, className: "rounded-md border border-border px-3 py-1 text-sm text-foreground hover:bg-accent", children: "Retry" })] })), _jsxs("div", { className: "mb-4 flex items-center justify-between", children: [_jsxs("div", { children: [_jsx("h1", { className: "mb-1 text-2xl font-medium text-foreground", children: "Page Templates" }), _jsxs("p", { className: "text-sm text-muted-foreground", children: [templates.length, " saved template", templates.length === 1 ? '' : 's'] })] }), _jsxs("button", { type: "button", onClick: refetch, className: "inline-flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm font-medium text-foreground hover:bg-accent", children: [_jsx(RefreshCw, { className: "h-4 w-4" }), "Refresh"] })] }), templates.length === 0 ? (_jsxs("div", { className: "rounded-lg border border-border bg-card p-8 text-center", children: [_jsx(Layers, { className: "mx-auto mb-3 h-8 w-8 text-muted-foreground" }), _jsx("h2", { className: "mb-1 text-lg font-medium text-foreground", children: "No page templates yet" }), _jsx("p", { className: "mb-4 text-sm text-muted-foreground", children: "Built-in templates are seeded by the CMS when the templates API is available." }), _jsx("button", { type: "button", onClick: () => onNavigate?.('/saved-sections'), className: "rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:opacity-90", children: "View Saved Sections" })] })) : (_jsx("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3", children: templates.map((template) => (_jsxs("div", { className: "rounded-lg border border-border bg-card p-4", children: [_jsxs("div", { className: "mb-3 flex items-start justify-between gap-3", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-base font-medium text-foreground", children: template.name ?? 'Untitled template' }), _jsx("p", { className: "mt-1 text-sm text-muted-foreground", children: template.description ?? 'No description provided.' })] }), template.builtIn && (_jsx("span", { className: "rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground", children: "Built-in" }))] }), _jsxs("div", { className: "flex items-center justify-between text-sm text-muted-foreground", children: [_jsx("span", { children: template.category ?? 'content' }), _jsx("span", { children: template.updatedAt ? new Date(template.updatedAt).toLocaleDateString() : '' })] })] }, template.id))) }))] }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=PageTemplates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageTemplates.js","sourceRoot":"","sources":["../../../src/views/page-builder/PageTemplates.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PageNode } from '@actuate-media/cms-core';
|
|
2
|
+
import type { PageSettings } from '../../hooks/useBuilderState.js';
|
|
3
|
+
export interface BuilderSEOPanelProps {
|
|
4
|
+
tree: PageNode;
|
|
5
|
+
pageSettings: PageSettings;
|
|
6
|
+
onPageSettingsChange: (settings: Partial<PageSettings>) => void;
|
|
7
|
+
selectedNodeId: string | null;
|
|
8
|
+
}
|
|
9
|
+
export declare function BuilderSEOPanel({ tree, pageSettings, onPageSettingsChange, selectedNodeId, }: BuilderSEOPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=SEOPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SEOPanel.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/SEOPanel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,QAAQ,EAIT,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAiBnE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;IAC3B,oBAAoB,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IAChE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAsVD,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,EAAE,oBAAoB,2CAyGtB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useMemo } from 'react';
|
|
4
|
+
import { analyzeSEO } from '@actuate-media/cms-core';
|
|
5
|
+
import { CheckCircle2, AlertCircle, XCircle, ChevronDown, ChevronUp, Search, Globe, Type, FileText, Clock, BarChart3, Target, Eye, } from 'lucide-react';
|
|
6
|
+
function getScoreColor(score) {
|
|
7
|
+
if (score >= 70)
|
|
8
|
+
return 'text-green-500';
|
|
9
|
+
if (score >= 40)
|
|
10
|
+
return 'text-amber-500';
|
|
11
|
+
return 'text-red-500';
|
|
12
|
+
}
|
|
13
|
+
function getRingStrokeColor(score) {
|
|
14
|
+
if (score >= 70)
|
|
15
|
+
return 'rgb(34, 197, 94)';
|
|
16
|
+
if (score >= 40)
|
|
17
|
+
return 'rgb(245, 158, 11)';
|
|
18
|
+
return 'rgb(239, 68, 68)';
|
|
19
|
+
}
|
|
20
|
+
function getScoreLabel(score) {
|
|
21
|
+
if (score >= 80)
|
|
22
|
+
return 'Excellent';
|
|
23
|
+
if (score >= 70)
|
|
24
|
+
return 'Good';
|
|
25
|
+
if (score >= 50)
|
|
26
|
+
return 'Needs Work';
|
|
27
|
+
return 'Poor';
|
|
28
|
+
}
|
|
29
|
+
function StatusIcon({ status }) {
|
|
30
|
+
switch (status) {
|
|
31
|
+
case 'good':
|
|
32
|
+
return _jsx(CheckCircle2, { size: 14, className: "text-green-500 shrink-0" });
|
|
33
|
+
case 'warning':
|
|
34
|
+
return _jsx(AlertCircle, { size: 14, className: "text-amber-500 shrink-0" });
|
|
35
|
+
case 'error':
|
|
36
|
+
return _jsx(XCircle, { size: 14, className: "text-red-500 shrink-0" });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function ScoreRing({ score }) {
|
|
40
|
+
const radius = 32;
|
|
41
|
+
const strokeWidth = 6;
|
|
42
|
+
const circumference = 2 * Math.PI * radius;
|
|
43
|
+
const progress = Math.min(score, 100) / 100;
|
|
44
|
+
const dashOffset = circumference * (1 - progress);
|
|
45
|
+
const size = (radius + strokeWidth) * 2;
|
|
46
|
+
return (_jsxs("div", { className: "relative", children: [_jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, className: "-rotate-90", children: [_jsx("circle", { cx: size / 2, cy: size / 2, r: radius, fill: "none", stroke: "var(--border)", strokeWidth: strokeWidth }), _jsx("circle", { cx: size / 2, cy: size / 2, r: radius, fill: "none", stroke: getRingStrokeColor(score), strokeWidth: strokeWidth, strokeDasharray: circumference, strokeDashoffset: dashOffset, strokeLinecap: "round", className: "transition-all duration-700 ease-out" })] }), _jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: _jsx("span", { className: `text-lg font-medium ${getScoreColor(score)}`, children: score }) })] }));
|
|
47
|
+
}
|
|
48
|
+
function ScoreSummary({ checks }) {
|
|
49
|
+
const passed = checks.filter((c) => c.status === 'good').length;
|
|
50
|
+
const warnings = checks.filter((c) => c.status === 'warning').length;
|
|
51
|
+
const errors = checks.filter((c) => c.status === 'error').length;
|
|
52
|
+
return (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(CheckCircle2, { size: 12, className: "text-green-500" }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [passed, " passed"] })] }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(AlertCircle, { size: 12, className: "text-amber-500" }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [warnings, " warnings"] })] }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(XCircle, { size: 12, className: "text-red-500" }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [errors, " issues"] })] })] }));
|
|
53
|
+
}
|
|
54
|
+
function CollapsibleSection({ title, icon: Icon, expanded, onToggle, children, }) {
|
|
55
|
+
return (_jsxs("div", { className: "border-b border-border last:border-b-0", children: [_jsxs("button", { type: "button", className: "w-full text-left px-4 py-3 flex items-center justify-between hover:bg-muted/50 transition-colors", onClick: onToggle, "aria-expanded": expanded, children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Icon, { size: 14, className: "text-muted-foreground" }), _jsx("span", { className: "text-xs font-medium text-foreground", children: title })] }), expanded ? (_jsx(ChevronUp, { size: 14, className: "text-muted-foreground" })) : (_jsx(ChevronDown, { size: 14, className: "text-muted-foreground" }))] }), expanded && _jsx("div", { className: "px-4 pb-4", children: children })] }));
|
|
56
|
+
}
|
|
57
|
+
function SEOChecksList({ checks }) {
|
|
58
|
+
return (_jsx("div", { className: "flex flex-col gap-2", children: checks.map((check) => (_jsxs("div", { className: "flex items-start gap-2", children: [_jsx(StatusIcon, { status: check.status }), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-xs font-medium text-foreground", children: check.label }), _jsx("span", { className: "text-xs text-muted-foreground", children: check.detail })] })] }, check.id))) }));
|
|
59
|
+
}
|
|
60
|
+
function ReadabilityGrid({ readability }) {
|
|
61
|
+
const fleschLabel = readability.fleschScore >= 60
|
|
62
|
+
? 'Easy'
|
|
63
|
+
: readability.fleschScore >= 30
|
|
64
|
+
? 'Moderate'
|
|
65
|
+
: 'Difficult';
|
|
66
|
+
return (_jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { className: "bg-muted/50 rounded-md p-3 flex flex-col gap-1", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(BarChart3, { size: 12, className: "text-muted-foreground" }), _jsx("span", { className: "text-xs text-muted-foreground", children: "Flesch Score" })] }), _jsx("span", { className: `text-sm font-medium ${getScoreColor(readability.fleschScore)}`, children: readability.fleschScore }), _jsx("span", { className: "text-xs text-muted-foreground", children: fleschLabel })] }), _jsxs("div", { className: "bg-muted/50 rounded-md p-3 flex flex-col gap-1", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(Type, { size: 12, className: "text-muted-foreground" }), _jsx("span", { className: "text-xs text-muted-foreground", children: "Word Count" })] }), _jsx("span", { className: "text-sm font-medium text-foreground", children: readability.wordCount }), _jsx("span", { className: "text-xs text-muted-foreground", children: readability.wordCount >= 300 ? 'Good length' : 'Short' })] }), _jsxs("div", { className: "bg-muted/50 rounded-md p-3 flex flex-col gap-1", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(FileText, { size: 12, className: "text-muted-foreground" }), _jsx("span", { className: "text-xs text-muted-foreground", children: "Avg Sentence" })] }), _jsxs("span", { className: "text-sm font-medium text-foreground", children: [readability.avgSentenceLength, " words"] }), _jsx("span", { className: "text-xs text-muted-foreground", children: readability.avgSentenceLength <= 20 ? 'Good' : 'Long' })] }), _jsxs("div", { className: "bg-muted/50 rounded-md p-3 flex flex-col gap-1", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(Clock, { size: 12, className: "text-muted-foreground" }), _jsx("span", { className: "text-xs text-muted-foreground", children: "Reading Time" })] }), _jsxs("span", { className: "text-sm font-medium text-foreground", children: [readability.readingTime, " min"] }), _jsxs("span", { className: "text-xs text-muted-foreground", children: ["~", readability.wordCount, " words"] })] })] }));
|
|
67
|
+
}
|
|
68
|
+
function PerBlockHints({ hints }) {
|
|
69
|
+
return (_jsx("div", { className: "flex flex-col gap-2", children: hints.map((hint, index) => (_jsxs("div", { className: "flex items-start gap-2", children: [_jsx(StatusIcon, { status: hint.status }), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-xs font-medium text-foreground", children: hint.label }), _jsx("span", { className: "text-xs text-muted-foreground", children: hint.detail })] })] }, `${hint.id}-${index}`))) }));
|
|
70
|
+
}
|
|
71
|
+
function BasicSEOFields({ pageSettings, onPageSettingsChange, }) {
|
|
72
|
+
const metaTitleLength = (pageSettings.metaTitle || '').length;
|
|
73
|
+
const metaDescLength = (pageSettings.metaDescription || '').length;
|
|
74
|
+
return (_jsxs("div", { className: "flex flex-col gap-4", children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("label", { className: "text-xs font-medium text-foreground", children: "Meta Title" }), _jsxs("span", { className: `text-xs ${metaTitleLength > 60 ? 'text-red-500' : metaTitleLength > 0 ? 'text-muted-foreground' : 'text-muted-foreground'}`, children: [metaTitleLength, "/60"] })] }), _jsx("input", { type: "text", value: pageSettings.metaTitle || '', onChange: (e) => onPageSettingsChange({ metaTitle: e.target.value }), placeholder: "Page title for search engines", className: "w-full px-3 py-2 text-sm bg-input-background border border-border rounded-md text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary" })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("label", { className: "text-xs font-medium text-foreground", children: "Meta Description" }), _jsxs("span", { className: `text-xs ${metaDescLength > 160 ? 'text-red-500' : metaDescLength > 0 ? 'text-muted-foreground' : 'text-muted-foreground'}`, children: [metaDescLength, "/160"] })] }), _jsx("textarea", { value: pageSettings.metaDescription || '', onChange: (e) => onPageSettingsChange({ metaDescription: e.target.value }), placeholder: "Brief description of the page content", rows: 3, className: "w-full px-3 py-2 text-sm bg-input-background border border-border rounded-md text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary resize-none" })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-xs font-medium text-foreground", children: "Focus Keyphrase" }), _jsx("input", { type: "text", value: pageSettings.focusKeyphrase || '', onChange: (e) => onPageSettingsChange({ focusKeyphrase: e.target.value }), placeholder: "Primary keyword or phrase", className: "w-full px-3 py-2 text-sm bg-input-background border border-border rounded-md text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary" })] })] }));
|
|
75
|
+
}
|
|
76
|
+
function SearchPreview({ pageSettings }) {
|
|
77
|
+
const title = pageSettings.metaTitle || pageSettings.title || 'Untitled Page';
|
|
78
|
+
const description = pageSettings.metaDescription || 'No description set';
|
|
79
|
+
const slug = pageSettings.slug || 'page';
|
|
80
|
+
return (_jsxs("div", { className: "bg-background rounded-md border border-border p-4", children: [_jsx("p", { className: "text-xs text-muted-foreground mb-2", children: "Google Search Preview" }), _jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("p", { className: "text-sm text-primary truncate", children: title }), _jsxs("p", { className: "text-xs text-green-600 truncate", children: ["example.com/", slug] }), _jsx("p", { className: "text-xs text-muted-foreground line-clamp-2", children: description })] })] }));
|
|
81
|
+
}
|
|
82
|
+
function SocialPreview({ pageSettings }) {
|
|
83
|
+
const title = pageSettings.metaTitle || pageSettings.title || 'Untitled Page';
|
|
84
|
+
const description = pageSettings.metaDescription || 'No description set';
|
|
85
|
+
return (_jsxs("div", { className: "bg-background rounded-md border border-border overflow-hidden", children: [_jsx("p", { className: "text-xs text-muted-foreground px-4 pt-3 pb-2", children: "Open Graph Preview" }), pageSettings.ogImage && (_jsx("div", { className: "w-full h-32 bg-muted flex items-center justify-center overflow-hidden", children: _jsx("img", { src: pageSettings.ogImage, alt: "OG preview", className: "w-full h-full object-cover" }) })), !pageSettings.ogImage && (_jsx("div", { className: "w-full h-32 bg-muted flex items-center justify-center", children: _jsx(Globe, { size: 24, className: "text-muted-foreground" }) })), _jsxs("div", { className: "p-3 flex flex-col gap-1", children: [_jsx("p", { className: "text-xs text-muted-foreground uppercase", children: "example.com" }), _jsx("p", { className: "text-sm font-medium text-foreground truncate", children: title }), _jsx("p", { className: "text-xs text-muted-foreground line-clamp-2", children: description })] })] }));
|
|
86
|
+
}
|
|
87
|
+
export function BuilderSEOPanel({ tree, pageSettings, onPageSettingsChange, selectedNodeId, }) {
|
|
88
|
+
const analysis = useMemo(() => analyzeSEO(tree, pageSettings), [tree, pageSettings]);
|
|
89
|
+
const [expandedSections, setExpandedSections] = useState(['checks']);
|
|
90
|
+
const toggleSection = (section) => {
|
|
91
|
+
setExpandedSections((prev) => prev.includes(section)
|
|
92
|
+
? prev.filter((s) => s !== section)
|
|
93
|
+
: [...prev, section]);
|
|
94
|
+
};
|
|
95
|
+
const blockHints = useMemo(() => {
|
|
96
|
+
if (!selectedNodeId)
|
|
97
|
+
return [];
|
|
98
|
+
return analysis.perBlockHints.get(selectedNodeId) || [];
|
|
99
|
+
}, [analysis.perBlockHints, selectedNodeId]);
|
|
100
|
+
if (!tree.children || tree.children.length === 0) {
|
|
101
|
+
return (_jsxs("div", { className: "p-6 flex flex-col items-center justify-center text-center min-h-[200px]", children: [_jsx(Search, { size: 32, className: "text-muted-foreground mb-3" }), _jsx("p", { className: "text-sm font-medium text-foreground mb-1", children: "SEO Analysis" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Add content to your page to see SEO analysis" })] }));
|
|
102
|
+
}
|
|
103
|
+
return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center gap-4 px-4 py-5 border-b border-border", children: [_jsx(ScoreRing, { score: analysis.score }), _jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-xs font-medium text-foreground", children: getScoreLabel(analysis.score) }), _jsx(ScoreSummary, { checks: analysis.checks })] })] }), _jsxs("div", { className: "flex flex-col", children: [_jsx(CollapsibleSection, { title: "SEO Checks", icon: Search, expanded: expandedSections.includes('checks'), onToggle: () => toggleSection('checks'), children: _jsx(SEOChecksList, { checks: analysis.checks }) }), _jsx(CollapsibleSection, { title: "Readability", icon: BarChart3, expanded: expandedSections.includes('readability'), onToggle: () => toggleSection('readability'), children: _jsx(ReadabilityGrid, { readability: analysis.readability }) }), blockHints.length > 0 && (_jsx(CollapsibleSection, { title: "Block Hints", icon: Target, expanded: expandedSections.includes('blockHints'), onToggle: () => toggleSection('blockHints'), children: _jsx(PerBlockHints, { hints: blockHints }) })), _jsx(CollapsibleSection, { title: "Basic SEO", icon: FileText, expanded: expandedSections.includes('basicSeo'), onToggle: () => toggleSection('basicSeo'), children: _jsx(BasicSEOFields, { pageSettings: pageSettings, onPageSettingsChange: onPageSettingsChange }) }), _jsx(CollapsibleSection, { title: "Search Preview", icon: Eye, expanded: expandedSections.includes('searchPreview'), onToggle: () => toggleSection('searchPreview'), children: _jsx(SearchPreview, { pageSettings: pageSettings }) }), _jsx(CollapsibleSection, { title: "Social Preview", icon: Globe, expanded: expandedSections.includes('socialPreview'), onToggle: () => toggleSection('socialPreview'), children: _jsx(SocialPreview, { pageSettings: pageSettings }) })] })] }));
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=SEOPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SEOPanel.js","sourceRoot":"","sources":["../../../src/views/page-builder/SEOPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SavedSections.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/SavedSections.tsx"],"names":[],"mappings":"AAmBA,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,CAAC;CACb;AA8CD,wBAAgB,aAAa,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB,2CAoRvE"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
4
|
+
import { Plus, ArrowLeft, Edit, Trash2, Copy, Layers, Loader2, AlertTriangle, Calendar, Hash, } from 'lucide-react';
|
|
5
|
+
import { toast } from 'sonner';
|
|
6
|
+
import { cmsApi } from '../../lib/api.js';
|
|
7
|
+
import { createSection, createContainer, createRow, createColumn } from '@actuate-media/cms-core';
|
|
8
|
+
const CATEGORIES = ['header', 'footer', 'content', 'sidebar'];
|
|
9
|
+
const CATEGORY_COLORS = {
|
|
10
|
+
header: 'bg-primary/10 text-primary',
|
|
11
|
+
footer: 'bg-accent text-foreground',
|
|
12
|
+
content: 'bg-muted text-muted-foreground',
|
|
13
|
+
sidebar: 'bg-primary/10 text-primary',
|
|
14
|
+
};
|
|
15
|
+
function formatDate(dateStr) {
|
|
16
|
+
return new Date(dateStr).toLocaleDateString(undefined, {
|
|
17
|
+
month: 'short',
|
|
18
|
+
day: 'numeric',
|
|
19
|
+
year: 'numeric',
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function createEmptySectionTree() {
|
|
23
|
+
const col = createColumn(100);
|
|
24
|
+
const row = createRow([col]);
|
|
25
|
+
const container = createContainer();
|
|
26
|
+
container.children = [row];
|
|
27
|
+
const section = createSection();
|
|
28
|
+
section.children = [container];
|
|
29
|
+
return section;
|
|
30
|
+
}
|
|
31
|
+
export function SavedSections({ onNavigate, config }) {
|
|
32
|
+
const [sections, setSections] = useState([]);
|
|
33
|
+
const [loading, setLoading] = useState(true);
|
|
34
|
+
const [error, setError] = useState(null);
|
|
35
|
+
const [viewState, setViewState] = useState({ mode: 'list' });
|
|
36
|
+
const [activeCategory, setActiveCategory] = useState('all');
|
|
37
|
+
const [deleteConfirmId, setDeleteConfirmId] = useState(null);
|
|
38
|
+
const [saving, setSaving] = useState(false);
|
|
39
|
+
const fetchSections = useCallback(async () => {
|
|
40
|
+
setLoading(true);
|
|
41
|
+
setError(null);
|
|
42
|
+
const res = await cmsApi('/saved-sections');
|
|
43
|
+
if (res.error) {
|
|
44
|
+
setError(res.error);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
setSections(res.data ?? []);
|
|
48
|
+
}
|
|
49
|
+
setLoading(false);
|
|
50
|
+
}, []);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
fetchSections();
|
|
53
|
+
}, [fetchSections]);
|
|
54
|
+
const filteredSections = activeCategory === 'all'
|
|
55
|
+
? sections
|
|
56
|
+
: sections.filter((s) => s.category === activeCategory);
|
|
57
|
+
async function handleDelete(id) {
|
|
58
|
+
const res = await cmsApi(`/saved-sections/${id}`, { method: 'DELETE' });
|
|
59
|
+
if (res.error) {
|
|
60
|
+
toast.error(res.error);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
toast.success('Section deleted');
|
|
64
|
+
setSections((prev) => prev.filter((s) => s.id !== id));
|
|
65
|
+
}
|
|
66
|
+
setDeleteConfirmId(null);
|
|
67
|
+
}
|
|
68
|
+
async function handleDuplicate(section) {
|
|
69
|
+
const res = await cmsApi('/saved-sections', {
|
|
70
|
+
method: 'POST',
|
|
71
|
+
body: JSON.stringify({
|
|
72
|
+
name: `${section.name} (Copy)`,
|
|
73
|
+
description: section.description,
|
|
74
|
+
category: section.category,
|
|
75
|
+
tree: section.tree,
|
|
76
|
+
}),
|
|
77
|
+
});
|
|
78
|
+
if (res.error) {
|
|
79
|
+
toast.error(res.error);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
toast.success('Section duplicated');
|
|
83
|
+
fetchSections();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (viewState.mode === 'create' || viewState.mode === 'edit') {
|
|
87
|
+
return (_jsx(SectionForm, { initial: viewState.mode === 'edit' ? viewState.section : undefined, saving: saving, onSave: async (data) => {
|
|
88
|
+
setSaving(true);
|
|
89
|
+
if (viewState.mode === 'create') {
|
|
90
|
+
const res = await cmsApi('/saved-sections', {
|
|
91
|
+
method: 'POST',
|
|
92
|
+
body: JSON.stringify({ ...data, tree: createEmptySectionTree() }),
|
|
93
|
+
});
|
|
94
|
+
setSaving(false);
|
|
95
|
+
if (res.error) {
|
|
96
|
+
toast.error(res.error);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
toast.success('Section created');
|
|
100
|
+
setViewState({ mode: 'list' });
|
|
101
|
+
fetchSections();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
const res = await cmsApi(`/saved-sections/${viewState.section.id}`, {
|
|
106
|
+
method: 'PUT',
|
|
107
|
+
body: JSON.stringify(data),
|
|
108
|
+
});
|
|
109
|
+
setSaving(false);
|
|
110
|
+
if (res.error) {
|
|
111
|
+
toast.error(res.error);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
toast.success('Section updated');
|
|
115
|
+
setViewState({ mode: 'list' });
|
|
116
|
+
fetchSections();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}, onCancel: () => setViewState({ mode: 'list' }) }));
|
|
120
|
+
}
|
|
121
|
+
return (_jsxs("div", { className: "p-4 pr-8", children: [_jsxs("div", { className: "mb-6 flex items-center justify-between", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-medium text-foreground", children: "Saved Sections" }), _jsx("p", { className: "text-sm text-muted-foreground mt-1", children: "Reusable sections for the page builder" })] }), _jsxs("button", { type: "button", onClick: () => setViewState({ mode: 'create' }), className: "flex items-center gap-2 rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90", children: [_jsx(Plus, { size: 16 }), "Create Section"] })] }), _jsxs("div", { className: "mb-4 flex items-center gap-1 border-b border-border", children: [_jsx(CategoryTab, { label: "All", active: activeCategory === 'all', onClick: () => setActiveCategory('all') }), CATEGORIES.map((cat) => (_jsx(CategoryTab, { label: cat.charAt(0).toUpperCase() + cat.slice(1), active: activeCategory === cat, onClick: () => setActiveCategory(cat) }, cat)))] }), loading && (_jsx("div", { className: "flex items-center justify-center py-16", children: _jsx(Loader2, { className: "w-6 h-6 animate-spin text-muted-foreground" }) })), error && !loading && (_jsxs("div", { className: "flex flex-col items-center justify-center py-12 text-center", children: [_jsx(AlertTriangle, { size: 24, className: "text-destructive mb-2" }), _jsx("p", { className: "text-sm text-muted-foreground mb-3", children: error }), _jsx("button", { type: "button", onClick: fetchSections, className: "px-3 py-1.5 text-sm font-medium text-foreground border border-border rounded-md hover:bg-accent transition-colors", children: "Retry" })] })), !loading && !error && filteredSections.length === 0 && (_jsxs("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [_jsx(Layers, { size: 32, className: "text-muted-foreground mb-3" }), _jsx("p", { className: "text-sm font-medium text-foreground mb-1", children: "No saved sections" }), _jsx("p", { className: "text-xs text-muted-foreground mb-4", children: activeCategory === 'all'
|
|
122
|
+
? 'Create your first reusable section to get started.'
|
|
123
|
+
: `No sections in the "${activeCategory}" category.` }), activeCategory === 'all' && (_jsxs("button", { type: "button", onClick: () => setViewState({ mode: 'create' }), className: "flex items-center gap-2 rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground hover:bg-primary/90 transition-colors", children: [_jsx(Plus, { size: 14 }), "Create Section"] }))] })), !loading && !error && filteredSections.length > 0 && (_jsx("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-3", children: filteredSections.map((section) => (_jsxs("div", { className: "border border-border rounded-lg p-4 bg-card hover:border-primary/50 transition-colors", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "text-sm font-medium text-foreground truncate", children: section.name }), section.description && (_jsx("p", { className: "text-xs text-muted-foreground mt-0.5 line-clamp-2", children: section.description }))] }), _jsx("span", { className: `shrink-0 text-xs px-2 py-0.5 rounded-full ${CATEGORY_COLORS[section.category] ?? 'bg-muted text-muted-foreground'}`, children: section.category })] }), _jsxs("div", { className: "mt-3 flex items-center gap-4 text-xs text-muted-foreground", children: [_jsxs("span", { className: "flex items-center gap-1", children: [_jsx(Hash, { size: 12 }), section.usageCount, " use", section.usageCount !== 1 ? 's' : ''] }), _jsxs("span", { className: "flex items-center gap-1", children: [_jsx(Calendar, { size: 12 }), formatDate(section.createdAt)] }), section.tree && (_jsxs("span", { className: "flex items-center gap-1", children: [_jsx(Layers, { size: 12 }), JSON.stringify(section.tree).length > 1000 ? 'Complex' : 'Simple'] }))] }), _jsxs("div", { className: "mt-3 flex items-center gap-1 border-t border-border pt-3", children: [_jsxs("button", { type: "button", onClick: () => setViewState({ mode: 'edit', section }), className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-foreground rounded-md hover:bg-accent transition-colors", "aria-label": `Edit ${section.name}`, children: [_jsx(Edit, { size: 13 }), "Edit"] }), _jsxs("button", { type: "button", onClick: () => handleDuplicate(section), className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-foreground rounded-md hover:bg-accent transition-colors", "aria-label": `Duplicate ${section.name}`, children: [_jsx(Copy, { size: 13 }), "Duplicate"] }), deleteConfirmId === section.id ? (_jsxs("div", { className: "ml-auto flex items-center gap-1", children: [_jsx("span", { className: "text-xs text-destructive mr-1", children: "Delete?" }), _jsx("button", { type: "button", onClick: () => handleDelete(section.id), className: "px-2 py-1 text-xs font-medium text-destructive-foreground bg-destructive rounded-md hover:bg-destructive/90 transition-colors", children: "Yes" }), _jsx("button", { type: "button", onClick: () => setDeleteConfirmId(null), className: "px-2 py-1 text-xs font-medium text-foreground border border-border rounded-md hover:bg-accent transition-colors", children: "No" })] })) : (_jsxs("button", { type: "button", onClick: () => setDeleteConfirmId(section.id), className: "ml-auto flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-destructive rounded-md hover:bg-destructive/10 transition-colors", "aria-label": `Delete ${section.name}`, children: [_jsx(Trash2, { size: 13 }), "Delete"] }))] })] }, section.id))) }))] }));
|
|
124
|
+
}
|
|
125
|
+
function CategoryTab({ label, active, onClick }) {
|
|
126
|
+
return (_jsx("button", { type: "button", onClick: onClick, className: `px-3 py-2 text-sm transition-colors border-b-2 -mb-px ${active
|
|
127
|
+
? 'border-primary text-foreground font-medium'
|
|
128
|
+
: 'border-transparent text-muted-foreground hover:text-foreground'}`, children: label }));
|
|
129
|
+
}
|
|
130
|
+
function SectionForm({ initial, saving, onSave, onCancel }) {
|
|
131
|
+
const [name, setName] = useState(initial?.name ?? '');
|
|
132
|
+
const [description, setDescription] = useState(initial?.description ?? '');
|
|
133
|
+
const [category, setCategory] = useState(initial?.category ?? 'content');
|
|
134
|
+
function handleSubmit(e) {
|
|
135
|
+
e.preventDefault();
|
|
136
|
+
if (!name.trim())
|
|
137
|
+
return;
|
|
138
|
+
onSave({ name: name.trim(), description: description.trim(), category });
|
|
139
|
+
}
|
|
140
|
+
const treeSize = initial?.tree
|
|
141
|
+
? JSON.stringify(initial.tree).length
|
|
142
|
+
: null;
|
|
143
|
+
return (_jsxs("div", { className: "p-4 pr-8", children: [_jsxs("div", { className: "mb-6", children: [_jsxs("button", { type: "button", onClick: onCancel, className: "flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground transition-colors mb-3", "aria-label": "Back to saved sections", children: [_jsx(ArrowLeft, { size: 16 }), "Back"] }), _jsx("h1", { className: "text-2xl font-medium text-foreground", children: initial ? `Edit: ${initial.name}` : 'Create Saved Section' })] }), _jsxs("form", { onSubmit: handleSubmit, className: "max-w-lg space-y-4", children: [_jsxs("div", { children: [_jsxs("label", { htmlFor: "section-name", className: "block text-sm font-medium text-foreground mb-1", children: ["Name ", _jsx("span", { className: "text-destructive", children: "*" })] }), _jsx("input", { id: "section-name", type: "text", value: name, onChange: (e) => setName(e.target.value), required: true, placeholder: "e.g. Hero Banner", className: "w-full px-3 py-2 text-sm bg-background border border-input rounded-md focus:outline-none focus:ring-2 focus:ring-ring" })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "section-description", className: "block text-sm font-medium text-foreground mb-1", children: "Description" }), _jsx("textarea", { id: "section-description", value: description, onChange: (e) => setDescription(e.target.value), placeholder: "Optional description of this section...", rows: 3, className: "w-full px-3 py-2 text-sm bg-background border border-input rounded-md focus:outline-none focus:ring-2 focus:ring-ring resize-none" })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "section-category", className: "block text-sm font-medium text-foreground mb-1", children: "Category" }), _jsx("select", { id: "section-category", value: category, onChange: (e) => setCategory(e.target.value), className: "w-full px-3 py-2 text-sm bg-background border border-input rounded-md focus:outline-none focus:ring-2 focus:ring-ring", children: CATEGORIES.map((cat) => (_jsx("option", { value: cat, children: cat.charAt(0).toUpperCase() + cat.slice(1) }, cat))) })] }), treeSize !== null && (_jsx("div", { className: "rounded-md border border-border bg-muted p-3", children: _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Section tree editing is available in the page builder. Current tree size: ", (treeSize / 1024).toFixed(1), " KB"] }) })), _jsxs("div", { className: "flex items-center gap-3 pt-2", children: [_jsxs("button", { type: "submit", disabled: saving || !name.trim(), className: "flex items-center gap-2 rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed", children: [saving && _jsx(Loader2, { size: 14, className: "animate-spin" }), initial ? 'Save Changes' : 'Create Section'] }), _jsx("button", { type: "button", onClick: onCancel, disabled: saving, className: "px-4 py-2 text-sm font-medium text-foreground border border-border rounded-lg hover:bg-accent transition-colors disabled:opacity-50", children: "Cancel" })] })] })] }));
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=SavedSections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SavedSections.js","sourceRoot":"","sources":["../../../src/views/page-builder/SavedSections.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PageNode } from '@actuate-media/cms-core';
|
|
2
|
+
export interface TemplatePickerProps {
|
|
3
|
+
onSelect: (templateTree: PageNode) => void;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function TemplatePicker({ onSelect, onClose }: TemplatePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=TemplatePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplatePicker.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/TemplatePicker.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,CAAC,YAAY,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAkCD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,mBAAmB,2CAgJxE"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
4
|
+
import { X, Loader2, AlertTriangle, Layout, FileText, MapPin, Phone, BookOpen, File, } from 'lucide-react';
|
|
5
|
+
import { cmsApi } from '../../lib/api.js';
|
|
6
|
+
import { createEmptyPage } from '@actuate-media/cms-core';
|
|
7
|
+
const categoryIcons = {
|
|
8
|
+
landing: Layout,
|
|
9
|
+
blog: FileText,
|
|
10
|
+
contact: MapPin,
|
|
11
|
+
portfolio: BookOpen,
|
|
12
|
+
mobile: Phone,
|
|
13
|
+
};
|
|
14
|
+
const categoryColors = {
|
|
15
|
+
landing: 'bg-primary/10 text-primary',
|
|
16
|
+
blog: 'bg-accent text-foreground',
|
|
17
|
+
contact: 'bg-primary/10 text-primary',
|
|
18
|
+
portfolio: 'bg-accent text-foreground',
|
|
19
|
+
mobile: 'bg-primary/10 text-primary',
|
|
20
|
+
};
|
|
21
|
+
function resolveIcon(category) {
|
|
22
|
+
return categoryIcons[category] ?? File;
|
|
23
|
+
}
|
|
24
|
+
function resolveBadgeColor(category) {
|
|
25
|
+
return categoryColors[category] ?? 'bg-muted text-muted-foreground';
|
|
26
|
+
}
|
|
27
|
+
export function TemplatePicker({ onSelect, onClose }) {
|
|
28
|
+
const [templates, setTemplates] = useState([]);
|
|
29
|
+
const [loading, setLoading] = useState(true);
|
|
30
|
+
const [error, setError] = useState(null);
|
|
31
|
+
const fetchTemplates = useCallback(async () => {
|
|
32
|
+
setLoading(true);
|
|
33
|
+
setError(null);
|
|
34
|
+
const res = await cmsApi('/page-templates');
|
|
35
|
+
if (res.error) {
|
|
36
|
+
setError(res.error);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
setTemplates(res.data ?? []);
|
|
40
|
+
}
|
|
41
|
+
setLoading(false);
|
|
42
|
+
}, []);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
fetchTemplates();
|
|
45
|
+
}, [fetchTemplates]);
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
function handleKeyDown(e) {
|
|
48
|
+
if (e.key === 'Escape')
|
|
49
|
+
onClose();
|
|
50
|
+
}
|
|
51
|
+
document.addEventListener('keydown', handleKeyDown);
|
|
52
|
+
return () => document.removeEventListener('keydown', handleKeyDown);
|
|
53
|
+
}, [onClose]);
|
|
54
|
+
function handleBlankPage() {
|
|
55
|
+
onSelect(createEmptyPage());
|
|
56
|
+
onClose();
|
|
57
|
+
}
|
|
58
|
+
function handleTemplateSelect(template) {
|
|
59
|
+
onSelect(template.tree);
|
|
60
|
+
onClose();
|
|
61
|
+
}
|
|
62
|
+
return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center", role: "dialog", "aria-modal": "true", "aria-label": "Choose a template", children: [_jsx("div", { className: "absolute inset-0 bg-black/50 motion-safe:animate-in motion-safe:fade-in-0", onClick: onClose, "aria-hidden": "true" }), _jsxs("div", { className: "relative z-10 w-full max-w-2xl max-h-[80vh] bg-card rounded-xl shadow-2xl border border-border flex flex-col overflow-hidden", children: [_jsxs("div", { className: "flex items-center justify-between px-5 pt-5 pb-3", children: [_jsx("h2", { className: "text-lg font-medium text-foreground", children: "Choose a Template" }), _jsx("button", { type: "button", onClick: onClose, className: "p-1.5 rounded-md text-muted-foreground hover:text-foreground hover:bg-accent transition-colors", "aria-label": "Close", children: _jsx(X, { size: 18 }) })] }), _jsxs("div", { className: "flex-1 overflow-y-auto px-5 pb-5", children: [loading && (_jsx("div", { className: "flex items-center justify-center py-16", children: _jsx(Loader2, { className: "w-6 h-6 animate-spin text-muted-foreground" }) })), error && !loading && (_jsxs("div", { className: "flex flex-col items-center justify-center py-12 text-center", children: [_jsx(AlertTriangle, { size: 24, className: "text-destructive mb-2" }), _jsx("p", { className: "text-sm text-muted-foreground mb-3", children: error }), _jsx("button", { type: "button", onClick: fetchTemplates, className: "px-3 py-1.5 text-sm font-medium text-foreground border border-border rounded-md hover:bg-accent transition-colors", children: "Retry" })] })), !loading && !error && (_jsxs("div", { className: "grid grid-cols-2 md:grid-cols-3 gap-3", role: "list", "aria-label": "Available templates", children: [_jsxs("button", { type: "button", role: "listitem", onClick: handleBlankPage, className: "p-4 border border-border rounded-lg hover:border-primary cursor-pointer transition-colors bg-card text-left flex flex-col items-center gap-2 group focus:outline-none focus:ring-2 focus:ring-ring", children: [_jsx("div", { className: "w-10 h-10 rounded-md bg-muted flex items-center justify-center text-muted-foreground group-hover:bg-primary/10 group-hover:text-primary transition-colors", children: _jsx(File, { size: 20 }) }), _jsx("p", { className: "text-sm font-medium text-foreground text-center", children: "Blank Page" }), _jsx("p", { className: "text-xs text-muted-foreground text-center", children: "Start from scratch" })] }), templates.map((template) => {
|
|
63
|
+
const Icon = resolveIcon(template.category);
|
|
64
|
+
const badgeColor = resolveBadgeColor(template.category);
|
|
65
|
+
return (_jsxs("button", { type: "button", role: "listitem", onClick: () => handleTemplateSelect(template), className: "p-4 border border-border rounded-lg hover:border-primary cursor-pointer transition-colors bg-card text-left flex flex-col items-center gap-2 group focus:outline-none focus:ring-2 focus:ring-ring", children: [_jsx("div", { className: "w-10 h-10 rounded-md bg-accent flex items-center justify-center text-foreground group-hover:bg-primary/10 group-hover:text-primary transition-colors", children: _jsx(Icon, { size: 20 }) }), _jsx("p", { className: "text-sm font-medium text-foreground text-center truncate w-full", children: template.name }), template.description && (_jsx("p", { className: "text-xs text-muted-foreground text-center line-clamp-2", children: template.description })), _jsx("span", { className: `inline-block text-xs px-2 py-0.5 rounded-full ${badgeColor}`, children: template.category })] }, template.id));
|
|
66
|
+
})] }))] })] })] }));
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=TemplatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplatePicker.js","sourceRoot":"","sources":["../../../src/views/page-builder/TemplatePicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CTAPreview.d.ts","sourceRoot":"","sources":["../../../../src/views/page-builder/block-renderers/CTAPreview.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,OAAkB,EAAE,EAAE,iBAAiB,2CA4EzE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
export function CTAPreview({ data, variant = 'banner' }) {
|
|
4
|
+
const heading = data.heading || '';
|
|
5
|
+
const body = data.body || '';
|
|
6
|
+
const buttonText = data.buttonText || '';
|
|
7
|
+
const button = (_jsx("span", { className: "inline-block rounded-md bg-primary px-4 py-2 text-sm text-primary-foreground", children: buttonText || 'Click Here' }));
|
|
8
|
+
if (variant === 'inline') {
|
|
9
|
+
return (_jsxs("div", { className: "flex items-center justify-between gap-4 rounded-md border border-border p-4", children: [_jsxs("div", { className: "flex-1", children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: heading || _jsx("span", { className: "text-muted-foreground", children: "CTA Heading" }) }), body && (_jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: body }))] }), button] }));
|
|
10
|
+
}
|
|
11
|
+
if (variant === 'floating') {
|
|
12
|
+
return (_jsx("div", { className: "mx-auto max-w-md rounded-lg border border-border bg-card p-6 shadow-md", children: _jsxs("div", { className: "text-center", children: [_jsx("h3", { className: "text-lg font-medium text-foreground", children: heading || _jsx("span", { className: "text-muted-foreground", children: "CTA Heading" }) }), (body || !heading) && (_jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: body || 'Supporting text for the call to action' })), _jsx("div", { className: "mt-4", children: button })] }) }));
|
|
13
|
+
}
|
|
14
|
+
if (variant === 'split') {
|
|
15
|
+
return (_jsxs("div", { className: "flex items-center gap-6 rounded-md border border-border p-6", children: [_jsxs("div", { className: "flex-1", children: [_jsx("h3", { className: "text-lg font-medium text-foreground", children: heading || _jsx("span", { className: "text-muted-foreground", children: "CTA Heading" }) }), (body || !heading) && (_jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: body || 'Supporting text for the call to action' }))] }), _jsx("div", { className: "shrink-0", children: button })] }));
|
|
16
|
+
}
|
|
17
|
+
return (_jsxs("div", { className: "rounded-md border border-border bg-accent p-6 text-center", children: [_jsx("h3", { className: "text-lg font-medium text-foreground", children: heading || _jsx("span", { className: "text-muted-foreground", children: "CTA Heading" }) }), (body || !heading) && (_jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: body || 'Supporting text for the call to action' })), _jsx("div", { className: "mt-4", children: button })] }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=CTAPreview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CTAPreview.js","sourceRoot":"","sources":["../../../../src/views/page-builder/block-renderers/CTAPreview.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAIb,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAqB;IACxE,MAAM,OAAO,GAAI,IAAI,CAAC,OAAkB,IAAI,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAI,IAAI,CAAC,IAAe,IAAI,EAAE,CAAC;IACzC,MAAM,UAAU,GAAI,IAAI,CAAC,UAAqB,IAAI,EAAE,CAAC;IAErD,MAAM,MAAM,GAAG,CACb,eAAM,SAAS,EAAC,8EAA8E,YAC3F,UAAU,IAAI,YAAY,GACtB,CACR,CAAC;IAEF,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,CACL,eAAK,SAAS,EAAC,6EAA6E,aAC1F,eAAK,SAAS,EAAC,QAAQ,aACrB,YAAG,SAAS,EAAC,qCAAqC,YAC/C,OAAO,IAAI,eAAM,SAAS,EAAC,uBAAuB,4BAAmB,GACpE,EACH,IAAI,IAAI,CACP,YAAG,SAAS,EAAC,oCAAoC,YAAE,IAAI,GAAK,CAC7D,IACG,EACL,MAAM,IACH,CACP,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,CACL,cAAK,SAAS,EAAC,wEAAwE,YACrF,eAAK,SAAS,EAAC,aAAa,aAC1B,aAAI,SAAS,EAAC,qCAAqC,YAChD,OAAO,IAAI,eAAM,SAAS,EAAC,uBAAuB,4BAAmB,GACnE,EACJ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CACrB,YAAG,SAAS,EAAC,oCAAoC,YAC9C,IAAI,IAAI,wCAAwC,GAC/C,CACL,EACD,cAAK,SAAS,EAAC,MAAM,YAAE,MAAM,GAAO,IAChC,GACF,CACP,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,CACL,eAAK,SAAS,EAAC,6DAA6D,aAC1E,eAAK,SAAS,EAAC,QAAQ,aACrB,aAAI,SAAS,EAAC,qCAAqC,YAChD,OAAO,IAAI,eAAM,SAAS,EAAC,uBAAuB,4BAAmB,GACnE,EACJ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CACrB,YAAG,SAAS,EAAC,oCAAoC,YAC9C,IAAI,IAAI,wCAAwC,GAC/C,CACL,IACG,EACN,cAAK,SAAS,EAAC,UAAU,YAAE,MAAM,GAAO,IACpC,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,2DAA2D,aACxE,aAAI,SAAS,EAAC,qCAAqC,YAChD,OAAO,IAAI,eAAM,SAAS,EAAC,uBAAuB,4BAAmB,GACnE,EACJ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CACrB,YAAG,SAAS,EAAC,oCAAoC,YAC9C,IAAI,IAAI,wCAAwC,GAC/C,CACL,EACD,cAAK,SAAS,EAAC,MAAM,YAAE,MAAM,GAAO,IAChC,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CardsPreview.d.ts","sourceRoot":"","sources":["../../../../src/views/page-builder/block-renderers/CardsPreview.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAUpD,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,OAAkB,EAAE,EAAE,iBAAiB,2CAyD3E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Image } from 'lucide-react';
|
|
4
|
+
export function CardsPreview({ data, variant = 'grid-3' }) {
|
|
5
|
+
const items = data.items || [];
|
|
6
|
+
const placeholderItems = items.length > 0
|
|
7
|
+
? items
|
|
8
|
+
: [
|
|
9
|
+
{ title: 'Card Title', description: 'Card description text' },
|
|
10
|
+
{ title: 'Card Title', description: 'Card description text' },
|
|
11
|
+
{ title: 'Card Title', description: 'Card description text' },
|
|
12
|
+
];
|
|
13
|
+
const gridClass = variant === 'grid-2'
|
|
14
|
+
? 'grid grid-cols-2 gap-3'
|
|
15
|
+
: variant === 'grid-4'
|
|
16
|
+
? 'grid grid-cols-4 gap-3'
|
|
17
|
+
: variant === 'horizontal'
|
|
18
|
+
? 'flex gap-3 overflow-hidden'
|
|
19
|
+
: 'grid grid-cols-3 gap-3';
|
|
20
|
+
return (_jsx("div", { className: "rounded-md border border-border p-4", children: _jsx("div", { className: gridClass, children: placeholderItems.map((item, i) => (_jsxs("div", { className: `flex flex-col overflow-hidden rounded-md border border-border bg-card ${variant === 'horizontal' ? 'min-w-40' : ''}`, children: [_jsx("div", { className: "flex h-20 items-center justify-center bg-muted", children: item.image ? (_jsx("img", { src: item.image, alt: item.title || '', className: "h-full w-full object-cover" })) : (_jsx(Image, { size: 20, className: "text-muted-foreground" })) }), _jsxs("div", { className: "p-3", children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: item.title || (_jsx("span", { className: "text-muted-foreground", children: "Card Title" })) }), item.description && (_jsx("p", { className: "mt-1 text-xs text-muted-foreground line-clamp-2", children: item.description }))] })] }, i))) }) }));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=CardsPreview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CardsPreview.js","sourceRoot":"","sources":["../../../../src/views/page-builder/block-renderers/CardsPreview.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAWrC,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAqB;IAC1E,MAAM,KAAK,GAAI,IAAI,CAAC,KAAoB,IAAI,EAAE,CAAC;IAE/C,MAAM,gBAAgB,GACpB,KAAK,CAAC,MAAM,GAAG,CAAC;QACd,CAAC,CAAC,KAAK;QACP,CAAC,CAAC;YACE,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC7D,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC7D,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE;SAC9D,CAAC;IAER,MAAM,SAAS,GACb,OAAO,KAAK,QAAQ;QAClB,CAAC,CAAC,wBAAwB;QAC1B,CAAC,CAAC,OAAO,KAAK,QAAQ;YACpB,CAAC,CAAC,wBAAwB;YAC1B,CAAC,CAAC,OAAO,KAAK,YAAY;gBACxB,CAAC,CAAC,4BAA4B;gBAC9B,CAAC,CAAC,wBAAwB,CAAC;IAEnC,OAAO,CACL,cAAK,SAAS,EAAC,qCAAqC,YAClD,cAAK,SAAS,EAAE,SAAS,YACtB,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACjC,eAEE,SAAS,EAAE,yEAAyE,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,aAEhI,cAAK,SAAS,EAAC,gDAAgD,YAC5D,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACZ,cACE,GAAG,EAAE,IAAI,CAAC,KAAK,EACf,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EACrB,SAAS,EAAC,4BAA4B,GACtC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,uBAAuB,GAAG,CACtD,GACG,EACN,eAAK,SAAS,EAAC,KAAK,aAClB,YAAG,SAAS,EAAC,qCAAqC,YAC/C,IAAI,CAAC,KAAK,IAAI,CACb,eAAM,SAAS,EAAC,uBAAuB,2BAAkB,CAC1D,GACC,EACH,IAAI,CAAC,WAAW,IAAI,CACnB,YAAG,SAAS,EAAC,iDAAiD,YAC3D,IAAI,CAAC,WAAW,GACf,CACL,IACG,KAzBD,CAAC,CA0BF,CACP,CAAC,GACE,GACF,CACP,CAAC;AACJ,CAAC"}
|