Style props are a way to alter the style of a component by simply passing props
to it. It helps to save time by providing helpful shorthand ways to style
components.
The following table shows a list of every style prop and the properties within
each group.
jsx
1
import { Box } from "@codeday/topo/Atom" 7
< Box maxW = " 960px " mx = " auto " /> Prop CSS Property Theme Key m, marginmarginspacemt, marginTopmargin-topspacemr, marginRightmargin-rightspaceme, marginEndmargin-inline-endspacemb, marginBottommargin-bottomspaceml, marginLeftmargin-leftspacems, marginStartmargin-inline-startspacemxmargin-inline-start + margin-inline-endspacemymargin-top + margin-bottomspacep, paddingpaddingspacept, paddingToppadding-topspacepr, paddingRightpadding-rightspacepe, paddingEndpadding-inline-endspacepb, paddingBottompadding-bottomspacepl, paddingLeftpadding-leftspaceps, paddingStartpadding-inline-startspacepxpadding-inline-start + padding-inline-endspacepypadding-top + padding-bottomspace
For mx and px props, we use margin-inline-start and margin-inline-end
to ensure the generated styles are RTL-friendly
Color and background color
# jsx
1
import { Box } from "@codeday/topo/Atom" 14
< Box backgroundColor = ' tomato ' /> Prop CSS Property Theme Key colorcolorcolorsbg, backgroundbackgroundcolorsbgColorbackground-colorcolorsopacityopacitynone
jsx
1
import { Box , Text } from "@codeday/topo/Atom" 4
< Box w = " 100% " h = " 200px " bgGradient = " linear(to-t, green.200, pink.500) " /> 7
< Box w = " 100% " h = " 200px " bgGradient = " radial(gray.300, yellow.400, pink.200) " /> 11
bgGradient = " linear(to-l, #7928CA, #FF0080) " 14
fontWeight = " extrabold " 20
< Box grad = " twilight.30 " width = " 100% " height = { 16 } marginBottom = { 2 } display = " inline-block " > twlight </ Box > 21
< Box grad = " lemonlime.60 " width = " 100% " height = { 16 } marginBottom = { 2 } display = " inline-block " > lemonlime </ Box > 22
< Box grad = " peachy.45 " width = " 100% " height = { 16 } marginBottom = { 2 } display = " inline-block " > peachy </ Box > 23
< Box grad = " taffy.90 " width = " 100% " height = { 16 } marginBottom = { 2 } display = " inline-block " > taffy </ Box > Prop CSS Property Theme Key bgGradientbackground-imagenone bgClip, backgroundClipbackground-clipnone gradbackground-image: url(...)colors.grad
jsx
1
import { Text } from "@topo/codeday/Atom" 10
< Text fontSize = ' 2em ' /> 13
< Text textAlign = { [ 'left' , 'center' ] } /> Prop CSS Property Theme Key fontFamilyfont-familyfontsfontSizefont-sizefontSizesfontWeightfont-weightfontWeightslineHeightline-heightlineHeightsletterSpacingletter-spacingletterSpacingstextAligntext-alignnone fontStylefont-stylenone textTransformtext-transformnone textDecorationtext-decorationnone
Layout, width and height
# jsx
1
import { Box } from "@codeday/topo/Atom" 4
< Box width = " 100% " height = { 32 } /> 7
< Box w = " 100% " h = " 32px " /> Prop CSS Property Theme Key w, widthwidthsizesh, heightheightsizesminW, minWidthmin-widthsizesmaxW, maxWidthmax-widthsizesminH, minHeightmin-heightsizesmaxH, maxHeightmax-heightsizesd, displaydisplaynone boxSizewidth, heightsizesverticalAlignvertical-alignnone overflowoverflownone overflowXoverflowXnone overflowYoverflowYnone
jsx
1
import { Box , Flex } from "@codeday/topo/Atom" 4
< Box display = " flex " alignItems = " center " justifyContent = " space-between " > 9
< Flex align = " center " justify = " center " > Note: Props in * will only work if you use the Flex component.
Prop CSS Property Theme Key alignItems, *alignalign-itemsnone alignContentalign-contentnone justifyItemsjustify-itemsnone justifyContent, *justifyjustify-contentnone flexWrap, *wrapflex-wrapnone flexDirection, flexDir, *directionflex-directionnone flexflexnone flexGrowflex-grownone flexShrinkflex-shrinknone flexBasisflex-basisnone justifySelfjustify-selfnone alignSelfalign-selfnone orderordernone
jsx
1
import { Box , Grid } from "@codeday/topo/Atom" 4
< Box display = " grid " gridGap = { 2 } gridAutoFlow = " row dense " > 9
< Grid gap = { 2 } autoFlow = " row dense " > Note: Props in * will only work if you use the Grid component.
Prop CSS Property Theme Key gridGap, *gapgrid-gapspacegridRowGap, *rowGapgrid-row-gapspacegridColumnGap, *columnGapgrid-column-gapspacegridColumn, *columngrid-columnnone gridRow, *rowgrid-rownone gridArea, *areagrid-areanone gridAutoFlow, *autoFlowgrid-auto-flownone gridAutoRows, *autoRowsgrid-auto-rowsnone gridAutoColumns, *autoColumnsgrid-auto-columnsnone gridTemplateRows, *templateRowsgrid-template-rowsnone gridTemplateColumns, *templateColumnsgrid-template-columnsnone gridTemplateAreas, *templateAreasgrid-template-areasnone
jsx
1
import { Box } from "@codeday/topo/Atom" 5
backgroundImage = " url( ' /images/kyuubi.png ' ) " 6
backgroundPosition = " center " 7
backgroundRepeat = " no-repeat " 12
bgImage = " url( ' /images/gaara.png ' ) " Prop CSS Property Theme Key bg, backgroundbackgroundnone bgImage, backgroundImagebackground-imagenone bgSize, backgroundSizebackground-sizenone bgPosition,backgroundPositionbackground-positionnone bgRepeat,backgroundRepeatbackground-repeatnone bgAttachment,backgroundAttachmentbackground-attachmentnone
jsx
1
< Box border = " 1px " borderColor = " gray.200 " > Prop CSS Property Theme Field borderborderbordersborderWidthborder-widthborderWidthsborderStyleborder-styleborderStylesborderColorborder-colorcolorsborderTopborder-topbordersborderTopWidthborder-top-widthborderWidthsborderTopStyleborder-top-styleborderStylesborderTopColorborder-top-colorcolorsborderRightborder-rightbordersborderEndborder-inline-endbordersborderRightWidthborder-right-widthborderWidthsborderEndWidthborder-inline-end-widthborderWidthsborderRightStyleborder-right-styleborderStylesborderEndStyleborder-inline-end-styleborderStylesborderRightColorborder-right-colorcolorsborderEndColorborder-inline-end-colorcolorsborderBottomborder-bottombordersborderBottomWidthborder-bottom-widthborderWidthsborderBottomStyleborder-bottom-styleborderStylesborderBottomColorborder-bottom-colorcolorsborderLeftborder-leftbordersborderStartborder-inline-startbordersborderLeftWidthborder-left-widthborderWidthsborderStartWidthborder-inline-start-widthborderWidthsborderLeftStyleborder-left-styleborderStylesborderStartStyleborder-inline-start-styleborderStylesborderLeftColorborder-left-colorcolorsborderStartColorborder-inline-start-colorcolorsborderXborder-left , border-rightbordersborderYborder-top , border-bottomborders
jsx
1
import { Button } from "@codeday/topo/Atom" 4
< Button borderRightRadius = " 0 " > Button 1 </ Button > 7
< Button borderLeftRadius = " 0 " > Button 2 </ Button > 10
< Button borderTopRadius = " md " > Button 2 </ Button > Prop CSS Property Theme Field borderRadiusborder-radiusradiiborderTopLeftRadiusborder-top-left-radiusradiiborderTopStartRadiusborder-top-left-radius in LTR, border-top-right-radius in RTLradiiborderTopRightRadiusborder-top-right-radiusradiiborderTopEndRadiusborder-top-right-radius in LTR, border-top-left-radius in RTLradiiborderBottomRightRadiusborder-bottom-right-radiusradiiborderBottomEndRadiusborder-bottom-right-radius in LTR, border-bottom-left-radius in RTLradiiborderBottomLeftRadiusborder-bottom-left-radiusradiiborderBottomStartRadiusborder-bottom-left-radius in LTR, border-bottom-left-radius in RTLradiiborderTopRadiusborder-top-left-radius + border-top-right-radiusradiiborderRightRadiusborder-top-right-radius + border-bottom-right-radiusradiiborderEndRadiusborder-top-right-radius + border-bottom-right-radiusradiiborderBottomRadiusborder-bottom-left-radius + border-bottom-right-radiusradiiborderLeftRadiusborder-top-left-radius + border-bottom-left-radiusradiiborderStartRadiusborder-top-left-radius + border-bottom-left-radiusradii
jsx
1
import { Box } from "@codeday/topo/Atom" 4
< Box position = " absolute " > Cover </ Box > 7
< Box pos = " absolute " > Cover </ Box > 8
< Box pos = " absolute " top = " 0 " left = " 0 " > 9
Absolute with top and left 11
< Box pos = " fixed " w = " 100% " zIndex = { 2 } > Prop CSS Property Theme Field pos,positionpositionnone zIndexz-indexzIndicestoptopspacerightrightspacebottombottomspaceleftleftspace
jsx
3
columns = { { sm : 2 , md : 4 } } 10
< Box boxShadow = " xs " p = " 6 " rounded = " md " bg = " white " > 13
< Box boxShadow = " sm " p = " 6 " rounded = " md " bg = " white " > 16
< Box boxShadow = " base " p = " 6 " rounded = " md " bg = " white " > 19
< Box boxShadow = " md " p = " 6 " rounded = " md " bg = " white " > 22
< Box boxShadow = " lg " p = " 6 " rounded = " md " bg = " white " > 25
< Box boxShadow = " xl " p = " 6 " rounded = " md " bg = " white " > 28
< Box boxShadow = " 2xl " p = " 6 " rounded = " md " bg = " white " > 31
< Box boxShadow = " dark-lg " p = " 6 " rounded = " md " bg = " white " > 34
< Box boxShadow = " outline " p = " 6 " rounded = " md " bg = " white " > 37
< Box boxShadow = " inner " p = " 6 " rounded = " md " bg = " white " > jsx
1
< Text textShadow = " 1px 1px #ff0000 " m = " 6 " > Prop CSS Property Theme Field textShadowtext-shadowshadowsboxShadowbox-shadowshadows
jsx
1
import { Button } from "@codeday/topo/Atom" 19
_hover = { { fontWeight : 'semibold' } } 20
_groupHover = { { color : 'tomato' } } Prop CSS Property Theme Field _hover:hover,[data-hover]none _active:active,[data-active]none _focus:focus,[data-focus]none _highlighted[data-highlighted]none _focusWithin:focus-withinnone _focusVisible:focus-visiblenone _disabled[disabled],[aria-disabled=true],[data-disabled]none _readOnly[aria-readonly=true],[readonly], [data-readonly]none _before::beforenone _after::afternone _empty:emptynone _expanded[aria-expanded=true],[data-expanded]none _checked[aria-checked=true],[data-checked]none _grabbed[aria-grabbed=true],[data-grabbed]none _pressed[aria-pressed=true],[data-pressed]none _invalid[aria-invalid=true],[data-invalid]none _valid[data-valid],[data-state=valid]none _loading[data-loading],[aria-busy=true]none _selected[aria-selected=true],[data-selected]none _hidden[hidden],[data-hidden]none _autofill:-webkit-autofillnone _even:nth-of-type(even)none _odd:nth-of-type(odd)none _first:first-of-typenone _last:last-of-typenone _notFirst:not(:first-of-type)none _notLast:not(:last-of-type)none _visited:visitednone _activeLink[aria-current=page]none _activeStep[aria-current=step]none _indeterminate:indeterminate,[aria-checked=mixed],[data-indeterminate]none _groupHover[role=group]:hover &, [role=group][data-hover] &none _groupFocus[role=group]:focus &, [role=group][data-focus] &none _groupActive[role=group]:active &, [role=group][data-active] &none _groupDisabled[role=group]:disabled &, [role=group][data-disabled] &none _groupInvalid[role=group][data-invalid] &none _groupChecked[role=group][data-checked] &none _placeholder::placeholdernone _fullScreen:fullscreennone _selection::selectionnone
Asides all the common style props listed above, all component will accept the
following props:
Prop CSS Property Theme Field animationanimationnone appearanceappearancenone transformtransformnone transformOrigintransform-originnone visibilityvisibilitynone whiteSpacewhite-spacenone userSelectuser-selectnone pointerEventspointer-eventsnone wordBreakword-breaknone overflowWrapoverflow-wrapnone textOverflowtext-overflownone boxSizingbox-sizingnone cursorcursornone resizeresizenone transitiontransitionnone objectFitobject-fitnone objectPositionobject-positionnone objectPositionobject-positionnone floatfloatnone fillfillcolorsstrokestrokecolorsoutlineoutlinenone
The as prop is a feature in all of our components that allows you to pass an
HTML tag or component to be rendered.
For example, say you are using a Button component, and you need to make it a
link instead. You can compose a and Button like this:
jsx
1
< Button as = " a " target = " _blank " variant = " outline " href = " https://chakra-ui.com " > This allows you to use all of the Button props and all of the a props
without having to wrap the Button in an a component.