The components library provides a theming framework that can be used within these components and beyond on your entire site, helping to maintain a cohesive design system.
The framework acts through a number of layers, where each one feeds down into the next. Its fully customisable implementation allows you to decouple or change these connections at any point, simply by overriding the css variables within your project.
1 - site variables are at the top of the style tree, and propagate through to the lower levels. This allows you to re theme a site with only a handful of variable changes.
2 - Primitive variables are computed from site variables, such as shades of a site colour.
3 - Semantic variables apply context to the site and primitive variables. These can exist as a specified primitive, such as default, light or dark shades of a colour. THey can also exist in a broader context, where foreground, background and border styles are given as sets that can be reused throughout. Classes are also provided in these cases to improve the developer experience and promote consistent styling.
4 - Component variables are specific to each component. These are documented on each components page respectively
In order to apply your own themes on top of the base styles, simply define the variables you want to change, and they will update across your site where they are used.
Theming System Visualised
Site Variables
Site Variables
The design system is based off the following site variables. These can be overridden to change the appearance of the entire site.
Colours
--color-site-primary - The primary or brand colour
--color-site-secondary - The secondary colour
--color--site-tertiary - The tertiary colour
--color-site-neutral - The neutral tone, typically a shade of grey
--color-site-attention - The attention colour
--color-site-success - The success colour
--color-site-error - The error colour
--color-site-promotion - The promotion colour, used sparingly to highlight
important information such as promotional items
Radius
--radius-site - The site radius for all rounded corners
Shadows
--shadow-site - The site shadow for all components
Colour Palette
The color scheme of a site is defined using the site variables shown below. From this, CSS calculations will generate a range of primitive shades centered around the site variable, where the site colour is 500 on a scale of 50 (lightest) to 950 (darkest). These can be individually changed by overriding their css definitions.
Semantic shades have been labeled. Default shades are provided when no suffix is given, such as --color-primary. Other semantic shades, such as ‘light’ are given by using the label as the suffix, e.g. --color-primary-light
primary
light
--color-primary-50
oklch( from var(--color-primary-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
50
--color-primary-100
oklch( from var(--color-primary-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
100
--color-primary-200
oklch( from var(--color-primary-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
200
--color-primary-300
oklch( from var(--color-primary-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
300
hover-light
--color-primary-400
oklch( from var(--color-primary-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
400
default
--color-primary-500
oklch(from var(--color-primary) l c h)
Click to copy to clipboard
Copied to clipboard
500
hover
--color-primary-600
oklch( from var(--color-primary-500) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
600
--color-primary-700
oklch( from var(--color-primary-600) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
700
--color-primary-800
oklch( from var(--color-primary-700) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
800
--color-primary-900
oklch( from var(--color-primary-800) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
900
dark
--color-primary-950
oklch( from var(--color-primary-900) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
950
secondary
light
--color-secondary-50
oklch( from var(--color-secondary-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
50
--color-secondary-100
oklch( from var(--color-secondary-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
100
--color-secondary-200
oklch( from var(--color-secondary-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
200
--color-secondary-300
oklch( from var(--color-secondary-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
300
hover-light
--color-secondary-400
oklch( from var(--color-secondary-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
400
default
--color-secondary-500
oklch(from var(--color-secondary) l c h)
Click to copy to clipboard
Copied to clipboard
500
hover
--color-secondary-600
oklch( from var(--color-secondary-500) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
600
--color-secondary-700
oklch( from var(--color-secondary-600) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
700
--color-secondary-800
oklch( from var(--color-secondary-700) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
800
--color-secondary-900
oklch( from var(--color-secondary-800) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
900
dark
--color-secondary-950
oklch( from var(--color-secondary-900) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
950
tertiary
light
--color-tertiary-50
oklch( from var(--color-tertiary-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
50
--color-tertiary-100
oklch( from var(--color-tertiary-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
100
--color-tertiary-200
oklch( from var(--color-tertiary-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
200
--color-tertiary-300
oklch( from var(--color-tertiary-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
300
hover-light
--color-tertiary-400
oklch( from var(--color-tertiary-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
400
default
--color-tertiary-500
oklch(from var(--color-tertiary) l c h)
Click to copy to clipboard
Copied to clipboard
500
hover
--color-tertiary-600
oklch( from var(--color-tertiary-500) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
600
--color-tertiary-700
oklch( from var(--color-tertiary-600) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
700
--color-tertiary-800
oklch( from var(--color-tertiary-700) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
800
--color-tertiary-900
oklch( from var(--color-tertiary-800) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
900
dark
--color-tertiary-950
oklch( from var(--color-tertiary-900) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
950
neutral
light
--color-neutral-50
oklch( from var(--color-neutral-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
50
--color-neutral-100
oklch( from var(--color-neutral-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
100
--color-neutral-200
oklch( from var(--color-neutral-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
200
--color-neutral-300
oklch( from var(--color-neutral-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
300
--color-neutral-400
oklch( from var(--color-neutral-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
400
default
--color-neutral-500
oklch(from var(--color-neutral) l c h)
Click to copy to clipboard
Copied to clipboard
500
--color-neutral-600
oklch( from var(--color-neutral-500) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
600
--color-neutral-700
oklch( from var(--color-neutral-600) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
700
--color-neutral-800
oklch( from var(--color-neutral-700) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
800
--color-neutral-900
oklch( from var(--color-neutral-800) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
900
dark
--color-neutral-950
oklch( from var(--color-neutral-900) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
950
attention
light
--color-attention-50
oklch( from var(--color-attention-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
50
--color-attention-100
oklch( from var(--color-attention-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
100
--color-attention-200
oklch( from var(--color-attention-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
200
--color-attention-300
oklch( from var(--color-attention-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
300
--color-attention-400
oklch( from var(--color-attention-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
400
default
--color-attention-500
oklch(from var(--color-attention) l c h)
Click to copy to clipboard
Copied to clipboard
500
--color-attention-600
oklch( from var(--color-attention-500) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
600
--color-attention-700
oklch( from var(--color-attention-600) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
700
--color-attention-800
oklch( from var(--color-attention-700) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
800
--color-attention-900
oklch( from var(--color-attention-800) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
900
--color-attention-950
oklch( from var(--color-attention-900) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
950
success
light
--color-success-50
oklch( from var(--color-success-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
50
--color-success-100
oklch( from var(--color-success-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
100
--color-success-200
oklch( from var(--color-success-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
200
--color-success-300
oklch( from var(--color-success-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
300
--color-success-400
oklch( from var(--color-success-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
400
default
--color-success-500
oklch(from var(--color-success) l c h)
Click to copy to clipboard
Copied to clipboard
500
--color-success-600
oklch( from var(--color-success-500) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
600
--color-success-700
oklch( from var(--color-success-600) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
700
--color-success-800
oklch( from var(--color-success-700) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
800
--color-success-900
oklch( from var(--color-success-800) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
900
--color-success-950
oklch( from var(--color-success-900) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
950
error
light
--color-error-50
oklch( from var(--color-error-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
50
--color-error-100
oklch( from var(--color-error-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
100
--color-error-200
oklch( from var(--color-error-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
200
--color-error-300
oklch( from var(--color-error-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
300
--color-error-400
oklch( from var(--color-error-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
400
default
--color-error-500
oklch(from var(--color-error) l c h)
Click to copy to clipboard
Copied to clipboard
500
--color-error-600
oklch( from var(--color-error-500) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
600
--color-error-700
oklch( from var(--color-error-600) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
700
--color-error-800
oklch( from var(--color-error-700) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
800
--color-error-900
oklch( from var(--color-error-800) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
900
--color-error-950
oklch( from var(--color-error-900) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
950
promotion
--color-promotion-50
oklch( from var(--color-promotion-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
50
--color-promotion-100
oklch( from var(--color-promotion-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
100
--color-promotion-200
oklch( from var(--color-promotion-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
200
--color-promotion-300
oklch( from var(--color-promotion-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
300
--color-promotion-400
oklch( from var(--color-promotion-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h
Click to copy to clipboard
Copied to clipboard
400
default
--color-promotion-500
oklch(from var(--color-promotion) l c h)
Click to copy to clipboard
Copied to clipboard
500
--color-promotion-600
oklch( from var(--color-promotion-500) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
600
--color-promotion-700
oklch( from var(--color-promotion-600) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
700
--color-promotion-800
oklch( from var(--color-promotion-700) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
800
--color-promotion-900
oklch( from var(--color-promotion-800) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
900
--color-promotion-950
oklch( from var(--color-promotion-900) calc(l * 0.8) calc(c * 1.1) h
Click to copy to clipboard
Copied to clipboard
950
@theme { /* Global Colors */ --color-primary: oklch(0.43 0.0147 248.17); --color-secondary: oklch(0.67 0.15 250); --color-tertiary: oklch(0.65 0.2 300); --color-neutral: oklch(0.64 0 0); --color-success: oklch(0.5 0.15 150); --color-attention: oklch(0.55 0.12 250); --color-error: oklch(0.55 0.2 30); --color-promotion: oklch(0.6 0.25 30); /* Primary Colors */ --color-primary-500: oklch(from var(--color-primary) l c h); --color-primary-400: oklch( from var(--color-primary-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-primary-300: oklch( from var(--color-primary-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-primary-200: oklch( from var(--color-primary-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-primary-100: oklch( from var(--color-primary-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-primary-50: oklch( from var(--color-primary-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-primary-600: oklch( from var(--color-primary-500) calc(l * 0.8) calc(c * 1.1) h ); --color-primary-700: oklch( from var(--color-primary-600) calc(l * 0.8) calc(c * 1.1) h ); --color-primary-800: oklch( from var(--color-primary-700) calc(l * 0.8) calc(c * 1.1) h ); --color-primary-900: oklch( from var(--color-primary-800) calc(l * 0.8) calc(c * 1.1) h ); --color-primary-950: oklch( from var(--color-primary-900) calc(l * 0.8) calc(c * 1.1) h ); /* Secondary Colors */ --color-secondary-500: oklch(from var(--color-secondary) l c h); --color-secondary-400: oklch( from var(--color-secondary-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-secondary-300: oklch( from var(--color-secondary-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-secondary-200: oklch( from var(--color-secondary-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-secondary-100: oklch( from var(--color-secondary-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-secondary-50: oklch( from var(--color-secondary-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-secondary-600: oklch( from var(--color-secondary-500) calc(l * 0.8) calc(c * 1.1) h ); --color-secondary-700: oklch( from var(--color-secondary-600) calc(l * 0.8) calc(c * 1.1) h ); --color-secondary-800: oklch( from var(--color-secondary-700) calc(l * 0.8) calc(c * 1.1) h ); --color-secondary-900: oklch( from var(--color-secondary-800) calc(l * 0.8) calc(c * 1.1) h ); --color-secondary-950: oklch( from var(--color-secondary-900) calc(l * 0.8) calc(c * 1.1) h ); /* Tertiary Colors */ --color-tertiary-500: oklch(from var(--color-tertiary) l c h); --color-tertiary-400: oklch( from var(--color-tertiary-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-tertiary-300: oklch( from var(--color-tertiary-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-tertiary-200: oklch( from var(--color-tertiary-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-tertiary-100: oklch( from var(--color-tertiary-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-tertiary-50: oklch( from var(--color-tertiary-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-tertiary-600: oklch( from var(--color-tertiary-500) calc(l * 0.8) calc(c * 1.1) h ); --color-tertiary-700: oklch( from var(--color-tertiary-600) calc(l * 0.8) calc(c * 1.1) h ); --color-tertiary-800: oklch( from var(--color-tertiary-700) calc(l * 0.8) calc(c * 1.1) h ); --color-tertiary-900: oklch( from var(--color-tertiary-800) calc(l * 0.8) calc(c * 1.1) h ); --color-tertiary-950: oklch( from var(--color-tertiary-900) calc(l * 0.8) calc(c * 1.1) h ); /* Neutral Colors */ --color-neutral-500: oklch(from var(--color-neutral) l c h); --color-neutral-400: oklch( from var(--color-neutral-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-neutral-300: oklch( from var(--color-neutral-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-neutral-200: oklch( from var(--color-neutral-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-neutral-100: oklch( from var(--color-neutral-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-neutral-50: oklch( from var(--color-neutral-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-neutral-600: oklch( from var(--color-neutral-500) calc(l * 0.8) calc(c * 1.1) h ); --color-neutral-700: oklch( from var(--color-neutral-600) calc(l * 0.8) calc(c * 1.1) h ); --color-neutral-800: oklch( from var(--color-neutral-700) calc(l * 0.8) calc(c * 1.1) h ); --color-neutral-900: oklch( from var(--color-neutral-800) calc(l * 0.8) calc(c * 1.1) h ); --color-neutral-950: oklch( from var(--color-neutral-900) calc(l * 0.8) calc(c * 1.1) h ); /* Status Colors */ --color-attention: oklch(from var(--color-attention) l c h); --color-attention-light: oklch(from var(--color-attention) 1 calc(c * 0.5) h); --color-success: oklch(from var(--color-success) l c h); --color-success-light: oklch(from var(--color-success) 1 calc(c * 0.5) h); --color-error: oklch(from var(--color-error) l c h); --color-error-light: oklch(from var(--color-error) 1 calc(c * 0.5) h); --color-promotion: oklch(from var(--color-promotion) l c h); /* Status Color Scales */ --color-attention-500: oklch(from var(--color-attention) l c h); --color-attention-400: oklch( from var(--color-attention-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-attention-300: oklch( from var(--color-attention-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-attention-200: oklch( from var(--color-attention-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-attention-100: oklch( from var(--color-attention-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-attention-50: oklch( from var(--color-attention-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-attention-600: oklch( from var(--color-attention-500) calc(l * 0.8) calc(c * 1.1) h ); --color-attention-700: oklch( from var(--color-attention-600) calc(l * 0.8) calc(c * 1.1) h ); --color-attention-800: oklch( from var(--color-attention-700) calc(l * 0.8) calc(c * 1.1) h ); --color-attention-900: oklch( from var(--color-attention-800) calc(l * 0.8) calc(c * 1.1) h ); --color-attention-950: oklch( from var(--color-attention-900) calc(l * 0.8) calc(c * 1.1) h ); --color-success-500: oklch(from var(--color-success) l c h); --color-success-400: oklch( from var(--color-success-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-success-300: oklch( from var(--color-success-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-success-200: oklch( from var(--color-success-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-success-100: oklch( from var(--color-success-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-success-50: oklch( from var(--color-success-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-success-600: oklch( from var(--color-success-500) calc(l * 0.8) calc(c * 1.1) h ); --color-success-700: oklch( from var(--color-success-600) calc(l * 0.8) calc(c * 1.1) h ); --color-success-800: oklch( from var(--color-success-700) calc(l * 0.8) calc(c * 1.1) h ); --color-success-900: oklch( from var(--color-success-800) calc(l * 0.8) calc(c * 1.1) h ); --color-success-950: oklch( from var(--color-success-900) calc(l * 0.8) calc(c * 1.1) h ); --color-error-500: oklch(from var(--color-error) l c h); --color-error-400: oklch( from var(--color-error-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-error-300: oklch( from var(--color-error-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-error-200: oklch( from var(--color-error-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-error-100: oklch( from var(--color-error-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-error-50: oklch( from var(--color-error-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-error-600: oklch( from var(--color-error-500) calc(l * 0.8) calc(c * 1.1) h ); --color-error-700: oklch( from var(--color-error-600) calc(l * 0.8) calc(c * 1.1) h ); --color-error-800: oklch( from var(--color-error-700) calc(l * 0.8) calc(c * 1.1) h ); --color-error-900: oklch( from var(--color-error-800) calc(l * 0.8) calc(c * 1.1) h ); --color-error-950: oklch( from var(--color-error-900) calc(l * 0.8) calc(c * 1.1) h ); --color-promotion-500: oklch(from var(--color-promotion) l c h); --color-promotion-400: oklch( from var(--color-promotion-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-promotion-300: oklch( from var(--color-promotion-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-promotion-200: oklch( from var(--color-promotion-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-promotion-100: oklch( from var(--color-promotion-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-promotion-50: oklch( from var(--color-promotion-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-promotion-600: oklch( from var(--color-promotion-500) calc(l * 0.8) calc(c * 1.1) h ); --color-promotion-700: oklch( from var(--color-promotion-600) calc(l * 0.8) calc(c * 1.1) h ); --color-promotion-800: oklch( from var(--color-promotion-700) calc(l * 0.8) calc(c * 1.1) h ); --color-promotion-900: oklch( from var(--color-promotion-800) calc(l * 0.8) calc(c * 1.1) h ); --color-promotion-950: oklch( from var(--color-promotion-900) calc(l * 0.8) calc(c * 1.1) h ); /* Core Colors */ --color-black: #000000; --color-white: #ffffff; /* Semantic Colors */ --color-primary: var(--color-primary-500); --color-primary-light: var(--color-primary-50); --color-primary-dark: var(--color-primary-950); --color-primary-hover: var(--color-primary-600); --color-primary-hover-light: var(--color-primary-400); --color-secondary: var(--color-secondary-500); --color-secondary-light: var(--color-secondary-50); --color-secondary-dark: var(--color-secondary-950); --color-secondary-hover: var(--color-secondary-600); --color-secondary-hover-light: var(--color-secondary-400); --color-tertiary: var(--color-tertiary-500); --color-tertiary-light: var(--color-tertiary-50); --color-tertiary-dark: var(--color-tertiary-950); --color-tertiary-hover: var(--color-tertiary-600); --color-tertiary-hover-light: var(--color-tertiary-400); --color-attention: var(--color-attention-500); --color-attention-light: var(--color-attention-50); --color-success: var(--color-success-500); --color-success-light: var(--color-success-50); --color-error: var(--color-error-500); --color-error-light: var(--color-error-50); --color-promotion: var(--color-promotion-500); /* Text Colors */ --color-high-emphasis: var(--color-neutral-600); --color-medium-emphasis: var(--color-neutral-400); /* Utility Colors */ --color-inactive: var(--color-neutral-300); --color-border-controls: var(--color-neutral-500); --color-border-cards: var(--color-neutral-300); --color-surface-cards: var(--color-neutral-200);}
@theme { /* Global Colors */ --color-primary: oklch(0.43 0.0147 248.17); --color-secondary: oklch(0.67 0.15 250); --color-tertiary: oklch(0.65 0.2 300); --color-neutral: oklch(0.64 0 0); --color-success: oklch(0.5 0.15 150); --color-attention: oklch(0.55 0.12 250); --color-error: oklch(0.55 0.2 30); --color-promotion: oklch(0.6 0.25 30); /* Primary Colors */ --color-primary-500: oklch(from var(--color-primary) l c h); --color-primary-400: oklch( from var(--color-primary-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-primary-300: oklch( from var(--color-primary-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-primary-200: oklch( from var(--color-primary-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-primary-100: oklch( from var(--color-primary-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-primary-50: oklch( from var(--color-primary-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-primary-600: oklch( from var(--color-primary-500) calc(l * 0.8) calc(c * 1.1) h ); --color-primary-700: oklch( from var(--color-primary-600) calc(l * 0.8) calc(c * 1.1) h ); --color-primary-800: oklch( from var(--color-primary-700) calc(l * 0.8) calc(c * 1.1) h ); --color-primary-900: oklch( from var(--color-primary-800) calc(l * 0.8) calc(c * 1.1) h ); --color-primary-950: oklch( from var(--color-primary-900) calc(l * 0.8) calc(c * 1.1) h ); /* Secondary Colors */ --color-secondary-500: oklch(from var(--color-secondary) l c h); --color-secondary-400: oklch( from var(--color-secondary-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-secondary-300: oklch( from var(--color-secondary-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-secondary-200: oklch( from var(--color-secondary-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-secondary-100: oklch( from var(--color-secondary-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-secondary-50: oklch( from var(--color-secondary-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-secondary-600: oklch( from var(--color-secondary-500) calc(l * 0.8) calc(c * 1.1) h ); --color-secondary-700: oklch( from var(--color-secondary-600) calc(l * 0.8) calc(c * 1.1) h ); --color-secondary-800: oklch( from var(--color-secondary-700) calc(l * 0.8) calc(c * 1.1) h ); --color-secondary-900: oklch( from var(--color-secondary-800) calc(l * 0.8) calc(c * 1.1) h ); --color-secondary-950: oklch( from var(--color-secondary-900) calc(l * 0.8) calc(c * 1.1) h ); /* Tertiary Colors */ --color-tertiary-500: oklch(from var(--color-tertiary) l c h); --color-tertiary-400: oklch( from var(--color-tertiary-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-tertiary-300: oklch( from var(--color-tertiary-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-tertiary-200: oklch( from var(--color-tertiary-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-tertiary-100: oklch( from var(--color-tertiary-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-tertiary-50: oklch( from var(--color-tertiary-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-tertiary-600: oklch( from var(--color-tertiary-500) calc(l * 0.8) calc(c * 1.1) h ); --color-tertiary-700: oklch( from var(--color-tertiary-600) calc(l * 0.8) calc(c * 1.1) h ); --color-tertiary-800: oklch( from var(--color-tertiary-700) calc(l * 0.8) calc(c * 1.1) h ); --color-tertiary-900: oklch( from var(--color-tertiary-800) calc(l * 0.8) calc(c * 1.1) h ); --color-tertiary-950: oklch( from var(--color-tertiary-900) calc(l * 0.8) calc(c * 1.1) h ); /* Neutral Colors */ --color-neutral-500: oklch(from var(--color-neutral) l c h); --color-neutral-400: oklch( from var(--color-neutral-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-neutral-300: oklch( from var(--color-neutral-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-neutral-200: oklch( from var(--color-neutral-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-neutral-100: oklch( from var(--color-neutral-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-neutral-50: oklch( from var(--color-neutral-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-neutral-600: oklch( from var(--color-neutral-500) calc(l * 0.8) calc(c * 1.1) h ); --color-neutral-700: oklch( from var(--color-neutral-600) calc(l * 0.8) calc(c * 1.1) h ); --color-neutral-800: oklch( from var(--color-neutral-700) calc(l * 0.8) calc(c * 1.1) h ); --color-neutral-900: oklch( from var(--color-neutral-800) calc(l * 0.8) calc(c * 1.1) h ); --color-neutral-950: oklch( from var(--color-neutral-900) calc(l * 0.8) calc(c * 1.1) h ); /* Status Colors */ --color-attention: oklch(from var(--color-attention) l c h); --color-attention-light: oklch(from var(--color-attention) 1 calc(c * 0.5) h); --color-success: oklch(from var(--color-success) l c h); --color-success-light: oklch(from var(--color-success) 1 calc(c * 0.5) h); --color-error: oklch(from var(--color-error) l c h); --color-error-light: oklch(from var(--color-error) 1 calc(c * 0.5) h); --color-promotion: oklch(from var(--color-promotion) l c h); /* Status Color Scales */ --color-attention-500: oklch(from var(--color-attention) l c h); --color-attention-400: oklch( from var(--color-attention-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-attention-300: oklch( from var(--color-attention-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-attention-200: oklch( from var(--color-attention-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-attention-100: oklch( from var(--color-attention-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-attention-50: oklch( from var(--color-attention-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-attention-600: oklch( from var(--color-attention-500) calc(l * 0.8) calc(c * 1.1) h ); --color-attention-700: oklch( from var(--color-attention-600) calc(l * 0.8) calc(c * 1.1) h ); --color-attention-800: oklch( from var(--color-attention-700) calc(l * 0.8) calc(c * 1.1) h ); --color-attention-900: oklch( from var(--color-attention-800) calc(l * 0.8) calc(c * 1.1) h ); --color-attention-950: oklch( from var(--color-attention-900) calc(l * 0.8) calc(c * 1.1) h ); --color-success-500: oklch(from var(--color-success) l c h); --color-success-400: oklch( from var(--color-success-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-success-300: oklch( from var(--color-success-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-success-200: oklch( from var(--color-success-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-success-100: oklch( from var(--color-success-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-success-50: oklch( from var(--color-success-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-success-600: oklch( from var(--color-success-500) calc(l * 0.8) calc(c * 1.1) h ); --color-success-700: oklch( from var(--color-success-600) calc(l * 0.8) calc(c * 1.1) h ); --color-success-800: oklch( from var(--color-success-700) calc(l * 0.8) calc(c * 1.1) h ); --color-success-900: oklch( from var(--color-success-800) calc(l * 0.8) calc(c * 1.1) h ); --color-success-950: oklch( from var(--color-success-900) calc(l * 0.8) calc(c * 1.1) h ); --color-error-500: oklch(from var(--color-error) l c h); --color-error-400: oklch( from var(--color-error-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-error-300: oklch( from var(--color-error-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-error-200: oklch( from var(--color-error-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-error-100: oklch( from var(--color-error-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-error-50: oklch( from var(--color-error-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-error-600: oklch( from var(--color-error-500) calc(l * 0.8) calc(c * 1.1) h ); --color-error-700: oklch( from var(--color-error-600) calc(l * 0.8) calc(c * 1.1) h ); --color-error-800: oklch( from var(--color-error-700) calc(l * 0.8) calc(c * 1.1) h ); --color-error-900: oklch( from var(--color-error-800) calc(l * 0.8) calc(c * 1.1) h ); --color-error-950: oklch( from var(--color-error-900) calc(l * 0.8) calc(c * 1.1) h ); --color-promotion-500: oklch(from var(--color-promotion) l c h); --color-promotion-400: oklch( from var(--color-promotion-500) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-promotion-300: oklch( from var(--color-promotion-400) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-promotion-200: oklch( from var(--color-promotion-300) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-promotion-100: oklch( from var(--color-promotion-200) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-promotion-50: oklch( from var(--color-promotion-100) calc(1 - (1 - l) * 0.6) calc(c * 0.8) h ); --color-promotion-600: oklch( from var(--color-promotion-500) calc(l * 0.8) calc(c * 1.1) h ); --color-promotion-700: oklch( from var(--color-promotion-600) calc(l * 0.8) calc(c * 1.1) h ); --color-promotion-800: oklch( from var(--color-promotion-700) calc(l * 0.8) calc(c * 1.1) h ); --color-promotion-900: oklch( from var(--color-promotion-800) calc(l * 0.8) calc(c * 1.1) h ); --color-promotion-950: oklch( from var(--color-promotion-900) calc(l * 0.8) calc(c * 1.1) h ); /* Core Colors */ --color-black: #000000; --color-white: #ffffff; /* Semantic Colors */ --color-primary: var(--color-primary-500); --color-primary-light: var(--color-primary-50); --color-primary-dark: var(--color-primary-950); --color-primary-hover: var(--color-primary-600); --color-primary-hover-light: var(--color-primary-400); --color-secondary: var(--color-secondary-500); --color-secondary-light: var(--color-secondary-50); --color-secondary-dark: var(--color-secondary-950); --color-secondary-hover: var(--color-secondary-600); --color-secondary-hover-light: var(--color-secondary-400); --color-tertiary: var(--color-tertiary-500); --color-tertiary-light: var(--color-tertiary-50); --color-tertiary-dark: var(--color-tertiary-950); --color-tertiary-hover: var(--color-tertiary-600); --color-tertiary-hover-light: var(--color-tertiary-400); --color-attention: var(--color-attention-500); --color-attention-light: var(--color-attention-50); --color-success: var(--color-success-500); --color-success-light: var(--color-success-50); --color-error: var(--color-error-500); --color-error-light: var(--color-error-50); --color-promotion: var(--color-promotion-500); /* Text Colors */ --color-high-emphasis: var(--color-neutral-600); --color-medium-emphasis: var(--color-neutral-400); /* Utility Colors */ --color-inactive: var(--color-neutral-300); --color-border-controls: var(--color-neutral-500); --color-border-cards: var(--color-neutral-300); --color-surface-cards: var(--color-neutral-200);}
Skins
A number of categories of element styles are provided. These should be applied throughout a site to maintain visual consistency, and allow for site wide theming at the css layer - although they can be overridden (for example by tailwind classes) at each use case without effecting other instances.
Each set defines the background, foreground and border colours at both a default state, and in states where there is interaction.
By default, the site radius is applied to all rounded corners. This can be overridden using custom CSS or tailwind at a per use case level, but it is advised to use the site radius provided to maintain consistency and allow for easy updates of your theme. If using other radii, it is advised to use a css calculation to calculate the radius from the site radius, to maintain consistency if the site radius is updated.
--radius-site
1rem
@theme { --radius-site: 1rem;}
@theme { --radius-site: 1rem;}
Shadow
Like with the radius, the use of a singular site shadow is promoted in order to maintain consistency and allow for easy updates of your theme. As with the radius, this can be overridden at a per use case level, but it is advised to use the site shadow provided.
Primitive animation speeds are provided using CSS variables to maintain consistency across different components. These variables control the duration of various animations throughout your project. As with other values, these can be overridden according to your sites preference.