Choose a prompt
Select a suggested prompt.
A wrapping or horizontally scrollable collection of prompt buttons with subtle outlines and 4px corners.
Select a suggested prompt.
Select a suggested prompt.
npm install @noorddev/vlak-react
Load the stylesheet once at your app root, then import the components you use.
import "@noorddev/vlak-react/css";
import { MessageComposer, Suggestions, Suggestion, type ComposedMessage } from "@noorddev/vlak-react";Per-component imports are available at @noorddev/vlak-react/components/suggestions.
npx @noorddev/vlak-cli add suggestions
Adds the component and its dependencies to components/vlak/. Follow the StyleX setup to compile the source in your application.
npx shadcn add https://vlak.dev/r/suggestions.json
Installs the same source through the shadcn CLI.
"use client";
import { useState } from "react";
import { MessageComposer, Suggestions, Suggestion, type ComposedMessage } from "@noorddev/vlak-react";
export function SuggestedPrompts({ onSend }: { onSend: (message: ComposedMessage) => void | Promise<void> }) {
const [draft, setDraft] = useState("");
return <>
<Suggestions wrap>
<Suggestion value="Review the launch brief" onSelect={setDraft}>Review brief</Suggestion>
<Suggestion value="Find missing owners" onSelect={setDraft} />
</Suggestions>
<MessageComposer compact value={draft} onValueChange={setDraft} onSend={onSend} />
</>;
}See the integration example to compose these components with your application's model and data.
| Prop | Type | Default | Description |
|---|---|---|---|
variant | "primary" | "ghost" | "subtle" | Solid ink primary, hairline ghost, or borderless subtle. One primary per view. | |
size | "default" | "sm" | "icon" | Icon buttons stay square at every breakpoint. Supply an accessible name. | |
grouped | boolean | Flush into a ButtonGroup: no own stroke, one ink seam. | |
valuerequired | string | ||
onSelect | (value: string) => void |
Also accepts ButtonHTMLAttributes<HTMLButtonElement>.
The ref reaches HTMLButtonElement.
| Prop | Type | Default | Description |
|---|---|---|---|
wrap | boolean | false |
Also accepts HTMLAttributes<HTMLDivElement>.
The ref reaches HTMLDivElement.
| Keys | Does |
|---|---|
| Tab | Moves through the supplied native controls in reading order |
| Enter, Space | Activates focused buttons and disclosure summaries |
The same styles are available as CSS. Native HTML provides the static presentation; React or application code supplies state updates and actions.
npm install @noorddev/vlak
import "@noorddev/vlak/css";
<div class="rs-suggestions" role="group" aria-label="Suggested prompts"><button class="rs-suggestions-item rs-btn-ghost" type="button">Review the brief</button></div>