···11+---
22+title: Breakpoints
33+description: Change layout at named viewport widths with responsive layout properties.
44+---
55+66+Luke UI defines six breakpoint keys for responsive layout. `Box` layout properties accept a value at
77+each key. Choose a breakpoint when content needs a deliberate layout change.
88+99+Read [Layout](/overview/layout) for the full layout API.
1010+1111+## Breakpoints
1212+1313+| Breakpoint | Minimum viewport width |
1414+| ---------- | ---------------------- |
1515+| `initial` | 0px (base) |
1616+| `small` | 640px |
1717+| `medium` | 768px |
1818+| `large` | 1024px |
1919+| `xlarge` | 1280px |
2020+| `xxlarge` | 1536px |
2121+2222+Each breakpoint is a fixed constant, not a theme token. A custom theme cannot change these widths.
2323+2424+Every breakpoint is a minimum width. There is no maximum-width or range condition. A value set at
2525+`medium` also applies at `large`, `xlarge`, and `xxlarge`, unless a later breakpoint overrides it.
2626+2727+## Responsive values
2828+2929+Pass a direct value when a layout property stays constant. Pass an object keyed by breakpoint when
3030+it changes. Values cascade up from `initial`, so specify only the changes.
3131+3232+```tsx
3333+<Box display="flex" flexDirection={{ initial: 'column', medium: 'row' }}>
3434+ {children}
3535+</Box>
3636+```
3737+3838+This example stacks the children by default. It places them in a row from `medium`.
3939+4040+<ExampleBlock src="box/responsive-layout" title="Breakpoints — A row from medium" />
4141+4242+## When to use a responsive value
4343+4444+Set a responsive value when the layout needs a deliberate change. Prefer intrinsic wrapping when the
4545+content can adapt without a breakpoint.
+9-20
apps/docs/content/docs/overview/layout.mdx
···8899## Box
10101111-`Box` is a `div` with the supported Sprinkles properties. Use it to space child content. Constrain
1212-its size the same way. Place an item in a flex or grid layout, or hide content at a breakpoint.
1111+`Box` is a `div` with the supported layout properties. Use it to space child content. Constrain its
1212+size the same way. Place an item in a flex or grid layout, or hide content at a breakpoint.
13131414```tsx
1515import { Box } from '@luke-ui/react/box';
···24242525## Responsive values
26262727-Every Sprinkles property accepts a direct value or an object keyed by breakpoint. Values cascade
2828-from `xsmall`, so specify only the points where the layout changes.
2929-3030-```tsx
3131-<Box
3232- display="flex"
3333- flexDirection={{ xsmall: 'column', medium: 'row' }}
3434- gap={{ xsmall: '300', medium: '600' }}
3535->
3636- {children}
3737-</Box>
3838-```
3939-4040-The available breakpoints are `xsmall` (base), `small` (640px), `medium` (768px), `large` (1024px),
4141-`xlarge` (1280px), and `xxlarge` (1536px).
2727+Properties passed to `Box` or `createSprinkles` accept responsive values. Specify only the points
2828+where the layout changes.
42294330<ExampleBlock src="box/responsive-layout" title="Box — Responsive values" />
3131+3232+See [Breakpoints](/overview/breakpoints) for the responsive value API and fixed thresholds.
44334534## Spacing and sizing
4635···53425443## Use visual styles elsewhere
55445656-Sprinkles excludes semantic colour, typography, and interaction states. Choose a component API for
5757-those concerns. When a custom element needs a visual token, use `vars` from `@luke-ui/react/theme`
5858-rather than a palette value or component selector.
4545+The layout APIs exclude semantic colour, typography, and interaction states. Choose a component API
4646+for those concerns. When a custom element needs a visual token, use `vars` from
4747+`@luke-ui/react/theme`.
59486049## Continue learning
6150
···33description: A div with responsive Luke UI layout properties.
44---
5566-`Box` is a `div` that accepts Luke UI Sprinkles properties. It places content in a layout, adds
77-token spacing, constrains an element's size, or controls a flex or grid child. Use a normal `div`
88-when no supported layout property applies.
66+`Box` is a `div` that accepts Luke UI layout properties. It places content in a layout, adds token
77+spacing, constrains an element's size, or controls a flex or grid child. Use a normal `div` when no
88+supported layout property applies.
991010<ExampleBlock src="box/basic" title="Box — Basic" />
1111···2727## Responsive values
28282929Pass a direct value when it does not change. Use an object keyed by breakpoint when it does. Values
3030-cascade upward from `xsmall`, so only specify the changes.
3030+cascade upward from `initial`, so only specify the changes.
31313232<ExampleBlock src="box/responsive-layout" title="Box — Responsive layout" />
33333434```tsx
3535<Box
3636 display="flex"
3737- flexDirection={{ xsmall: 'column', medium: 'row' }}
3838- gap={{ xsmall: '200', medium: '600' }}
3737+ flexDirection={{ initial: 'column', medium: 'row' }}
3838+ gap={{ initial: '200', medium: '600' }}
3939>
4040 {children}
4141</Box>
4242```
43434444-The breakpoints are `xsmall` (base), `small` (640px), `medium` (768px), `large` (1024px), `xlarge`
4545-(1280px), and `xxlarge` (1536px).
4444+See [Breakpoints](/overview/breakpoints) for the available keys and fixed thresholds.
46454746## Spacing values
4847