The new Istrian oil harvest has landed · Free delivery over 60 €

Solina

Theme Kiwwwi 1.3.0

Forge Child

The starter child theme. Copy this folder per client.

Forge Child is deliberately tiny: a theme.yaml pointing at the parent, one stylesheet, one page and one overridden partial. Everything else — the layout, the header, the footer, every UI and section partial, the structural tokens and all component CSS — comes from Forge and is never copied here.

That is the whole per-client surface. Copy the folder, set the code in theme.yaml, replace the tokens in theme.css, write the homepage, and the site is a new brand on the same system.

The demo content is Solina, a Karst and Istrian pantry — small-batch olive oil, pršut, cheese and honey from named family producers. It exists to prove the parent works, not to be kept.

What is inside

Every file in it

Four files. If a fifth is needed, ask first whether it belongs in the parent behind a token or a theme option.

  • theme.yaml — name, code, and parent: forge
  • assets/css/theme.css — the brand tokens, replacing the parent's file
  • pages/home.htm — the homepage, overriding the parent's reference page
  • partials/site/announcement.htm — one overridden partial, as a worked example

How to start a client site

  • cp -r themes/forge-child themes/<client>
  • Set name and code in theme.yaml, keep parent: forge
  • Replace the tokens in assets/css/theme.css
  • Write pages/home.htm — mostly data, since the sections are parent partials
  • Set ACTIVE_THEME=<client> and fill the theme options in the backend
  • Start the client's own CHANGELOG.md on day one

See it running

Every link below is this site, not a screenshot.

  • Homepage The only page this theme actually owns
  • Any other page Served entirely by the parent — nothing is copied down

Changelog

[1.3.0] — 2026-09-08

Added

  • partials/shop/selection/checkout_gift.htm — a second worked override, and the one that shows the other mechanism. It is named after a selection rule's code, not after a placement, so it replaces the markup for that one rule wherever it sits. Any other rule at the checkout placement still renders through the parent's checkout.htm. Styled as a tinted offer panel rather than the plain block, because at checkout it is the only thing on the page asking for a decision the customer had not already made.
  • .offerpanel / .offer styles in assets/css/child.css.

Both overrides deliberately render the control through the parent's ui/add-button rather than restating it. That partial owns the cart wiring — the request handler, the update targets, the drawer suppression and the formless variant checkout needs. A copy here would drift the first time the parent changed, and nothing would say so.

Verified the fallback: renaming checkout_gift.htm away drops the rule straight back to the parent's checkout block with no error, and restoring it takes over again.

[1.2.0] — 2026-09-08

Added

  • assets/css/child.css — this site's own component CSS, replacing the parent's empty file. Brand tokens stay in theme.css; everything here derives from the parent's tokens.

  • partials/shop/selection/side_cart.htm — overrides only the side cart. Rows instead of cards: the drawer is ~340px and already scrolling, so a stacked card costs a screen of scrolling per suggestion. Three rows now fit where one card did, and it reads as a suggestion rather than as more catalogue. The other four placements still come from the parent untouched, which is the point of the per-variant split added in Forge 1.3.0. The add control is not restated here — it comes from ui/add-button, the one file that owns the cart wiring.

    This is a worked example as much as a design change. Delete both files and the side cart falls back to the parent's cards with nothing else affected.

[1.1.0] — 2026-09-08

Changed

  • show_plugins_nav is switched on for this demo, so the masthead carries Plugins and /plugins is reachable. The option is stored per theme, so copying this folder for a client does not carry the setting over.

[1.0.0]

Initial release. Reconstructed from the state of the theme before this file existed, so it carries no date.

Added

  • theme.yaml declaring parent: forge.
  • assets/css/theme.css — the Solina brand tokens, replacing the parent's file wholesale. Light only, by decision recorded in design-plan.md.
  • pages/home.htm — the demo homepage, overriding the parent's reference page.
  • partials/site/announcement.htm — an override showing how a single parent partial is replaced without copying anything else.