SIGN IN SIGN UP

feat(selectors): trade the chips' native title for a themed hover hint

The model, config-option and mode chips in the chat composer, the folder and
agent pickers, and the chips the automation and task editors show in their own
composer bars all leant on the browser's `title`: a system bubble on its own
delay, unstyled, one line of plain text. They now share `SelectorTooltip`,
which names what the chip IS and carries the setting's own blurb underneath
when the agent ships one. The current value is deliberately absent — it is
already the chip's own text, and a second copy under the cursor says nothing.

The hint is hover-only. Radix opens a tooltip on focus as well, and each of
these triggers takes focus back when its menu closes, so choosing a model would
leave a bubble stranded over the composer; preventing the synthetic focus event
skips that path, and every trigger keeps the `aria-label` that carries its name.
A `Popover` is non-modal, so its trigger still takes hover underneath its own
panel — those callers suppress the hint while the panel is up, which a
`DropdownMenu` or a `Select` has no need of. Suppression pins the controlled
value closed and Radix de-dupes its own close against that same value, so the
stored state is cleared during render too; otherwise the bubble would spring
open, unhovered, the moment the trigger came back. The rendered tree never
changes shape with the hint's presence, because swapping shapes remounts the
trigger and an agent pill that loses its hint on click would drop keyboard
focus mid-press. A disabled trigger dispatches no pointer events at all, so it
falls back to the native `title` the browser still shows there — an unavailable
agent pill is icon-only, and a pinned folder field cannot be opened to read.

`TooltipTrigger` writes its own `data-state` onto the trigger and shadows the
menu's, so the agent overflow button's open styling is driven from the state
that owns the popup instead.

The automation and task editors' chips also had no subtitles, while the chat
composer's have had them all along — the mode and option blurbs were being
dropped on the way into the picker. `SelectItem` now takes a description and
prints it under the label, outside `ItemText`: Radix mirrors that into the
trigger to draw `SelectValue`, and a description placed inside would print on
the closed chip and double the composer bar's height.
X
xintaofei committed
d6de8c6093679e45d167d60b3e935ceedad06ea5
Parent: ce08328