About this set
A group conversation for team and community chats. Each message from someone else has an initials avatar and a bubble with the sender’s name in their own colour, and your messages sit on the right in pink. Reactions are toggle buttons with an emoji and a count: pressing one adds you and raises the count, pressing it again takes you off, and a reaction that reaches zero disappears. The smiley button opens a row of six emoji that adds a new reaction or joins an existing one. Reply puts a quoted preview of the message above the composer, and the message you send carries that quote with the original sender’s name, like Dev Patel’s reply to Ines in the demo. Esc closes the picker or cancels the reply, and header avatars show who is in the channel. The script is about 90 lines of vanilla JavaScript and uses event delegation, so reactions added from the picker behave exactly like the original ones. In Bootstrap the reactions and tools are .btn elements and Cancel reply is a .btn-close.
What’s included
- Reactions as aria-pressed toggle buttons with live counts
- Emoji picker that adds a reaction or joins one
- Reply with a quoted preview, carried into the sent message
- Initials avatars and per-person name colours with text names
- Esc closes the picker or cancels the reply
Accessibility
Each reaction is a button with aria-pressed, a hidden emoji name and its visible count, so it reads as Thumbs up 3, toggle button, not pressed. Count changes are confirmed in a visually hidden role="status" line. The picker toggle uses aria-expanded and aria-controls and gets focus back on Esc, quotes start with hidden Replying to text, and the thread is a focusable role="log" region with aria-live="polite". Reaction colour transitions are removed under prefers-reduced-motion.
Customise it
Change --gc-accent, --gc-soft and --gc-ground on .gc and the .n1 to .n4 name colours. In Tailwind edit the --color-gc-* theme colours; Bootstrap keeps the same variables and adds --bs-btn-* overrides on .gc-react and .gc-tool.






