0
# Style Functions
1
2
Composable style functions that transform component props into CSS properties with theme integration and responsive support. These functions enable systematic styling through props while maintaining theme consistency and responsive behavior.
3
4
## Capabilities
5
6
### Core Style Function System
7
8
Base infrastructure for creating and composing style functions with theme integration.
9
10
```typescript { .api }
11
/**
12
* Create a style function that transforms props to CSS
13
* @param options - Style function configuration
14
* @returns Style transformation function
15
*/
16
function style<PropKey extends string>(options: StyleOptions<PropKey>): StyleFunction<PropKey>;
17
18
interface StyleOptions<PropKey extends string> {
19
/** CSS property name(s) this function handles */
20
prop: PropKey;
21
22
/** CSS property name if different from prop */
23
cssProperty?: string | string[];
24
25
/** Theme key path for value transformation */
26
themeKey?: string;
27
28
/** Value transformation function */
29
transform?: TransformFunction;
30
}
31
32
/**
33
* Style transformation function type
34
*/
35
type StyleFunction<Props> = (props: Props) => CSSObject;
36
37
/**
38
* Value transformation function
39
*/
40
type TransformFunction = (value: any, theme?: Theme) => any;
41
42
/**
43
* Extract props interface from style function
44
*/
45
type PropsFor<SomeStyleFunction> = SomeStyleFunction extends StyleFunction<infer Props>
46
? Props
47
: never;
48
49
/**
50
* Get style value from theme path
51
* @param obj - Object to search
52
* @param path - Dot notation path
53
* @returns Value at path
54
*/
55
function getStyleValue(obj: any, path: string): any;
56
57
/**
58
* Get nested path from object
59
* @param obj - Object to search
60
* @param path - Array path
61
* @returns Value at path
62
*/
63
function getPath(obj: any, path: string[]): any;
64
```
65
66
### Composition System
67
68
Compose multiple style functions into a single function with merged prop interfaces.
69
70
```typescript { .api }
71
/**
72
* Compose multiple style functions into one
73
* @param styleFunctions - Style functions to compose
74
* @returns Composed style function
75
*/
76
function compose<T extends StyleFunction<any>[]>(...styleFunctions: T): ComposedStyleFunction<T>;
77
78
type ComposedStyleFunction<T> = T extends readonly [
79
StyleFunction<infer P1>,
80
...infer Rest
81
]
82
? Rest extends readonly StyleFunction<any>[]
83
? StyleFunction<P1 & PropsFor<ComposedStyleFunction<Rest>>>
84
: StyleFunction<P1>
85
: StyleFunction<{}>;
86
```
87
88
### Individual Style Function Exports
89
90
Individual style functions that can be imported and used separately for specific CSS properties.
91
92
```typescript { .api }
93
// Border style functions
94
export const border: StyleFunction<{ border?: ResponsiveStyleValue<string | number> }>;
95
export const borderTop: StyleFunction<{ borderTop?: ResponsiveStyleValue<string | number> }>;
96
export const borderRight: StyleFunction<{ borderRight?: ResponsiveStyleValue<string | number> }>;
97
export const borderBottom: StyleFunction<{ borderBottom?: ResponsiveStyleValue<string | number> }>;
98
export const borderLeft: StyleFunction<{ borderLeft?: ResponsiveStyleValue<string | number> }>;
99
export const borderColor: StyleFunction<{ borderColor?: ResponsiveStyleValue<string> }>;
100
export const borderTopColor: StyleFunction<{ borderTopColor?: ResponsiveStyleValue<string> }>;
101
export const borderRightColor: StyleFunction<{ borderRightColor?: ResponsiveStyleValue<string> }>;
102
export const borderBottomColor: StyleFunction<{ borderBottomColor?: ResponsiveStyleValue<string> }>;
103
export const borderLeftColor: StyleFunction<{ borderLeftColor?: ResponsiveStyleValue<string> }>;
104
export const borderRadius: StyleFunction<{ borderRadius?: ResponsiveStyleValue<string | number> }>;
105
export const outline: StyleFunction<{ outline?: ResponsiveStyleValue<string | number> }>;
106
export const outlineColor: StyleFunction<{ outlineColor?: ResponsiveStyleValue<string> }>;
107
108
// Flexbox style functions
109
export const flexDirection: StyleFunction<{ flexDirection?: ResponsiveStyleValue<'row' | 'row-reverse' | 'column' | 'column-reverse'> }>;
110
export const flexWrap: StyleFunction<{ flexWrap?: ResponsiveStyleValue<'nowrap' | 'wrap' | 'wrap-reverse'> }>;
111
export const justifyContent: StyleFunction<{ justifyContent?: ResponsiveStyleValue<string> }>;
112
export const alignItems: StyleFunction<{ alignItems?: ResponsiveStyleValue<string> }>;
113
export const alignContent: StyleFunction<{ alignContent?: ResponsiveStyleValue<string> }>;
114
export const alignSelf: StyleFunction<{ alignSelf?: ResponsiveStyleValue<string> }>;
115
export const flex: StyleFunction<{ flex?: ResponsiveStyleValue<string | number> }>;
116
export const flexGrow: StyleFunction<{ flexGrow?: ResponsiveStyleValue<number> }>;
117
export const flexShrink: StyleFunction<{ flexShrink?: ResponsiveStyleValue<number> }>;
118
export const flexBasis: StyleFunction<{ flexBasis?: ResponsiveStyleValue<string | number> }>;
119
export const order: StyleFunction<{ order?: ResponsiveStyleValue<number> }>;
120
export const justifyItems: StyleFunction<{ justifyItems?: ResponsiveStyleValue<string> }>;
121
export const justifySelf: StyleFunction<{ justifySelf?: ResponsiveStyleValue<string> }>;
122
123
// CSS Grid style functions
124
export const gap: StyleFunction<{ gap?: ResponsiveStyleValue<string | number> }>;
125
export const columnGap: StyleFunction<{ columnGap?: ResponsiveStyleValue<string | number> }>;
126
export const rowGap: StyleFunction<{ rowGap?: ResponsiveStyleValue<string | number> }>;
127
export const gridColumn: StyleFunction<{ gridColumn?: ResponsiveStyleValue<string> }>;
128
export const gridRow: StyleFunction<{ gridRow?: ResponsiveStyleValue<string> }>;
129
export const gridArea: StyleFunction<{ gridArea?: ResponsiveStyleValue<string> }>;
130
export const gridAutoFlow: StyleFunction<{ gridAutoFlow?: ResponsiveStyleValue<string> }>;
131
export const gridAutoColumns: StyleFunction<{ gridAutoColumns?: ResponsiveStyleValue<string> }>;
132
export const gridAutoRows: StyleFunction<{ gridAutoRows?: ResponsiveStyleValue<string> }>;
133
export const gridTemplateColumns: StyleFunction<{ gridTemplateColumns?: ResponsiveStyleValue<string> }>;
134
export const gridTemplateRows: StyleFunction<{ gridTemplateRows?: ResponsiveStyleValue<string> }>;
135
export const gridTemplateAreas: StyleFunction<{ gridTemplateAreas?: ResponsiveStyleValue<string> }>;
136
137
// Sizing style functions
138
export const width: StyleFunction<{ width?: ResponsiveStyleValue<string | number> }>;
139
export const height: StyleFunction<{ height?: ResponsiveStyleValue<string | number> }>;
140
export const minWidth: StyleFunction<{ minWidth?: ResponsiveStyleValue<string | number> }>;
141
export const maxWidth: StyleFunction<{ maxWidth?: ResponsiveStyleValue<string | number> }>;
142
export const minHeight: StyleFunction<{ minHeight?: ResponsiveStyleValue<string | number> }>;
143
export const maxHeight: StyleFunction<{ maxHeight?: ResponsiveStyleValue<string | number> }>;
144
export const sizeWidth: StyleFunction<{ sizeWidth?: ResponsiveStyleValue<string | number> }>;
145
export const sizeHeight: StyleFunction<{ sizeHeight?: ResponsiveStyleValue<string | number> }>;
146
export const boxSizing: StyleFunction<{ boxSizing?: ResponsiveStyleValue<'border-box' | 'content-box'> }>;
147
148
// Typography style functions
149
export const fontFamily: StyleFunction<{ fontFamily?: ResponsiveStyleValue<string> }>;
150
export const fontSize: StyleFunction<{ fontSize?: ResponsiveStyleValue<string | number> }>;
151
export const fontStyle: StyleFunction<{ fontStyle?: ResponsiveStyleValue<string> }>;
152
export const fontWeight: StyleFunction<{ fontWeight?: ResponsiveStyleValue<string | number> }>;
153
export const letterSpacing: StyleFunction<{ letterSpacing?: ResponsiveStyleValue<string | number> }>;
154
export const lineHeight: StyleFunction<{ lineHeight?: ResponsiveStyleValue<string | number> }>;
155
export const textAlign: StyleFunction<{ textAlign?: ResponsiveStyleValue<string> }>;
156
export const textTransform: StyleFunction<{ textTransform?: ResponsiveStyleValue<string> }>;
157
export const textDecoration: StyleFunction<{ textDecoration?: ResponsiveStyleValue<string> }>;
158
159
// Position style functions
160
export const position: StyleFunction<{ position?: ResponsiveStyleValue<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'> }>;
161
export const top: StyleFunction<{ top?: ResponsiveStyleValue<string | number> }>;
162
export const right: StyleFunction<{ right?: ResponsiveStyleValue<string | number> }>;
163
export const bottom: StyleFunction<{ bottom?: ResponsiveStyleValue<string | number> }>;
164
export const left: StyleFunction<{ left?: ResponsiveStyleValue<string | number> }>;
165
export const zIndex: StyleFunction<{ zIndex?: ResponsiveStyleValue<number> }>;
166
167
// Palette/Color style functions
168
export const color: StyleFunction<{ color?: ResponsiveStyleValue<string> }>;
169
export const bgcolor: StyleFunction<{ bgcolor?: ResponsiveStyleValue<string> }>;
170
export const backgroundColor: StyleFunction<{ backgroundColor?: ResponsiveStyleValue<string> }>;
171
172
// Display style function
173
export const display: StyleFunction<{ display?: ResponsiveStyleValue<string> }>;
174
175
// Spacing individual functions
176
export const margin: StyleFunction<{ margin?: ResponsiveStyleValue<string | number> }>;
177
export const marginTop: StyleFunction<{ marginTop?: ResponsiveStyleValue<string | number> }>;
178
export const marginRight: StyleFunction<{ marginRight?: ResponsiveStyleValue<string | number> }>;
179
export const marginBottom: StyleFunction<{ marginBottom?: ResponsiveStyleValue<string | number> }>;
180
export const marginLeft: StyleFunction<{ marginLeft?: ResponsiveStyleValue<string | number> }>;
181
export const marginX: StyleFunction<{ marginX?: ResponsiveStyleValue<string | number> }>;
182
export const marginY: StyleFunction<{ marginY?: ResponsiveStyleValue<string | number> }>;
183
export const padding: StyleFunction<{ padding?: ResponsiveStyleValue<string | number> }>;
184
export const paddingTop: StyleFunction<{ paddingTop?: ResponsiveStyleValue<string | number> }>;
185
export const paddingRight: StyleFunction<{ paddingRight?: ResponsiveStyleValue<string | number> }>;
186
export const paddingBottom: StyleFunction<{ paddingBottom?: ResponsiveStyleValue<string | number> }>;
187
export const paddingLeft: StyleFunction<{ paddingLeft?: ResponsiveStyleValue<string | number> }>;
188
export const paddingX: StyleFunction<{ paddingX?: ResponsiveStyleValue<string | number> }>;
189
export const paddingY: StyleFunction<{ paddingY?: ResponsiveStyleValue<string | number> }>;
190
```
191
192
**Usage Examples:**
193
194
```typescript
195
import { border, borderRadius, flexDirection, gap } from "@mui/system";
196
197
// Create custom styled component using individual functions
198
const CustomComponent = styled('div')(
199
border,
200
borderRadius,
201
flexDirection,
202
gap
203
);
204
205
// Use with individual props
206
<CustomComponent
207
border={1}
208
borderRadius={2}
209
flexDirection="column"
210
gap={2}
211
>
212
Content
213
</CustomComponent>
214
```
215
216
### Spacing Functions
217
218
Handle margin and padding properties with theme spacing values and responsive behavior.
219
220
```typescript { .api }
221
/**
222
* Complete spacing style function (margin + padding)
223
*/
224
const spacing: StyleFunction<SpacingProps>;
225
226
/**
227
* Margin-only style function
228
*/
229
const margin: StyleFunction<MarginProps>;
230
231
/**
232
* Padding-only style function
233
*/
234
const padding: StyleFunction<PaddingProps>;
235
236
interface SpacingProps {
237
/** All margin and padding */
238
m?: ResponsiveStyleValue<number | string>;
239
p?: ResponsiveStyleValue<number | string>;
240
241
/** Margin directions */
242
mt?: ResponsiveStyleValue<number | string>;
243
mr?: ResponsiveStyleValue<number | string>;
244
mb?: ResponsiveStyleValue<number | string>;
245
ml?: ResponsiveStyleValue<number | string>;
246
mx?: ResponsiveStyleValue<number | string>;
247
my?: ResponsiveStyleValue<number | string>;
248
249
/** Padding directions */
250
pt?: ResponsiveStyleValue<number | string>;
251
pr?: ResponsiveStyleValue<number | string>;
252
pb?: ResponsiveStyleValue<number | string>;
253
pl?: ResponsiveStyleValue<number | string>;
254
px?: ResponsiveStyleValue<number | string>;
255
py?: ResponsiveStyleValue<number | string>;
256
257
/** CSS margin/padding properties */
258
margin?: ResponsiveStyleValue<number | string>;
259
padding?: ResponsiveStyleValue<number | string>;
260
marginTop?: ResponsiveStyleValue<number | string>;
261
marginRight?: ResponsiveStyleValue<number | string>;
262
marginBottom?: ResponsiveStyleValue<number | string>;
263
marginLeft?: ResponsiveStyleValue<number | string>;
264
paddingTop?: ResponsiveStyleValue<number | string>;
265
paddingRight?: ResponsiveStyleValue<number | string>;
266
paddingBottom?: ResponsiveStyleValue<number | string>;
267
paddingLeft?: ResponsiveStyleValue<number | string>;
268
}
269
270
interface MarginProps {
271
m?: ResponsiveStyleValue<number | string>;
272
mt?: ResponsiveStyleValue<number | string>;
273
mr?: ResponsiveStyleValue<number | string>;
274
mb?: ResponsiveStyleValue<number | string>;
275
ml?: ResponsiveStyleValue<number | string>;
276
mx?: ResponsiveStyleValue<number | string>;
277
my?: ResponsiveStyleValue<number | string>;
278
margin?: ResponsiveStyleValue<number | string>;
279
marginTop?: ResponsiveStyleValue<number | string>;
280
marginRight?: ResponsiveStyleValue<number | string>;
281
marginBottom?: ResponsiveStyleValue<number | string>;
282
marginLeft?: ResponsiveStyleValue<number | string>;
283
}
284
285
interface PaddingProps {
286
p?: ResponsiveStyleValue<number | string>;
287
pt?: ResponsiveStyleValue<number | string>;
288
pr?: ResponsiveStyleValue<number | string>;
289
pb?: ResponsiveStyleValue<number | string>;
290
pl?: ResponsiveStyleValue<number | string>;
291
px?: ResponsiveStyleValue<number | string>;
292
py?: ResponsiveStyleValue<number | string>;
293
padding?: ResponsiveStyleValue<number | string>;
294
paddingTop?: ResponsiveStyleValue<number | string>;
295
paddingRight?: ResponsiveStyleValue<number | string>;
296
paddingBottom?: ResponsiveStyleValue<number | string>;
297
paddingLeft?: ResponsiveStyleValue<number | string>;
298
}
299
300
/**
301
* Create unary spacing function
302
* @param transformer - Value transformation function
303
* @returns Spacing transform function
304
*/
305
function createUnarySpacing<Transformer extends TransformFunction>(
306
transformer: Transformer
307
): (value: number | string) => string;
308
309
/**
310
* Create unary unit function
311
* @param unit - CSS unit string
312
* @returns Unit transform function
313
*/
314
function createUnaryUnit(unit: string): (value: number | string) => string;
315
316
/**
317
* Get transformed spacing value
318
* @param transformer - Transformation function
319
* @param propValue - Raw prop value
320
* @returns Transformed CSS value
321
*/
322
function getValue<T>(transformer: T, propValue: unknown): T extends TransformFunction ? ReturnType<T> : unknown;
323
```
324
325
**Usage Examples:**
326
327
```typescript
328
import { spacing, margin, padding } from "@mui/system";
329
330
// Component with spacing props
331
<Box m={2} p={1} mt={3}>
332
{/* margin: 16px, padding: 8px, margin-top: 24px */}
333
</Box>
334
335
// Responsive spacing
336
<Box
337
p={{ xs: 1, sm: 2, md: 3 }}
338
m={{ xs: 0, md: 2 }}
339
>
340
Responsive spacing
341
</Box>
342
343
// Using spacing functions directly
344
const spacedStyles = spacing({
345
m: 2,
346
p: { xs: 1, md: 2 },
347
});
348
```
349
350
### Typography Functions
351
352
Handle font properties, text styling, and typography system integration.
353
354
```typescript { .api }
355
/**
356
* Complete typography style function
357
*/
358
const typography: StyleFunction<TypographyProps>;
359
360
/**
361
* Typography variant function
362
*/
363
const typographyVariant: StyleFunction<{ variant: string }>;
364
365
interface TypographyProps {
366
/** Typography variant from theme */
367
variant?: ResponsiveStyleValue<string>;
368
369
/** Font family */
370
fontFamily?: ResponsiveStyleValue<string>;
371
372
/** Font size */
373
fontSize?: ResponsiveStyleValue<number | string>;
374
375
/** Font style */
376
fontStyle?: ResponsiveStyleValue<string>;
377
378
/** Font weight */
379
fontWeight?: ResponsiveStyleValue<number | string>;
380
381
/** Letter spacing */
382
letterSpacing?: ResponsiveStyleValue<number | string>;
383
384
/** Line height */
385
lineHeight?: ResponsiveStyleValue<number | string>;
386
387
/** Text alignment */
388
textAlign?: ResponsiveStyleValue<string>;
389
390
/** Text transform */
391
textTransform?: ResponsiveStyleValue<string>;
392
}
393
394
// Individual typography functions
395
const fontFamily: StyleFunction<{ fontFamily: ResponsiveStyleValue<string> }>;
396
const fontSize: StyleFunction<{ fontSize: ResponsiveStyleValue<number | string> }>;
397
const fontStyle: StyleFunction<{ fontStyle: ResponsiveStyleValue<string> }>;
398
const fontWeight: StyleFunction<{ fontWeight: ResponsiveStyleValue<number | string> }>;
399
const letterSpacing: StyleFunction<{ letterSpacing: ResponsiveStyleValue<number | string> }>;
400
const lineHeight: StyleFunction<{ lineHeight: ResponsiveStyleValue<number | string> }>;
401
const textAlign: StyleFunction<{ textAlign: ResponsiveStyleValue<string> }>;
402
const textTransform: StyleFunction<{ textTransform: ResponsiveStyleValue<string> }>;
403
```
404
405
**Usage Examples:**
406
407
```typescript
408
import { typography } from "@mui/system";
409
410
// Typography props on components
411
<Box
412
fontSize="h4.fontSize"
413
fontWeight="bold"
414
textAlign="center"
415
>
416
Styled text
417
</Box>
418
419
// Responsive typography
420
<Box
421
fontSize={{ xs: '1rem', md: '1.5rem' }}
422
fontWeight={{ xs: 400, md: 600 }}
423
>
424
Responsive text
425
</Box>
426
```
427
428
### Border Functions
429
430
Handle border properties including width, style, color, and radius with theme integration.
431
432
```typescript { .api }
433
/**
434
* Complete border style function
435
*/
436
const borders: StyleFunction<BordersProps>;
437
438
interface BordersProps {
439
/** Border shorthand */
440
border?: ResponsiveStyleValue<number | string>;
441
borderTop?: ResponsiveStyleValue<number | string>;
442
borderRight?: ResponsiveStyleValue<number | string>;
443
borderBottom?: ResponsiveStyleValue<number | string>;
444
borderLeft?: ResponsiveStyleValue<number | string>;
445
446
/** Border color */
447
borderColor?: ResponsiveStyleValue<string>;
448
borderTopColor?: ResponsiveStyleValue<string>;
449
borderRightColor?: ResponsiveStyleValue<string>;
450
borderBottomColor?: ResponsiveStyleValue<string>;
451
borderLeftColor?: ResponsiveStyleValue<string>;
452
453
/** Border radius */
454
borderRadius?: ResponsiveStyleValue<number | string>;
455
borderTopLeftRadius?: ResponsiveStyleValue<number | string>;
456
borderTopRightRadius?: ResponsiveStyleValue<number | string>;
457
borderBottomLeftRadius?: ResponsiveStyleValue<number | string>;
458
borderBottomRightRadius?: ResponsiveStyleValue<number | string>;
459
}
460
461
// Individual border functions
462
const border: StyleFunction<{ border: ResponsiveStyleValue<number | string> }>;
463
const borderTop: StyleFunction<{ borderTop: ResponsiveStyleValue<number | string> }>;
464
const borderRight: StyleFunction<{ borderRight: ResponsiveStyleValue<number | string> }>;
465
const borderBottom: StyleFunction<{ borderBottom: ResponsiveStyleValue<number | string> }>;
466
const borderLeft: StyleFunction<{ borderLeft: ResponsiveStyleValue<number | string> }>;
467
const borderColor: StyleFunction<{ borderColor: ResponsiveStyleValue<string> }>;
468
const borderTopColor: StyleFunction<{ borderTopColor: ResponsiveStyleValue<string> }>;
469
const borderRightColor: StyleFunction<{ borderRightColor: ResponsiveStyleValue<string> }>;
470
const borderBottomColor: StyleFunction<{ borderBottomColor: ResponsiveStyleValue<string> }>;
471
const borderLeftColor: StyleFunction<{ borderLeftColor: ResponsiveStyleValue<string> }>;
472
const borderRadius: StyleFunction<{ borderRadius: ResponsiveStyleValue<number | string> }>;
473
```
474
475
**Usage Examples:**
476
477
```typescript
478
import { borders } from "@mui/system";
479
480
// Border props on components
481
<Box
482
border={1}
483
borderColor="primary.main"
484
borderRadius={2}
485
>
486
Bordered content
487
</Box>
488
489
// Individual border sides
490
<Box
491
borderTop={1}
492
borderBottom={2}
493
borderColor="grey.300"
494
>
495
Partial borders
496
</Box>
497
```
498
499
### Color/Palette Functions
500
501
Handle color and background-color properties with theme palette integration.
502
503
```typescript { .api }
504
/**
505
* Complete palette style function
506
*/
507
const palette: StyleFunction<PaletteProps>;
508
509
interface PaletteProps {
510
/** Text color */
511
color?: ResponsiveStyleValue<string>;
512
513
/** Background color */
514
bgcolor?: ResponsiveStyleValue<string>;
515
backgroundColor?: ResponsiveStyleValue<string>;
516
}
517
518
// Individual color functions
519
const color: StyleFunction<{ color: ResponsiveStyleValue<string> }>;
520
const bgcolor: StyleFunction<{ bgcolor: ResponsiveStyleValue<string> }>;
521
```
522
523
**Usage Examples:**
524
525
```typescript
526
import { palette } from "@mui/system";
527
528
// Color props on components
529
<Box
530
color="primary.main"
531
bgcolor="background.paper"
532
>
533
Colored content
534
</Box>
535
536
// Responsive colors
537
<Box
538
color={{ xs: 'text.secondary', md: 'primary.main' }}
539
bgcolor={{ xs: 'grey.100', md: 'primary.light' }}
540
>
541
Responsive colors
542
</Box>
543
```
544
545
### Sizing Functions
546
547
Handle width, height, and dimension properties with theme integration.
548
549
```typescript { .api }
550
/**
551
* Complete sizing style function
552
*/
553
const sizing: StyleFunction<SizingProps>;
554
555
interface SizingProps {
556
/** Width properties */
557
width?: ResponsiveStyleValue<number | string>;
558
maxWidth?: ResponsiveStyleValue<number | string>;
559
minWidth?: ResponsiveStyleValue<number | string>;
560
561
/** Height properties */
562
height?: ResponsiveStyleValue<number | string>;
563
maxHeight?: ResponsiveStyleValue<number | string>;
564
minHeight?: ResponsiveStyleValue<number | string>;
565
566
/** Box sizing */
567
boxSizing?: ResponsiveStyleValue<string>;
568
}
569
570
// Individual sizing functions
571
const width: StyleFunction<{ width: ResponsiveStyleValue<number | string> }>;
572
const maxWidth: StyleFunction<{ maxWidth: ResponsiveStyleValue<number | string> }>;
573
const minWidth: StyleFunction<{ minWidth: ResponsiveStyleValue<number | string> }>;
574
const height: StyleFunction<{ height: ResponsiveStyleValue<number | string> }>;
575
const maxHeight: StyleFunction<{ maxHeight: ResponsiveStyleValue<number | string> }>;
576
const minHeight: StyleFunction<{ minHeight: ResponsiveStyleValue<number | string> }>;
577
const sizeWidth: StyleFunction<{ sizeWidth: ResponsiveStyleValue<number | string> }>;
578
const sizeHeight: StyleFunction<{ sizeHeight: ResponsiveStyleValue<number | string> }>;
579
const boxSizing: StyleFunction<{ boxSizing: ResponsiveStyleValue<string> }>;
580
```
581
582
### Flexbox Functions
583
584
Handle flexbox container and item properties for flexible layouts.
585
586
```typescript { .api }
587
/**
588
* Complete flexbox style function
589
*/
590
const flexbox: StyleFunction<FlexboxProps>;
591
592
interface FlexboxProps {
593
/** Flex container properties */
594
flexDirection?: ResponsiveStyleValue<string>;
595
flexWrap?: ResponsiveStyleValue<string>;
596
justifyContent?: ResponsiveStyleValue<string>;
597
alignItems?: ResponsiveStyleValue<string>;
598
alignContent?: ResponsiveStyleValue<string>;
599
600
/** Flex item properties */
601
flex?: ResponsiveStyleValue<number | string>;
602
flexGrow?: ResponsiveStyleValue<number>;
603
flexShrink?: ResponsiveStyleValue<number>;
604
flexBasis?: ResponsiveStyleValue<number | string>;
605
alignSelf?: ResponsiveStyleValue<string>;
606
order?: ResponsiveStyleValue<number>;
607
608
/** Additional properties */
609
justifyItems?: ResponsiveStyleValue<string>;
610
justifySelf?: ResponsiveStyleValue<string>;
611
}
612
613
// Individual flexbox functions
614
const flexDirection: StyleFunction<{ flexDirection: ResponsiveStyleValue<string> }>;
615
const flexWrap: StyleFunction<{ flexWrap: ResponsiveStyleValue<string> }>;
616
const justifyContent: StyleFunction<{ justifyContent: ResponsiveStyleValue<string> }>;
617
const alignItems: StyleFunction<{ alignItems: ResponsiveStyleValue<string> }>;
618
const alignContent: StyleFunction<{ alignContent: ResponsiveStyleValue<string> }>;
619
const flex: StyleFunction<{ flex: ResponsiveStyleValue<number | string> }>;
620
const flexGrow: StyleFunction<{ flexGrow: ResponsiveStyleValue<number> }>;
621
const flexShrink: StyleFunction<{ flexShrink: ResponsiveStyleValue<number> }>;
622
const flexBasis: StyleFunction<{ flexBasis: ResponsiveStyleValue<number | string> }>;
623
const alignSelf: StyleFunction<{ alignSelf: ResponsiveStyleValue<string> }>;
624
const order: StyleFunction<{ order: ResponsiveStyleValue<number> }>;
625
const justifyItems: StyleFunction<{ justifyItems: ResponsiveStyleValue<string> }>;
626
const justifySelf: StyleFunction<{ justifySelf: ResponsiveStyleValue<string> }>;
627
```
628
629
### CSS Grid Functions
630
631
Handle CSS Grid container and item properties for grid layouts.
632
633
```typescript { .api }
634
/**
635
* CSS Grid style function
636
*/
637
const grid: StyleFunction<CssGridProps>;
638
639
interface CssGridProps {
640
/** Grid container properties */
641
gridTemplateColumns?: ResponsiveStyleValue<string>;
642
gridTemplateRows?: ResponsiveStyleValue<string>;
643
gridTemplateAreas?: ResponsiveStyleValue<string>;
644
gridAutoColumns?: ResponsiveStyleValue<string>;
645
gridAutoRows?: ResponsiveStyleValue<string>;
646
gridAutoFlow?: ResponsiveStyleValue<string>;
647
648
/** Grid item properties */
649
gridColumn?: ResponsiveStyleValue<string>;
650
gridRow?: ResponsiveStyleValue<string>;
651
gridArea?: ResponsiveStyleValue<string>;
652
653
/** Gap properties */
654
gap?: ResponsiveStyleValue<number | string>;
655
rowGap?: ResponsiveStyleValue<number | string>;
656
columnGap?: ResponsiveStyleValue<number | string>;
657
}
658
659
// Individual grid functions
660
const gap: StyleFunction<{ gap: ResponsiveStyleValue<number | string> }>;
661
const columnGap: StyleFunction<{ columnGap: ResponsiveStyleValue<number | string> }>;
662
const rowGap: StyleFunction<{ rowGap: ResponsiveStyleValue<number | string> }>;
663
const gridColumn: StyleFunction<{ gridColumn: ResponsiveStyleValue<string> }>;
664
const gridRow: StyleFunction<{ gridRow: ResponsiveStyleValue<string> }>;
665
const gridArea: StyleFunction<{ gridArea: ResponsiveStyleValue<string> }>;
666
const gridAutoFlow: StyleFunction<{ gridAutoFlow: ResponsiveStyleValue<string> }>;
667
const gridAutoColumns: StyleFunction<{ gridAutoColumns: ResponsiveStyleValue<string> }>;
668
const gridAutoRows: StyleFunction<{ gridAutoRows: ResponsiveStyleValue<string> }>;
669
const gridTemplateColumns: StyleFunction<{ gridTemplateColumns: ResponsiveStyleValue<string> }>;
670
const gridTemplateRows: StyleFunction<{ gridTemplateRows: ResponsiveStyleValue<string> }>;
671
const gridTemplateAreas: StyleFunction<{ gridTemplateAreas: ResponsiveStyleValue<string> }>;
672
```
673
674
### Position Functions
675
676
Handle positioning properties including position, coordinates, and z-index.
677
678
```typescript { .api }
679
/**
680
* Position style function
681
*/
682
const positions: StyleFunction<PositionsProps>;
683
684
interface PositionsProps {
685
/** Position type */
686
position?: ResponsiveStyleValue<string>;
687
688
/** Coordinates */
689
top?: ResponsiveStyleValue<number | string>;
690
right?: ResponsiveStyleValue<number | string>;
691
bottom?: ResponsiveStyleValue<number | string>;
692
left?: ResponsiveStyleValue<number | string>;
693
694
/** Layering */
695
zIndex?: ResponsiveStyleValue<number | string>;
696
}
697
```
698
699
### Display Functions
700
701
Handle display, visibility, and overflow properties.
702
703
```typescript { .api }
704
/**
705
* Display style function
706
*/
707
const display: StyleFunction<DisplayProps>;
708
709
interface DisplayProps {
710
/** Display type */
711
display?: ResponsiveStyleValue<string>;
712
displayPrint?: ResponsiveStyleValue<string>;
713
714
/** Overflow */
715
overflow?: ResponsiveStyleValue<string>;
716
textOverflow?: ResponsiveStyleValue<string>;
717
718
/** Visibility */
719
visibility?: ResponsiveStyleValue<string>;
720
whiteSpace?: ResponsiveStyleValue<string>;
721
}
722
```
723
724
### Shadow Functions
725
726
Handle box-shadow properties with theme shadow values.
727
728
```typescript { .api }
729
/**
730
* Shadow style function
731
*/
732
const shadows: StyleFunction<ShadowsProps>;
733
734
interface ShadowsProps {
735
/** Box shadow */
736
boxShadow?: ResponsiveStyleValue<number | string>;
737
}
738
```
739
740
## Function Integration
741
742
All style functions integrate seamlessly with:
743
744
- **Theme System**: Automatic theme value resolution for colors, spacing, breakpoints
745
- **Responsive Design**: Object syntax for breakpoint-specific values
746
- **sx Prop**: All style functions work within sx prop context
747
- **Component Props**: Direct usage as component props with full TypeScript support
748
- **Composition**: Functions can be composed together for reusable styling patterns