text is an AUP cross-device primitive, not a Web Device layout component and not a Web-only widget. It is one of the 18 names in AUP_PRIMITIVES and appears in every target's DeviceCaps.primitives map as native, webview, partial, or unsupported.
Contract
| Field | Value |
|---|---|
| Primitive name | text |
| Layer | AUP cross-device primitive (AUP_PRIMITIVES) |
| Public status | released |
| Document capability | native |
| Shared degradation chain | None (document reports native) |
| Author entry | AUP tree · Markdown blocks · GFM callouts → text admonition |
| Document renderer / notes | renderer/primitives/text.ts (includes admonition) |
| Showcase evidence | Markdown body path; admonition labels via content-reader.ts ADMONITION_LOCALIZED_LABELS |
When to use
You need semantic text, headings (level), code/quote formats, badges, or admonitions.
When not to use
Do not use text to smuggle layout chrome or site hero copy contracts that belong to Web Device components.
Sample contract
| Field | Value |
|---|---|
| Purpose | Static callout / admonition presentation on document |
| Boundaries | Not editable; not a toast/overlay; not a full AUP text props reference for every format |
| Author entry | > [!NOTE]-style blockquote (Markdown → document text admonition) |
| Surface | Web Device document |
| Public status | released |
| Fallback / failure | Unknown marker → ordinary blockquote; bare marker uses locale default title |
| Verification | Routes below · arc --version = 2.0.0-beta.28 |
Document sample (admonition via GFM)
On the document target, a GitHub-style callout becomes text-admonition presentation. This proves the Markdown → document path for callouts. It is not a full AUP text node props reference (level / format / variant live in AUP JSON/DSL).
Source (custom title on the marker line):
> [!NOTE] Portable copy
> This callout is document content. It does not run actions or write AFS data.Rendered:
Portable copy
This callout is document content. It does not run actions or write AFS data.
Source (bare marker — label comes from locale defaults):
> [!TIP]
> Prefer a same-line custom title when the English word is not the label you want.Rendered:
Tip
Prefer a same-line custom title when the English word is not the label you want.
Bare markers use the reader’s default label for the content locale. English keeps English defaults; zh defaults are applied at read time (NOTE→说明, TIP→提示, IMPORTANT→重要, WARNING→警告, CAUTION→注意). An explicit same-line title always wins.
Failure and limits
| Situation | Expected result |
|---|---|
[!FIXME] or other unknown marker | Plain blockquote, not callout chrome |
| Marker not on the first line of the quote | Not recognized as admonition |
| Expecting dismiss / editor controls | Static document content only |
Assuming this is AUP format: markdown inside an interactive page | Wrong surface; that path is not this sample |
Unit page for the structure alone: GFM admonition.
Verification evidence
| Item | Value |
|---|---|
| Baseline | 2026-08-09 · arc --version → 2.0.0-beta.28 |
| Capability row | docs/aup/capability-matrix.md (internal, non-routed) · text · GFM admonition |
| Implementation | content-reader.ts (ADMONITION_MARKER_RE, ADMONITION_LOCALIZED_LABELS); renderer/primitives/text.ts |
| Public routes | /en/docs/aup/primitives/text/ · /zh/docs/aup/primitives/text/ |
| Local run | arc service start --blocklet blocklets/arcblock --port 4900 · open routes; on zh locale, bare markers show Chinese default titles |
| Accept | Source matches rendered callout; unknown marker stays a quote; no edit controls |
Evidence anchors
| Item | Value |
|---|---|
| Registry | packages/aup/src/aup-types.ts · AUP_PRIMITIVES |
| Document caps | providers/runtime/web-device/src/device-caps.ts · DEVICE_CAPS_DOCUMENT |
| Degradation | packages/aup/src/degradation.ts · DEGRADATION_CHAINS |
| Internal matrix | docs/aup/capability-matrix.md (internal, non-routed) |
| Taxonomy hub | Primitive taxonomy and evidence |
| Sample contract rules | Live examples: scope and contract |