Web Device Markdown directive — not an AUP primitive; not a theme/site layout component.
Sample contract
| Field | Value |
|---|---|
| Purpose | Lay out nested cards in a document grid |
| Boundaries | Outer fence must be deeper than nested containers; not a layout-component API |
| Author entry | ::::card-group wrapping card directives |
| Surface | Web Device document (static) |
| Public status | released |
| Fallback / failure | Without group, cards render individually; fence depth errors collapse structure |
| Verification | Routes below · arc --version = 2.0.0-beta.28 |
Sample
The outer fence needs one more colon than nested containers. With leaf ::link-card children, four colons are sufficient:
Source:
::::card-group
::link-card{title="Content objects" description="Review content and metadata" href="/en/docs/web-device/content-and-objects/" icon="book"}
::link-card{title="AUP boundary" description="See the difference between page layout and an AUP tree" href="/en/docs/web-device/aup-reference/" icon="layout"}
::::Rendered:
Content objects
Review content and metadata
AUP boundary
See the difference between page layout and an AUP tree
Failure and limits
| Situation | Expected result |
|---|---|
| Outer fence too shallow | Parser misreads children; group/cards may collapse |
| Empty group | Empty grid chrome / no cards |
Expecting layout .web component props | Wrong surface |
Verification evidence
| Item | Value |
|---|---|
| Baseline | 2026-08-09 · arc --version → 2.0.0-beta.28 |
| Capability row | docs/aup/capability-matrix.md §6 · ::::card-group |
| Implementation | content-reader.ts · arc#2454 · docs-page CSS |
| Public routes | /en/docs/web-device/markdown/card-group/ · /zh/docs/web-device/markdown/card-group/ |
| Local run | arc service start --blocklet blocklets/arcblock --port 4900 · open routes |
| Accept | Group lays out nested cards; clicks navigate only |
Related
- Markdown hub — navigation only
- Sibling cards: link-card · info-card · action-card
- Historical multi-unit hub: markdown-cards