KQ-863 · THREAD/OPEN

Thread Open

A thread whose side conversations open beside it. Pressing a message's reply count slides a panel in from the right edge of the component's own frame on glide while a scrim fades the thread behind it and the replies cascade in from eight pixels below on snap at cascade(count). The panel is modal within the frame: Tab cycles inside it, Escape closes, and closing folds it back on the exit ease and returns focus to the count control that opened it.

KQ-863 · THREAD/OPEN
  1. Marta07:12

    Gate B is clear from eight. Two pallets for the Basinworks run and one loose crate that never got a label.

  2. Rui07:26

    Waylight Pay wants the run signed for by ten.

  3. You07:31

    I will take the signature at the gate.

Enter sends, Shift+Enter breaks the line, Escape closes the side conversation

thread closed · 3 messages · 4 replies

Install

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

$ pnpm dlx shadcn@latest add @kinetiq/thread-open

Props

messages
ThreadMessage[]
default
The thread, oldest first; a message's replies are its side conversation.
openId / defaultOpenId
string | null
default null
Controlled or initial id of the message whose panel is open.
onOpenIdChange
(id: string | null) => void
default
Fires from a count press, Escape, the close control and the scrim.
onReply
(parentId: string, text: string) => void
default
Fires from Enter or Send in the panel with the trimmed text.
placeholder
string
default "Reply in thread"
The panel composer's placeholder.
label
string
default
Names the thread list for assistive technology.