← Home

Design Menu

Visual glossary

Design Menu

Live examples of design elements with the names designers use and ready-made language for prompting AI. Includes AI slop to avoid and library best practices.

Multi-word search matches every term (e.g. , ). Ranked by name first.

333 elements

Typography

Type scales, weights, and text treatments

26

Build something beautiful.

Display heading
aka Hero title
Largest type size for marketing heroes and page openings—usually one per view.

Prompt like this

Use a large display heading (e.g. text‑5xl/6xl, tight tracking, bold weight) as the hero title: "Build something beautiful."

Settings

Page title (H1)
aka Heading 1
Primary page heading—one H1 per page for hierarchy and accessibility.

Prompt like this

Add a single H1 page title at the top of the content with bold weight and clear visual hierarchy above body text.

Account details

Profile

Section heading (H2/H3)
Subheadings that break content into scannable sections.

Prompt like this

Use H2 for major sections and H3 for subsections; keep size steps consistent (e.g. text‑2xl then text‑xl).

Body text carries the main narrative. Keep line length comfortable and line-height open so paragraphs stay easy to scan.

Body text
aka Paragraph
Main reading text—comfortable line length and line-height.

Prompt like this

Style body copy at ~16px with 1.5–1.7 line‑height and max‑width ~65ch for readability.

Updated 2 hours ago · Public

Caption / helper text
aka Microcopy
Small supporting text under images, fields, or metadata.

Prompt like this

Add muted caption text (text‑sm, lower contrast) under the field or image for secondary context.

Form label
Text that names a control for users and assistive tech.

Prompt like this

Use a clear form label above each input (text‑sm font‑medium), associated with the control via htmlFor.

New feature

Ship faster with menus

Overline / eyebrow
aka Eyebrow text
Small uppercase label above a title for category or context.

Prompt like this

Add an eyebrow/overline above the title: small uppercase tracking‑widest text like "NEW FEATURE".

Run npm run dev to start.

Inline code
Monospace snippets inside a sentence.

Prompt like this

Style inline code with mono font, subtle background, and rounded padding (e.g. px‑1.5 py‑0.5).

Design is intelligence made visible.
— Alina Wheeler
Blockquote
Quoted or highlighted pull text with a left border or indent.

Prompt like this

Create a blockquote with a left accent border, slightly larger or italic text, and muted attribution.

A short lead that frames the page before denser body copy begins.

Lead / intro text
aka Deck
Slightly larger supporting paragraph under a title that sets context before body copy.

Prompt like this

Add a lead paragraph under the H1 at text‑lg/xl with relaxed leading and muted or slightly softer color than body.

Design systems need shared language for every role

Text truncation
aka Ellipsis
Single- or multi-line clamp with ellipsis when content overflows a fixed width.

Prompt like this

Truncate overflowing titles with truncate (1 line) or line‑clamp‑2; ensure full text is available via title attribute or expand.

Revenue$12,480.00
Refunds$1,205.50
Net$11,274.50
Tabular numbers
aka Monospaced digits
Fixed-width digits so columns of numbers align cleanly in tables and stats.

Prompt like this

Use font‑variant‑numeric: tabular‑nums (or tabular‑nums utility) on prices, stats, and table columns so digits align.

  • Clear hierarchy
  • Consistent spacing
  • Accessible contrast
Bulleted list
aka Unordered list
Vertical list of items with bullets for scannable content.

Prompt like this

Render a bulleted list with consistent marker indent, comfortable line‑height, and gap between items (not dense walls of text).

  1. Define tokens
  2. Compose primitives
  3. Ship the pattern
Numbered list
aka Ordered list
Sequential list with numbers for steps, rankings, or ordered content.

Prompt like this

Use an ordered list (ol) with consistent marker indent and spacing for sequential steps; prefer numbers over bullets when order matters.

Press K to search.

Keyboard key
aka KBD
Styled keycap for keyboard shortcuts in docs and command UIs.

Prompt like this

Render shortcuts as <kbd> chips: mono font, bordered, subtle fill (e.g. "⌘K") so they read as physical keys.

const ok = true;
return ok;
Code block
aka Pre block
Multi-line monospace block for snippets, logs, and API examples.

Prompt like this

Show multi‑line code in a pre/code block: mono font, muted background, padding, overflow‑x auto, and optional language label.

Regular 400

Medium 500

Semibold 600

Bold 700

Font weight scale
aka Type weights
A small ladder of weights (regular → medium → semibold → bold) for hierarchy.

Prompt like this

Define a weight scale (400 body, 500 labels, 600 headings, 700 emphasis) and reuse it—avoid random font‑black on every title.

Tight display

Wide label

Letter spacing
aka Tracking
Tracking adjustments for display type, overlines, and dense UI labels.

Prompt like this

Tighten tracking on large display headings; open tracking (tracking‑widest) on small uppercase labels. Keep body text near default.

$48 $32

Strikethrough
aka Deleted text
Struck text for removed content, completed tasks, or old prices.

Prompt like this

Use line‑through for superseded prices or completed items; pair with a clear new value so the meaning is obvious.

~65ch measure

Short lines are easier to scan than full-bleed paragraphs.

Measure / line length
aka Reading width
Comfortable line length (~45–75ch) so body copy stays readable.

Prompt like this

Constrain body copy to ~65ch max‑width (prose measure) so lines don't stretch edge‑to‑edge on wide screens.

Beautiful balanced multi-line titles

Text balance
aka Balanced headlines
Balanced line breaks on multi-line titles so the last line isn't a single word.

Prompt like this

Apply text‑wrap: balance (text‑balance) on multi‑line headings so wrapped titles look even, not orphaned.

API vs Api small caps

Small caps
aka Petite caps
Uppercase letterforms at lowercase height for refined labels and acronyms.

Prompt like this

Use font‑variant: small‑caps (or a true small‑caps face) for acronyms and refined labels—not full uppercase shouty tracking on body copy.

user_id · a1b2c3

Monospace stack
aka Code font stack
Dedicated mono typeface for code, IDs, and technical metadata.

Prompt like this

Define a mono stack (ui‑monospace, SF Mono, Menlo, monospace) for code, IDs, and logs—never mix random mono fonts mid‑UI.

Scales up

text-base → sm:text-lg

Responsive type scale
aka Fluid type
Type sizes that scale smoothly between mobile and desktop breakpoints.

Prompt like this

Scale headings with clamp() or stepped text‑2xl/md:text‑4xl so type stays proportional across viewports without jumping awkwardly.

Ship the pricing page before launch week.

Mark / highlight
aka Highlighted text
Inline highlight that draws attention to a phrase inside a sentence.

Prompt like this

Highlight key phrases with a soft mark background (e.g. primary/15) and readable foreground—not neon yellow on long passages.

Color

Palettes, contrast, and semantic color roles

19

Primary

Brand accent

Primary brand color
Main accent used for primary actions and key highlights.

Prompt like this

Define a primary brand color for CTAs and key accents; use it sparingly so it stays attention‑grabbing.

Success
Warning
Error
Info
Semantic colors
aka Status colors
Success, warning, error, and info colors with meaning.

Prompt like this

Use semantic colors: green success, amber warning, red error, blue info—consistent across alerts and badges.

Neutral gray scale
Grays for text, borders, and backgrounds.

Prompt like this

Build a neutral scale (50–950) for surfaces, borders, and text hierarchy instead of pure black/white only.

Fg on Bg
Inverted
Foreground / background
Main text-on-surface pairing for readable contrast.

Prompt like this

Pair high‑contrast foreground text on background surfaces; support light and dark with semantic tokens.

Primary title

Muted supporting detail

Muted / secondary text
Lower-emphasis text for metadata and supporting copy.

Prompt like this

Use muted secondary text color for timestamps, hints, and less important metadata—not for primary content.

#0F766E
#0EA5E9
#D97706
#E11D48
Color swatches
Visual chips showing a palette for designers and prompts.

Prompt like this

Show a palette as rounded color swatches with hex labels in a horizontal row.

Accent

Soft highlight

Accent color
aka Secondary accent
Supporting brand hue for selected rows, chips, and soft highlights—not every CTA.

Prompt like this

Define an accent token for soft highlights (selected rows, chips, focus tints) separate from the primary CTA color so actions stay clear.

border
emphasis
Border color
aka Hairline
Subtle stroke color for cards, inputs, and dividers.

Prompt like this

Use a dedicated border color token (low‑chroma, mid lightness) for cards and inputs; avoid pure black borders on light UIs.

5%
10%
20%
40%
60%
80%
Opacity / alpha scale
aka Alpha steps
Consistent transparency steps for overlays, disabled UI, and scrims.

Prompt like this

Use a short opacity scale (e.g. 5/10/20/40/60/80%) for scrims, disabled fills, and overlays instead of one‑off rgba values.

On primary
Inverse
Inverse colors
aka On-primary
Light text on dark/brand surfaces (and the reverse) for badges, toasts, and heroes.

