Bootstrap is missing. Run node scripts/preview.mjs from the repo root: it copies Bootstrap and Montserrat in from a sibling app checkout and serves this page.

thingino theme

Everything the theme draws, on one page. Change a token in src/tokens.css, rebuild, reload: whatever moves here moves in all four apps.

the buildscope ramp: cards on --th-surface-1, hard borders, 8px corners

Tokens

Buttons

Outline is the family default: at rest the apps read all-outline, and the solid accent is the armed state of a page's primary action (Build, Verify), which sits disabled until there is something to act on. Every button carries a Bootstrap Icons glyph (bi-* me-1) before its label; icon-only buttons (the ? help toggle) skip the label.

Card, badges, code

Card header title

Body text at --th-ink, with inline code in the accent.

Writing Done Failed Idle Important master @ 1a2b3c4

Alerts

primary
success
warning
danger
purple, the theme's own extra level

Build state boxes

The image builder's build lifecycle: stock alerts composed of themed pieces. Spinner and a Cancel while active; a dismissible record once it is over (failed swaps in alert-danger, done in alert-success with the accent download button).

Building… 4m 12s
defconfig atom_cam2
build id b-1a2b3c4d
Download window expired
defconfig atom_cam2
build id b-1a2b3c4d

Drop zone and file info

Drop a firmware image here, or click to pick one
file thingino-t31x-abc123.bin size 8388608

Log console

12:00:01 opening device a108:c309 12:00:01 alt 0: nor, 16384 KiB 12:00:02 erase complete 12:00:07 block 214 needed a retry 12:00:09 write failed: LIBUSB_ERROR_OVERFLOW 12:00:09 bulk out stalled, resetting endpoint

Progress

6.5 MiB of 10.0 MiB written

Table

BuildBranchSizeState
a1b2c3d4master8388608Done
e5f6a7b8wip-t23524288Building
c9d0e1f2master-Failed

Help balloon and popover

Pinned open below. The light balloon is the opt-in hint that follows [data-help] hovers; the dark popover is the in-place confirmation (admin's per-build actions), with its dismiss under inset-inline-end so RTL needs no extra rules.

The balloon is deliberately light on the dark UI, so an opt-in hint never reads as part of the app's own chrome.
Flipped above its anchor: the tail moves to the bottom edge.
Delete build a1b2c3d4?

Footer

thingino-theme