Skip to main content

Component coverage

All components

Every block in the v1 roster appears on this page, and the artifact opens from disk with no network requests.

Layout

Stack holds children with a controlled gap

Text at lead size introduces a section.

Text at body size carries the detail underneath.

Text at caption size carries a note.

Grid child one

Grid children collapse to one column on narrow viewports.

Grid child two

The column count is an author choice, not authored CSS.

Grid child three

Each child is an ordinary block.

Wide side

Split places child groups side by side and stacks them when narrow.

Narrow side

The ratio is a named value, never a number.


End of layout

Content

Rich text renders several paragraphs from line breaks.

The compiler splits on blank lines and escapes every paragraph.

A closed action vocabulary can be validated, tested, and reviewed.

Design note
A Page Spec blockyaml
- type: text
  text: Declarative input only

Block facts

Input
JSON or YAML
Output
One standalone document
Network
Denied unless the spec opts in
primitive verified EnterSpace

Inline primitives

  • Badge renders a status chipinline
  • Kbd renders key capsinline
  • Divider separates groups

Information

Roster

Blocks
45
Actions
12
Presets
6

Roster coverage

45 / 45

45 of 45

Compile pipeline

  1. Parse

    JSON or YAML becomes a nested spec.

  2. Normalize

    The spec becomes a flat IR with stable node ids.

  3. Render

    Blocks emit semantic HTML.

  4. Verify

    The build fails rather than shipping an unsafe document.

How the compiler got here

  1. Page classes first

    The corpus fixed what each page class needs.

  2. Presets as typed data

    A preset is data with kinds, not a stylesheet.

  3. Hosted path stayed opt-in

    The local compiler never needs an account.

Collections

Action vocabulary

Action vocabulary
ActionPurpose
copyCopy text to the clipboard
open-urlOpen an allowlisted URL
toggleToggle a dialog or the theme
filterFilter a bound collection

Local and cloud

Local compiler

  • No account and no network
  • Byte-identical output
  • The canonical path

Cloud renderer

  • Opt-in and non-authoritative
  • Render and share are separate scopes
  • Never persists the bearer

Guarantees

  • Offline

    The artifact opens from disk with zero requests.

  • Deterministic

    Identical input yields identical bytes.

  • Escaped

    Every value is escaped for its context at emission.

  • Typed

    Unknown blocks and props are rejected, not ignored.

Risks this page exercises

Risk by impact and likelihood
AreaImpactLikelihoodNote
Arbitrary markuphighlowRejected during validation.
Remote fetchmediumlowDenied unless the spec opts in.
Author scripthighlowNo expression language exists.

Interactive

Modes

Tabs use a roving tabindex and wire each panel to its tab.

Details

Why native controls first?

The platform already implements keyboard and assistive behavior correctly.

Why is the action list closed?

A closed vocabulary can be validated, tested, and reviewed.

5

Filterable blocks

  • badge
  • kbd
  • divider
  • spacer

Native dialog

The dialog element handles focus, Escape, and the backdrop.

Data

Blocks per group
Blocks per group02.557.510LayoutContentInformationCollectionsInteractiveDataMediaLayout: Blocks 7Content: Blocks 8Information: Blocks 5Collections: Blocks 5Interactive: Blocks 10Data: Blocks 3Media: Blocks 5

Blocks: Layout 7, Content 8, Information 5, Collections 5, Interactive 10, Data 3, Media 5

Chart data table
Blocks per group
SeriesLayoutContentInformationCollectionsInteractiveDataMedia
Blocks78551035
Compile time by fixture
Compile time by fixture0246OneTwoThreeFourOne: Milliseconds 4.43Two: Milliseconds 3.86Three: Milliseconds 3.6Four: Milliseconds 2.77

Milliseconds: One 4.43, Two 3.86, Three 3.6, Four 2.77

Chart data table
Compile time by fixture
SeriesOneTwoThreeFour
Milliseconds4.433.863.62.77
Output size by fixture
Output size by fixture010,00020,00030,000ABCDA: Bytes 24839B: Bytes 26481C: Bytes 27217D: Bytes 27687

