Constraint Based Design

In order to help you create clean, consistent layouts, Chakra UI provides building blocks that take advantage of constraint-based design principles.

Chakra UI's design principles are built around two core concepts:

  • Design tokens
  • Space scales

Design tokens#

Design tokens are named values that are used in place of hard-coded values (such as hex values for color or pixel values for spacing) in order to maintain a scalable and consistent visual system for UI development.

These constraints help you to create consistent, high-quality user interfaces.

Chakra UI's theming system leverages design tokens for different style properties like color, spacing, font sizes, font weights, opacity, radii, shadows, z-indices, border widths, and breakpoints.

This allows us to create a system that enables us to style our applications in ways that can be scaled across different scales. These include a typographic (font-size) scale, a spacing scale for margin and padding, and a color object.

By default Chakra UI uses the System UI Theme Specification

Space Scales#

Because Chakra UI uses styled system under the hood, it allows you to reliably create consistent spacing of elements in your applications. The space key can directly be referenced by padding, margin, top, right, bottom, and left style properties.

By default, Chakra UI uses a comprehensive 4pt grid as a single unit. So in order to apply a padding of 32px, you can use the value 32px / 4px = 8. i.e. padding: 8

export default {
  space: {
    px: '1px',
    '0': '0',
    '1': '0.25rem',
    '2': '0.5rem',
    '3': '0.75rem',
    '4': '1rem',
    '5': '1.25rem',
    '6': '1.5rem',
    '8': '2rem',
    '10': '2.5rem',
    '12': '3rem',
    '16': '4rem',
    '20': '5rem',
    '24': '6rem',
    '32': '8rem',
    '40': '10rem',
    '48': '12rem',
    '56': '14rem',
    '64': '16rem'
  }
}

Below are some examples of how to apply spacing values to Chakra components.

<!-- Applies a padding of 4px -->
<c-box padding="1">
  Box
</c-box>

<!-- Applies a padding of 16px -->
<c-box padding="4">
  Box
</c-box>

<!-- Applies a padding of 32px -->
<c-box padding="8">
  Box
</c-box>

Chakra UI's default space scale uses rems as the CSS unit which is relative to the default root HTML font size of 16px

Theme#

By default, Chakra UI uses a theme object that you can extend and customize as you see fit for your application. To learn more about theming in Chakra UI, check out the theme page.

❤️ Contribute to this page

Caught a mistake or want to contribute to the documentation? Edit this page on GitHub!