new core element: cta (call-to-action strip) #91

Closed
opened 2026-07-18 02:25:31 +02:00 by dominik.polakovics · 1 comment

What to build

A new cta core element: a full-width tinted call-to-action strip with centered content, distinct from hero (which remains the page lead). Sidecar + shortcode + deckle theme CSS.

Sidecar (scaffold/editor/elements/cta.yaml):

version: 1
label: Call to action
group: content
body:
  policy: rte
  allow: [bold, italic, link]
  allowedInline: [button]
placement:
  allowedIn: [page]
params:
  - { name: heading, type: text, label: Heading }

Heading is optional (button-only CTAs are legitimate) and renders smaller than hero's h2 — use h3, or a styled p when semantics would create a heading-level skip.

Acceptance criteria

  • Sidecar as specified; shortcode at themes/deckle/layouts/shortcodes/cta.html renders heading + rte body with button chips
  • Theme CSS: full-width tinted strip, centered content, accessible contrast in the default palette
  • Element appears in the insert picker (content group), placeable only at page level
  • Empty-heading CTA renders without an empty heading tag
  • Round-trips through the editor: insert, add button chip, save, publish via real Hugo build

Blocked by

None - can start immediately

## What to build A new `cta` core element: a full-width tinted call-to-action strip with centered content, distinct from `hero` (which remains the page lead). Sidecar + shortcode + deckle theme CSS. Sidecar (`scaffold/editor/elements/cta.yaml`): ```yaml version: 1 label: Call to action group: content body: policy: rte allow: [bold, italic, link] allowedInline: [button] placement: allowedIn: [page] params: - { name: heading, type: text, label: Heading } ``` Heading is optional (button-only CTAs are legitimate) and renders smaller than hero's h2 — use h3, or a styled p when semantics would create a heading-level skip. ## Acceptance criteria - [ ] Sidecar as specified; shortcode at `themes/deckle/layouts/shortcodes/cta.html` renders heading + rte body with button chips - [ ] Theme CSS: full-width tinted strip, centered content, accessible contrast in the default palette - [ ] Element appears in the insert picker (content group), placeable only at page level - [ ] Empty-heading CTA renders without an empty heading tag - [ ] Round-trips through the editor: insert, add button chip, save, publish via real Hugo build ## Blocked by None - can start immediately
Author
Owner

This was generated by AI during triage.

Triage confirmed — enhancement, ready-for-agent. The issue body is the authoritative agent brief.

Verified against the codebase: the proposed sidecar is valid against the current schema — rte allow: lists and allowedInline chips are established (text.yaml uses allowedInline: [button, icon]), and the deckle theme's shortcode layout directory is where cta.html belongs. New element ⇒ scaffold/site/AGENTS.md scaffold-layout notes may need touching per CLAUDE.md if the element list is enumerated there.

> *This was generated by AI during triage.* **Triage confirmed — enhancement, ready-for-agent.** The issue body is the authoritative agent brief. Verified against the codebase: the proposed sidecar is valid against the current schema — rte `allow:` lists and `allowedInline` chips are established (`text.yaml` uses `allowedInline: [button, icon]`), and the deckle theme's shortcode layout directory is where `cta.html` belongs. New element ⇒ `scaffold/site/AGENTS.md` scaffold-layout notes may need touching per CLAUDE.md if the element list is enumerated there.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Cloonar/deckle#91
No description provided.