Suggestions
A horizontally scrollable row of prompt chips for an empty state. Each chip is a small embossed key — it's pressable, so it is a Button, never a hand-rolled chip.
Pick a suggestion above.
tsx
"use client"
import * as React from "react"
import { Suggestion, Suggestions } from "@/registry/seam/ui/suggestions"
const PROMPTS = [
"Explain springs vs durations",
"What is the debossed rule?",
"Show me a composer",
"How does reduced motion work?",
]
export default function SuggestionsDemo() {
const [picked, setPicked] = React.useState<string | null>(null)
return (
<div className="w-full max-w-md space-y-3">
<Suggestions>
{PROMPTS.map((p, i) => (
<Suggestion key={p} index={i} onClick={() => setPicked(p)}>
{p}
</Suggestion>
))}
</Suggestions>
<p className="text-muted-foreground text-sm">
{picked ? `Picked: ${picked}` : "Pick a suggestion above."}
</p>
</div>
)
}bunx --bun @seamui/cli@latest add suggestionsNotes
- Pass
indexto opt into a staggered entrance — each chip rises onsprings.snappya beat after the last. Under reduced motion the stagger drops and each chip simply fades in. - Chips are native Buttons — focusable and activatable — with press feedback inherited from Button; the row is reachable in tab order and arrow-scrollable.
- The scrollbar is hidden visually but the row still scrolls; there is deliberately no edge-fade mask, so focus rings on the first and last chips are never clipped.
Press feedback, reduced motion, and haptics follow the global policy — see Motion and Haptics.