Override the Built-in Component's Styles in Chakra UI

Lazar Nikolov
InstructorLazar Nikolov
Share this video with your friends

Social Share Links

Send Tweet
Published 3 years ago
Updated 2 years ago

In this lesson, you'll learn how to override the built-in component's styles. Specifically, you'll change the border radius and outline to the Input, Select, and Checkbox components.

Instructor: [0:00] In this lesson, we will override some of the built-in component style to match our design. If we look closely, we can notice that the border radius of their inputs is sharp, while on the app, it's rounded. Also, the outline is blue, and we would like to use our brand's color.

[0:19] Let's start by overriding the component styles. Just like we overrode the colors, we can override the component style. Let's provide the component section. Inside, we'll add the name of the component that we're overriding the style of.

[0:33] Let's start with the input. We'll be overriding two properties -- the border radius and the border color. By default, the border radius is different for each size of the input. Since the default size is the md, we'll get into the sizes section and override the md size.

[0:51] The input has three parts -- add-on, field, and element. We're looking to override the field part. We'll open the field section and set the borderRadius to none. Let's check it out. Awesome. We can see that the borderRadius is now sharp. That's exactly what we wanted.

[1:11] Let's fix the outline now. The outline of the input is defined in each of its variants. Since we've set the input's variant to field, we'd want to enter the variants section and then the field. Just like before, we'll override the field part. The outline, or the borderColor property, shows up when we focus on the element.

[1:34] Chakra UI provides us with pseudo props that we can use to style our elements based on their state. Since we're looking for the focused state, we'll override the focus object, and we'll set the borderColor to brand.500. Let's check it out. Nice. The outline is now colored with our brand color.

[1:57] Next on our list is a select component. Since the select component extends the input component, all of the style configuration that we developed for the input can be applied to the select as well.

[2:09] Let's extract the input configuration into its own variable at the top. We'll call it input select styles. We'll place it in an object, and then we can scroll down and spread it to the input component, so input select styles. Everything remains the same.

[2:35] Now, let's also add the select here, right next to the input, and do the same, input select styles. There we go. Our select now has the same style as the input. We're almost done. All that is left is our checkbox component.

[2:57] Just like the input component, we want to override the outline for the checkbox component as well. The only difference between the input and the checkbox is that the input handles the outline as a border, but the checkbox handles it as a ring.

[3:10] Let's enter the checkbox section. Then we will enter the base style and the control. Now, just like the input, we would like to enter the focused state and set the ring to 2 and the rink color to brand.500. Let's check it out. Nice. We can see that the ring is painted with the brand.500 color.

[3:39] While we're here, let's also set the border-radius to none. Above the focus, we'll say border-radius none. There we go. We can see that the border-radius is now sharp, and the ring is painted with the brand.500 color. That's it. We're done.

[4:01] Let's recap. We learned that we can override the component style configuration by creating a property inside of the components section. We can even override the style configuration based on the component state using the pseudo props. We've also learned that some of the components are multipart, and they have separate style configurations for each part.

egghead
egghead
~ 26 seconds ago

Member comments are a way for members to communicate, interact, and ask questions about a lesson.

The instructor or someone from the community might respond to your question Here are a few basic guidelines to commenting on egghead.io

Be on-Topic

Comments are for discussing a lesson. If you're having a general issue with the website functionality, please contact us at support@egghead.io.

Avoid meta-discussion

  • This was great!
  • This was horrible!
  • I didn't like this because it didn't match my skill level.
  • +1 It will likely be deleted as spam.

Code Problems?

Should be accompanied by code! Codesandbox or Stackblitz provide a way to share code and discuss it in context

Details and Context

Vague question? Vague answer. Any details and context you can provide will lure more interesting answers!

Markdown supported.
Become a member to join the discussionEnroll Today