Prompt like this

Provide inverse pairs (e.g. primary‑foreground on primary) so text on solid brand fills always meets contrast.

Surface ladder
Surface colors
aka Layered surfaces
Stacked background tokens (page → card → popover) for depth without heavy shadows.

Prompt like this

Define surface tokens (background, card, popover/muted) so nested panels step up in elevation via fill, not only shadow.

Focus ring color
aka Ring token
Dedicated ring/focus color so keyboard focus is visible and on-brand.

Prompt like this

Set a focus ring token (ring‑primary or ring) with offset so keyboard users always see a clear, brand‑aligned focus indicator.

Chart / data colors
aka Series colors
Distinct hues for chart series and data categories that stay legible in light/dark.

Prompt like this

Provide a chart color set (4–8 distinct hues) as tokens so multi‑series charts stay consistent and colorblind‑friendlier than pure red/green only.

AA text
On primary
Contrast pair
aka WCAG pair
Explicit text/fill pairs that meet contrast so content stays readable.

Prompt like this

Document contrast pairs (e.g. foreground on background, primary‑foreground on primary) and verify they meet WCAG AA for body and UI text.

Brand color scale
aka Primary steps
Tints and shades of the brand hue for hover, soft fills, and emphasis.

Prompt like this

Build a brand scale (50–900) from the primary hue so soft fills, hovers, and solid CTAs stay related—not random blues.

Disabled fill
Disabled text
Disabled colors
aka Inactive palette
Muted fill and text tokens for disabled controls that still look intentional.

Prompt like this

Define disabled foreground/background tokens (lower contrast, no pure gray washout) and apply them consistently—not random opacity.

Selected text uses brand tint

::selection · primary/25

Selection colors
aka ::selection
Browser text-selection highlight colors that match the brand.

Prompt like this

Set ::selection (and ::-moz‑selection) to a soft primary tint with enough contrast so selected text stays readable in light and dark.

Light

bg · fg

Dark

bg · fg

Dark-mode pair
aka Light/dark swatch
Paired light and dark surface samples so tokens stay intentional in both themes.

Prompt like this

Design colors as light/dark pairs (bg + fg + border) and verify both themes—don’t only polish light mode then invert.

Spacing & Layout

Whitespace, grids, stacks, and alignment

25
4
8
12
16
24
32
Spacing scale
aka Space tokens
Consistent gaps (4/8/12/16…) instead of arbitrary pixels.

Prompt like this

Use a consistent spacing scale (4px base: 4, 8, 12, 16, 24, 32, 48) for padding and gaps throughout.

Vertical stack
aka VStack
Elements stacked vertically with even gaps.

Prompt like this

Lay out items in a vertical flex/stack column with consistent gap (e.g. gap‑4).

ABCD
Horizontal cluster
aka HStack
Items in a row that wrap when needed.

Prompt like this

Group related controls in a horizontal flex row with gap, wrapping on small screens.

Responsive grid
Multi-column grid that adapts to viewport width.

Prompt like this

Use a responsive CSS grid: 1 col mobile, 2 tablet, 3 desktop with equal gap.

max-width container
Content container
aka Max-width wrapper
Centered max-width shell for readable page content.

Prompt like this

Wrap page content in a centered container with max‑w‑5xl/6xl and horizontal padding.

← breathing room →
Whitespace / breathing room
aka Negative space
Empty space that separates groups and reduces clutter.

Prompt like this

Increase whitespace between sections (py‑12+) so the layout feels calm and scannable—not cramped.

Alignment
Left, center, or right alignment of content blocks.

Prompt like this

Align text and actions consistently (e.g. left‑aligned body, center for empty states, right for table actions).

Aspect ratio box
Fixed ratio frames for media (16:9, 1:1, 4:3).

Prompt like this

Reserve media slots with aspect‑ratio (aspect‑video, aspect‑square) so layout doesn't jump when images load.

base
sticky
modal
Z-index layers
aka Stacking order
Named stacking levels so dropdowns, sticky bars, and modals never fight randomly.

Prompt like this

Define a small z‑index scale (base, sticky, dropdown, modal, toast) and never invent one‑off z-[9999] values.

Sticky header
Row A
Row B
Row C
Row D
Row E
Sticky position
aka Sticky header
Element sticks within its scroll container (headers, table columns, side notes).

Prompt like this

Use position sticky with a top offset for toolbars or section labels that should pin while content scrolls beneath.

List
Detail
Split layout
aka Two-column
Two regions side by side (form + preview, list + detail) with a shared gap.

Prompt like this

Build a two‑column split (e.g. 1fr 1fr or 320px 1fr) with consistent gap; stack to one column on small screens.

Comfortable

Compact

UI density
aka Compact mode
Comfortable vs compact spacing modes for the same components.

Prompt like this

Support density: comfortable (roomy padding/gaps) vs compact (tighter rows for data‑heavy UIs). Toggle padding and gap tokens, not one‑off pixels.

Alpha
Bravo
Charlie
Delta
Echo
Foxtrot
Scroll area
aka Overflow scroll
Bounded region that scrolls while the page chrome stays fixed.

Prompt like this

Put long lists in a max‑height scroll area with overflow‑y auto so panels don't stretch the whole page; prefer custom thin scrollbars only if accessible.

Full-bleed band

Full-bleed
aka Edge-to-edge
Content that breaks out of the container to span the full viewport width.

Prompt like this

Allow heroes or media to go full‑bleed (w‑screen relative to container) while text stays in the max‑width measure.

Column flow keeps short definitions compact.

Use for glossaries, not forms.

Multi-column text
aka CSS columns
Text flowed into multiple columns for dense editorial layouts.

Prompt like this

Use CSS multi‑column (columns‑2, gap) for dense FAQs or glossaries; avoid columns for interactive forms.

Centered card
Centered layout
aka Center stage
Content horizontally and often vertically centered—common for auth and empty heroes.

Prompt like this

Center key solitary content with flex/grid place‑items‑center and a max‑width card—common for login and empty states.

Nav
Header
Main
App shell
aka Admin layout
Persistent chrome (nav + main) framing application pages.

Prompt like this

Structure product pages as an app shell: fixed/side nav + scrollable main content region with consistent header height.

safe-area
Safe area insets
aka Notch padding
Padding that respects device notches, home indicators, and rounded corners.

Prompt like this

Add safe‑area padding (env(safe‑area‑inset-*)) on fixed bottom bars and full‑bleed mobile layouts so content clears the home indicator.

Staggered grid
aka Uneven grid
Grid of mixed-height cards for galleries when equal rows feel rigid.

Prompt like this

For mixed‑height media, use a CSS columns or grid with row‑span variation—not forced equal card heights that crop content.

Hero
A
B
Bento grid
aka Bento layout
Asymmetric card mosaic where cells span uneven rows/columns for hierarchy.

Prompt like this

Build a bento grid with CSS grid and span utilities (col‑span/row‑span) so one hero cell anchors smaller feature tiles.

44

min target

×

too small

Minimum hit target
aka Touch target
Minimum interactive size so controls stay easy to tap and click.

Prompt like this

Keep interactive hit targets ≥44×44px (or pad icon buttons with invisible hit area); never ship 16px‑only click targets on mobile.

Compact
Comfort
Spacious
Density scale
aka Compact comfortable spacious
Product-wide compact / comfortable / spacious spacing modes.

Prompt like this

Offer a density scale (compact/comfortable/spacious) that shifts padding, row height, and gap tokens together—not one‑off tighter screens.

geometric

optical

Optical alignment
aka Optical centering
Nudging icons and type so they look centered even when math centers are off.

Prompt like this

Optically align icons in circles and play triangles (slight offset) so they look centered; geometric center often reads heavy on one side.

px token
Page content
px token
Content padding token
aka Page padding
Shared horizontal inset for page content across breakpoints.

Prompt like this

Use a content padding token (px‑4 md:px‑6 lg:px‑8) on page shells so gutters stay consistent; don’t invent new side padding per section.

Buttons

Primary actions and button variants

25
Primary button
aka CTA button
Highest-emphasis action—filled brand color.

Prompt like this

Make the primary CTA a solid filled button with brand background, white text, and clear hover state.

Secondary button
aka Outline button
Medium emphasis—outline or soft fill next to primary.

Prompt like this

Add a secondary outline button beside the primary for less important actions (e.g. Cancel).

Ghost / tertiary button
aka Text button
Lowest emphasis—no border until hover.

Prompt like this

Use a ghost/tertiary button (transparent, text only, subtle hover bg) for low‑priority actions.

Destructive button
aka Danger button
Dangerous actions like delete—red emphasis.

Prompt like this

Style destructive actions (Delete, Remove) with red/danger styling and often require confirmation.

Icon button
Square/round control with only an icon.

Prompt like this

Create an icon‑only button (square, equal padding) with an accessible aria‑label for the action.

Button group
aka Segmented control (related)
Related buttons joined or tightly spaced.

