Chakra UI Vue is a UI framework made for Vue.js that lets us add good-looking UI components into our Vue app.
This article will look at how to get started with UI development with Chakra UI Vue.
v-chakra Directive
We can use the v-chakra
directive to let us style non-Chakra UI Vue elements with Chakra UI Vue props.
For instance, we can write:
<template>
<c-box>
<div
v-chakra
p="3"
bg="red.100"
rounded="md"
color="red.500"
font-weight="bold"
>
Welcome
</div>
</c-box>
</template>
<script>
import { CBox } from "@chakra-ui/vue";
export default {
components: {
CBox,
},
};
</script>
The p
prop sets the padding. bg
sets the background color.
rounded
sets the breakpoint for rounded corners to apply.
color
has the text color.
font-weight
has the font-weight.
We can also style child elements with v-chakra
.
To do this, we write:
<template>
<c-box>
<div
v-chakra="{
p: 3,
shadow: 'sm',
header: {
bg: 'blue.100',
fontSize: 'lg',
fontWeight: 'bold',
},
'& > p': {
fontStyle: 'italic',
},
}"
>
<header>Title</header>
<p>Text</p>
</div>
</c-box>
</template>
<script>
import { CBox } from "@chakra-ui/vue";
export default {
components: {
CBox,
},
};
</script>
The header
property has the header element styles.
& > p
has the p
element styles.
We can also add computed styles by passing in a callback that returns an object with the style values:
<template>
<c-box>
<div
v-chakra="
(theme) => ({
shadow: 'sm',
bg: theme.colors.blue[800],
color: theme.colors.yellow[300],
p: {
fontWeight: 'bold',
p: 3,
},
})
"
>
<header>Title</header>
<p>Text</p>
</div>
</c-box>
</template>
<script>
import { CBox } from "@chakra-ui/vue";
export default {
components: {
CBox,
},
};
</script>
We use the theme
parameter to get the color values we want to set.
We used them to set the bg
and color
properties.
Conclusion
We can use the v-chakra
directive to apply Chakra UI Vue styles directly to a non-Chakra UI Vue element.