KQ-1184 · CROSSWORD/GUESS

Crossword Guess

A status line solved into a crossword: each phrase fills a row of squares under its clue numbers while the next phrase waits below as empty squares. A drawn pencil writes the letters in graphite, a few of them near misses; once the row is pencilled it flips end over end on springs.snap, rubs each wrong guess out with crumbs falling, writes the right letter, and a pen then inks the row, the phrase is announced and the grid scrolls up a row on springs.glide, the tool following its targets on springs.flick. The pointer over a square lights its entry and the clue bar reads its number; pressing a square checks it — a wrong guess is rubbed out on the spot, a right one inked — and the keyboard does the same with a cursor square moved by the arrow keys.

KQ-1184 · CROSSWORD/GUESS

Fieldline Daily · crossword No. 412

Arrow keys move between squares. Enter checks one: a wrong guess is rubbed out, a right one is inked.

solving · 1 of 3 · tap a wrong guess to rub it out

Install

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

$ pnpm dlx shadcn@latest add @kinetiq/crossword-guess

Props

phrases
string[]
default —
The status phrases, solved into the grid one row each and cycled in order.
active
boolean
default true
Solving. False finishes the row being solved briskly, then solves doneText with no wrong guesses and rests; nothing loops.
doneText
string
default —
The row that stays once inactive. Defaults to the last phrase.
speed
number
default 1
How fast the solver works, 0.5 to 2: the pencil's rhythm, the rubs, the ink and the rest.
guesses
number
default 1
Wrong guesses pencilled into each phrase before they are rubbed out, 0 to 3 (never more than a third of its letters). Dealt as each row begins.
grid
"news" | "pastel" | "ink"
default "news"
How the grid is printed: news is cream squares, black blocks and black ink; pastel gives each entry its own tint with violet ink; ink is a night edition with indigo squares, silver pencil and cream ink.
progress
number
default —
Determinate progress, 0 to 1. The phrases share it in equal bands, and within its band a row is pencilled, corrected and inked in step with it; entering the next band finishes the row and scrolls on.
sound
boolean
default false
Play the visitor's ticks as the pointer or cursor crosses squares and as a check inks a letter, and the scratch of a rub the visitor started. The solver's own work is silent.
disabled
boolean
default false
The grid keeps solving, but squares cannot be checked.
onPhraseChange
(index: number) => void
default —
A row 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 and sizes its squares from its own width.