Saas UI theme tokens
The default Saas UI theme tokens
The Saas UI theme is loosely based on the excellent Chakra UI theme. It has a neutral style that looks great out of the box. The theme comes with a bunch of additions that make it easy to adjust it to your brand.
Source
@saas-ui/theme
- 2.11.4 (latest)
Colors#
Add a theme.colors object to provide colors for your project. By default these
colors can be referenced by the color, borderColor, backgroundColor,
fill, stroke, styles.
More information about creating your custom palette.
// default color tokensconst palette = {transparent: 'transparent',black: '#000',white: '#fff',gray: '#1f2937',yellow: '#fbbf24',red: '#d00b00',green: '#10b981',indigo: '#6d5ace',blue: '#1e3a8a',}export default {primary: palette.purple,secondary: palette.teal,...palette,}
Black & White#
Primary & Secondary#
Gray#
Red#
Orange#
Yellow#
Green#
Teal#
Blue#
Cyan#
Purple#
Pink#
Typography#
To manage Typography options, the theme object supports the following keys:
fonts(font families)fontSizesfontWeightslineHeightsletterSpacings
// example theme objectexport default {colors: {...},fonts: {body: "Inter, sans-serif",heading: "Inter, sans-serif"},fontSizes: {xs: '0.75rem',sm: '0.8125rem',md: '0.875rem',lg: '1',xl: '1.125rem','2xl': '1.5rem','3xl': '1.875rem','4xl': '2.25rem','5xl': '3rem','6xl': '3.75rem','7xl': '4.5rem','8xl': '6rem','9xl': '8rem',},fontWeights: {hairline: 100,thin: 200,light: 300,normal: 400,medium: 500,semibold: 600,bold: 700,extrabold: 800,black: 900,},lineHeights: {normal: "normal",none: 1,shorter: 1.25,short: 1.375,base: 1.5,tall: 1.625,taller: "2","3": ".75rem","4": "1rem","5": "1.25rem","6": "1.5rem","7": "1.75rem","8": "2rem","9": "2.25rem","10": "2.5rem",},letterSpacings: {tighter: "-0.05em",tight: "-0.025em",normal: "0",wide: "0.025em",wider: "0.05em",widest: "0.1em",},};
Breakpoints#
Saas UI comes with an predefined set of breakpoints.
Learn more about Responsive Styles and Customizing Breakpoints.
// theme.jsimport { createBreakpoints } from '@chakra-ui/theme-tools'export default createBreakpoints({sm: '30em',md: '48em',lg: '62em',xl: '80em','2xl': '96em',})
Spacing#
The space key allows you to customize the global spacing and sizing scale for
your project. By default these spacing value can be referenced by the padding,
margin, and top, left, right, bottom styles.
export default {space: {px: '1px',0.5: '0.125rem',1: '0.25rem',1.5: '0.375rem',2: '0.5rem',2.5: '0.625rem',3: '0.75rem',3.5: '0.875rem',4: '1rem',5: '1.25rem',6: '1.5rem',7: '1.75rem',8: '2rem',9: '2.25rem',10: '2.5rem',12: '3rem',14: '3.5rem',16: '4rem',20: '5rem',24: '6rem',28: '7rem',32: '8rem',36: '9rem',40: '10rem',44: '11rem',48: '12rem',52: '13rem',56: '14rem',60: '15rem',64: '16rem',72: '18rem',80: '20rem',96: '24rem',},}
By default, Chakra includes a comprehensive numeric spacing scale inspired by
Tailwind CSS. The values are proportional, so 1 spacing unit is equal to
0.25rem, which translates to 4px by default in common browsers.
Mental model: If you need a spacing of
40px, divide it by4. That'll give you10. Then use it in your component.
| Name | Space | Pixels | |
|---|---|---|---|
| px | 1px | 1px | |
| 0.5 | 0.125rem | 2px | |
| 1 | 0.25rem | 4px | |
| 1.5 | 0.375rem | 6px | |
| 2 | 0.5rem | 8px | |
| 2.5 | 0.625rem | 10px | |
| 3 | 0.75rem | 12px | |
| 3.5 | 0.875rem | 14px | |
| 4 | 1rem | 16px | |
| 5 | 1.25rem | 20px | |
| 6 | 1.5rem | 24px | |
| 7 | 1.75rem | 28px | |
| 8 | 2rem | 32px | |
| 9 | 2.25rem | 36px | |
| 10 | 2.5rem | 40px | |
| 12 | 3rem | 48px | |
| 14 | 3.5rem | 56px | |
| 16 | 4rem | 64px | |
| 20 | 5rem | 80px | |
| 24 | 6rem | 96px | |
| 28 | 7rem | 112px | |
| 32 | 8rem | 128px | |
| 36 | 9rem | 144px | |
| 40 | 10rem | 160px | |
| 44 | 11rem | 176px | |
| 48 | 12rem | 192px | |
| 56 | 14rem | 224px | |
| 60 | 15rem | 240px | |
| 64 | 16rem | 256px | |
| 72 | 18rem | 288px | |
| 80 | 20rem | 320px | |
| 96 | 24rem | 384px |
Sizes#
The sizes key allows you to customize the global sizing of components you
build for your project. By default these sizes value can be referenced by the
width, height, and maxWidth, minWidth, maxHeight, minHeight styles.
export default {sizes: {...theme.space,max: 'max-content',min: 'min-content',full: '100%','3xs': '14rem','2xs': '16rem',xs: '20rem',sm: '24rem',md: '28rem',lg: '32rem',xl: '36rem','2xl': '42rem','3xl': '48rem','4xl': '56rem','5xl': '64rem','6xl': '72rem','7xl': '80rem','8xl': '90rem',container: {sm: '640px',md: '768px',lg: '1024px',xl: '1280px','2xl': '1440px',},},}
A component like this: <Box w={4} h={3} /> will generate an empty div with
width set to 1rem or 16px and height set to 0.75rem or 12px.
Border radius#
Chakra provides a set of smooth corner radius values.
export default {radii: {none: '0',sm: '0.125rem',base: '0.25rem',md: '0.375rem',lg: '0.5rem',xl: '0.75rem','2xl': '1rem','3xl': '1.5rem',full: '9999px',},}
z-index values#
We recommend trying to solve stacking issues without z-index. You can read our
recommendations and learn more about
stacking contexts and z-index here.
Chakra provides a minimal set of z-Indices out of the box to help control the stacking order of components.
export default {zIndices: {hide: -1,auto: 'auto',base: 0,docked: 10,dropdown: 1000,sticky: 1100,banner: 1200,overlay: 1300,modal: 1400,popover: 1500,skipLink: 1600,toast: 1700,tooltip: 1800,},}
Config#
The theme's config is to provide global settings that are used by different parts of the Chakra UI system.
| Property | Description | Default |
|---|---|---|
cssVarPrefix (v1.4) | The prefix to use for the generated CSS custom properties | chakra |
initialColorMode | The initial color mode your application should start with. Can be either light or dark mode | light |
useSystemColorMode | If true, the chakra system will update color mode based on your system preferences | false |
You can leverage the extendTheme function to override a specific theme config
property.
const theme = extendTheme({config: {cssVarPrefix: 'ck',},})
Was this helpful?