@runwell/dawn-runwell
v1.4.4
Published
Runwell shared baseline for Shopify themes. Cherry-picked Dawn-shape layout, sections, snippets, assets, settings, and locales that every Runwell-managed store inherits via runwell-shopify sync. Tenants override visual identity, copy, and bespoke sections
Maintainers
Readme
@runwell/dawn-runwell
Shared theme baseline for Runwell-managed Shopify stores.
What this is
Every Runwell-managed Shopify store inherits a common set of layout, section, snippet, and asset files from this package. The baseline holds universal improvements (pixel scaffolding, color-scheme fallback, button styling, drawer panel solidity, image hygiene, scheme_classes init, locale schema fixes) that every tenant gets out of the box. Tenants override visual identity, copy, and bespoke sections in their own theme repos.
This is layer 1 of a three-layer architecture:
LAYER 3: tenant theme repo (per-client; settings_data, templates, brand assets, bespoke sections)
LAYER 2: @runwell/shopify-toolkit (feature modules: PDP enrichments, cart drawer cards, etc.)
LAYER 1: @runwell/dawn-runwell (this package: theme baseline)What ships
See baseline-manifest.json for the authoritative list. Summary:
layout/theme.liquid,layout/password.liquidwith 9 tenant-hook render points (tenant-head, tenant-meta-fallbacks, tenant-nav, tenant-body-start, tenant-body-end, tenant-footer-top, tenant-footer-bottom, tenant-product-extras, tenant-cart-extras). See TENANT-CUSTOMIZATION.md for the full guide.sections/header.liquid,sections/footer.liquid,sections/main-product.liquid(Dawn-shape, with toolkit anchor points).snippets/cart-drawer.liquid,snippets/card-product.liquid(with toolkit cart enrichments hooks).assets/runwell-overrides.css(universal Dawn-fork fixes).assets/runwell-pixels.js(GA4 + Meta + TikTok bootstrap).config/settings_schema.patches.jsonandlocales/en.default.schema.patches.json(sync engine merges these into the tenant's matching files).
Typography
Type scale flows from Dawn's two Theme Editor sliders (body_scale 100-130, heading_scale 100-150) through the CSS variables --font-body-scale and --font-heading-scale. The baseline does NOT override typography directly. The toolkit ships scale-aware tokens (see @runwell/shopify-toolkit _shared/css-typography) that wrap these variables, so module sizes scale uniformly when a merchant adjusts the sliders.
Each tenant decides its own scale values per brand. Defaults are Dawn's (100/100). To adjust:
- Theme Editor in admin: Theme settings > Typography. Drag the body and heading scale sliders.
- Or edit
config/settings_data.jsoncurrentpreset and setbody_scale/heading_scale, then push.
Tenant CSS overrides (e.g. assets/<tenant>-brand.css) should reference Dawn's scale variables when declaring custom font sizes:
.tenant-section__heading {
font-size: calc(var(--font-heading-scale) * clamp(3rem, 5vw, 4.8rem));
}
.tenant-section__lede {
font-size: calc(var(--font-body-scale) * 1.7rem);
}Or reference the toolkit-shipped tokens directly: var(--runwell-h2-size), var(--runwell-lede-size), etc.
How tenants consume it
Each tenant theme has a runwell.config.json that pins the baseline version:
{
"client": "lusha",
"store": "guabrasha.myshopify.com",
"baseline": "@runwell/dawn-runwell@^1.0.0",
"toolkit_version": "^0.8.0",
"brand": { "...": "..." },
"modules": { "...": "..." }
}runwell-shopify sync (from the toolkit CLI, version 0.9.0+) runs four stages in order:
- Pull baseline files from the pinned
@runwell/dawn-runwellversion into the tenant theme dir. Apply settings + locale patches. - Pull toolkit module files. Toolkit files override baseline files when they share a path.
- Apply tenant overrides from
tenant-overrides/directory. These win last. - Write
runwell-manifest.jsonwith provenance for every file:{ source: 'baseline' | 'toolkit' | 'tenant', version: '1.0.0', module?: '<name>' }.
Tenant hooks
Baseline references several optional tenant-controlled files. Each tenant ships them in their own repo as needed:
| File | What it does |
|---|---|
| snippets/tenant-head.liquid | Tenant-controlled <head> injection (extra fonts, SEO, schema.org). |
| snippets/tenant-meta-fallbacks.liquid | Per-tenant meta tags (OpenGraph fallbacks, etc). |
| snippets/tenant-nav.liquid | Hardcoded canonical nav (used when bypassing the Theme Editor menu picker). |
| assets/tenant-brand.css | Tenant brand CSS (fonts, color overrides, photography tone). Loaded after runwell-overrides.css. |
| assets/tenant-wordmark.svg | Brand wordmark used as header logo fallback. |
Missing tenant hooks render nothing without erroring (Shopify ignores missing snippets silently).
Updates
To upgrade a tenant to a new baseline version:
cd <tenant-theme-dir>
runwell-shopify upgrade-baseline @runwell/[email protected]
runwell-shopify sync
runwell-shopify qa
shopify theme push -t <THEME_ID> -s <store>upgrade-baseline writes a diff summary of what changed. Major version bumps may include breaking changes documented in baseline release notes.
Why Dawn lineage and not Skeleton
Skeleton is Shopify's modern minimal starter and is the better long-term foundation, but renaming the foundational sections (product.liquid vs Dawn's main-product.liquid, cart.liquid vs Dawn's cart-drawer) breaks merchant-saved Theme Editor settings on existing tenants. v1 of this baseline stays on Dawn lineage to make migration of current Lushi + Lusha tenants low-risk. v2 is planned as a Skeleton-based forward port once v1 stabilizes and we have more tenants to amortize the rewrite cost.
See claude-PM/projects/shopify-agent/dawn-runwell-architecture.md for the full plan.
License
UNLICENSED. Internal Runwell use only.