Prompt like this

Group related actions in a button group with shared borders or tight gap for a single unit.

Loading button
Button showing spinner while an action runs.

Prompt like this

When submitting, disable the button and show a small spinner + loading label to prevent double submits.

Button sizes
Small, medium, large sizing for hierarchy.

Prompt like this

Offer sm/md/lg button sizes with consistent padding and type scale across variants.

Outline button
aka Bordered button
Medium-emphasis action with a stroke and transparent fill.

Prompt like this

Use an outline button (1px border, transparent fill) for secondary actions that still need clear hit targets.

Button with icon
aka Icon + label button
Label paired with a leading or trailing icon for faster recognition.

Prompt like this

Pair a short label with a leading icon inside the button (icon size ~1em, gap‑2); keep the label for accessibility.

Floating action button
aka FAB
Circular primary action that floats above content, usually bottom-right.

Prompt like this

Add a floating action button (circular, elevated shadow, brand fill) for the single most common create action; keep one FAB per view.

Split button
aka Split CTA
Primary action plus a chevron that opens related alternatives.

Prompt like this

Use a split button: main action on the left, chevron dropdown on the right for alternate actions (Save / Save as…).

Toggle button
aka Pressed button
Button that stays pressed/selected to represent an on/off or mode choice.

Prompt like this

Use toggle buttons (aria‑pressed) for modes like Bold/Grid view; show selected with filled or accent background.

Panel content
Close button
aka Dismiss button
Icon control that dismisses a dialog, toast, or chip.

Prompt like this

Provide a clear close/dismiss icon button (X) with aria‑label Close in the corner of modals, toasts, and banners.

Soft button
aka Subtle button
Medium-quiet action with soft tinted fill—between secondary outline and ghost.

Prompt like this

Use a soft/subtle button: light primary‑tinted background, no heavy border, for secondary actions that still need fill presence.

Pill button
aka Rounded full button
Fully rounded capsule shape for marketing CTAs and filter chips-as-buttons.

Prompt like this

Use rounded‑full pill buttons for marketing CTAs or filter actions; keep product chrome on standard radius so shapes stay intentional.

Full-width button
aka Block button
Button that spans its container—common in mobile forms and auth.

Prompt like this

On mobile forms and auth, use full‑width primary buttons (w‑full) so the CTA is easy to tap; stack secondary full‑width below.

Success button
aka Positive button
Affirmative action styled with success green instead of brand primary.

Prompt like this

Use a success button (emerald fill) only for completing a positive outcome (Publish, Confirm payment)—not every primary action.

3
Button with badge
aka Badge button
Action control that carries a numeric or status badge on the corner.

Prompt like this

Attach a small absolute badge (count or dot) to icon or label buttons for unread/pending; keep contrast high and cap large counts (99+).

npm i ui
Copy button
aka Copy to clipboard
Control that copies text or a value and briefly confirms success.

Prompt like this

Use a compact copy button (icon or Copy label) that flips to Copied/check for ~1.5s after clipboard write; always provide an accessible name.

Button hierarchy pair
aka CTA pair
Primary and secondary actions composed so emphasis is obvious at a glance.

Prompt like this

Pair one solid primary with one outline/ghost secondary (e.g. Save + Cancel); never two equal solid buttons competing for the same decision.

Dense button
aka Compact button
Reduced padding and type for toolbars, tables, and dense admin chrome.

Prompt like this

In toolbars and data tables, use dense buttons (h‑7/h‑8, text‑xs, tighter px) while keeping ≥24px hit height; don’t densify primary page CTAs.

Trailing icon button
aka Icon after label
Label with a trailing icon for direction (next, external, expand).

Prompt like this

Put directional icons after the label (Continue →, Open ↗); keep icon ~1em and gap‑2 so the word still leads the read order.

Skeleton button
aka Button placeholder
Shimmering button-shaped placeholder while actions are not yet known.

Prompt like this

When the available actions load async, show a skeleton button (same height/radius as the real control) instead of a disabled fake label.

Form Controls

Inputs, selects, toggles, and field patterns

31
Text input
aka Text field
Single-line text entry with border and focus ring.

Prompt like this

Build a text input with label, border, focus ring, placeholder, and comfortable height (h‑10/h‑11).

Textarea
Multi-line text entry for longer content.

Prompt like this

Use a multi‑line textarea with min‑height, resize‑y optional, and matching input border styles.

Select / dropdown
aka Dropdown menu (form)
Choose one option from a list.

Prompt like this

Add a select dropdown with a clear label, chevron affordance, and native or custom options list.

Checkbox
Binary multi-select options.

Prompt like this

Style checkboxes with label to the right; support checked, unchecked, and indeterminate if needed.

Radio group
Mutually exclusive single choice.

Prompt like this

Use radio buttons in a group for exclusive single selection with a fieldset legend.

Switch / toggle
aka Toggle switch
On/off control that takes effect immediately.

Prompt like this

Add a toggle switch for instant on/off settings (not form submit)—pill track with sliding thumb.

https://
Input with addon
aka Input group
Field with prefix/suffix (icon, unit, or button).

Prompt like this

Attach a prefix icon or suffix unit/button to the input in a connected input group.

Enter a valid email address.

Validation error state
Error styling and message when input fails validation.

Prompt like this

Show invalid fields with red border, error icon, and helper error message below the input.

60%

Slider / range
Drag control to pick a value on a continuum.

Prompt like this

Use a range slider for continuous values with a visible track, thumb, and optional value label.

Drop files or browse

PNG, JPG up to 5MB

File upload dropzone
aka Drop zone
Area to drag-and-drop or browse for files.

Prompt like this

Create a dashed‑border dropzone with upload icon, helper text, and browse link for file uploads.

Search field
aka Search input
Input with search affordance for query and filter UIs.

Prompt like this

Build a search field with a leading search icon, placeholder like “Search…”, and optional clear control.

Password field
aka Secret input
Masked text entry for secrets, often with show/hide.

Prompt like this

Use a password input with type=password, label, and a show/hide toggle; never prefill real secrets in demos.

Number input
aka Numeric field
Numeric entry with optional steppers for counts and quantities.

Prompt like this

Provide a number input with min/max, step, and either native spinners or +/- steppers for quantities.

Date field
aka Date picker input
Control for selecting a calendar date.

Prompt like this

Add a date field with a clear label and calendar affordance (native date input or picker trigger).

Portland
Paris
Combobox
aka Autocomplete
Searchable select: type to filter options, pick one value.

Prompt like this

Use a combobox/autocomplete for long option lists: input + filtered listbox, keyboard navigable, clear empty and loading states.

4
8
2
OTP / PIN input
aka One-time code
Segmented digit fields for one-time passwords and PINs.

Prompt like this

Build OTP as equal digit boxes with auto‑advance, paste support, and a single accessible field group label.

Design ×Eng ×Add…
Multi-select
aka Tag select
Control that picks multiple values, often shown as removable chips.

Prompt like this

For multi‑select, show selected values as chips inside the field with remove actions, plus a checklist or combobox for adding more.

Time field
aka Time picker
Control for selecting a clock time (hours and minutes).

Prompt like this

Provide a time input (native type=time or custom spinner) with clear 12/24h handling and an associated label.

Shipping
Fieldset / field group
aka Form section
Related fields grouped under a legend for structure and accessibility.

Prompt like this

Group related inputs in a fieldset with a visible legend (e.g. Billing address); use spacing and optional card chrome to show the group.

Input sizes
aka Field sizes
Small, default, and large field heights aligned with button size scale.

Prompt like this

Offer input size variants (sm/default/lg) that match button heights so toolbars and forms align on a baseline grid.

Required field marker
aka Required asterisk
Visual cue (usually asterisk) that a field must be completed.

Prompt like this

Mark required fields with an asterisk after the label and explain once near the form; don't rely on color alone.

+1
Phone field
aka Tel input
Telephone input, often with country code prefix.

Prompt like this

Use type=tel with a country code addon or select; format as the user types and keep a single accessible label.

Color picker field
aka Color input
Control for choosing a color value, often with swatch + hex.

Prompt like this

Pair a native color input or swatch button with a hex text field so users can pick visually or paste values.

Checkbox group
aka Multi-checkbox
Stacked checkboxes for selecting multiple options in a set.

Prompt like this

Group related checkboxes under a legend/label with consistent spacing; support select‑all with indeterminate when partial.

Inline label field
aka Horizontal form row
Label and control on one row for dense settings UIs.

Prompt like this

In settings tables, align labels left and controls right on one row (grid cols); stack on narrow screens.

Lowercase letters and hyphens only.

Field helper text
aka Hint text
Supporting sentence under a field that explains format or constraints.

Prompt like this

Put helper text under the input (muted, text‑xs), wire aria‑describedby, and replace it with error text on validation failure—not both stacked forever.

21 / 160

Character count
aka Char counter
Live count of characters used vs max for titles, bios, and tweets.

