Designing sections that editors can fill
Props for the common case, slots for the rest. How we drew the line.
Post cards in a grid, or one featured post above the grid.
Last updated
Blog
Notes on building the system.
Props for the common case, slots for the rest. How we drew the line.
Why every section renders without a runtime, and what the islands are for.
The script that fails the build when a colour pair drops under AA.
Logical properties everywhere, and the one page that proves it.
<BlogList heading="From the blog" items={[{ title, excerpt, href, image?, date, author? }, …]} />npx @ava-ui/apogee add blog-list
| Prop | Type | Default | Category | Description |
|---|---|---|---|---|
eyebrow, heading, description |
string |
— | content | Optional header. |
items |
{ title, excerpt, href, image?, date, author? }[] |
— | content | Required. date is an ISO string, rendered in a <time>. |
label |
string |
English | content | Landmark name when there is no heading. |
locale |
string |
page locale or 'en' |
content | Date formatting locale. |
layout |
'grid' | 'featured' |
'grid' |
layout | featured shows the first post full width. |
align |
'start' | 'center' |
'start' |
layout | Header alignment. |
background, spacing, headingLevel, id |
layout | As on every section. |
Props for the common case, slots for the rest. How we drew the line.
Why every section renders without a runtime, and what the islands are for.
The script that fails the build when a colour pair drops under AA.
Logical properties everywhere, and the one page that proves it.
<BlogList layout="featured" items={…} />article; the title is the link and the whole card is its hit area.<time datetime> elements.