# Annunciator

An alarm panel: a grid of engraved windows, dark until a fault trips. A new fault flashes amber or red and sounds a horn; ACK holds it steady; when it clears it goes dark, or flashes slowly until RESET; TEST lights every lamp. The sequence plants have used for fifty years.

Object · With a Pass · https://tactileui.dev/objects/annunciator

> The code and styling for this object come with the Pass. Sign in if you have one. Sign in: https://tactileui.dev/auth/sign-in The price: https://tactileui.dev/pricing

## Anatomy

Isa alarm sequence, Shared flash clock, Sleeping timer, Backlit acrylic legend, Lamp bleed halo, Concentric corner stack, Live region announcements, Webaudio horn, Room fixed sheen

## Usage notes

The screen that answers what is wrong right now: a status page, an incident board, a deploy or monitoring dashboard, an IoT fleet, a build matrix. Each window is a list item that says its state in words; a new fault is announced (assertively if it is an alarm); ACK, RESET and TEST are real buttons, and the whole panel works by keyboard.

## Options

| Option | Type | Description |
| - | - | - |
| tiles | enum | Which windows: a service, a delivery pipeline, or a plant. |
| columns | number | Windows across. A panel that does not fill its last row gets blank spares, and on a narrow screen it goes down to three, then two. |
| ringback | boolean | A fault that clears does not vanish: its window flashes slowly until RESET, so that nobody misses that it came and went. |
| flashRate | number | How fast a new fault flashes. Ringback flashes at two fifths of it. Never above 3 a second. |
| sound | boolean | An alarm horn, a warning beep and an advisory chirp, synthesised; ACK silences them. Off by default, and silent until the page has been touched; the sound key in the bar turns it on. |
| keys | boolean | The ACK, RESET and TEST keys under the panel. Off, it is a display for a status page: you drive it from your code. |
| finish | enum | Auto follows the page: the plate, wells and keys are drawn from the page’s finish (a printed plate on Paper, a black one on Phosphor); without the kit’s tokens, aluminium on a light page and graphite on a dark one. The acrylic is smoky dark in all. |
| label | text | Printed beside the keys, and what a screen reader calls the panel. |

## Methods

- tiles
- sounding
- update
- trip
- clear
- ack
- reset
- test
- destroy

## States

1. **Normal**: Every window dark: light grey legends engraved in smoky acrylic. Nothing runs.
2. **New fault**: The window flashes about twice a second in its lamp's colour (cool white for an advisory, amber for a warning, red for an alarm), with a little light escaping onto the plate round it; ACK's own lamp flashes with it. If sound is on, a horn, a beep or a chirp.
3. **Acknowledged**: ACK: the window holds steady and the horn stops.
4. **Clears**: The window goes dark.
5. **Ringback**: Optional: a cleared fault flashes slowly until RESET, so that nobody misses that it came and went.
6. **Lamp test**: 
7. **Escalation**: A fault that trips again worse than before, while lit, flashes again; one no worse is ignored.
8. **Spares**: A panel that does not fill its last row gets blank windows; on a narrow screen it goes to three columns, then two.
9. **Aluminium**: A bead-blasted plate, machined keys in a recessed tray.
10. **Graphite**: A soft-touch black plate; the light bleeding round a lit window shows most here.
11. **Display only**: With the keys off it is a status display that your code drives.
12. **Off screen or hidden**: The flash clock stops and the horn falls silent.
13. **Reduced motion**: Nothing flashes: a new fault is lit steady and ringed, an acknowledged one is lit steady, ringback is held at half.

## How it works

Original. The alarm sequence is DOM-free (sequence.mjs); the panel is DOM and CSS so the legends are crisp text a reader has. A lamp is two opacities (the lit legend and a wash of the lamp's colour) plus a halo under the window, so it swells and fades like an LED behind acrylic. One shared wave, lit first, drives every flashing lamp; a trip restarts it. The timer runs only while something flashes or a horn is due.
