Convert the Art Deco theme from a wasm (Go+templ) plugin to a fully codeless
.bnp: pure declaration the host runs, no plugin.wasm, no block/core dependency.
- blocks/: blocks.yaml (7 fully-qualified art-deco:* keys) + per-block
.schema.json (moved from schemas/) + .ninjatpl transcribed byte-for-byte
(modulo whitespace) from the templ sources.
- templates/art-deco/{default,landing,article,full-width}.ninjatpl — page
layouts.
- templates/overrides/art-deco/{heading,text,button,image}.ninjatpl.
- templates/email/art-deco.ninjatpl.
- manifest.yaml (system/page templates, template_overrides, email_wrappers,
theme_presets, bundled_fonts, master_pages, css input_css_append) +
master_pages.json.
- plugin.mod bumped to 0.2.0; [compatibility] block_core dropped (codeless has
no core dependency).
- Deleted all Go/templ/*_templ.go, go.mod/go.sum; Makefile rewritten to the
codeless build/verify/publish targets.
Render parity verified against the prior templ output (static pongo2 harness,
whitespace-normalised): all 7 blocks, 4 overrides and the email wrapper match.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
10 lines
2.2 KiB
Plaintext
10 lines
2.2 KiB
Plaintext
<section data-block="art-deco:press_quote" class="py-16">
|
|
<div class="max-w-3xl mx-auto px-4 text-center">
|
|
<div class="h-6 mb-6 deco-sunburst" aria-hidden="true"></div>
|
|
<blockquote class="italic text-2xl md:text-3xl leading-snug" style="font-family: var(--font-body, "Cormorant Garamond", "Cormorant", Georgia, serif); font-style: italic; color: hsl(var(--foreground));">{% if quote %}{{ quote|safe }}{% else %}<span style="color: hsl(var(--muted-foreground));">Add a press quote to populate this block.</span>{% endif %}</blockquote>
|
|
{% if stars|integer > 0 %}<div class="mt-4 flex justify-center gap-1" aria-label="Star rating" data-stars="{{ stars|integer }}">{% if stars|integer >= 1 %}<span data-deco-star="filled" aria-hidden="true" style="color: hsl(var(--primary));">★</span>{% else %}<span data-deco-star="empty" aria-hidden="true" style="color: hsl(var(--muted-foreground));">☆</span>{% endif %}{% if stars|integer >= 2 %}<span data-deco-star="filled" aria-hidden="true" style="color: hsl(var(--primary));">★</span>{% else %}<span data-deco-star="empty" aria-hidden="true" style="color: hsl(var(--muted-foreground));">☆</span>{% endif %}{% if stars|integer >= 3 %}<span data-deco-star="filled" aria-hidden="true" style="color: hsl(var(--primary));">★</span>{% else %}<span data-deco-star="empty" aria-hidden="true" style="color: hsl(var(--muted-foreground));">☆</span>{% endif %}{% if stars|integer >= 4 %}<span data-deco-star="filled" aria-hidden="true" style="color: hsl(var(--primary));">★</span>{% else %}<span data-deco-star="empty" aria-hidden="true" style="color: hsl(var(--muted-foreground));">☆</span>{% endif %}{% if stars|integer >= 5 %}<span data-deco-star="filled" aria-hidden="true" style="color: hsl(var(--primary));">★</span>{% else %}<span data-deco-star="empty" aria-hidden="true" style="color: hsl(var(--muted-foreground));">☆</span>{% endif %}</div>{% endif %}
|
|
{% if source %}<p class="mt-6 deco-caps text-xs" style="font-family: var(--font-heading, "Italiana", "Cinzel", Georgia, serif); color: hsl(var(--muted-foreground));">{{ source }}</p>{% endif %}
|
|
<div class="h-6 mt-6 deco-scallop" aria-hidden="true"></div>
|
|
</div>
|
|
</section>
|