Bytes: A 24839, B 26481, C 27217, D 27687

Chart data table
Output size by fixture
SeriesABCD
Bytes24839264812721727687
Primitives and semantic blocks
Primitives and semantic blocksPrimitives: 26 (57.78%)Semantic: 19 (42.22%)

Blocks: Primitives 26, Semantic 19

Chart data table
Primitives and semantic blocks
SeriesPrimitivesSemantic
Blocks2619
Roster by kind
Roster by kindPrimitive: 26 (57.78%)Semantic: 19 (42.22%)45Blocks

Blocks: Primitive 26, Semantic 19

Chart data table
Roster by kind
SeriesPrimitiveSemantic
Blocks2619
Size trend
Size trend

Bytes: A 22709, B 24839, C 26481, D 27217, E 27687

Chart data table
Size trend
SeriesABCDE
Bytes2270924839264812721727687
Roster coverage as a chart
Roster coverage as a chartCoveredCovered: 4545

Blocks: Covered 45

Chart data table
Roster coverage as a chart
SeriesCovered
Blocks45

Media

Cover illustration for the all-components page
Local images render directly and are never fetched.

Local assets

Compiler walkthrough

A walkthrough of the compiler pipeline and the emitted artifact.

Remote media is not embedded because the page denies network access.

Open the recording
Network is denied, so this is a poster and a link.

Introduction

A short spoken introduction to the declarative page model.

Remote media is not embedded because the page denies network access.

Open the recording
Audio degrades to metadata and a link.

Compiler pipeline

Compiler pipeline

  1. Page Specspecthen to irvalidate
  2. Normalized IRirthen to htmlrender
  3. Standalone HTMLhtml

Rendered as a structured fallback because no diagram adapter is configured.

Review

Changed files

Changed files
PathStatusAdditionsDeletions
src/render/document.tsmodified+12−3
src/theme/tokens.tsadded+48−0
src/spec/legacy.tsdeleted+0−96

Findings

  • good

    Native controls first

    The platform implements keyboard behavior correctly, so no widget code is needed.

  • concern

    Provider references stay inert

    A provider reference must remain a poster and a link rather than becoming a frame.

  • question

    Who reviews a preset change?

    A preset is typed data, so a review is a diff of values.

Showcase

  • bento
  • marquee
  • terminal
  • file-tree
  • before-after
  • kpi
  • showcase
  • checklist
  • cta

Bento

  • Compiler pipeline diagram

    Large

    A large tile leads the mosaic

    Tiles take small, wide, tall, or large sizes and pack densely.

  • 6

    Themes

  • 0

    Requests on open

  • Wide

    A wide tile spans two columns

    Text-only tiles align to the bottom.

KPI

  • Fixture pages

    11

    +1 (improving)

  • Runtime dependencies

    1

    unchanged

Terminal
ak-render validate page.yaml
ok: page.yaml
# commands, output, comments, success, and errors differ
error: $.blocks[0].type: unknown block type

File tree

  • 1 added
  • 1 modified
  • 1 deleted
  • src/
    • render/
      • blocks.tsmodified
      • showcase-blocks.tsaddednew module
    • spec/
      • legacy.tsdeleted
  • README.md

Before and after

The plan fixture in light modeLight
The dashboard fixture in dark modeDark
A range input moves the divider; without script both images show side by side.

Showcase

Copy beside a framed capture

The media can sit on either side, in a browser frame or plain.

  • Browser chrome is decorative
  • Stacks on narrow screens
Interaction test trace

Checklist

1 of 2 done

  • Done items read as done in text, not only by glyph (done)
  • Open items stay at full contrast (open)

Night band

A section with an inverse surface takes the theme's dark palette in both color schemes, so every block inside recolors from tokens.

Tokens, not overrides

Colour tokens are redeclared with the theme's dark values inside the band.

Closing call to action

Every block, one spec.

The CTA sits on the same night band and links out with real anchors.


Component coverage ends here

Back to the fixture gallery