Cards are Markdown directives in a Web Device content item. They organize an author-provided title, description, optional icon, and link as page content. A card does not create an AUP session or gain permission to run exec, write data, or edit the document.
This page is a live feature guide (source + rendered cards on the same page). Atomic unit pages: link-card, info-card, action-card, card-group.
Sample contract
| Field | Value |
|---|---|
| Purpose | Navigation and static info cards in content Markdown |
| Boundaries | Navigation only for links; no exec, AFS write, or session; not a .web component API |
| Author entry | ::link-card · :::info-card · :::action-card · ::::card-group |
| Surface | Web Device document (static) |
| Public status | released |
| Fallback / failure | No safe href → non-link card; info-card ignores href; fence depth errors drop structure |
| Verification | Routes below · arc --version = 2.0.0-beta.32 |
link-card
Source:
::link-card{title="Web Device overview" description="Review the site structure and its boundary" href="/en/docs/web-device/overview/" icon="book"}Rendered:
Web Device overview
Review the site structure and its boundary
A link-card becomes a link only when it has a safe href. Clicking it performs ordinary page navigation only; it does not write content.
Source without href (not a navigation target):
::link-card{title="Not a link" description="Missing href stays non-interactive chrome"}Rendered:
Not a link
Missing href stays non-interactive chrome
info-card
Source:
:::info-card{title="A read-only example" description="Content and layout are maintained separately"}
The body can contain paragraphs, lists, and code.
- A content item owns the reader-facing text
- `layout.aup` decides how a page organizes those items
:::Rendered:
A read-only example
Content and layout are maintained separately
The body can contain paragraphs, lists, and code.
- A content item owns the reader-facing text
layout.aupdecides how a page organizes those items
An info-card is not a link. Even if an author supplies an href, the current content reader does not promote it to a clickable card.
action-card
An action-card places explicit action nodes in a card body. This example contains only an ordinary navigation href, with no event, exec, or data write.
Source:
:::action-card{title="Continue reading" description="Place several navigation choices in one card" icon="book"}
::action{label="Read the AUP layout boundary" href="/en/docs/web-device/aup-reference/" variant="primary"}
:::Rendered:
In Content Markdown, this action proves link navigation only. It is not evidence that a document can run a background action or has AFS or session permission.
Put several entry points in a card-group
The outer fence needs one more colon than the nested container directive. This card-group contains two leaf cards, so 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 |
|---|---|
link-card without href | Non-link presentation |
href on info-card | Ignored for navigation |
| Outer fence too shallow | Parser misreads children; group/cards may collapse |
Expecting exec or form submit | Out of contract |
Card syntax belongs to the Web Device content-reading path. It is not a general input format for a .web component. To override or author a layout component, see Use and override components.
Verification evidence
| Item | Value |
|---|---|
| Baseline | 2026-08-12 · arc --version → 2.0.0-beta.32 |
| Capability row | docs/aup/capability-matrix.md (internal, non-routed) · ::link-card · :::action-card · :::info-card · ::::card-group |
| Implementation | providers/runtime/web-device/src/content-reader.ts (contentCardToAup, card-group) |
| Unit pages | link-card · info-card · action-card · card-group |
| Public routes | /en/docs/web-device/markdown-cards/ · /zh/docs/web-device/markdown-cards/ |
| Local run | arc service start --blocklet blocklets/arcblock --port 4900 · click link-cards → ordinary navigation only |
| Accept | Source matches cards; missing href is not a link; no write/exec |