Unified two-row TYPO3-style docheader across page/view/media/edit modules #74
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/deckle#74
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What to build
Replace the four bespoke module headers —
.page-docheader(PagePane.tsx ~1753),.edit-pane__header(EditPane.tsx ~216),.media-toolbar(MediaModule.tsx ~1482),.preview-pane__head(PreviewPane.tsx ~236) — with one shared two-row, TYPO3-style docheader component, migrating all four modules onto it end-to-end (component, CSS, module JSX, tests).Agreed design (full decision record)
Structure — two-row, TYPO3-faithful docheader:
Button split — TYPO3-literal: left group holds ALL document actions including View and the viewport toggle. Right group is reserved for future system-level tools (shortcuts, refresh, help) and is empty everywhere today — it must still exist in the component.
Button presentation: icon (lucide) + text label on every button. Not icon-only.
Ordering convention (left group): Close/back leftmost → primary action (Save/Publish) → secondary saves → Properties → Undo → destructive (Discard) → View last.
Emphasis: exactly one green primary per bar; all other buttons flat gray. Page: Publish. Edit: Save. Media: Upload. View: none.
Per-module row 1 (approved):
[☁ Publish] [⚙ Properties] [↶ Undo] [↺ Discard] [↗ View][⬅ Close] [💾 Save]; row 2 unchanged; the "Saved" note moves to row 2 right. No disabled leftovers.[⬅ Close] [💾 Save] [💾 Save & Close](Close moves from last to first)[📁 New folder] [⬆ Upload]Per-module row 2 (approved):
/ products / widgets) — each segment resolving to a real ancestor page is clickable and navigates like the tree; title + git-state badge right.Viewport toggle: stays a segmented control (joined borders,
aria-pressed), restyled with shared tokens, as a second docheader primitive — not two pressed action buttons.Implementation notes
web/src/components/Docheader.tsxwith four slot props (buttons-left, buttons-right, context-left, context-right) +DocheaderButtonprimitive (icon, label, primary flag, disabled, title) + segmented-toggle primitive..docheaderCSS family consuming the tokens from #72; delete.page-docheader,.media-toolbar,.preview-pane__headheader rules, and.edit-pane__header/.btn-save-in-header usage..app-header, tree panepane__title, inner panel headers (media detail aside, layout-cell heads, element toolbars).data-testids stable (page-docheader,publish-page,edit-header,edit-save,edit-save-close,edit-close,media-toolbar, …); update tests only where ordering/DOM structure assertions break.nix shell nixpkgs#go --command ...;web/distneeded forgo test ./....scaffold/site/AGENTS.mdunaffected (admin-UI-only change).Acceptance criteria
Docheadercomponent; the four legacy header class families are gone from styles.css and JSX.data-testids unchanged;go test ./...and the web test suite pass.Blocked by