KQ-922 · EVENT/CARD
Event Card
An invitation sent into a thread, answered in the room. Your tile waits at the end of the attendee strip behind a dashed edge, and choosing moves it — motion reorders the same node into the going or maybe run on glide, ζ0.98, because joining a list is a layout shift and not a pop — while the going count rolls to its new figure on snap. The three controls are a real radio group: Left and Right move and select without wrapping, Home and End jump, and pressing the answer you already gave withdraws it.
- 11:42
Walk-through of the new bay
Thursday, 09:30
Basinworks yard, bay four
- Ines Corvo
- Rui Baptista
- Ana Reis
- Nuno Faro
- Tomas Vale
- You
Ines Corvo, Rui Baptista, Ana Reis and Nuno Faro are going.
Tomas Vale might come.
no answer yet · 4 of 8 going · 1 maybe
Install
One command — the source lands in your repo. Or copy it from the Code tab.
$ pnpm dlx shadcn@latest add @kinetiq/event-card
Props
- event
- ChatEvent
- default —
- The invitation: id, from, title, when, where, and an optional time and delivery mark.
- attendees
- EventAttendee[]
- default —
- Everyone but you, each already going or a maybe.
- value / defaultValue
- RsvpStatus | null
- default null
- Controlled or initial RSVP: going, maybe, no, or nothing yet.
- onValueChange
- (status: RsvpStatus | null, previous: RsvpStatus | null) => void
- default —
- Fires from the press or key that answers, and from the press that withdraws.
- you
- string
- default "You"
- Your display name; the initials on your own tile.
- capacity
- number
- default —
- How many the event holds. Set, the chip reads 5 of 8 and Going locks with a sentence once it fills.
- peerName
- string
- default "Them"
- Names the sender in the delivery sentence.
- label
- string
- default "Thread"
- Names the thread for assistive technology.
- disabled
- boolean
- default false
- Holds the three controls; the card still reads.
| Prop | Type | Default | Description |
|---|---|---|---|
| event | ChatEvent | — | The invitation: id, from, title, when, where, and an optional time and delivery mark. |
| attendees | EventAttendee[] | — | Everyone but you, each already going or a maybe. |
| value / defaultValue | RsvpStatus | null | null | Controlled or initial RSVP: going, maybe, no, or nothing yet. |
| onValueChange | (status: RsvpStatus | null, previous: RsvpStatus | null) => void | — | Fires from the press or key that answers, and from the press that withdraws. |
| you | string | "You" | Your display name; the initials on your own tile. |
| capacity | number | — | How many the event holds. Set, the chip reads 5 of 8 and Going locks with a sentence once it fills. |
| peerName | string | "Them" | Names the sender in the delivery sentence. |
| label | string | "Thread" | Names the thread for assistive technology. |
| disabled | boolean | false | Holds the three controls; the card still reads. |