SearchCtrlK

  • ↑↓navigate
  • ↵open
  • escclose

Can’t find it? Contact us

balancedGrid

Lays direct children in rows that are full or centred.

tsx
import { balancedGrid } from "@sdxc/ui/landing";

Usage

Lays direct children in rows that are full or centred: each step picks the even column count for the run (balancedColumns), and a shorter last row sits in the middle at one column per item. Tracks are doubled so a centred row can start half a column in; the element must leave grid-template-columns and the children's grid-column to this mixin.

Signature

typescript
balancedGrid<Node extends Element = Element>(containerName: string, steps: ReadonlyArray<BalancedGridStep>, rowStart?: UtilityInput<Node>): UtilityMixin<Node>

Returns one mixin for the element whose children are the items.

Parameters

ParameterTypeRequiredDescription
containerNamestringYesNamed sizing container the steps query.
stepsReadonlyArray<BalancedGridStep>YesContainer ranges, each with the most items a row holds there.
rowStartUtilityInput<Node>NoExtra styles for the first item of a centred last row, such as the edge it now exposes.

Examples

tsx
<div mix={[grid(), balancedGrid("ui-logos", [{ query: "(width < 30rem)", columns: 2 }, { query: "(width >= 30rem)", columns: 4 }])]}>{marks}</div>

The events, constants and types its module publishes, each imported from @sdxc/ui/landing too.

Constant

ICON_TILE_SIDE

Side of a claim's glyph tile on the spacing scale (2.5rem), shared by every claim icon.

typescript
const ICON_TILE_SIDE = 10
Interface

CardGridOptions

Options accepted by cardGrid.

MemberTypeRequiredDescription
columnsnumberYesColumns at the lg container; the grid shows one track on a phone and two from md.
variant"cards" | "mosaic" | "list"YesSeparate raised cards, one hairline-ruled mosaic box, or an un-carded list.
containerNamestringYesNamed sizing container on the grid's host that the column steps query.
Interface

BalancedGridStep

One container range of a balancedGrid: the query that selects it and the most items one row holds there.

MemberTypeRequiredDescription
querystringYesContainer size query, such as (36rem <= width < 48rem).
columnsnumberYesThe most items one row holds in this range.
columnsFor(count: number) => numberNoColumns for a run of exactly count items in this range, where the even split would still leave a short row the layout should not show.
@sdxc/ui

Can’t find it? Contact us