Prompt like this

Show a character counter near the field (current/max, tabular‑nums); warn near the limit and block or explain hard max on submit.

designa11yAdd tag…
Tag / chip input
aka Chips input
Freeform field that turns entered tokens into removable chips.

Prompt like this

Build a tag input: type + Enter/comma creates chips, Backspace removes the last, each chip has a clear remove control and a single field label.

Strong

Password strength
aka Strength meter
Meter and cues that show how strong a new password is as the user types.

Prompt like this

Pair the password field with a strength meter (weak→strong segments) and short rules met/unmet—not only a color bar with no text.

Floating label
aka Float label
Label that sits inside the field and rises when the field is focused or filled.

Prompt like this

Use a floating label that shrinks above the value on focus/fill; keep a visible label always—don’t rely on placeholder alone.

From

Mar 1

To

Mar 14
Date range
aka Date range picker
Paired start and end date controls for filters, bookings, and reports.

Prompt like this

Offer a date range as From/To fields (or one dual calendar) with validation that end ≥ start and clear empty states.

Feedback

Alerts, toasts, loaders, and progress

20
Alert / banner
aka Inline alert
In-page message for important status info.

Prompt like this

Show an inline alert banner with icon, title, body, and optional dismiss—color‑coded by severity.

Changes saved
Toast / snackbar
aka Snackbar
Temporary floating message after an action.

Prompt like this

After save, show a toast/snackbar in a corner with short message and optional undo; auto‑dismiss.

Loading…
Spinner / loading indicator
Indeterminate loading for short waits.

Prompt like this

Use a circular spinner for indeterminate loading; center it in the content area with optional label.

Skeleton loader
aka Content placeholder
Pulsing shapes matching content layout while loading.

Prompt like this

Replace loading content with skeleton placeholders (gray rounded bars) that match the final layout.

60% complete

Progress bar
aka Linear progress
Determinate progress for known completion %.

Prompt like this

Show a horizontal progress bar with filled track for determinate progress (e.g. upload 60%).

No projects yet

Create your first project to begin.

Empty state
aka Blank slate
Friendly screen when there's no data yet.

Prompt like this

Design an empty state with illustration/icon, short explanation, and a primary action to create first item.

3
Notification badge
aka Count badge
Small count or dot on icons for unread items.

Prompt like this

Attach a red notification badge (count or dot) to the top‑right of an icon for unread alerts.

Online
Away
Busy
Status indicator
aka Status dot
Colored dot signaling online, busy, offline, or health.

Prompt like this

Show a small status dot (green online, amber away, red busy/error) next to avatars or service names.

Tip

Use callouts for non-urgent guidance, not critical errors.

Inline callout
aka Info callout
Soft in-flow note for tips or secondary guidance (not a full alert).

Prompt like this

Add an inline callout with a soft accent background, short title, and tip body for non‑urgent guidance.

Success confirmation
aka Success banner
Positive confirmation after a completed action.

Prompt like this

After a successful save, show a green success banner or check + “Saved” message; allow dismiss.

New: export to Figma →
Announcement bar
aka Promo bar
Thin full-width bar for product news, outages, or promos above the header.

Prompt like this

Use a slim announcement bar (full width, dismissible) for sitewide news; keep copy to one line and a single action link.

70%
Circular progress
aka Progress ring
Ring or circle that fills to show percent complete.

Prompt like this

Show determinate circular progress for upload/completion percentages; include a text value for accessibility.

Update available

Actionable banner
aka Banner with CTA
Alert-style banner that includes one or more explicit actions.

Prompt like this

When a banner needs a decision, include primary/secondary actions inline (e.g. Update · Dismiss) rather than text‑only notices.

All changes saved
Inline status text
aka Helper status
Short status line next to a control (Saving…, Saved, Error).

Prompt like this

Show inline status beside or under controls for async saves (Saving… → Saved) using muted or semantic color.

Inbox12
Count badge
aka Numeric badge
Small numeric chip indicating quantity (inbox count, tab totals).

Prompt like this

Use a compact count badge (muted or primary) next to nav labels; cap display (e.g. 99+) for large numbers.

Page loading…

Top progress bar
aka NProgress
Thin progress line at the top of the viewport for page/route loading.

Prompt like this

Show a 2px top‑of‑viewport progress bar during route transitions; animate width and hide when complete. Respect reduced motion.

Item deleted
Snackbar with action
aka Action toast
Transient message with a single related action like Undo.

Prompt like this

Pair short snackbar copy with one text action (Undo, View) and optional dismiss; auto‑hide after a few seconds.

Fix 2 errors

  • Email is required
  • Password too short
Validation summary
aka Error summary
List of form errors at the top of a form for keyboard and screen-reader users.

Prompt like this

On submit failure, show a validation summary listing fields and errors with links/focus to each invalid control.

Ada is typing
Typing indicator
aka Is typing
Animated cue that another person is typing in chat or comments.

Prompt like this

Show a typing indicator (three bouncing dots + name) near the thread; hide after idle and don’t block the composer.

Overlays

Modals, drawers, tooltips, and popovers

18
Drawer / sheet
aka Side panel
Panel that slides in from an edge.

Prompt like this

Use a side drawer/slide‑over panel for secondary flows (filters, details) without leaving the page.

Tooltip
Small hover/focus hint near a control.

Prompt like this

Add a tooltip on hover/focus with short helper text; dark small rounded bubble with arrow optional.

Popover
Rich floating panel with interactive content.

Prompt like this

Show a popover panel with richer content (form fields, lists) anchored to a trigger button.

⌘K · Search…
Go to Typography
Toggle dark mode
Command palette
aka Cmd+K menu
Keyboard-first search for app actions.

Prompt like this

Add a Cmd+K command palette: centered search overlay listing actions and pages to jump to.

Delete this file?

This action cannot be undone.

Alert / confirm dialog
aka Confirmation dialog
Modal that asks the user to confirm a consequential action.

Prompt like this

For delete/overwrite, open an alert dialog with clear consequence copy, Cancel, and a destructive Confirm.

Actions

Share · Edit · Copy

Bottom sheet
aka Mobile sheet
Panel that rises from the bottom edge—common on mobile.

Prompt like this

Use a bottom sheet for mobile filters or actions: drag handle, title, content, and scrim dismiss.

Open
Rename
Delete
Context menu
aka Right-click menu
Action menu anchored to a pointer or long-press target.

Prompt like this

Provide a context menu on right‑click/long‑press with dense action rows; keep labels short and group with separators.

AL

Alex Lee

Product design · Online

Hover card
aka Preview card
Floating preview that appears on hover/focus with richer content than a tooltip.

Prompt like this

Show a hover card on avatar/link hover with name, meta, and optional action—delay open slightly to avoid flicker.

File uploaded
Invite sent
Toast stack
aka Toast region
Stacked toasts in a fixed corner region with newest on top or bottom.

Prompt like this

Stack toasts in a fixed corner region with consistent spacing; limit visible toasts and collapse or queue overflow.

Editor×
Full canvas
Fullscreen modal
aka Takeover modal
Modal that covers most or all of the viewport for complex flows.

Prompt like this

For multi‑step or dense tasks, use a near‑fullscreen modal/sheet with sticky header actions and clear dismiss.

Share with your team

Invite people from here.

Coach mark
aka Feature spotlight
Spotlight callout teaching a UI control during onboarding.

Prompt like this

Coach marks: dim the page, highlight one target, short title + body + Next/Skip. Never block critical paths permanently.

List

Record

Detail panel

Side drawer detail
aka Detail drawer
Edge drawer for viewing/editing a record without leaving the list.

Prompt like this

Open row details in a side drawer (not a full page) for master‑detail flows; include close, title, and sticky footer actions.

Delete this file?

This can’t be undone.

Popconfirm
aka Confirm popover
Small confirm dialog anchored to the action instead of a full modal.

Prompt like this

Use a popconfirm (popover with title + Cancel/OK) for medium‑risk actions; reserve full alert dialogs for destructive irreversibility.

Notifications2
  • Deploy succeeded
  • Invite accepted
Notification center
aka Notification panel
Panel of recent alerts opened from a bell or inbox control.

Prompt like this

Build a notification center: bell with unread count opens a panel of items (read/unread), mark‑all, and empty state—not only a single toast.

Data Display

Cards, tables, lists, and content blocks

25
Project alpha
A contained surface for related content.
Card
Contained surface grouping related content.

Prompt like this

Use a card with subtle border/shadow, padding, title, body, and optional footer actions.

NameRoleStatus
AdaAdminActive
LinEditorAway
Data table
Rows and columns for structured data.

Prompt like this

Build a clean data table with header row, zebra or hover rows, and aligned columns.

  • Inbox
  • Drafts
  • Archive
List
aka List group
Vertical list of similar items.

Prompt like this

Render a list of items with dividers, optional leading icon/avatar, title, and trailing meta.

Revenue

$48.2k

