The styling system provides 115+ responsive style properties that map directly to CSS, enabling powerful theme-aware styling with responsive breakpoints and pseudo-selector support.
Main CSS processing function that converts style objects to CSS.
/**
* Core CSS processing function for converting SystemStyleObject to CSS
* @param styles - Style object with theme-aware properties
* @returns Processed CSS styles
*/
function css(styles: SystemStyleObject): CSSObject;
/**
* Advanced CSS function factory with configuration options
* @param options - Configuration for CSS processing
* @returns Configured CSS function
*/
function getCss(options: GetCssOptions): (styles: SystemStyleObject) => CSSObject;
type SystemStyleObject = {
[K in keyof CSS.Properties]: ResponsiveValue<CSS.Properties[K]>;
} & {
[K in PseudoSelectors]: SystemStyleObject;
};Properties for controlling element dimensions, display, and visibility.
// Size properties
width?: ResponsiveValue<CSS.Property.Width>;
w?: ResponsiveValue<CSS.Property.Width>; // shorthand for width
height?: ResponsiveValue<CSS.Property.Height>;
h?: ResponsiveValue<CSS.Property.Height>; // shorthand for height
minWidth?: ResponsiveValue<CSS.Property.MinWidth>;
minW?: ResponsiveValue<CSS.Property.MinWidth>;
maxWidth?: ResponsiveValue<CSS.Property.MaxWidth>;
maxW?: ResponsiveValue<CSS.Property.MaxWidth>;
minHeight?: ResponsiveValue<CSS.Property.MinHeight>;
minH?: ResponsiveValue<CSS.Property.MinHeight>;
maxHeight?: ResponsiveValue<CSS.Property.MaxHeight>;
maxH?: ResponsiveValue<CSS.Property.MaxHeight>;
// Display and visibility
display?: ResponsiveValue<CSS.Property.Display>;
visibility?: ResponsiveValue<CSS.Property.Visibility>;
overflow?: ResponsiveValue<CSS.Property.Overflow>;
overflowX?: ResponsiveValue<CSS.Property.OverflowX>;
overflowY?: ResponsiveValue<CSS.Property.OverflowY>;
// Box model
boxSize?: ResponsiveValue<CSS.Property.Width>; // sets both width and height
boxSizing?: ResponsiveValue<CSS.Property.BoxSizing>;
// Responsive utilities
hideFrom?: ResponsiveValue<string>; // hide from breakpoint up
hideBelow?: ResponsiveValue<string>; // hide from breakpoint downUsage Examples:
import { chakra } from "@chakra-ui/system";
const Box = chakra("div");
// Responsive sizing
<Box
width={{ base: "100%", md: "50%", lg: "25%" }}
height="200px"
minH="150px"
display={{ base: "block", md: "flex" }}
/>
// Responsive visibility
<Box hideBelow="md">
Only visible on medium screens and up
</Box>Margin and padding properties with directional variants.
// Margin properties
margin?: ResponsiveValue<CSS.Property.Margin>;
m?: ResponsiveValue<CSS.Property.Margin>;
marginTop?: ResponsiveValue<CSS.Property.MarginTop>;
mt?: ResponsiveValue<CSS.Property.MarginTop>;
marginRight?: ResponsiveValue<CSS.Property.MarginRight>;
mr?: ResponsiveValue<CSS.Property.MarginRight>;
marginBottom?: ResponsiveValue<CSS.Property.MarginBottom>;
mb?: ResponsiveValue<CSS.Property.MarginBottom>;
marginLeft?: ResponsiveValue<CSS.Property.MarginLeft>;
ml?: ResponsiveValue<CSS.Property.MarginLeft>;
marginX?: ResponsiveValue<CSS.Property.Margin>; // horizontal margin
mx?: ResponsiveValue<CSS.Property.Margin>;
marginY?: ResponsiveValue<CSS.Property.Margin>; // vertical margin
my?: ResponsiveValue<CSS.Property.Margin>;
// Padding properties
padding?: ResponsiveValue<CSS.Property.Padding>;
p?: ResponsiveValue<CSS.Property.Padding>;
paddingTop?: ResponsiveValue<CSS.Property.PaddingTop>;
pt?: ResponsiveValue<CSS.Property.PaddingTop>;
paddingRight?: ResponsiveValue<CSS.Property.PaddingRight>;
pr?: ResponsiveValue<CSS.Property.PaddingRight>;
paddingBottom?: ResponsiveValue<CSS.Property.PaddingBottom>;
pb?: ResponsiveValue<CSS.Property.PaddingBottom>;
paddingLeft?: ResponsiveValue<CSS.Property.PaddingLeft>;
pl?: ResponsiveValue<CSS.Property.PaddingLeft>;
paddingX?: ResponsiveValue<CSS.Property.Padding>; // horizontal padding
px?: ResponsiveValue<CSS.Property.Padding>;
paddingY?: ResponsiveValue<CSS.Property.Padding>; // vertical padding
py?: ResponsiveValue<CSS.Property.Padding>;Properties for text color, background color, and other color-related styling.
// Text colors
color?: ResponsiveValue<string>;
textColor?: ResponsiveValue<string>; // alias for color
fill?: ResponsiveValue<CSS.Property.Fill>; // for SVG elements
stroke?: ResponsiveValue<CSS.Property.Stroke>; // for SVG elements
// Background colors and images
backgroundColor?: ResponsiveValue<string>;
bg?: ResponsiveValue<string>; // shorthand for backgroundColor
background?: ResponsiveValue<CSS.Property.Background>;
backgroundImage?: ResponsiveValue<CSS.Property.BackgroundImage>;
backgroundSize?: ResponsiveValue<CSS.Property.BackgroundSize>;
backgroundPosition?: ResponsiveValue<CSS.Property.BackgroundPosition>;
backgroundRepeat?: ResponsiveValue<CSS.Property.BackgroundRepeat>;
backgroundAttachment?: ResponsiveValue<CSS.Property.BackgroundAttachment>;Font and text styling properties.
// Font properties
fontFamily?: ResponsiveValue<CSS.Property.FontFamily>;
fontSize?: ResponsiveValue<CSS.Property.FontSize>;
fontWeight?: ResponsiveValue<CSS.Property.FontWeight>;
fontStyle?: ResponsiveValue<CSS.Property.FontStyle>;
lineHeight?: ResponsiveValue<CSS.Property.LineHeight>;
letterSpacing?: ResponsiveValue<CSS.Property.LetterSpacing>;
// Text properties
textAlign?: ResponsiveValue<CSS.Property.TextAlign>;
textDecoration?: ResponsiveValue<CSS.Property.TextDecoration>;
textTransform?: ResponsiveValue<CSS.Property.TextTransform>;
textOverflow?: ResponsiveValue<CSS.Property.TextOverflow>;
whiteSpace?: ResponsiveValue<CSS.Property.WhiteSpace>;
wordBreak?: ResponsiveValue<CSS.Property.WordBreak>;Complete flexbox layout properties for containers and items.
// Flex container properties
alignItems?: ResponsiveValue<CSS.Property.AlignItems>;
justifyContent?: ResponsiveValue<CSS.Property.JustifyContent>;
flexDirection?: ResponsiveValue<CSS.Property.FlexDirection>;
flexWrap?: ResponsiveValue<CSS.Property.FlexWrap>;
gap?: ResponsiveValue<CSS.Property.Gap>;
rowGap?: ResponsiveValue<CSS.Property.RowGap>;
columnGap?: ResponsiveValue<CSS.Property.ColumnGap>;
// Flex item properties
flex?: ResponsiveValue<CSS.Property.Flex>;
alignSelf?: ResponsiveValue<CSS.Property.AlignSelf>;
justifySelf?: ResponsiveValue<CSS.Property.JustifySelf>;
flexGrow?: ResponsiveValue<CSS.Property.FlexGrow>;
flexShrink?: ResponsiveValue<CSS.Property.FlexShrink>;
flexBasis?: ResponsiveValue<CSS.Property.FlexBasis>;
order?: ResponsiveValue<CSS.Property.Order>;CSS Grid layout properties for containers and items.
// Grid container properties
gridTemplate?: ResponsiveValue<CSS.Property.GridTemplate>;
gridTemplateColumns?: ResponsiveValue<CSS.Property.GridTemplateColumns>;
gridTemplateRows?: ResponsiveValue<CSS.Property.GridTemplateRows>;
gridTemplateAreas?: ResponsiveValue<CSS.Property.GridTemplateAreas>;
gridArea?: ResponsiveValue<CSS.Property.GridArea>;
// Grid item properties
gridRow?: ResponsiveValue<CSS.Property.GridRow>;
gridColumn?: ResponsiveValue<CSS.Property.GridColumn>;
gridAutoFlow?: ResponsiveValue<CSS.Property.GridAutoFlow>;
gridAutoColumns?: ResponsiveValue<CSS.Property.GridAutoColumns>;
gridAutoRows?: ResponsiveValue<CSS.Property.GridAutoRows>;Properties for positioning elements.
position?: ResponsiveValue<CSS.Property.Position>;
top?: ResponsiveValue<CSS.Property.Top>;
right?: ResponsiveValue<CSS.Property.Right>;
bottom?: ResponsiveValue<CSS.Property.Bottom>;
left?: ResponsiveValue<CSS.Property.Left>;
zIndex?: ResponsiveValue<CSS.Property.ZIndex>;
inset?: ResponsiveValue<CSS.Property.Inset>; // shorthand for top/right/bottom/left
insetX?: ResponsiveValue<CSS.Property.Left>; // horizontal inset
insetY?: ResponsiveValue<CSS.Property.Top>; // vertical insetBorder styling and border radius properties.
// Border properties
border?: ResponsiveValue<CSS.Property.Border>;
borderWidth?: ResponsiveValue<CSS.Property.BorderWidth>;
borderStyle?: ResponsiveValue<CSS.Property.BorderStyle>;
borderColor?: ResponsiveValue<CSS.Property.BorderColor>;
borderTop?: ResponsiveValue<CSS.Property.BorderTop>;
borderRight?: ResponsiveValue<CSS.Property.BorderRight>;
borderBottom?: ResponsiveValue<CSS.Property.BorderBottom>;
borderLeft?: ResponsiveValue<CSS.Property.BorderLeft>;
// Border radius properties
borderRadius?: ResponsiveValue<CSS.Property.BorderRadius>;
rounded?: ResponsiveValue<CSS.Property.BorderRadius>; // alias for borderRadius
borderTopRadius?: ResponsiveValue<CSS.Property.BorderRadius>;
borderBottomRadius?: ResponsiveValue<CSS.Property.BorderRadius>;
borderLeftRadius?: ResponsiveValue<CSS.Property.BorderRadius>;
borderRightRadius?: ResponsiveValue<CSS.Property.BorderRadius>;Box shadow, text shadow, and filter effects.
boxShadow?: ResponsiveValue<CSS.Property.BoxShadow>;
textShadow?: ResponsiveValue<CSS.Property.TextShadow>;
filter?: ResponsiveValue<CSS.Property.Filter>;
backdropFilter?: ResponsiveValue<CSS.Property.BackdropFilter>;
opacity?: ResponsiveValue<CSS.Property.Opacity>;CSS transform properties for scaling, rotation, and translation.
transform?: ResponsiveValue<CSS.Property.Transform>;
scale?: ResponsiveValue<number>; // uniform scale
scaleX?: ResponsiveValue<number>;
scaleY?: ResponsiveValue<number>;
rotate?: ResponsiveValue<string>; // rotation angle
translate?: ResponsiveValue<string>; // translate x,y
translateX?: ResponsiveValue<string>;
translateY?: ResponsiveValue<string>;
skew?: ResponsiveValue<string>; // skew x,y
skewX?: ResponsiveValue<string>;
skewY?: ResponsiveValue<string>;CSS transition properties for animations.
transition?: ResponsiveValue<CSS.Property.Transition>;
transitionProperty?: ResponsiveValue<CSS.Property.TransitionProperty>;
transitionDuration?: ResponsiveValue<CSS.Property.TransitionDuration>;
transitionTimingFunction?: ResponsiveValue<CSS.Property.TransitionTimingFunction>;
transitionDelay?: ResponsiveValue<CSS.Property.TransitionDelay>;Style properties for pseudo-selectors and states.
// Pseudo-selector properties - each accepts a SystemStyleObject
_hover?: SystemStyleObject;
_focus?: SystemStyleObject;
_active?: SystemStyleObject;
_visited?: SystemStyleObject;
_disabled?: SystemStyleObject;
_invalid?: SystemStyleObject;
_checked?: SystemStyleObject;
_selected?: SystemStyleObject;
_expanded?: SystemStyleObject;
_before?: SystemStyleObject;
_after?: SystemStyleObject;
_first?: SystemStyleObject;
_last?: SystemStyleObject;
_odd?: SystemStyleObject;
_even?: SystemStyleObject;
_focusWithin?: SystemStyleObject;
_groupHover?: SystemStyleObject;
_groupFocus?: SystemStyleObject;Usage Examples:
import { chakra } from "@chakra-ui/system";
const Button = chakra("button");
<Button
bg="blue.500"
color="white"
px={6}
py={3}
borderRadius="md"
_hover={{
bg: "blue.600",
transform: "translateY(-2px)",
boxShadow: "lg"
}}
_active={{
bg: "blue.700",
transform: "translateY(0)"
}}
_disabled={{
bg: "gray.300",
cursor: "not-allowed"
}}
/>Utility functions and objects for working with the style system.
/**
* Object containing all style property configurations
*/
declare const systemProps: Record<string, StyleConfig>;
/**
* Array of all supported style property names
*/
declare const propNames: string[];
/**
* Array of layout-specific property names
*/
declare const layoutPropNames: string[];
/**
* Check if a property is a valid style prop
* @param prop - Property name to check
* @returns True if prop is a style property
*/
function isStyleProp(prop: string): boolean;
/**
* Object containing layout-related style properties
*/
declare const layoutSystem: Record<string, StyleConfig>;Transform configuration and utility functions.
/**
* Object containing transformation functions for different property types
*/
declare const transforms: Record<string, TransformFunction>;
/**
* Property configuration helpers object
*/
declare const t: {
colors(scale?: string): StyleConfig;
space(scale?: string): StyleConfig;
sizes(scale?: string): StyleConfig;
shadows(scale?: string): StyleConfig;
borders(scale?: string): StyleConfig;
radii(scale?: string): StyleConfig;
fonts(scale?: string): StyleConfig;
fontSizes(scale?: string): StyleConfig;
fontWeights(scale?: string): StyleConfig;
lineHeights(scale?: string): StyleConfig;
letterSpacings(scale?: string): StyleConfig;
zIndices(scale?: string): StyleConfig;
transition(scale?: string): StyleConfig;
};// Responsive value types
type ResponsiveValue<T> = T | ResponsiveArray<T> | ResponsiveObject<T>;
type ResponsiveArray<T> = Array<T | null>;
type ResponsiveObject<T> = Partial<Record<string, T>>;
// Token types for theme integration
type Token<CSSType, ThemeKey = unknown> =
| CSSType
| (ThemeKey extends string ? ResponsiveValue<ThemeKey> : never);
// CSS variable utilities
interface WithCSSVar<T> {
__cssVars: Record<string, any>;
__cssMap: Record<string, any>;
} & T;
// Transform function type
type TransformFunction = (value: any, scale?: any, props?: any) => any;
// Style configuration type
interface StyleConfig {
property?: string | string[];
scale?: string;
transform?: TransformFunction;
}