feat(art-deco): bundle Cinzel/Cormorant @font-face + declare required_icon_packs

Host does not consume LoadedPlugin.BundledFonts, so declare @font-face rules
against served /templates/art-deco/fonts/*.woff2 and point preset
typography.fontHeading/body at template:art-deco:<Family>. Declare
required_icon_packs [lucide, simple-icons] so sprite URLs resolve on fresh install.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Alex Dunmow 2026-07-06 20:43:04 +08:00
parent 025b13dd48
commit 1b7f273118
2 changed files with 38 additions and 0 deletions

View File

@ -3,6 +3,7 @@
theme_presets: presets.json
bundled_fonts: fonts.json
master_pages: master_pages.json
required_icon_packs: [lucide, simple-icons]
system_templates:
- key: art-deco
@ -115,6 +116,19 @@ css:
* Font families always come from var(--font-heading|body|mono, <fallback>).
*/
/* Bundled display faces. The host does not yet emit @font-face for
* bundled_fonts (LoadedPlugin.BundledFonts is unconsumed), so the theme
* declares its own faces against the served artifact paths
* (/templates/art-deco/fonts/...). Presets set typography.fontHeading/body
* to template:art-deco:<Family> so --font-heading/--font-body resolve to
* these families. */
@font-face { font-family: 'Cinzel'; src: url('/templates/art-deco/fonts/cinzel-400.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Cinzel'; src: url('/templates/art-deco/fonts/cinzel-700.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'Cormorant Garamond'; src: url('/templates/art-deco/fonts/cormorant-garamond-400.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Cormorant Garamond'; src: url('/templates/art-deco/fonts/cormorant-garamond-400-italic.woff2') format('woff2'); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: 'Cormorant Garamond'; src: url('/templates/art-deco/fonts/cormorant-garamond-600.woff2') format('woff2'); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: 'Cormorant Garamond'; src: url('/templates/art-deco/fonts/cormorant-garamond-700.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; }
@layer utilities {
/* deco-rule — hairline gold rule, 1px ascending to 2px on accent lines. */
.deco-rule {

View File

@ -5,6 +5,12 @@
"description": "Jet black lifted by champagne gold — the default Art Deco palette.",
"theme": {
"mode": "both",
"typography": {
"fontHeading": "template:art-deco:Cinzel",
"fontBody": "template:art-deco:Cormorant Garamond",
"fontSizeBase": "17",
"lineHeightBase": "1.6"
},
"lightColors": {
"background": "40 30% 96%",
"foreground": "40 20% 10%",
@ -55,6 +61,12 @@
"description": "Soft ivory by day, warm ember by night, with rose-gold flourishes for weddings and jewellers.",
"theme": {
"mode": "both",
"typography": {
"fontHeading": "template:art-deco:Cinzel",
"fontBody": "template:art-deco:Cormorant Garamond",
"fontSizeBase": "17",
"lineHeightBase": "1.6"
},
"lightColors": {
"background": "36 40% 97%",
"foreground": "20 15% 14%",
@ -105,6 +117,12 @@
"description": "Velvet-tinted ivory by day, deep onyx and gold stage-light by night, for theatre and after-dark dining.",
"theme": {
"mode": "both",
"typography": {
"fontHeading": "template:art-deco:Cinzel",
"fontBody": "template:art-deco:Cormorant Garamond",
"fontSizeBase": "17",
"lineHeightBase": "1.6"
},
"lightColors": {
"background": "280 15% 96%",
"foreground": "260 20% 12%",
@ -155,6 +173,12 @@
"description": "Deco emerald and gilt — parchment and jade by day, emerald lacquer and gold by night.",
"theme": {
"mode": "both",
"typography": {
"fontHeading": "template:art-deco:Cinzel",
"fontBody": "template:art-deco:Cormorant Garamond",
"fontSizeBase": "17",
"lineHeightBase": "1.6"
},
"lightColors": {
"background": "45 35% 95%",
"foreground": "160 25% 12%",