↑ 12% vs last month

Stat / metric card
aka KPI card
Big number with label for dashboards.

Prompt like this

Show a KPI stat card: large metric number, short label, and optional trend delta (↑ 12%).

Design×React×AI×
Chip / tag
aka Pill
Compact labels for categories or filters.

Prompt like this

Use chips/tags as rounded pills for categories; optional dismiss X for filter chips.

ABC+5
Avatar group
aka Facepile
Overlapping avatars for multiple people.

Prompt like this

Show an avatar group/facepile with overlapping circular images and a +N overflow count.

Status
Published
Owner
Ada L.
Updated
Today
Description list
aka Key-value list
Label–value pairs for details views.

Prompt like this

Display details as a description list of label/value pairs in two columns on desktop.

A labeled catalog of UI design elements and AI prompt tips.
Accordion / disclosure
aka Collapsible
Expand/collapse sections to hide detail.

Prompt like this

Use an accordion with chevron toggles so users expand one FAQ/section at a time.

Shipped

Step 3

In review

Step 2

Opened

Step 1

Timeline
aka Activity feed
Chronological events connected by a vertical line.

Prompt like this

Show a vertical timeline with dots, connector line, timestamps, and short event titles for activity history.

▾ src
▾ components
Button.tsx
Card.tsx
lib
Tree list
aka Nested list
Hierarchical nested items with expand/collapse.

Prompt like this

Render a tree of nested items with indent levels and expand chevrons for folders/sections.

Toolbar
aka Action bar
Horizontal strip of related actions above content.

Prompt like this

Place a compact toolbar above a table or editor with icon buttons, separators, and optional overflow menu.

July 2026

SMTWTFS1234567891011121314
Calendar month
aka Date grid
Month grid of days for pickers and scheduling UIs.

Prompt like this

Render a month calendar as a 7‑column day grid with today highlighted and out‑of‑month days muted.

$29/mo

$39/mo

Price / currency
aka Price block
Formatted currency with emphasis hierarchy for product and billing UIs.

Prompt like this

Display prices with clear currency, tabular nums, and hierarchy (large amount, smaller period). Show compare‑at with strikethrough when discounted.

bash
npm i design-menu
Code snippet card
aka Snippet panel
Compact code panel with language cue and copy affordance for docs/APIs.

Prompt like this

Present install/API snippets in a card with mono code, optional language label, and a copy button.

JM

Jordan commented on Homepage

2h ago

Activity feed item
aka Feed row
Single row in an activity or notification feed with actor, action, and time.

Prompt like this

Layout feed items as avatar + action sentence + relative time; group by day when the list is long.

Users

2.4k

NPS

62

Churn

1.2%

KPI strip
aka Metric row
Horizontal row of compact metrics for dashboards.

Prompt like this

Show 3–5 KPIs in a horizontal strip with label, value, and optional delta; keep alignment and tabular numbers consistent.

4.0
Star rating
aka Rating
Visual score with stars for reviews and product quality.

Prompt like this

Show star ratings with filled/empty stars, a numeric value for a11y, and consistent half‑star rules if used.

FeatureFreePro
Projects3
SSO
Comparison table
aka Pricing compare
Matrix of plans or products with checkmarks and feature rows.

Prompt like this

Build comparison tables with sticky first column, clear plan headers, and check/dash cells—not walls of paragraphs.

Namesorted
Sortable table header
aka Column sort
Table column header that toggles sort order with a clear indicator.

Prompt like this

Mark sortable columns with a chevron; show active sort direction and keep sort state in the URL or table state.

+12%
Sparkline
aka Inline chart
Tiny inline chart showing a trend without full chart chrome.

Prompt like this

Use sparklines beside KPIs for trend at a glance; no axes required, but provide a text summary for screen readers.

Status: OpenOwner: You
Filter chips
aka Facet chips
Removable chips showing active filters in a results toolbar.

Prompt like this

Represent active filters as dismissible chips in a filter bar (label + value + ×), with Clear all when more than one is applied.

Invoice #1042$420
Paid · Visa ••42 · Mar 3
Expandable row
aka Row expand
Table row that expands to reveal nested detail without leaving the list.

Prompt like this

Use expandable rows with a chevron and aria‑expanded; show detail in a full‑width nested panel under the row—keep the stage compact.

Web
78
iOS
52
API
34
Simple bar chart
aka Bar chart
Compact bar comparison for a few categories without a full charting library.

Prompt like this

For 3–6 categories, use a simple bar chart (labels + proportional bars + tabular values); reserve heavy chart libs for interactive analytics.

To do2

Write copy
QA pass

Doing1

Ship demo
Kanban column
aka Board column
Vertical swimlane of cards for status-based boards (To do / Doing / Done).

Prompt like this

Design kanban as labeled columns with card stacks and counts; keep cards short (title + meta) and allow drag between columns when interactive.

Surfaces

Shadows, borders, radius, and dividers

25
Elevation / shadow
aka Drop shadow
Shadows that suggest layering and depth.

Prompt like this

Use a shadow scale (sm/md/lg) for elevation—cards low, modals higher—consistent across the UI.

Border
Strokes defining edges of components.

Prompt like this

Use subtle 1px borders (border‑border/neutral‑200) to separate surfaces without heavy boxes.

Border radius
aka Corner radius
Rounded corners that set product personality.

Prompt like this

Apply a consistent radius scale (sm 4px, md 8px, lg 12px, full pill) across buttons, cards, and inputs.

Section A

Section B

Divider / separator
aka Rule
Horizontal or vertical line separating content.

Prompt like this

Insert a thin horizontal divider between list sections or card blocks for separation.

Frosted glass
Glass / frosted surface
aka Glassmorphism
Translucent blurred surface over content.

Prompt like this

Create a frosted glass panel with bg‑white/10 backdrop‑blur border and soft shadow over a gradient.

Gradient fill
Smooth color transition as background or accent.

Prompt like this

Use a subtle brand gradient (e.g. teal→sky or warm sand→amber) for hero panels or accent surfaces — avoid default purple‑pink AI slop meshes.

Raised panel
Raised surface
aka Elevated card
Surface lifted above the page with shadow or lighter fill.

Prompt like this

Raise a panel above the canvas with a soft shadow and slightly brighter fill so it reads as a card layer.

Inset well
Inset / sunken surface
aka Well
Recessed area that feels cut into the page (wells, code blocks).

Prompt like this

Use an inset surface (darker fill, inner shadow or ring) for wells, code blocks, and drop targets.

Selected ring
Outline ring
aka Focus outline
Ring stroke outside a component for selection or focus.

Prompt like this

Apply a 2px outline/ring outside the border (ring‑offset) for selected cards or keyboard focus.

Drop files here
Dashed border
aka Dropzone border
Dashed stroke for placeholders, dropzones, and optional regions.

Prompt like this

Use a dashed border for empty dropzones and “add item” placeholders so they feel provisional, not solid cards.

Blurred bar
Backdrop blur
aka Frosted chrome
Blur of content behind a translucent bar or panel for layered chrome.

Prompt like this

Use backdrop‑blur on sticky headers and overlays with semi‑transparent fill so underlying content softly shows through.

0
1
2
3
Surface elevation levels
aka Elevation ladder
Stepped elevations (flat → raised → floating) via shadow and fill.

Prompt like this

Define 3–4 elevation levels (flat, raised, floating, modal) with paired shadow + surface tokens and reuse them consistently.

Tinted panel
Tinted surface
aka Soft fill panel
Panel with a light brand or semantic tint instead of pure neutral fill.

Prompt like this

Use lightly tinted surfaces (primary/5–10%) for selected regions, tips, or brand panels without heavy borders.

Well / recessed group
aka Recessed panel
Slightly recessed background that groups controls as one unit.

Prompt like this

Group toolbars or filters in a muted well (bg‑muted rounded‑lg p‑1) so related controls read as a single surface.

Inset border
Inner border / ring inset
aka Inset border
Border drawn inside the box so outer size stays stable.

Prompt like this

Prefer ring‑inset or shadow-[inset_0_0_0_1px] when adding focus/selection borders so layout doesn't shift.

Layered depth
Layered shadow
aka Multi-layer elevation
Two-or-more stacked shadows for realistic soft elevation.

Prompt like this

Compose elevation from 2 soft shadows (tight + ambient) instead of one harsh drop‑shadow for cards and modals.

Danger zone

Delete workspace and all data.

Danger zone
aka Destructive zone
Isolated settings block for irreversible actions, visually warned.

Prompt like this

Put irreversible actions in a danger zone card: destructive border/tint, plain‑language risk, and a confirm step—never next to routine saves.

Gradient border
Gradient border
aka Gradient stroke
Stroke that uses a gradient instead of a flat border color.

Prompt like this

Create gradient borders with a padded wrapper (bg‑gradient + p‑px + inner solid bg) or border‑image; keep gradients brand‑aligned, not default purple‑pink slop.

