Basic theme: forkable neutral theme styling all shipped elements (design review) #15
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/deckle#15
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
The forkable starting-point theme (docs/DECISIONS.md D7, D24): clean neutral typography, header with tree-derived navigation (one dropdown level, honoring
hidden/menuTitle/weight), footer from tree-flagged pages, mobile-first styles for every element in the system library, no JS framework. Implements the theme contract:{{ partial "ce/attrs" . }}on every block element's root tag (emits data-ce-* markers only underhugo.IsServer), page-type declarations, no config beyond documented params.This slice is HITL: the visual result needs human design review before it becomes the default scaffold.
Acceptance criteria
ce/attrs; production build output contains no data-ce-* attributesthemes/and documented as "fork me" with a short customization guideBlocked by
Agent Brief
Category: enhancement
Summary: Build the forkable, neutral starting-point theme under
themes/: mobile-first styling for every element in the system library, a header with tree-derived navigation (one dropdown level honoringweight/hidden/menuTitle), a footer built from tree-flagged pages, no JS framework, and thece/attrstheme contract on every block element's root tag.Dependency note: this issue is hard-blocked by #14 (system element library). The theme styles the semantic, class-only markup that #14's shortcode templates emit — every element this theme must style, and the sample pages demonstrating them, come from that issue. The scheduler handles ordering. The issue body's
docs/DECISIONS.md D7, D24references point at a file that is not committed — this brief is self-contained.Note on
ready-for-human: this issue is deliberately labeledready-for-human, notready-for-agent. The implementation could well be agent-drafted, but acceptance hinges on subjective visual design judgment — the rendered result becomes the default scaffold every new site starts from (#17) — and it ends with an explicit human design-review approval, which an AFK agent cannot self-certify. An agent may be used as a drafting tool under human direction; the final call is human.Current behavior:
The sample site has only minimal hand-written layouts, enough to prove the harness, preview, and round-trip engine work; there is no theme and no
themes/directory. Once #14 lands, every v1 element exists as a shortcode template emitting semantic, theme-agnostic markup (classes only, no inline styles) with a matching sidecar — but nothing styles that markup, navigation is not derived from the page tree, and no mechanism marks rendered elements for the editor.Desired behavior:
A forkable theme. A self-contained Hugo theme lives under
themes/, intended to be copied into new sites byharness init(#17) and owned by the site developer from then on. Clean, neutral typography and spacing — a credible default, not a showcase. No JS framework; prefer CSS-only solutions, with small vanilla JS allowed only where strictly necessary (e.g. the mobile nav toggle). The theme ships a short "fork me" customization guide: where colors/typography/spacing live, how to restyle an element, how to extend a layout. It requires no site configuration beyond its documented params.Every element styled, mobile-first. All elements from #14's library render well-styled: grid (its full responsive column-width set), spacer, text, text-media, image, gallery, hero, quote, video-embed (including its pre-consent click-to-load facade), accordion, page-teasers, html, button, icon. Styles are written mobile-first and hold from 320px viewport width up with no horizontal overflow.
Header navigation from the page tree. The header nav derives from the content tree itself, not from a configured Hugo menu: entries ordered by
weight, pages flaggedhiddenexcluded,menuTitleoverriding the page title when present. Exactly one dropdown level — a section with children gets a dropdown listing them. The dropdown works on both touch and pointer devices and is keyboard-accessible (focus states, correct ARIA semantics).Footer from tree-flagged pages. Pages carrying a documented front-matter flag appear in the footer navigation — the typical use is imprint/privacy pages that are
hiddenfrom the header but must remain reachable.Theme contract for the editor. Every block element template's root tag carries
{{ partial "ce/attrs" . }}. The partial lives in the theme and emitsdata-ce-*attributes identifying the rendered element instance — enough for the click-to-select bridge (#16) to map a rendered DOM node back to the element in the page's parsed tree — and it emits them only whenhugo.IsServeris true. A production build (hugowithout server) contains zerodata-ce-*attributes. The theme also provides the layouts for the shipped page types (home, standard page, section list) so a scaffolded site works out of the box.Accessibility. A Lighthouse run against the sample site reports no accessibility failures attributable to theme markup: landmarks, heading order, contrast, focus visibility, nav semantics.
Sample site. The sample site uses the theme, and #14's example pages — one rendered example of every element — display fully styled, so the design review has something concrete to approve.
Key interfaces:
ce/attrspartial is a contract consumed by #16 — document what the emitteddata-ce-*markers mean (page identity plus element address within the page) and keep emission strictly behindhugo.IsServer.weight(nav ordering),hidden(exclude from header nav),menuTitle(nav label override), and a documented footer flag.Acceptance criteria:
themes/styles the sample site; every system element from #14 is demonstrated fully styled on example pagesweightordering,hiddenexclusion, andmenuTitleoverrides; one dropdown level works on touch and desktop and is keyboard-accessiblece/attrspartial; ahugo serverbuild carriesdata-ce-*markers and a productionhugobuild contains none (verified by a test)Out of scope:
harness init)Closing as superseded: the maintainer has decided on a clean-slate reset of the project (issue #29, PR #30). The v1 implementation this issue builds on is being removed and the plan will be re-drawn from scratch; this spec is retired rather than actioned.