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
nameandcodeintheme.yaml, keepparent: 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'scheckout.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/.offerstyles inassets/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 intheme.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 fromui/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_navis switched on for this demo, so the masthead carries Plugins and/pluginsis 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.yamldeclaringparent: forge.assets/css/theme.css— the Solina brand tokens, replacing the parent's file wholesale. Light only, by decision recorded indesign-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.