Animated border
Animated border
aka Attention border
Moving or pulsing stroke that draws attention to a featured surface.

Prompt like this

Use a restrained animated border (slow conic spin or opacity pulse) for featured/upgrade cards only; disable animation under prefers‑reduced‑motion.

Double border
Double border
aka Dual stroke
Two concentric strokes for emphasis on selected or premium surfaces.

Prompt like this

Stack a double border with ring + border or outline + border so selected/premium cards read stronger than single‑stroke peers.

Glow border
Glow border
aka Soft glow stroke
Soft outer glow hugging the edge, often for active or dark-mode accents.

Prompt like this

Add a soft glow with shadow-[0_0_0_1px,0_0_12px] in the accent color for active or dark‑theme emphasis; keep glow subtle so text stays readable.

Inbox
Drafts
Sent
Hairline border
aka Retina border
Ultra-thin stroke that stays crisp on high-DPI without chunky boxes.

Prompt like this

Prefer hairline separation with border or divide at low opacity (border‑border/60) rather than heavy 2px boxes on dense lists and tables.

Chat bubble
Mixed corners
Asymmetric radius
aka Mixed corners
Different corner radii on one shape for tabs, speech bubbles, or brand flair.

Prompt like this

Use asymmetric radius (e.g. rounded‑t‑lg rounded‑br‑lg only) for chat bubbles, attached tabs, or brand moments—don’t randomize corners on every card.

1
2
4
Border width scale
aka Stroke weight scale
Named set of border thicknesses used consistently across the product.

Prompt like this

Define a border width scale (hairline/1px default, 2px emphasis, 4px accent bars) and reuse it—don’t invent one‑off stroke weights per component.

Inset highlight
Inset highlight
aka Top edge highlight
Light top or inner edge that makes a surface feel raised or glassy.

Prompt like this

Add a 1px top inset highlight (via shadow or gradient) on elevated dark surfaces so cards feel lit from above without heavy drop shadows.

Media & Icons

Avatars, images, icons, and empty states

17
DMABC
Avatar
Circular image or initials for a person.

Prompt like this

Show user avatars as circles with image or initials fallback; sizes sm/md/lg.

Icon
Symbolic glyph supporting labels or actions.

Prompt like this

Use a consistent icon set at 16/20/24px; pair icons with text labels for primary nav when possible.

Image frame
Cropped image with radius and object-fit.

Prompt like this

Frame product/hero images with rounded corners and object‑cover so crops stay intentional.

Thumbnail
Small preview image for lists and grids.

Prompt like this

Use square or 16:9 thumbnails in lists/grids with consistent size and object‑cover cropping.

Media object

Image left, supporting text right.

Media object
aka Image + text row
Classic layout: media on one side, title and body on the other.

Prompt like this

Compose a media object: fixed‑size image/avatar left, title + supporting text right, aligned to the start.

Figure 1 · Cover study
Image with caption
aka Figure
Image paired with a caption or credit beneath.

Prompt like this

Wrap an image in a figure with a muted caption below (credit, source, or short description).

2:14
Video placeholder
aka Video frame
Reserved frame for video with play affordance before load.

Prompt like this

Show a 16:9 video placeholder with a centered play button and optional duration badge.

3
Icon with badge
aka Badged icon
Icon carrying a small status or count badge.

Prompt like this

Overlay a small badge (dot or count) on the top‑right of an icon for notifications or status.

Cover image
aka Hero image
Wide image that fills a header or card edge with object-cover.

Prompt like this

Use a wide cover image with object‑cover and fixed height for card headers or profile banners.

Illustration placeholder
aka Empty art
Reserved art slot with abstract shapes when final illustration is pending.

Prompt like this

Reserve illustration space with a soft abstract placeholder (shapes + muted fill) matching final aspect ratio—avoid broken‑image icons for marketing empty states.

Overlay title

Image with text overlay
aka Hero image text
Text or controls layered on an image with a scrim for contrast.

Prompt like this

When placing text on images, add a dark gradient scrim and light text so contrast holds over any photo.

Home
Alerts
Icon + label pair
aka Labeled icon
Icon aligned with a short label for feature lists and menus.

Prompt like this

Pair icons with labels (gap‑2, size‑4 icon) in menus and feature rows; never rely on unlabeled icons for primary navigation.

RK
Avatar with status
aka Presence avatar
User avatar with a small status dot for online/away/busy.

Prompt like this

Overlay a status dot on avatars (bottom‑right, ring of background color) for presence; keep the dot large enough to read.

DM
16–32px mark
Favicon set
aka App icons
Small brand marks for browser tabs and home-screen icons.

Prompt like this

Ship a favicon set (16/32 SVG or PNG, apple‑touch) with a simple mark that reads at 16px—avoid tiny text in the icon.

Object fit media
aka Cover vs contain
How media fills a frame: cover (crop) vs contain (letterbox).

Prompt like this

Choose object‑fit cover for thumbnails/heroes and contain for product shots that must not crop; set a background for letterboxing.

States & Motion

Hover, focus, disabled, and interactive states

25
Hover state
Visual change when the pointer is over a control.

Prompt like this

Define hover states (bg shift, underline, scale 1.02) for interactive elements; keep transitions short.

Focus ring
aka Keyboard focus
Keyboard-visible outline for accessibility.

Prompt like this

Add a visible focus ring (ring‑2 ring‑offset‑2) on keyboard focus for all interactive controls.

Disabled state
Non-interactive appearance for unavailable actions.

Prompt like this

Disable controls with reduced opacity and cursor‑not‑allowed; keep labels readable.

✓ Selected
Default
Selected / active state
Shows the currently chosen option.

Prompt like this

Highlight selected items with accent border/background and optional checkmark so choice is obvious.

Pulse / shimmer animation
Subtle motion indicating loading or attention.

Prompt like this

Use a gentle pulse or shimmer animation on skeletons; keep motion subtle and respect prefers‑reduced‑motion.

pointergrabnot-allowedtext
Cursor affordance
Cursor styles that signal interactivity.

Prompt like this

Use cursor‑pointer on clickable elements, cursor‑grab on draggable, cursor‑not‑allowed when disabled.

Active / pressed state
aka Pressed
Momentary feedback while a control is held down.

Prompt like this

On press/active, darken the fill slightly or scale to 0.98 so clicks feel responsive; keep the change brief.

Loading state
aka Busy state
Control or region waiting on an async result.

Prompt like this

While loading, disable the control, show a spinner, and optionally swap the label to a progressive verb (Saving…).

Enter a valid email address.

Error state
aka Invalid state
Visual treatment when a control or section has failed.

Prompt like this

Mark error state with danger border/text and a short recovery message; keep the field value editable.

Dragging item
Drag state
aka Dragging
Appearance while an item is being dragged for reorder or drop.

Prompt like this

While dragging, lift the item with shadow, reduce opacity of the placeholder slot, and use cursor‑grabbing.

Read-only state
aka Non-editable
Control that displays a value but cannot be edited in this context.

Prompt like this

Style read‑only fields with muted border/fill and no focus caret; use readOnly or plaintext so they differ from disabled (still focusable when needed).

Success on control
aka Valid field
Positive validation styling on an input or control after success.

Prompt like this

Show success on a control with green border/check when validation passes; clear it when the user edits again.

Select all (partial)
Indeterminate state
aka Partial check
Checkbox or progress that is neither fully on nor off (partial selection).

Prompt like this

Use indeterminate checkboxes for partial tree/table selection; set aria‑checked=mixed and a distinct dash visual.

Motion optional

Respect reduced-motion

Reduced motion
aka prefers-reduced-motion
Design respect for users who prefer minimal animation.

Prompt like this

Wrap non‑essential animation in prefers‑reduced‑motion: reduce media queries—keep opacity fades short or static for those users.

You're offline
Offline state
aka Disconnected
UI treatment when the client has no network connectivity.

Prompt like this

Detect offline and show a non‑blocking banner or badge; queue actions when possible and explain what still works.

First run

Create project

No results

Clear filters

Zero state vs empty
aka First-run empty
Distinguish first-use empty from filtered zero results.

Prompt like this

First‑run empty: illustrate + primary CTA to create. Filter zero: “No results” + clear filters—not the same illustration.

1,2845m ago
Stale data indicator
aka Outdated badge
Cue that shown data may be out of date and needs refresh.

Prompt like this

When data may be stale, show a subtle “Updated 5m ago · Refresh” control rather than silently showing old numbers.

Hover lift

Rises + shadow

Hover lift
aka Raise on hover
Element rises slightly with stronger shadow when the pointer enters.

Prompt like this

On hover, lift cards/buttons with translateY(-1px/‑2px) + shadow‑md and a short transition; respect prefers‑reduced‑motion by fading shadow only.

Hover underline grow
aka Expanding underline
Underline that expands from center or start on hover for text links.

Prompt like this

Animate link underlines with scale‑x from 0→1 (origin‑left or center) on hover; keep stroke 1–2px and transition ~150–200ms.

