<tr><tdclass="name">paddingX</td><tdclass="type">number | string</td><tdclass="default">'var(--container-padding-inline)'</td><td>Default comes from the foundation token; override per-instance.</td></tr>
<tr><tdclass="name">paddingY</td><tdclass="type">number | string</td><tdclass="default empty">—</td><td>Inherited from Box; default is 0. Use <ahref="/uix/components/section"><Section></a> if you want token-keyed block padding.</td></tr>
</tbody>
</table>
</div>
<divdata-uix-subsection-head>Inherited from Box</div>
<pdata-uix-section-desc>
Every <ahref="/uix/components/box">BoxProps</a> field is forwarded:
<code>padding*</code>, <code>margin*</code>, <code>width</code> (locked to 100% by
<tr><tdclass="name">radix-themes</td><td><code><Container></code></td><td>Radix exposes 4 sizes (<code>1..4</code>); UIX uses 6 named tokens (<code>sm..xxl</code> + <code>full</code>). Same centred-by-default shape.</td></tr>
<tr><tdclass="name">chakra-ui</td><td><code><Container></code></td><td>Chakra defaults to <code>maxW="60ch"</code> regardless of theme; UIX wires through to foundation tokens for project-wide consistency.</td></tr>
<tr><tdclass="name">mantine</td><td><code><Container></code></td><td>Mantine takes <code>size="xs|sm|md|lg|xl"</code> or a raw number; UIX matches the named scale and adds <code>full</code> to opt out.</td></tr>
<tr><tdclass="name">Role</td><td>None implicit. Default element is <code><div></code> — semantically neutral. Container is a layout wrapper; landmarks (<code><main></code>, <code><article></code>) belong on a separate element.</td></tr>
<tr><tdclass="name">templateColumns</td><tdclass="type">string</td><tdclass="default empty">—</td><td><code>grid-template-columns</code>. e.g. <code>"repeat(3, 1fr)"</code>.</td></tr>
<tr><tdclass="name">gap</td><tdclass="type">number | string</td><tdclass="default empty">—</td><td>Shorthand for both axes. Number → <code>var(--space-N)</code>.</td></tr>
<tr><tdclass="name">rowGap</td><tdclass="type">number | string</td><tdclass="default empty">—</td><td>Per-axis override; takes precedence over <code>gap</code>.</td></tr>
<tr><tdclass="name">columnGap</td><tdclass="type">number | string</td><tdclass="default empty">—</td><td>Per-axis override; takes precedence over <code>gap</code>.</td></tr>
</tbody>
</table>
</div>
<divdata-uix-subsection-head>Inherited from Box</div>
<pdata-uix-section-desc>
Every <ahref="/uix/components/box">BoxProps</a> field is forwarded (except
<code>display</code>, which Grid locks to <code>grid</code>):
<tr><tdclass="name">radix-themes</td><td><code><Grid></code></td><td>Same shape: container props on Grid, item props on Box. Radix accepts <code>columns="3"</code> shorthand; UIX uses raw <code>templateColumns="repeat(3, 1fr)"</code>.</td></tr>
<tr><tdclass="name">chakra-ui</td><td><code><Grid></code> / <code><GridItem></code></td><td>Chakra ships a separate <code><GridItem></code> for placement; UIX uses Box on the child instead — one primitive, less indirection.</td></tr>
<tr><tdclass="name">mantine</td><td><code><SimpleGrid></code> / <code><Grid></code></td><td>Mantine splits into SimpleGrid (auto-fit responsive) and Grid (12-col span); UIX keeps a single Grid that accepts arbitrary CSS Grid templates.</td></tr>
<tr><tdclass="name">Role</td><td>None implicit. Default element is <code><div></code> — semantically neutral. Wrap Grid in a landmark (<code><main></code>, <code><nav></code>, <code><section></code>) when content needs one.</td></tr>
<tr><tdclass="name">Label</td><td>Not applicable — Grid has no content semantics. Labels belong to the interactive children.</td></tr>
<tr><tdclass="name">Keyboard</td><td>Grid is not focusable. Tab order follows DOM order even when CSS Grid reflows visual order (e.g. <code>order</code>, <code>grid-area</code>, <code>autoFlow="dense"</code>). Verify visual order matches focus order for keyboard users.</td></tr>
<tr><tdclass="name">Reduced motion</td><td>Grid does not animate. Layout shifts on resize follow CSS defaults.</td></tr>
<tr><tdclass="name">direction</td><tdclass="type">row | column</td><tdclass="default">'row'</td><td>Narrowed from Flex's full direction union.</td></tr>
<tr><tdclass="name">radix-themes</td><td><code><Flex></code></td><td>Radix doesn't ship a separate Group — they recommend Flex with <code>gap</code>. UIX adds <code>attached</code> for segmented controls and <code>grow</code> for equal-width toolbars.</td></tr>
<tr><tdclass="name">chakra-ui</td><td><code><ButtonGroup></code> / <code><HStack></code></td><td>Chakra splits attached behaviour into ButtonGroup (button-specific). UIX's Group is element-agnostic — works for any cluster.</td></tr>
<tr><tdclass="name">mantine</td><td><code><Group></code></td><td>Mantine has the same name and shape; <code>grow</code> maps 1:1. Mantine doesn't have <code>attached</code> — UIX adds it.</td></tr>
<tr><tdclass="name">Role</td><td>None implicit. Group is shape-agnostic — assign <code>role="group"</code>, <code>role="toolbar"</code> or <code>role="radiogroup"</code> on the Group provider via <code>{`{...rest}`}</code> when the cluster has semantic meaning. Reach for the <ahref="/uix/components/toolbar"><Toolbar></a> primitive for true toolbar semantics.</td></tr>
<tr><tdclass="name">Label</td><td>Provide <code>aria-label</code> or <code>aria-labelledby</code> on the Group when assigning a grouping role.</td></tr>
<tr><tdclass="name">Keyboard</td><td>Group itself is not focusable. Tab order follows DOM order. For arrow-key navigation between children use the headless toolbar / radio-group soma.</td></tr>
<tr><tdclass="name">Reduced motion</td><td>Group does not animate.</td></tr>
<tr><tdclass="name">radix-themes</td><td><code><Section></code></td><td>Radix renders a real <code><section></code> by default and takes <code>size="1..4"</code>; UIX uses named tokens (<code>sm..xl</code>) and renders <code><div></code> pending an <code>as</code> prop.</td></tr>
<tr><tdclass="name">chakra-ui</td><td>n/a</td><td>Chakra has no dedicated Section — they recommend <code><Box as="section" py="…"></code>. UIX names the pattern as a primitive for consistency.</td></tr>
<tr><tdclass="name">mantine</td><td>n/a</td><td>Mantine has no Section either. Sections are usually authored ad-hoc with Stack + AppShell.</td></tr>
<tr><tdclass="name">Role</td><td>None implicit. Despite the name, Section renders as <code><div></code> — there is no implicit <code>region</code> role. Wrap Section in a real <code><section aria-labelledby="…"></code> or use a heading inside to provide landmark structure.</td></tr>
<tr><tdclass="name">Label</td><td>Not applicable to Section itself. If you wrap a real <code><section></code> around it, label it with <code>aria-labelledby</code> pointing at the heading.</td></tr>
<tr><tdclass="name">Keyboard</td><td>Section is not focusable. Tab order follows DOM order.</td></tr>
<tr><tdclass="name">Reduced motion</td><td>Section does not animate.</td></tr>
<tr><tdclass="name">radix-themes</td><td><code><Flex direction="column"></code></td><td>Radix doesn't ship a separate Stack — they use Flex with direction. UIX names the direction-locked variant for the most common case.</td></tr>
<tr><tdclass="name">chakra-ui</td><td><code><Stack></code> / <code><VStack></code> / <code><HStack></code></td><td>Chakra exposes three components (Stack/VStack/HStack). UIX collapses to a single Stack with a <code>direction</code> prop — <ahref="/uix/components/group"><Group></a> covers the row-cluster case.</td></tr>
<tr><tdclass="name">mantine</td><td><code><Stack></code> / <code><Group></code></td><td>Mantine has the same split: vertical Stack + horizontal Group. UIX matches Mantine here.</td></tr>
<tr><tdclass="name">Role</td><td>None implicit. Default element is <code><div></code> — semantically neutral. Wrap Stack in a landmark (<code><nav></code>, <code><section></code>, <code><ul role="list"></code>) when content needs one.</td></tr>
<tr><tdclass="name">Label</td><td>Not applicable — Stack has no content semantics. Labels belong to the interactive children.</td></tr>
<tr><tdclass="name">Keyboard</td><td>Stack is not focusable. Tab order follows DOM order even when <code>direction</code> visually reverses (<code>row-reverse</code> / <code>column-reverse</code>). Verify visual order matches focus order for keyboard users.</td></tr>
<tr><tdclass="name">Reduced motion</td><td>Stack does not animate.</td></tr>
<tr><tdclass="name">gap</td><tdclass="type">number | string</td><tdclass="default empty">—</td><td>Shorthand for both axes. Number → <code>var(--space-N)</code>.</td></tr>
<tr><tdclass="name">rowGap</td><tdclass="type">number | string</td><tdclass="default empty">—</td><td>Gap between wrapped lines.</td></tr>
<tr><tdclass="name">columnGap</td><tdclass="type">number | string</td><tdclass="default empty">—</td><td>Gap between items within a line.</td></tr>
<tr><tdclass="name">align</td><tdclass="type">stretch | start | center | end | baseline | flex-start | flex-end</td><tdclass="default empty">—</td><td><code>align-items</code> per line — cross-axis.</td></tr>
<tr><tdclass="name">justify</td><tdclass="type">start | center | end | space-between | space-around | space-evenly | stretch | flex-start | flex-end</td><tdclass="default empty">—</td><td><code>justify-content</code> — main-axis.</td></tr>
</tbody>
</table>
</div>
<divdata-uix-subsection-head>Inherited from Box</div>
<pdata-uix-section-desc>
Every <ahref="/uix/components/box">BoxProps</a> field is forwarded through Flex:
<tr><tdclass="name">radix-themes</td><td><code><Flex wrap="wrap"></code></td><td>Radix doesn't ship a separate Wrap — they recommend Flex with the <code>wrap</code> prop. UIX names it for the common chip-cluster case.</td></tr>
<tr><tdclass="name">chakra-ui</td><td><code><Wrap></code> / <code><WrapItem></code></td><td>Chakra wraps each child in a <code><WrapItem></code> internally. UIX has no item wrapper — gap is owned by the container.</td></tr>
<tr><tdclass="name">mantine</td><td><code><Group wrap="wrap"></code></td><td>Mantine collapses both into Group with a prop. UIX splits Group (nowrap) and Wrap (wrap) because their visual intent is different.</td></tr>
<tr><tdclass="name">Role</td><td>None implicit. Default element is <code><div></code>. When wrapping a list of tags/filters, consider <code>role="list"</code> + <code>role="listitem"</code> on the children for screen-reader semantics.</td></tr>
<tr><tdclass="name">Label</td><td>Not applicable — Wrap has no content semantics.</td></tr>
<tr><tdclass="name">Keyboard</td><td>Wrap is not focusable. Tab order follows DOM order; wrapped lines do not change the focus sequence. For arrow-key cluster navigation use a tag-group or toolbar soma.</td></tr>
<tr><tdclass="name">Reduced motion</td><td>Wrap does not animate. Reflow on resize follows CSS defaults.</td></tr>