The VStack component is a layout component that uses flexbox to vertically layout its children.
It has a display: flex style with flex-direction: column.
1import { Box, VStack } from '@devup-ui/react'
2
3function App() {
4 return (
5 <VStack>
6 <Box bg="blue" h={25} w={25} />
7 <Box bg="blue" display="flex" h={25} w={25} />
8 <Box bg="blue" h={25} w={25} />
9 </VStack>
10 )
11}
1import { Box, VStack } from '@devup-ui/react'
2
3function App() {
4 return (
5 <VStack>
6 <Box bg="blue" h={25} w={25} />
7 <Box bg="blue" display="flex" h={25} w={25} />
8 <Box bg="blue" h={25} w={25} />
9 </VStack>
10 )
11}
The VStack component defined above will render like this:
1function App() {
2 return (
3 <div className="e f">
4 <div className="a b c"></div>
5 <div className="a b c d"></div>
6 <div className="a b c"></div>
7 </div>
8 )
9}
1function App() {
2 return (
3 <div className="e f">
4 <div className="a b c"></div>
5 <div className="a b c d"></div>
6 <div className="a b c"></div>
7 </div>
8 )
9}
1.a { 2 background: blue; 3} 4.b { 5 height: 100px; 6} 7.c { 8 width: 100px; 9} 10.d { 11 display: flex; 12} 13.e { 14 display: flex; 15} 16.f { 17 flex-direction: column; 18}1.a { 2 background: blue; 3} 4.b { 5 height: 100px; 6} 7.c { 8 width: 100px; 9} 10.d { 11 display: flex; 12} 13.e { 14 display: flex; 15} 16.f { 17 flex-direction: column; 18}
If you pass a number without a unit to a style property, it will be automatically scaled by 4. This means 1 equals 4px, 2 equals 8px, and so on.
However, the following properties are exceptions and are not multiplied by 4:
opacityflexz-indexline-clampfont-weightline-heightscaleaspect-ratioflex-growflex-shrinkordergrid-column, grid-column-start, grid-column-endgrid-row, grid-row-start, grid-row-endanimation-iteration-counttab-size, moz-tab-size, -webkit-line-clampClass names and style properties are resolved in the following order:
Generate class names for child components.
Remove duplicate component properties.
key:value pair and the style-order match.If the key:value matches but the style-order differs, the property is not removed — the later/higher-priority style will take precedence.
display: flex implemented internally by Center and the display: flex provided directly by the user have different style-orders, so they are not removed, and the final style is applied according to priority.Generate the parent component’s className based on the merged result.