Project alpha
Hover reveal action
aka Reveal on hover
Secondary controls appear only when the row or card is hovered.

Prompt like this

Reveal edit/delete/more actions on row or card hover (opacity/visibility); keep keyboard focus able to show the same controls without hover.

Scale
Hover scale
aka Scale on hover
Subtle grow on hover that signals pressability without heavy motion.

Prompt like this

Use hover:scale-[1.02] or 1.03 on compact interactive tiles; pair with transition‑transform and reduce to opacity‑only under prefers‑reduced‑motion.

Selectable card

Border accents on hover

Hover border accent
aka Border highlight on hover
Border shifts to accent color or weight when the pointer is over the control.

Prompt like this

On hover, strengthen the border (border‑primary or border‑foreground/40) while keeping fill calm—good for selectable cards and outline controls.

Focus-within group
aka Group focus
Parent surface highlights when any child input or control receives focus.

Prompt like this

Use focus‑within on field groups and search bars so the whole chrome rings when a child is focused—not only the raw input outline.

AI Slop

New

Common AI design anti-patterns — and how to prompt past them

25

The future of

Absolutely Everything

✨ AI Powered
Slop
Default purple gradient hero
Anti-patternaka AI purple haze
The same indigo→violet→pink gradient every generic AI landing page ships.

Avoid by prompting

Avoid the default purple‑pink mesh hero. Use our brand neutrals with one restrained accent, or a photographic/textural background unique to the product.

Slop
Floating 3D blobs
Anti-patternaka Glass blobs
Glossy floating orbs that fill space without meaning.

Avoid by prompting

Skip decorative floating 3D glass orbs. Prefer real product UI screenshots, diagrams, or empty space that supports hierarchy.

Unlock the future of seamless synergy

Empower your team to revolutionize cutting-edge workflows.

Interchangeable
Interchangeable SaaS copy
Anti-patternaka Lorem marketing
“Unlock the future of…” / “seamlessly empower…” that could sell any product.

Avoid by prompting

Write concrete product copy: who it is for, what job it does, one specific outcome. Ban words like seamlessly, unlock, revolutionize, empower, cutting‑edge.

Fast
Lorem feature
🔒
Secure
Lorem feature
🚀
Scale
Lorem feature
Feature icon grid of three
Anti-pattern
Three identical rounded cards with lucide icons and vague titles.

Avoid by prompting

Don't default to a 3‑up icon feature grid with generic labels. Show real workflows, numbered steps with screenshots, or a single strong product demo.

Everything is centered

Long paragraphs of body copy that should be left-aligned for scanning but instead form a centered blob that is hard to read on wide screens and looks lazy.

Everything center-aligned
Anti-pattern
Walls of centered text that kill scannability on wide layouts.

Avoid by prompting

Left‑align body and long form content; reserve center alignment for short heroes and empty states. Prefer a clear reading column.

Tag 1Tag 2Tag 3Tag 4Tag 5Tag 6Tag 7
Rainbow badge soup
Anti-pattern
Too many multi-color pills fighting for attention.

Avoid by prompting

Limit badges to one semantic system (neutral + one accent, or status colors only). Don't rainbow‑tag every label.

😊
🙂
😄

“This product changed my life completely!”

Happy Customer

Fake testimonial carousel
Anti-pattern
Identical avatar circles and interchangeable praise quotes.

Avoid by prompting

If you lack real testimonials, omit them. Prefer named customers, logos with permission, or product metrics over inventing smiling stock faces.

🚀 Ship faster ✨ today 💡

Emoji as design system
Anti-pattern
Every heading and button padded with 🚀✨💡.

Avoid by prompting

Use zero or one emoji only if on‑brand. Prefer a consistent icon set and typography for hierarchy — not emoji confetti.

Looks soft & premium

Body text that fails contrast checks and disappears for many readers.

Fashionably low contrast
Anti-pattern
Gray-on-gray text that fails accessibility for style points.

Avoid by prompting

Meet WCAG contrast for body text (aim 4.5:1). Soften hierarchy with size/weight first; never light‑gray body on white as the default look.

One huge corner radius
Anti-pattern
Everything pill-shaped until structure disappears.

Avoid by prompting

Use a small radius scale (sm/md/lg). Large full pills only for chips/CTAs — not for every card, input, and image.

Inter · display

Ship faster today

Inter · UI

Get started

Inter · caption

Same face for every role — no display pairing, zero personality.

Inter-only vacuum
Inter-only personality vacuum
Anti-patternaka Default system sans forever
One overused neutral sans (usually Inter) for display, UI, and captions — size changes only, zero type character.

Avoid by prompting

Don't ship Inter/Roboto for every role by default. Pair a distinctive display face (or weight/optical size) with a quiet UI sans; document the pairing in the prompt.

Glowing button
Glowing card too
Neon glow on everything
Anti-patternaka Cyan glow haze
Soft outer glows on buttons, cards, and text until the UI looks like a nightclub flyer.

Avoid by prompting

Avoid defaulting to cyan/magenta outer‑glow on every surface. Reserve glow for one focal element if the brand needs it; prefer borders, elevation, and contrast for hierarchy.

10k+

teams

99.9%

uptime

4.9★

rating

Unsourced
Invented social-proof metrics
Anti-patternaka Fake 10k users
“10,000+ teams · 99.9% uptime · 4.9★” with no source — manufactured trust.

Avoid by prompting

Never invent user counts, star ratings, or uptime claims. Use real metrics with sources, customer logos with permission, or omit social proof entirely.

NewAIBetaFreeHot

Ship the future

Hero badge stack
Anti-patternaka New · AI · Beta · Free pills
A row of shiny pills above every hero that all shout equally and say nothing.

Avoid by prompting

Skip stacking New/AI/Beta/Free badges on the hero. At most one truthful status label; let the headline carry the message.

Card + same soft shadow
Tile + same soft shadow
Box + same soft shadow
Soft shadow on every box
Anti-patternaka Elevation soup
Identical 0.1-opacity drop shadows on every card so nothing actually elevates.

Avoid by prompting

Don't put the same soft shadow on every surface. Use a short elevation scale (none → sm → md → lg) and reserve higher shadows for overlays and floating panels.

Our product

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod…

Placeholder shipped
Lorem as product copy
Anti-patternaka Placeholder shipped
Latin placeholder or nonsense paragraphs left in as if they were real marketing.

Avoid by prompting

Never leave lorem ipsum in product UI or marketing. Write real microcopy for the job‑to‑be‑done, or use clearly labeled placeholders only in design drafts.

Nav glass
Card glass
Footer glass
Frosted glass everywhere
Anti-patternaka Glassmorphism spam
Backdrop-blur on every panel until hierarchy and performance both melt.

Avoid by prompting

Don't frosted‑glass every surface. Limit glass to one chrome layer (e.g. sticky nav) over a purposeful background; use solid surfaces for content density.

> init_system()

DARK_MODE.exe

// every product is a terminal now

Default dark + cyan hacker vibe
Anti-patternaka Terminal cosplay UI
Near-black canvas, cyan accents, and mono type applied to products that aren't terminals.

Avoid by prompting

Avoid the lazy dark‑mode + neon‑cyan + monospace “hacker” kit unless the product is actually a terminal/devtools brand. Pick a palette and type system from real brand constraints.

One

Same card

Two

Same card

Three

Same card

Identical feature cards
Anti-patternaka Cookie-cutter tiles
Same icon size, same title length, same body, same padding — a grid with no hierarchy.

Avoid by prompting

Don't generate three identical feature cards. Vary hierarchy (one featured story, screenshots, numbered steps) or show a real workflow instead of equal tiles.

Ship faster than ever

Gradient text on every headline
Anti-patternaka Rainbow headline
Every title gets a purple-to-pink gradient fill—instant AI landing page tell.

Avoid by prompting

Don't put gradient fills on every headline. Use solid type; reserve gradient text for at most one intentional hero word if brand demands it.

Everything animates forever
Anti-patternaka Motion spam
Bounce, float, and pulse on every element until nothing feels stable.

Avoid by prompting

Don't animate every card, badge, and blob on a loop. Motion should highlight change or hierarchy—default UI should sit still.

✨ AI✨ Smart✨ Magic✨ GPT
Powered by AI badge spam
Anti-patternaka AI sparkle badge
Every surface stamped with ✨ AI badges as if that were the product.

Avoid by prompting

Don't sprinkle 'AI‑powered' badges on every section. State capability once in plain language; design the actual workflow instead.

10x

faster

99%

happier

24/7

uptime

Unsourced hero stats row
Anti-patternaka Fake social proof strip
Big 10x / 99% / 24/7 numbers under the hero with no source or meaning.

Avoid by prompting

Don't invent 10x/99%/24/7 hero stats. If you show metrics, use real numbers with labels users understand—or cut the strip.

