KQ-1583 · BOARD/TILES

Board Tiles

A board where the cursor's path spells a sentence in wooden letter tiles: as it travels, a tile drops into each grid cell it leaves (or, with grid off, one tile-pitch along the path itself, turned a little with it), falling from just above at a larger scale while its shadow tightens, and landing on a spring whose damping comes from bounce, from a dead set-down through the recoil spring's two bounces, with a wooden clack. Spaces leave gaps and the sentence repeats; after its life each tile flips face down on springs.snap and fades. A resting word holds the board until the first tile flips it away, and it drops back in on a cascade once your tiles are gone; the keyboard walks a caret across the cells laying a tile in each one it leaves, and Delete clears the board.

KQ-1583 · BOARD/TILES
Small hands, big words

Arrow keys walk across the board and lay the next tile in the cell you leave; Enter lays one where you stand; Delete clears the board.

Fernworks · Maple letters

resting · move across the board

Install

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

$ pnpm dlx shadcn@latest add @kinetiq/board-tiles

Props

sentence
string
default "Every path spells something"
The sentence the path spells, letter by letter; a space leaves an empty cell.
tileSize
number
default 30
Each tile's side, px.
bounce
number
default 0.5
How much a tile bounces as it lands, 0 (sets down dead) to 1 (lively).
grid
boolean
default true
Snap tiles to a grid of cells; off, they are laid along the path itself, turned with it.
gap
number
default 4
The space between cells, px.
life
number
default 2600
How long a tile shows its letter before it flips face down, ms.
maxTiles
number
default 48
The most tiles on the board; past it the oldest flips early.
tone
"maple" | "walnut" | "ash" | "cherry"
default "maple"
The wood.
uppercase
boolean
default true
Show the letters in capitals.
restText
string
default the sentence's first word
The word laid out at rest, before anyone moves; an empty string leaves the board empty.
interactive
boolean
default true
The pointer and touch lay tiles.
clearKey
string | number
default —
Any change flips every tile on the board face down and clears it.
label
string
default "Letter board"
The board's accessible name.
sound
boolean
default false
Play a wooden clack as each tile lands. Off unless asked for.
onTile
(letter: string, count: number) => void
default —
A tile was laid, with its letter and how many so far.
onSentence
(times: number) => void
default —
The whole sentence was spelled, with how many times so far.
disabled
boolean
default false
Nothing is laid and the keyboard's way in is off.
className
string
default "h-56 w-full"
Sizes the board.