Brand Colors
Three semantic color roles map to customer brand hues. The
actual palette options (blue, yellow, cyan, etc.) are defined
in core/color.tokens. Replace the references in
contextual/brand.tokens to change which palette
maps to each role.
-
Primary
-
Secondary
-
Accent
Primary
-
Primary-100
var(--color-primary-100)
light: #c0cefc
dark: #fff6d6
-
Primary-200
var(--color-primary-200)
light: #739ddd
dark: #ffeeb3
-
Primary-300
var(--color-primary-300)
light: #083273
dark: #ffe58a
-
Primary-400
var(--color-primary-400)
light: #062656
dark: #ffdc61
-
Primary-500
var(--color-primary-500)
light: #052049
dark: #ffd43b
-
Primary-600
var(--color-primary-600)
light: #041a3e
dark: #ffcd1a
-
Primary-700
var(--color-primary-700)
light: #031637
dark: #fac300
-
Primary-800
var(--color-primary-800)
light: #02102b
dark: #dbab00
-
Primary-900
var(--color-primary-900)
light: #010a20
dark: #b88f00
Secondary
-
Secondary-100
var(--color-secondary-100)
light: #fff6d6
dark: #c0cefc
-
Secondary-200
var(--color-secondary-200)
light: #ffeeb3
dark: #739ddd
-
Secondary-300
var(--color-secondary-300)
light: #ffe58a
dark: #083273
-
Secondary-400
var(--color-secondary-400)
light: #ffdc61
dark: #062656
-
Secondary-500
var(--color-secondary-500)
light: #ffd43b
dark: #052049
-
Secondary-600
var(--color-secondary-600)
light: #ffcd1a
dark: #041a3e
-
Secondary-700
var(--color-secondary-700)
light: #fac300
dark: #031637
-
Secondary-800
var(--color-secondary-800)
light: #dbab00
dark: #02102b
-
Secondary-900
var(--color-secondary-900)
light: #b88f00
dark: #010a20
Accent
-
Accent-100
var(--color-accent-100)
light: #e6fcff
dark: #fff6d6
-
Accent-200
var(--color-accent-200)
light: #b6f4ff
dark: #ffeeb3
-
Accent-300
var(--color-accent-300)
light: #74eaff
dark: #ffe58a
-
Accent-400
var(--color-accent-400)
light: #0dd3f5
dark: #ffdc61
-
Accent-500
var(--color-accent-500)
light: #0cc0df
dark: #ffd43b
-
Accent-600
var(--color-accent-600)
light: #0bafcb
dark: #ffcd1a
-
Accent-700
var(--color-accent-700)
light: #088095
dark: #fac300
-
Accent-800
var(--color-accent-800)
light: #077183
dark: #dbab00
Font Families
Three semantic font family aliases are defined in
contextual/brand.tokens. They reference the
actual font stacks in core/typography.tokens. To
change fonts, either update the alias references (e.g. point
heading to a different core family) or update the
core font stacks directly.
-
Base Family
Resolves to:
var(--font-family-sans)
The quick brown fox jumps over the lazy dog 0123456789
var(--font-family-base)
-
Heading Family
Resolves to:
var(--font-family-expressive)
The quick brown fox jumps over the lazy dog 0123456789
var(--font-family-heading)
-
Mono Family
Resolves to:
var(--font-family-code)
The quick brown fox jumps over the lazy dog 0123456789
var(--font-family-mono)
How to Override Brand Tokens
Two approaches are available, depending on how much
customization is needed.
Option A — CSS custom property override (simplest)
Provide a user.css file in the child template's
media directory. No build tooling required. Best for color
adjustments when the font stacks stay the same.
:root {
--color-primary-100: #e8f4fd;
--color-primary-500: #2e86c1;
--color-primary-800: #1a5276;
--color-secondary-500: #f39c12;
--font-family-base: "Open Sans", Arial, sans-serif;
--font-family-heading: "Montserrat", Verdana, sans-serif;
}
Option B — Token file override (full build)
Replace contextual/brand.tokens in the child
template build. This produces the most consistent output
because all derived tokens (surface colors, component tokens)
automatically update when the brand palette changes.
-
Copy
node_modules/@simplysmart-it/tmpl-jcrafts/design-system/src/assets/tokens/contextual/brand.tokens
to tokens/brand.tokens in the child repo.
-
Update the color references (e.g. replace
{ base.color.blue.*} with
{ base.color.teal.*} for primary) and the font
family values.
-
Run
npm run build — Terrazzo compiles the
tokens and Sass generates user.css.
{
"base": {
"color": {
"primary": {
"500": { "$value": "{base.color.teal.500}", "$type": "color" }
}
},
"font": {
"family": {
"heading": { "$value": "{base.font.family.expressive}", "$type": "fontFamily" }
}
}
}
}
Stable API guarantee
The following CSS custom properties are the
stable public API — child templates using
only these properties will not break when the parent template
updates:
--color-primary- { 100–900}
--color-secondary- { 100–900}
--color-accent- { 100–800}
-
--font-family-base,
--font-family-heading,
--font-family-mono
Neutral colors, spacing, surface colors, and component tokens
are structural — they automatically reflect brand changes but
should not be overridden directly.