🎊🎉Saved draft!!
Confetti on every success
Anti-patternaka Celebration spam
Particle confetti for mundane saves makes celebration meaningless.

Avoid by prompting

Don't fire confetti for routine saves. Reserve celebration for rare milestones—or skip it and show a quiet success state.

We help you synergize|

Typewriter hero loop
Anti-patternaka Rotating keyword hero
Hero that types endless buzzwords—dated SaaS cliché.

Avoid by prompting

Don't use a looping typewriter of buzzwords in the hero. Write one clear value proposition users can read at a glance.

Library Best Practices

New

Working well with shadcn, Radix, Tailwind, and design systems

30
Badge
Compose primitives, don't fork
Build product UI from shared shadcn/Radix primitives instead of one-off HTML.

Prompt like this

Use the project's Button/Input/Dialog primitives (e.g. shadcn) for chrome and forms. Only hand‑roll markup for custom illustrations or effects.

Variants over one-off classes
aka CVA variants
Encode size/intent variants once so the app stays consistent.

Prompt like this

Add a CVA/variant API (default, outline, ghost, destructive × sm/md/lg) instead of sprinkling ad‑hoc Tailwind on each call site.

bg
card
primary
muted
Semantic design tokens
bg-primary and text-muted-foreground beat raw hex everywhere.

Prompt like this

Style with semantic tokens (background, foreground, primary, muted, border, ring) so light/dark and brand changes stay one‑file edits.

asChild / Slot composition
Merge component styles onto links and custom elements without wrapper div soup.

Prompt like this

Use asChild/Slot so a Button can render as Next.js Link without nested interactive elements or lost styles.

Accessible overlays from the library
Dialogs and menus need focus trap, escape, and labels — Radix already did the hard part.

Prompt like this

Prefer Dialog/Sheet/DropdownMenu primitives for overlays; don't reinvent focus traps with absolute divs.

cn(
base, className
)
cn() class merging
aka className merge
clsx + tailwind-merge so consumer className can override safely.

Prompt like this

Always pass className through cn()/twMerge in shared components so callers can extend without fighting conflicting utilities.

light
.dark
class strategy
Theme with class strategy
next-themes + .dark class keeps SSR and client in sync.

Prompt like this

Wire next‑themes with attribute=class, suppressHydrationWarning on <html>, and CSS variables for both themes — never toggle only with media queries if users need a switch.

Same variant × 3 beats three custom one-offs

Don't restyle every instance
Override variants sparingly; fight design drift.

Prompt like this

Reach for existing variants first. If you need a new look more than twice, add a variant — don't copy‑paste custom classes across pages.

flex + gap utilities

Layout with Tailwind utilities
Flex/grid/gap from utilities; components for interactive atoms.

Prompt like this

Use Tailwind for page layout (flex, grid, gap, container). Keep shadcn for interactive atoms (Button, Input, Dialog) — don't wrap a div in a component for every stack.

src/components/ui/button.tsx

Yours to edit — not a sealed package black box.

Own the component source
aka Copy, don't black-box
shadcn copies code into your repo so you can adapt it.

Prompt like this

Treat shadcn components as starting source in your repo — customize tokens and variants in place; don't fight a sealed npm design kit.

We never share your address.

Form field triad
aka Label + control + description
Every field needs a label, control, and optional helper/error — wired for a11y.

Prompt like this

Compose fields as Label + Input/Select + description/error text. Associate label via htmlFor; put errors in aria‑describedby. Prefer the shared Field pattern over ad‑hoc stacks.

Nav · size-5
Consistent icon sizing
Icons share a size scale so toolbars and buttons don't jitter.

Prompt like this

Standardize Lucide/icons at size‑4 (16px) in buttons and size‑5 in nav. Pair icon+label with gap‑2; don't mix arbitrary w‑3/w‑6 mid‑toolbar.

data-[state=checked]
Style with data-state
aka Radix state attributes
Radix sets data-state/open/checked — style those instead of fighting class toggles.

Prompt like this

Style Radix/shadcn open and checked states with data-[state=open] and data-[state=checked] selectors rather than manual isOpen className branches when possible.

open={isOpen}
onOpenChange={setOpen}

Controlled Dialog / Sheet

Controlled open state
Dialogs, sheets, and dropdowns should accept open + onOpenChange for app logic.

Prompt like this

When app logic must open/close overlays (after submit, deep link), use controlled open/onOpenChange on Dialog/Sheet/Dropdown — don't only rely on uncontrolled triggers.

base: 1 col
md: 2 col

Mobile-first utilities

Mobile-first breakpoints
Base styles for small screens; layer md:/lg: enhancements upward.

Prompt like this

Write mobile‑first Tailwind: single column and stacked actions by default, then md:grid‑cols‑2 / lg:grid‑cols‑3. Don't design desktop‑only and bolt on mobile hacks.

Size props over arbitrary heights
Use component size variants (sm/default/lg) instead of one-off h-9/h-11 classes.

Prompt like this

Prefer Button/Input size props (sm, default, lg) over sprinkling h‑8/h‑11 at call sites. If a height repeats, extend the variant map once.

Skeletons match final layout
Loading placeholders should mirror real content geometry to avoid layout shift.

Prompt like this

Build skeletons with the same grid, gaps, and radii as the loaded UI (avatar circle + two text bars, not one generic rectangle). Prefer Suspense boundaries per section.

Delete project?

This cannot be undone.

Confirm destructive actions
Delete/remove flows use danger styling plus an explicit confirm step.

Prompt like this

Wire destructive actions through AlertDialog (or confirm sheet): clear consequence copy, Cancel + destructive confirm. Never delete on a single unguarded click.

Parent clips…

Portaled menu
Portals & stacking context
aka Portal layering
Render overlays in a portal so z-index and overflow aren't trapped by parents.

Prompt like this

Let Dialog/Dropdown/Tooltip portal to document body so overflow:hidden parents don't clip them; keep one stacking scale for overlays.

aria-label set
Accessible names
aka aria-label discipline
Icon buttons and inputs need computed names for assistive tech.

Prompt like this

Give every icon‑only control an aria‑label (or visible text). Prefer Label htmlFor over placeholder‑only fields.

--primary

--muted-foreground

--destructive

Theme via CSS variables
aka Token variables
Brand and theme changes flow through CSS variables, not hunt-and-replace hex.

Prompt like this

Map brand colors to CSS variables (--primary, --radius) and reference them in components so themes swap in one place.

flex flex-col gap-2
Button
Button
Compose layout outside components
aka Pages use utilities
Page structure stays in Tailwind layout utilities; components stay interactive atoms.

Prompt like this

Compose pages with flex/grid/gap utilities. Keep shared components focused on interactive atoms—not every margin wrapper.

Couldn't load

Try again in a moment.

Graceful empty & error UI
aka Error and empty patterns
Shared empty and error panels so failures don't look like broken pages.

Prompt like this

Ship reusable empty‑state and error‑panel patterns (icon, title, recovery action) instead of raw stack traces or blank main areas.

Menu · arrow keys

↑↓ move · Enter select · Esc close

Keyboard navigation paths
aka Roving tabindex
Menus and toolbars should be fully operable from the keyboard.

Prompt like this

Rely on Radix keyboard behavior for menus/tabs (arrows, Home/End, typeahead). Don't ship custom menus that trap Tab incorrectly.

Focus-visible only rings
aka :focus-visible discipline
Show focus rings for keyboard users without punishing mouse clicks.

Prompt like this

Style focus with :focus‑visible (or focus‑visible:ring) so mouse users don't see rings on every click, but keyboard users always do.

Changes saved
Live region toasts
aka aria-live toasts
Toasts must announce to assistive tech via a live region.

Prompt like this

Use a toast library (or role=status aria‑live) so success/error messages are announced—not only painted visually.

z.object({ email })

Invalid email

Schema → field errors

Form schema wiring
aka Zod + RHF
Validate forms with a schema library wired to field errors—not ad-hoc if checks.

Prompt like this

Wire forms with a schema (Zod) + React Hook Form (or equivalent): one source of truth for types, validation, and field‑level errors.

Card
CardHeader · CardTitle
CardContent
Compound components
aka Compound pattern
API shape like Card/CardHeader/CardTitle that compose without prop soup.

Prompt like this

Prefer compound components (Dialog + DialogTrigger + DialogContent) over one mega‑component with 40 props—compose parts at the call site.

asChild link

Slot · keeps semantics

Polymorphic props discipline
aka as prop
Components that render as different elements must keep typing and a11y correct.

Prompt like this

If you add as/asChild polymorphism, preserve ref typing and don’t strip native button/link semantics—prefer Radix Slot/asChild over unsafe as= hacks.

Empty

Create first

Error

Retry fetch

Empty + error UI pairing
aka Empty and error states
Ship distinct empty and error presentations—never reuse one generic panel.

Prompt like this

Pair empty and error UIs: empty invites the next action; error explains failure + retry. Don’t show “Nothing here” for a failed fetch.