How to get started with Chakra-UI

What is Chakra-UI?

Chakra UI is a modular component library that contains a simple API which gives the ability to make apps without having to worry about building the components themselves. It uses Emotion for styling and customization, allowing developers to style inside the details with style props. The components are dark mode compatible as well and use a Box and Stack layout.

Installation

  • I will use nextjs.
yarn create next-app <my-app>
  • Install packages:
cd <my-app>
yarn add @chakra-ui/react @emotion/react@^11 @emotion/styled@^11 framer-motion@^6

Usage

You also need to setup ChakraProvider in your app’s root:

import * as React from "react"

// 1. import `ChakraProvider` component
import { ChakraProvider } from "@chakra-ui/react"

function App() {
// 2. Use at the root of your app
return (
<ChakraProvider>
<App />
</ChakraProvider>
)
}

Setup Chakra-UI with next

  • Wrap the Component component with the ChakraProvider component.
import { ChakraProvider } from '@chakra-ui/react'

function MyApp({ Component, pageProps }) {
return (
<ChakraProvider>
<Component {...pageProps} />
</ChakraProvider>
)
}

export default MyApp

Now we can use chakra-UI components.

Theming Example

Chakra UI provides an extendTheme function that deep merges the default theme with your customizations.

// 1. Import the extendTheme function
import { extendTheme } from "@chakra-ui/react"

// 2. Extend the theme to include custom colors, fonts, etc
const colors = {
brand: {
900: "#1a365d",
800: "#153e75",
700: "#2a69ac",
},
}

const theme = extendTheme({ colors })

// 3. Pass the `theme` prop to the `ChakraProvider`
function App() {
return (
<ChakraProvider theme={theme}>
<App />
</ChakraProvider>
)
}

How to import components

Always import the components and utilities as a named import from the @chakra-ui/react package.

import { Button, Text, Heading, Box, Link, useTheme } from '@chakra-ui/react'

const Index = () => {
return <Heading>Heading 1</Heading>
}

export default Index

Custom styles

There are two ways to customize the styles.

const Index = () => {
return (
<Heading color='red' fontSize='5rem'>
Heading 1
</Heading>
)
}
  • SX prop: With sx prop, you can use any custom style as an object. All the property name has to be camelcase.
const Index = () => {
return (
<Heading
sx={{
color: 'red',
fontSize: '5rem',
}}
>
Heading 1
</Heading>
)
}

Color Mode Example

ChakraProvider automatically uses color mode when used at the root of the app. By default, most of Chakra’s components are dark mode compatible. To handle color mode manually in your application, use the useColorMode or useColorModeValue hooks.

useColorMode:

function Example() {
const { colorMode, toggleColorMode } = useColorMode()
return (
<header>
<Button onClick={toggleColorMode}>
Toggle {colorMode === "light" ? "Dark" : "Light"}
</Button>
</header>
)
}

Light mode

Dark mode

Commonly Used Components

Here are some of the components that I use most.

This is just a brief overview of Chakra UI and its features. On the official site, you can read more on colour modes, gradients, global styles, and more.

By the way, I am looking for a new opportunity in a company where I can provide great value with my skills. If you are a recruiter, looking for someone skilled in frontend web development and passionate about revolutionizing the world, feel free to contact me. Also, I am open to talking about any freelance project.

Contacts

Twitter: @Dev_suite
Instagram: @Dev_suite

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Kamaldeen Sulyman

Kamaldeen Sulyman

3 Followers

I am an Experienced React Developer. A passionate Software Engineer, Intermediate in building a web app from scratch. Senior 👵 Blockchain Developer.