Default Theme
The theme object is where you define your application's color palette, type scale, font stacks, breakpoints, border radius values, and more.
Theming with Chakra UI is based on the Styled System Theme Specification
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.
We recommend adding a palette that ranges from 50 to 900. Tools like
Smart Swatch,
Coolors or Palx are
available to generate these palettes.
// theme.jsexport default {colors: {transparent: "transparent",black: "#000",white: "#fff",gray: {50: "#f7fafc",// ...900: "#1a202c",},// ...},}
Chakra provides a sensible default theme inspired by Tailwind CSS, but you can customize it to fit your design.
Black & White#
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: "system-ui, sans-serif",heading: "Georgia, serif",mono: "Menlo, monospace",},fontSizes: {xs: "12px",sm: "14px",md: "16px",lg: "18px",xl: "20px","2xl": "24px","3xl": "28px","4xl": "36px","5xl": "48px","6xl": "64px",},fontWeights: {normal: 400,medium: 500,bold: 700,},lineHeights: {normal: "normal",none: "1",shorter: "1.25",short: "1.375",base: "1.5",tall: "1.625",taller: "2",},letterSpacings: {tighter: "-0.05em",tight: "-0.025em",normal: "0",wide: "0.025em",wider: "0.05em",widest: "0.1em",},};
Breakpoints#
To configure the default breakpoints used in responsive array values, add a breakpoints array to your theme. These values will be used to generate mobile-first (i.e. min-width) media queries, which can then be used to apply responsive styles.
For example, you can write
<Box fontSize={["14px", "16px"]}/>to make the fontSize responsive.
// theme.jsexport default {breakpoints: ["30em", "48em", "62em", "80em"],}
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: "0",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 | |
|---|---|---|---|
| 0 | 0 | 0px | |
| px | 1px | 1px | |
| 1 | 0.25rem | 4px | |
| 2 | 0.5rem | 8px | |
| 3 | 0.75rem | 12px | |
| 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,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",},}
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 {borderRadius: {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-indeces 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,},}
Configuration reference#
Except for breakpoints, colors, and spacing, all the keys in the theme object map to one of Chakra's core theme. All of these keys can be replaced or extended.