@actuate-media/cms-admin 0.72.2 → 0.73.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.
- package/CHANGELOG.md +39 -0
- package/dist/__tests__/components/resizable-aside.test.d.ts +2 -0
- package/dist/__tests__/components/resizable-aside.test.d.ts.map +1 -0
- package/dist/__tests__/components/resizable-aside.test.js +77 -0
- package/dist/__tests__/components/resizable-aside.test.js.map +1 -0
- package/dist/__tests__/components/toggle.test.d.ts +2 -0
- package/dist/__tests__/components/toggle.test.d.ts.map +1 -0
- package/dist/__tests__/components/toggle.test.js +17 -0
- package/dist/__tests__/components/toggle.test.js.map +1 -0
- package/dist/__tests__/views/post-fields-modal.render.test.js +38 -0
- package/dist/__tests__/views/post-fields-modal.render.test.js.map +1 -1
- package/dist/actuate-admin.css +1 -1
- package/dist/components/MediaPickerModal.d.ts.map +1 -1
- package/dist/components/MediaPickerModal.js +1 -1
- package/dist/components/MediaPickerModal.js.map +1 -1
- package/dist/components/TagInput.js +1 -1
- package/dist/components/TagInput.js.map +1 -1
- package/dist/components/ui/Modal.d.ts +17 -1
- package/dist/components/ui/Modal.d.ts.map +1 -1
- package/dist/components/ui/Modal.js +29 -3
- package/dist/components/ui/Modal.js.map +1 -1
- package/dist/components/ui/ResizableAside.d.ts +38 -0
- package/dist/components/ui/ResizableAside.d.ts.map +1 -0
- package/dist/components/ui/ResizableAside.js +209 -0
- package/dist/components/ui/ResizableAside.js.map +1 -0
- package/dist/components/ui/Toggle.d.ts.map +1 -1
- package/dist/components/ui/Toggle.js +4 -3
- package/dist/components/ui/Toggle.js.map +1 -1
- package/dist/fields/RichTextField.d.ts +3 -1
- package/dist/fields/RichTextField.d.ts.map +1 -1
- package/dist/fields/RichTextField.js +2 -2
- package/dist/fields/RichTextField.js.map +1 -1
- package/dist/views/Dashboard.d.ts.map +1 -1
- package/dist/views/Dashboard.js +1 -1
- package/dist/views/Dashboard.js.map +1 -1
- package/dist/views/page-editor/PageSectionEditor.js +1 -1
- package/dist/views/page-editor/PageSectionEditor.js.map +1 -1
- package/dist/views/page-editor/SectionInspector.d.ts +4 -1
- package/dist/views/page-editor/SectionInspector.d.ts.map +1 -1
- package/dist/views/page-editor/SectionInspector.js +14 -3
- package/dist/views/page-editor/SectionInspector.js.map +1 -1
- package/dist/views/post-editor/PostFieldsModal.d.ts +1 -1
- package/dist/views/post-editor/PostFieldsModal.d.ts.map +1 -1
- package/dist/views/post-editor/PostFieldsModal.js +152 -13
- package/dist/views/post-editor/PostFieldsModal.js.map +1 -1
- package/dist/views/post-editor/PostHeaderPanel.d.ts.map +1 -1
- package/dist/views/post-editor/PostHeaderPanel.js +2 -1
- package/dist/views/post-editor/PostHeaderPanel.js.map +1 -1
- package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
- package/dist/views/post-editor/PostSectionEditor.js +6 -1
- package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
- package/dist/views/post-editor/PostTemplateEditor.js +1 -1
- package/dist/views/post-editor/PostTemplateEditor.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/components/resizable-aside.test.tsx +130 -0
- package/src/__tests__/components/toggle.test.tsx +17 -0
- package/src/__tests__/views/post-fields-modal.render.test.tsx +54 -0
- package/src/components/MediaPickerModal.tsx +6 -2
- package/src/components/TagInput.tsx +1 -1
- package/src/components/ui/Modal.tsx +46 -3
- package/src/components/ui/ResizableAside.tsx +317 -0
- package/src/components/ui/Toggle.tsx +4 -3
- package/src/fields/RichTextField.tsx +4 -1
- package/src/styles/actuate-tokens.css +7 -2
- package/src/views/Dashboard.tsx +2 -1
- package/src/views/page-editor/PageSectionEditor.tsx +1 -1
- package/src/views/page-editor/SectionInspector.tsx +54 -26
- package/src/views/post-editor/PostFieldsModal.tsx +412 -174
- package/src/views/post-editor/PostHeaderPanel.tsx +15 -11
- package/src/views/post-editor/PostSectionEditor.tsx +9 -1
- package/src/views/post-editor/PostTemplateEditor.tsx +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
3
|
import { X } from 'lucide-react'
|
|
4
|
+
import { InspectorExpandButton, ResizableAside } from '../../components/ui/ResizableAside.js'
|
|
4
5
|
import { Toggle } from '../../components/ui/Toggle.js'
|
|
5
6
|
import type { PostHeaderConfig } from '../../lib/post-editor-service.js'
|
|
6
7
|
|
|
@@ -27,24 +28,27 @@ const TOGGLES: Array<{ key: keyof PostHeaderConfig; label: string }> = [
|
|
|
27
28
|
/** Inspector panel for the post header layout (template-level design config). */
|
|
28
29
|
export function PostHeaderPanel({ header, canEdit, onClose, onChange }: PostHeaderPanelProps) {
|
|
29
30
|
return (
|
|
30
|
-
<
|
|
31
|
+
<ResizableAside
|
|
31
32
|
role="dialog"
|
|
32
33
|
aria-label="Edit post header"
|
|
33
|
-
className="bg-card border-border flex h-full
|
|
34
|
+
className="bg-card border-border flex h-full flex-col border-l"
|
|
34
35
|
>
|
|
35
36
|
<div className="border-border flex items-center justify-between border-b px-4 py-3">
|
|
36
37
|
<div className="min-w-0">
|
|
37
38
|
<h2 className="text-foreground truncate text-sm font-medium">Post header</h2>
|
|
38
39
|
<p className="text-muted-foreground text-xs">Layout for every post of this type</p>
|
|
39
40
|
</div>
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
<div className="flex shrink-0 items-center gap-0.5">
|
|
42
|
+
<InspectorExpandButton />
|
|
43
|
+
<button
|
|
44
|
+
type="button"
|
|
45
|
+
onClick={onClose}
|
|
46
|
+
aria-label="Close header panel"
|
|
47
|
+
className="text-muted-foreground hover:text-foreground hover:bg-accent flex h-9 w-9 items-center justify-center rounded-md md:h-7 md:w-7"
|
|
48
|
+
>
|
|
49
|
+
<X className="h-4 w-4" aria-hidden />
|
|
50
|
+
</button>
|
|
51
|
+
</div>
|
|
48
52
|
</div>
|
|
49
53
|
|
|
50
54
|
<div className="flex-1 space-y-6 overflow-y-auto p-4">
|
|
@@ -92,6 +96,6 @@ export function PostHeaderPanel({ header, canEdit, onClose, onChange }: PostHead
|
|
|
92
96
|
})}
|
|
93
97
|
</fieldset>
|
|
94
98
|
</div>
|
|
95
|
-
</
|
|
99
|
+
</ResizableAside>
|
|
96
100
|
)
|
|
97
101
|
}
|
|
@@ -301,6 +301,12 @@ export function PostSectionEditor({
|
|
|
301
301
|
setSaveState('idle')
|
|
302
302
|
}, [])
|
|
303
303
|
|
|
304
|
+
const handlePostBodyChange = useCallback((body: string) => {
|
|
305
|
+
setPost((prev) => (prev ? { ...prev, body } : prev))
|
|
306
|
+
setDirty(true)
|
|
307
|
+
setSaveState('idle')
|
|
308
|
+
}, [])
|
|
309
|
+
|
|
304
310
|
// ─── Save / publish ──────────────────────────────────────────────────
|
|
305
311
|
const handleSaveDraft = useCallback(async (): Promise<boolean> => {
|
|
306
312
|
if (!post) return false
|
|
@@ -558,7 +564,7 @@ export function PostSectionEditor({
|
|
|
558
564
|
/>
|
|
559
565
|
)}
|
|
560
566
|
|
|
561
|
-
<div className="flex flex-1 overflow-hidden">
|
|
567
|
+
<div className="relative flex flex-1 overflow-hidden">
|
|
562
568
|
<SectionsPanel
|
|
563
569
|
sections={post.sections}
|
|
564
570
|
selectedId={selectedId}
|
|
@@ -603,6 +609,8 @@ export function PostSectionEditor({
|
|
|
603
609
|
onSettingsChange={handleSettingsChange}
|
|
604
610
|
onMetaChange={handleMetaChange}
|
|
605
611
|
onToggleVisibility={() => handleToggleVisibility(selected.id)}
|
|
612
|
+
postBody={post.body}
|
|
613
|
+
onPostBodyChange={handlePostBodyChange}
|
|
606
614
|
/>
|
|
607
615
|
)}
|
|
608
616
|
</div>
|
|
@@ -248,7 +248,7 @@ export function PostTemplateEditor({
|
|
|
248
248
|
</div>
|
|
249
249
|
</header>
|
|
250
250
|
|
|
251
|
-
<div className="flex flex-1 overflow-hidden">
|
|
251
|
+
<div className="relative flex flex-1 overflow-hidden">
|
|
252
252
|
<SectionsPanel
|
|
253
253
|
sections={template.sections}
|
|
254
254
|
selectedId={selectedSectionId}
|