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