Deliver the full conservation-nonprofit theme per OVERRIDE-CONTRACT (Wave A).
- 49 mandatory builtin overrides in templates/overrides/earthen/ (chrome,
marketing, primitives, commerce, blog family, auth surface, page-suggestions),
re-skinned from the frozen builtins into botanical/paper-grain chrome with
all content fields, custom tags, provider vars, HTMX/auth wiring and JS
preserved verbatim. Stale button/card/image/text/heading overrides fixed to
the new field contract (link/style/label, media/text via {% img %}).
- 7 page templates: default, full-width, landing, article, blog-index, contact,
auth.
- Blocks rework: impact_metrics/partner_logos/botanical_divider/footer converted
to builtin overrides (deleted as theme blocks); donation_cta and field_note
kept; impact_report added. Persona blocks now 3.
- 5 presets (all 19 tokens; mossbed/sage-morning/ember-loam are dual-mode).
- Bundled Fraunces + Work Sans woff2 (OFL) in assets/fonts/; fonts.json,
RECOMMENDED_FONTS.md, RECOMMENDED_ICONS.md; required_icon_packs=[lucide].
- Seed: home/about/blog(3 posts)/contact/login as Rootline Trust, contact-form
formConfig.targetTable=contact_submissions + row_inserted email-admins workflow.
- Themed email-safe wrapper; on-theme master pages; CSS-first botanical motion.
Verified: make (build) exit 0, make archive-check exit 0, check-safety exit 0.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
14 lines
2.3 KiB
Plaintext
14 lines
2.3 KiB
Plaintext
{# divider override — carries the botanical divider DNA: a fern glyph flourish between soft hairline rules. Fields mirror builtin: variant (line|ornament|spacer-rule), weight, width, icon. Wiring preserved. #}
|
|
{% with variant=variant|default:"line" weight=weight|default:"thin" width=width|default:"full" %}
|
|
{% if variant == "ornament" %}
|
|
<div data-block-override="earthen:divider" class="bn-divider mx-auto my-10 flex flex-col items-center gap-2 {% if width == "narrow" %}max-w-[200px]{% elif width == "wide" %}max-w-3xl{% else %}w-full{% endif %}{% if class %} {{ class }}{% endif %}" role="separator">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="32" height="32" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" style="color:hsl(var(--primary));"><path d="M24 44V8"></path><path d="M24 12c-4-2-7-2-9 0M24 12c4-2 7-2 9 0"></path><path d="M24 18c-6-2-10-1-12 1M24 18c6-2 10-1 12 1"></path><path d="M24 25c-7-1-12 0-14 3M24 25c7-1 12 0 14 3"></path><path d="M24 33c-7 0-11 2-12 5M24 33c7 0 11 2 12 5"></path></svg>
|
|
<div class="flex w-full items-center gap-4"><span class="h-px flex-1" style="background-color:hsl(var(--border));"></span><span style="color:hsl(var(--accent));">::{{ icon|default:"lucide:leaf" }}:sm::</span><span class="h-px flex-1" style="background-color:hsl(var(--border));"></span></div>
|
|
</div>
|
|
{% elif variant == "spacer-rule" %}
|
|
<div data-block-override="earthen:divider" class="bn-divider mx-auto py-10 flex justify-center {% if width == "narrow" %}max-w-[200px]{% elif width == "wide" %}max-w-3xl{% else %}w-full{% endif %}{% if class %} {{ class }}{% endif %}" role="separator"><span class="w-16 rounded-full {% if weight == "thick" %}h-1{% elif weight == "medium" %}h-0.5{% else %}h-px{% endif %}" style="background-color:hsl(var(--border));"></span></div>
|
|
{% else %}
|
|
<div data-block-override="earthen:divider" class="bn-divider mx-auto my-8 flex justify-center {% if width == "narrow" %}max-w-[200px]{% elif width == "wide" %}max-w-3xl{% else %}w-full{% endif %}{% if class %} {{ class }}{% endif %}" role="separator"><span class="w-full rounded-full {% if weight == "thick" %}h-1{% elif weight == "medium" %}h-0.5{% else %}h-px{% endif %}" style="background-color:hsl(var(--border));"></span></div>
|
|
{% endif %}
|
|
{% endwith %}
|