import type { ButtonHTMLAttributes, ReactNode } from 'react'; /** * A reaction: an emoji, how many people chose it, and whether you are one of * them. * * **This exists because both apps had already built it, and neither could use * the components that were here.** A reaction is a pill with a count that * toggles — `Chip` is a pill and rules itself out for anything clickable, * `Button` is clickable and is a 6px-radius rectangle, and `IconButton` has * nowhere to put the count. So Peek re-typed Chip's class list with a border * added, and Ship reached for a small Button with the count as its label. The * two apps' reactions do not look alike today, and neither is what was drawn. * * ## The one thing it does that nothing else here does * * **It says the reaction is yours.** That is the state a reaction has and a * chip does not: `pressed` fills it with the accent's muted tint and gives it * an accent edge, so a glance separates "two people, one of them me" from "two * people". Ship approximated it as `outlined` versus `muted` — measured at a * 1px hairline against no border at all — which is legible and is not the * signal Peek's accent fill gives. * * On Base UI's `Toggle` since stage 6 of the migration (2026-09-14): a native * `