Slots are dashed placeholders for composing regions in wireframes or empty shells. Slots layouts arrange them in a horizontal row (--column) or vertical stack (--row) with a 24px gap. For full page recipes (forms, tables, toolbars), start at Patterns overview. Styles live in scss/components/_slot.scss and _slots-layout.scss.
Slot
Single placeholder block before grouping into layouts.
Dashed border-action, background surface-action-hover-2, min. 139×42px. Replace with real components in production.
<div class="slot">Header region</div>
Column layout
.slots-layout.slots-layout--column places slots side by side (Figma « Column », 1 to 6 slots). In production, slots keep min-width: 139px and do not shrink; wide sets may overflow their container. Demos below use a doc-only wrap so slots reflow without horizontal scrollbars.
1–2 slots (horizontal)
1 slot side by side
2 slots side by side
3–4 slots (horizontal)
3 slots side by side
4 slots side by side
5–6 slots (horizontal)
5 slots side by side
6 slots side by side
<div class="slots-layout slots-layout--column" role="group" aria-label="3 slots in a row">
<div class="slot">Slot component</div>
<div class="slot">Slot component</div>
<div class="slot">Slot component</div>
</div>
Row layout
In Figma, Row means slots stacked vertically (reading order top to bottom), not a horizontal row of examples. Class .slots-layout.slots-layout--row is 139px wide with a 24px gap between slots. Add .slots-layout--fluid for full-width stacks inside cards.
1–3 slots (vertical stack)
Vertical stack · 1 slot
Vertical stack · 2 slots
Vertical stack · 3 slots
6 slots · fluid (blank card)
Vertical stack · 6 slots (fluid, blank card)
<div class="slots-layout slots-layout--row slots-layout--fluid" role="group" aria-label="3 stacked slots">
<div class="slot">Slot component</div>
<div class="slot">Slot component</div>
<div class="slot">Slot component</div>
</div>
In context
Blank cards use a fluid row layout inside .card__slots so teams can map header, body, and actions.
Used inside Blank card (.card--blank). Swap placeholders for headings, copy, or buttons.
Class reference
| Class | Description |
|---|---|
.slot | Dashed placeholder (min 139×42px, action colors) |
.slots-layout | Flex host with $slot-gap (24px) |
.slots-layout--column | Horizontal row of slots (1–6) |
.slots-layout--row | Vertical stack, fixed 139px width |
.slots-layout--fluid | Row layout at 100% width (cards) |
Customize (Sass)
-
Slot spacing
Override gap and minimum slot width before importing components.@use "pimentcss-design-system" with ( $slot-gap: 1.5rem, $slot-min-width: 10rem ); -
Rebuild CSS
Run after editing _slot.scss or _slots-layout.scss.npm run build:css
Accessibility (RGAA / WCAG)
Slots in production
- Wireframes only,
.slotis a design-time placeholder. Replace with semantic HTML (headings, buttons, landmarks) before shipping. - Reading order, column layouts follow DOM order left to right (then next line if wrapped); row layouts top to bottom. Match visual order for keyboard and screen readers.
- Grouped regions, when multiple slots become one pattern (for example a card), use a single
role="group"witharia-labelon the layout, not on each placeholder. - Page grid, for full-page structure use Layout (
.container,.row,.col-*).