@actuate-media/cms-admin 0.47.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/__tests__/views/use-site-preview.render.test.d.ts +2 -0
  3. package/dist/__tests__/views/use-site-preview.render.test.d.ts.map +1 -0
  4. package/dist/__tests__/views/use-site-preview.render.test.js +86 -0
  5. package/dist/__tests__/views/use-site-preview.render.test.js.map +1 -0
  6. package/dist/views/page-editor/EditorTopBar.d.ts +8 -1
  7. package/dist/views/page-editor/EditorTopBar.d.ts.map +1 -1
  8. package/dist/views/page-editor/EditorTopBar.js +7 -3
  9. package/dist/views/page-editor/EditorTopBar.js.map +1 -1
  10. package/dist/views/page-editor/PageSectionEditor.d.ts.map +1 -1
  11. package/dist/views/page-editor/PageSectionEditor.js +14 -1
  12. package/dist/views/page-editor/PageSectionEditor.js.map +1 -1
  13. package/dist/views/page-editor/SitePreviewFrame.d.ts +18 -0
  14. package/dist/views/page-editor/SitePreviewFrame.d.ts.map +1 -0
  15. package/dist/views/page-editor/SitePreviewFrame.js +45 -0
  16. package/dist/views/page-editor/SitePreviewFrame.js.map +1 -0
  17. package/dist/views/page-editor/useSitePreview.d.ts +33 -0
  18. package/dist/views/page-editor/useSitePreview.d.ts.map +1 -0
  19. package/dist/views/page-editor/useSitePreview.js +72 -0
  20. package/dist/views/page-editor/useSitePreview.js.map +1 -0
  21. package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
  22. package/dist/views/post-editor/PostSectionEditor.js +14 -1
  23. package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
  24. package/package.json +2 -2
  25. package/src/__tests__/views/use-site-preview.render.test.tsx +122 -0
  26. package/src/views/page-editor/EditorTopBar.tsx +31 -0
  27. package/src/views/page-editor/PageSectionEditor.tsx +33 -8
  28. package/src/views/page-editor/SitePreviewFrame.tsx +85 -0
  29. package/src/views/page-editor/useSitePreview.ts +117 -0
  30. package/src/views/post-editor/PostSectionEditor.tsx +35 -10
@@ -42,6 +42,8 @@ import {
42
42
  } from '../page-editor/sections/index.js'
43
43
  import { DEFAULT_VIEWPORT, type ViewportId } from '../page-editor/viewports.js'
44
44
  import { EditorTopBar, type SaveState } from '../page-editor/EditorTopBar.js'
45
+ import { SitePreviewFrame } from '../page-editor/SitePreviewFrame.js'
46
+ import { useSitePreview } from '../page-editor/useSitePreview.js'
45
47
  import { SectionsPanel } from '../page-editor/SectionsPanel.js'
46
48
  import { SectionInspector } from '../page-editor/SectionInspector.js'
47
49
  import { AddSectionModal } from '../page-editor/AddSectionModal.js'
@@ -312,6 +314,18 @@ export function PostSectionEditor({
312
314
  }
313
315
  }, [post, documentId, postType, onNavigate])
314
316
 
317
+ // Inline branded preview — iframe of the public site rendering this draft.
318
+ const sitePreview = useSitePreview({
319
+ collection: postType,
320
+ documentId: post?.id,
321
+ slug: post?.slug,
322
+ urlPrefix: config?.collections?.[postType]?.urlPrefix ?? postType,
323
+ siteUrl: config?.seo?.siteUrl,
324
+ dirty,
325
+ saveState,
326
+ saveDraft: handleSaveDraft,
327
+ })
328
+
315
329
  const requestPublish = useCallback(() => {
316
330
  if (!post) return
317
331
  const result = validatePost(post, true)
@@ -491,6 +505,8 @@ export function PostSectionEditor({
491
505
  onBack={() => guardedNavigate('/posts')}
492
506
  onPreview={handlePreview}
493
507
  onViewOnSite={post.id ? handleViewOnSite : undefined}
508
+ sitePreview={sitePreview.active}
509
+ onToggleSitePreview={post.id && post.slug ? sitePreview.toggle : undefined}
494
510
  onHistory={post.id ? () => setHistoryOpen(true) : undefined}
495
511
  onOpenSettings={() => setFieldsOpen(true)}
496
512
  onSaveDraft={handleSaveDraft}
@@ -537,16 +553,25 @@ export function PostSectionEditor({
537
553
  />
538
554
 
539
555
  <div className="flex-1 overflow-hidden">
540
- <PostEditorCanvas
541
- sections={post.sections}
542
- header={header}
543
- context={context}
544
- selectedId={selectedId}
545
- viewport={viewport}
546
- onSelect={setSelectedId}
547
- onAddSection={() => setAddOpen(true)}
548
- structuralTypes={structuralTypes}
549
- />
556
+ {sitePreview.active ? (
557
+ <SitePreviewFrame
558
+ src={sitePreview.url}
559
+ viewport={viewport}
560
+ reloadKey={sitePreview.reloadKey}
561
+ title={`Site preview: ${post.title || `New ${typeLabel}`}`}
562
+ />
563
+ ) : (
564
+ <PostEditorCanvas
565
+ sections={post.sections}
566
+ header={header}
567
+ context={context}
568
+ selectedId={selectedId}
569
+ viewport={viewport}
570
+ onSelect={setSelectedId}
571
+ onAddSection={() => setAddOpen(true)}
572
+ structuralTypes={structuralTypes}
573
+ />
574
+ )}
550
575
  </div>
551
576
 
552
577
  {selected && (