Skip to content

PromptSuggestions

PromptSuggestions

<PromptSuggestions
layout="cards"
suggestions={[
{ id: 'summarize', icon: <Sparkle />, label: 'Summarize this article', hint: 'TL;DR in 3 bullets' },
{ id: 'translate', icon: <Globe />, label: 'Translate to Korean', hint: 'Casual register' },
{ id: 'extract', icon: <Search />, label: 'Extract action items', hint: 'As a checklist' },
]}
onSelect={(s) => composer.send(s.label as string)}
/>

Install: @helixui/core

import { PromptSuggestions, type PromptSuggestion } from '@helixui/core'

status: stable · since: 0.3.0

Tags: ai, starters, follow-ups, chips

Anatomy

( Suggestion 1 ) ( Suggestion 2 ) ( Suggestion 3 ) ← chips
┌─────────────────┐ ┌─────────────────┐
│ Title │ │ Title │ ← cards
│ description │ │ description │
└─────────────────┘ └─────────────────┘

Layout

  • displayflex
  • widthfill
  • heightcontent
  • intrinsicSizewraps; chip row or card grid
  • stackablefalse
  • fullBleedfalse

Visual

Either a wrapping row of pill-shaped chips (compact) or a 2-column card grid (richer). Tapping a suggestion fires onSelect with the prompt text.

Props

NameTypeDefaultDescription
suggestionsPromptSuggestion[]Required. Each has id, label, optional hint, icon.
onSelect(s) => voidCalled when the user picks a suggestion.
layout'chips' | 'cards'chipsCompact wrap-around chips or larger grid cards.
labelstringSuggested promptsaria-label on the wrapping group.

Tokens used

color.bg.surface.default, color.bg.action.neutral.default, color.border.default, color.border.strong, color.border.focus, color.text.primary, color.text.muted, color.text.action.brand, radius.md, space.2, space.3, space.4, font.family.sans, font.size.sm, font.size.xs, font.weight.medium

Accessibility

Notes

  • The wrapper is role="group" with an aria-label.
  • Each suggestion is a <button> so it’s focusable and activatable with Enter / Space.

Composes with

ComponentRelationNote
ChatComposersiblingSits above the composer in an empty state.
EmptyStatealternativeUse EmptyState for non-AI empty states.

Prompt examples

These are the AI prompt → JSX mappings used by the helixui prompt DSL and integrations like Cursor / Claude Code.

AI conversation starters

“three suggested prompts as chips”

<PromptSuggestions
variant="chips"
suggestions={[{ id: '1', text: 'Summarize this' }, { id: '2', text: 'Translate to Korean' }]}
onSelect={s => send(s.text)}
/>