GridList
Molecule
Tiled card grids for people directories, item collections, and image galleries.
Playground
Every control sets a real prop of GridListProps. The JSX below updates as you go.
Web
iOS
Android
JSX · GridListProps
Variants
2 examples from src/molecules/grid-lists/grid-lists.md, each rendered live from its own JSX.
Anatomy
1
Grid
2
Tile
3
Media
4
Caption
Dimmed parts appear only in some states or variants.
Props
10 props on GridListProps, grouped as they are declared in source. Required props are marked *.
Accessibility and keyboard
Keyboard
Tab
Moves between links
Enter
Follows the link
Semantics
Roles
button
Below the platform minimum, the touch area grows to 44 pt on iOS and 48 dp on Android without moving the layout.
From the docs
The tiles are a list, as in Tailwind UI, and each tile is one of its items: a screen reader announces the list with its number of tiles and moves through it tile by tile. A tappable tile is a button inside its item. The label prop names the list (for example "Team members").
A virtualized grid with a bounded height scrolls its tiles on its own. On the web, while those tiles overflow, the grid is a keyboard tab stop (before the tiles themselves when onPressItem or tile actions make them buttons), the keyboard can scroll it, and while it has keyboard focus the grid, which has no card around it, draws the theme's focus ring around itself. Only the tiles near its viewport are mounted, and each says where it sits in the whole grid, so a screen reader still counts every tile. Give a wind
Platform skins
The playground's props on each platform: same tree, native shapes, type and touch sizes.
Usage
Each tile action carries its own onPress, so every button on a card fires your handler.
The tiles are a list, as in Tailwind UI, and each tile is one of its items: a screen reader announces the list with its number of tiles and moves through it tile by tile. A tappable tile is a button inside its item. The label prop names the list (for example "Team members").
A virtualized grid with a bounded height scrolls its tiles on its own. On the web, while those tiles overflow, the grid is a keyboard tab stop (before the tiles themselves when onPressItem or tile actions make them buttons), the keyboard can scroll it, and while it has keyboard focus the grid, which has no card around it, draws the theme's focus ring around itself. Only the tiles near its viewport are mounted, and each says where it sits in the whole grid, so a screen reader still counts every tile. Give a windowed grid a label: focused, a list with no name is named in Chromium from the text of every tile it has rendered, so the kit warns in development when it has none.
Tokens
Read from the playground render. Values follow the scheme and the ion hue.
--fd
--ft
--ion-soft
--ion-tx
--ln
--sf
--tx3