KQ-1187 · MORSE/STATUS

Morse Status

A status line that is tapped out in Morse before it is spelled: a signal lamp sends each word with real ratios, and a head travelling the track under the line draws every dot and dash as long as the lamp was lit, so a dash is three dots long because it was on three times as long. When a word is complete each letter's marks lift off the track and condense into the printed letter on the glide spring while the letter resolves out of them, and the head glides on to the next word. The telegraph key is a real button whose lever dips on flick and springs back on snap; a tap, or Space or Enter, adds the visitor's own dot to the line and a hold draws a dash.

KQ-1187 · MORSE/STATUS

Waylight Pay · wire to Coldbrook

Press to send a dot; hold for a dash.

Opening the line

tapping · word 1 of 3 · press the key

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/morse-status

Props

phrases
string[]
default —
The status phrases, tapped out one after another and cycled in order.
active
boolean
default true
Sending. False clears the line, spells doneText and stops the clock and every timer.
doneText
string
default —
What stays spelled once inactive. Defaults to the last phrase.
speed
number
default 1
How fast the code is sent, 0.5 to 2: one unit is 50ms at 1, and the hold and fades scale with it.
lamp
boolean
default true
Show the signal lamp, which flashes with the code and lights the mark being drawn. Off, the head and the marks carry the signal alone.
trail
number
default 0.6
How long the marks stay lit on the track, 0 (each fades to a ghost within a moment) to 1 (every mark stays until its word is spelled); also the length of the light streak behind the head.
sound
boolean
default false
Play the key under the visitor's hand: a click as the contact closes and a tick as the lever returns. The automatic sending is silent.
disabled
boolean
default false
The line keeps sending, but the key cannot be pressed.
onPhraseChange
(index: number) => void
default —
A phrase began: its index in phrases, or -1 for doneText. Also reported on the first commit.
onWordChange
(word: number) => void
default —
A word of the phrase began to be sent: its index within the phrase. Also reported on the first commit.
className
string
default —
Classes for the root; it is w-full by default.