Annoudio design system

Tokens

Components read only --ao-* tokens. In the admin each token points at a Payload variable, so our pages and Payload's own screens change together.

Colour roles
bgPage
surfaceCard, field
surface-sunkenSnippet, empty state
text-mutedHelp, meta
border-controlField edge, 3:1+
accentAct, link, focus
accent-subtleSelected, current
dangerRemove, error
processingSystem's move
waitingOperator's move
returnedMember's move
publishedDone
Type scale (admin px; member pages one step larger)
2xl 26 · Review stories
xl 20 · Publish this story?
lg 16 · The story
md 14 · My father worked the ferry. The horn meant the last boat.
sm 13 · Asha · 1:02–1:35 · 2 days
xs 12 · Waiting for review
Space 4 · 8 · 12 · 16 · 24 · 32 · 48 — radius 4 · 6 · 10 · pill — elevation card · overlay
radius m, card radius l, overlay

Icons

One set, 24 grid, 1.5 stroke, currentColor. An icon never stands alone: a word or an aria-label goes with it.

story
reply
recording
project
site
concept
member
invite-code
processing
waiting
returned
published
copy
open
play
chevron
go
add
remove
close
alert
theme

Lifecycle states, stats, empty state

Each state has one colour, one icon and one word, on every surface. The colour says whose move it is.

Processing Waiting for review Returned Returned (automatic) Published Publishedchange waiting

Today

What needs you now. Counts can be 30 seconds late.

No stories wait for review

The last story came in 3 days ago. To get more stories, put a recording on another page of your site.

Add a widget to a site

Relationship chips

A chip names a related thing, links to it and counts what hangs on it. It answers “what is this connected to?” without a search.

Add a widget to a site: steps, select, copy field

Add a widget to a site

Choose a recording and a site. Then paste the snippet into the page.

  1. Done: Recording
  2. Done: Site
  3. Snippet

The widget plays this recording and shows its stories.

Open the Annotate page

Paste these two lines into the page. A page needs the first line one time only. Members come back only to rivervoices.example.org.

Form fields and dropdowns

Label above, help below the label, error below the field. A placeholder is never the label.

Type a number from 1 to 100.

1: one code for each person. More: one code for a group.

Only operators see it. For example: Workshop 12 Oct.

Members see concepts as topics, grouped under the parent.

Colour picker field

Swatch, hex text and a live contrast readout against the colour it sits on. Empty means the default.

Play button, played part, links. Text on it uses “Text on the accent colour”.

Default #0b6e99. A host site can change it in its own CSS.
Default #595959.

Buttons

One filled button per view: the next step. Danger is an outline until the dialog that confirms it.

The voice note is still processing.

Dialog and toast

Publish this story?

Visitors see it like this, within one minute:

Asha · 1:02–1:35
My father worked the ferry. The horn meant the last boat. Ferry Horn

We mail Asha that it is published.

Published. Visitors see it within one minute.

List rows with meta

The whole row opens the thing. Chips inside it stay their own links.

Invite codes
  • K7QM…
    Workshop 12 Oct · 18 of 30 used · Last day 30 Oct 2026Works
  • P2XD…
    No label · 1 of 1 used · Last day NoneUsed up
History
  • Published by Mira
    9 Oct 2026, 14:02
  • Returned to the member by Mira
    “Please name the place.” · 8 Oct 2026, 10:15

Phone form layout (Annotate page)

One column, 16px text in fields, 44px targets, the main action in a bar that stays on screen.

River Voices

Tell a story

Ferry crossing, 1962

← Back to the site

Your story is about 0:03–0:08

What do you remember? What do you hear?

Topics
An operator reads it first. We send you a mail when it is published.
Your stories

Widget default tokens

The defaults of <annoudio-player> (CONTRACT §3.1). They stay light, because the widget follows the host page; a project sets the dark set below in its Theme tab.

surface#ffffff
text#1f1f1f · 16.5
muted#595959 · 7.0
accent#0b6e99 · 5.7
border#767676 · 4.5
region#d6eaf5
wave#848484 · 3.7
surface#222222
muted#c3c3c3 · 9.0
accent#41b2ec · 6.7
border#808080 · 4.0
region#1b3a4b
wave#9a9a9a · 5.7

Publish this story?

Visitors see it within one minute. We mail Asha that it is published.