KQ-1188 · BRAILLE/RISE
Braille Rise
A status line felt before it is read: each letter first rises as its real six-dot braille cell, the dots coming up out of the paper on the snap spring so each dome brightens as it overshoots, and a moment behind the dots sink back on a tween while the printed letter comes up out of them, so a band of raised cells rides across the line ahead of the print. Moving the pointer along the line lifts the cells under it again like a finger reading, and a press pops one up on the recoil spring. The line is a slider over its letters: Left and Right move a reading caret that raises the cell under it and names the letter and its dots, Space or Enter presses it, and the phrase waits while someone is reading it.
Basinworks Docs · accessible copy
Reading the scan
embossing · 1 of 3 · run a finger along the line
Install
One command — the source lands in your repo. Or copy it from the Code tab.
$ pnpm dlx shadcn@latest add @kinetiq/braille-rise
Props
- phrases
- string[]
- default —
- The status phrases, embossed and printed one after another, cycled in order.
- active
- boolean
- default true
- Printing. False clears the line, prints doneText flat and stops every clock and timer.
- doneText
- string
- default —
- What stays printed once inactive. Defaults to the last phrase.
- speed
- number
- default 1
- How fast the cells rise and print and how long a printed phrase rests, 0.5 to 2.
- emboss
- number
- default 0.6
- How deep the paper is pressed, 0 (flat ink dots, no shadow or swell) to 1 (paper-coloured domes with a long shadow and a bright rim).
- cells
- boolean
- default true
- Show each unprinted letter's whole six-dot cell as faint pits, so the blank slate is visible before the dots rise.
- sound
- boolean
- default false
- Play the reading: a tick for each cell that comes under the finger or the caret, pitched by its dot count, and a pop for a press. The printing itself is silent.
- disabled
- boolean
- default false
- The line keeps printing, but it cannot be read by hand or by key.
- onPhraseChange
- (index: number) => void
- default —
- A phrase began: its index in phrases, or -1 for doneText. Also reported on the first commit.
- className
- string
- default —
- Classes for the root; it is w-full by default.
| Prop | Type | Default | Description |
|---|---|---|---|
| phrases | string[] | — | The status phrases, embossed and printed one after another, cycled in order. |
| active | boolean | true | Printing. False clears the line, prints doneText flat and stops every clock and timer. |
| doneText | string | — | What stays printed once inactive. Defaults to the last phrase. |
| speed | number | 1 | How fast the cells rise and print and how long a printed phrase rests, 0.5 to 2. |
| emboss | number | 0.6 | How deep the paper is pressed, 0 (flat ink dots, no shadow or swell) to 1 (paper-coloured domes with a long shadow and a bright rim). |
| cells | boolean | true | Show each unprinted letter's whole six-dot cell as faint pits, so the blank slate is visible before the dots rise. |
| sound | boolean | false | Play the reading: a tick for each cell that comes under the finger or the caret, pitched by its dot count, and a pop for a press. The printing itself is silent. |
| disabled | boolean | false | The line keeps printing, but it cannot be read by hand or by key. |
| onPhraseChange | (index: number) => void | — | A phrase began: its index in phrases, or -1 for doneText. Also reported on the first commit. |
| className | string | — | Classes for the root; it is w-full by default. |