KQ-1152 · CORK/NOTES

Cork Notes

Notices land on a framed cork board as small paper cards hanging at seeded angles: each card settles on the glide spring and its pushpin drops in after it on the exit ease, biting with the head taking the hit on the recoil spring as the card jolts, and hovering or focusing a card lifts it to the front on snap. Pull a pin up and away and it gives only a rubber-banded little in the cork, tugging the card's top, then comes out 1:1 with the pointer while the card flutters down off the board on the exit ease, swaying and turning over; a flick pulls, a short pull springs back on snap. Cards share one tab stop where the arrow keys move and Delete pulls the focused card's pin through the same code.

KQ-1152 · CORK/NOTES
  1. Notice: Standup moved

    10:15 today, in the long room.

  2. Done: Release 4.2 shipped

    Live for every workspace.

  3. Warning: Deploy freeze

    Nothing merges to main until Friday.

Pull a card's pin up and away to take it down, or press Delete.

3 pinned · top: Deploy freeze

Install

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

$ pnpm dlx shadcn@latest add @kinetiq/cork-notes

Props

notices
{ id: string; title: string; body?: string; tone?: "info" | "success" | "warn" | "danger" }[]
default —
Every notice, oldest first. Only the newest `max` are pinned; the rest are counted on the frame.
onDismiss
(id: string) => void
default —
Fires the moment a pin comes out, from the pull or the key that pulled it.
label
string
default "Board"
The board's accessible name.
tilt
number
default 5
How crooked the cards hang, in degrees, 0 to 12; each card's angle is seeded from its id.
pins
"round" | "flat" | "tack"
default "round"
The pin each card hangs from: a glossy ball head, a brass thumbtack, or a tall push-pin.
cork
"light" | "dark"
default "light"
The board's cork and frame.
max
number
default 4
How many cards are pinned at once, 2 to 6.
sound
boolean
default false
The pin's thock and the paper (an arrival's thock is heard only when it follows the visitor's own press).
disabled
boolean
default false
Cards can be read but not taken down.
className
string
default —
Classes for the root; the board keeps an 8:5 aspect at the root's width.