What you actually inherit
Inheriting from a parent theme in Dune isn't block-level template inheritance — it's whole-file fallback, resolved child → parent for a few specific things:
templates/*.tsx— any template a child theme doesn't define falls back to the one here. Defineblog.tsxin your own theme and only that file is overridden;search.tsx,error.tsx, and the rest still resolve to this package's copies.components/layout.tsx— theLayoutprop every template receives resolves through the same chain. A child that ships its own layout gets it automatically threaded into every inherited template too.locales/*.json— merged per key. A child overriding one string doesn't need to copy the rest.
Two things deliberately don't inherit: config_schema in
theme.yaml (the admin UI only reads the active theme's manifest — copy
over the keys your templates actually reference), and
mdx-components.ts (Dune loads only the active theme's file; re-export
and extend the base one if you want its components too).
The theme's own README has the full breakdown, including the two
patterns for building on top of this — restyling the base outright, or
borrowing just the behavioral templates (search, error, section)
inside a fully independent layout.