uivocab GitHub

A field guide for people who build with AI agents

Speak fluent
interface.

133 design terms in plain English — each with a prompt you can hand straight to your agent. Because “make it pop” isn’t a spec.

Precision beats vibes

“Tighten the leading, mute the neutrals, soften the shadows” lands on the first try. “Make it cleaner” gets you five rounds of almost. Naming the thing is the skill.

Agents know these words

Models have read decades of design writing. Use the exact term and you summon all of it — the conventions, the ratios, the edge cases — without explaining a thing.

Taste is trainable

Once you can name what you’re looking at, you can’t unsee it. Vocabulary is how “something feels off” becomes “the vertical rhythm is broken” — and then a fix.

Layout & Structure

14 terms

How a screen is carved up before a single pixel gets styled.

Grid

An invisible system of columns and rows that everything on the page snaps to. Grids are why good layouts feel calm even when they're busy.

Say it

Lay the features out on a 12-column grid — cards span 4 columns each on desktop.

Gutter

The gap between grid columns. Wider gutters feel airy and editorial; tight gutters feel dense and data-heavy.

Say it

Widen the gutters to 32px — the columns are bleeding into each other.

Breakpoint

A viewport width where the layout changes — columns collapse, nav becomes a menu, type scales down. Design the content, then let breakpoints follow.

Say it

Add a breakpoint around 768px where the sidebar collapses into a top bar.

Viewport

The visible area of the browser window. Units like vw and vh size things relative to it — useful for heroes, dangerous for text.

Say it

Make the hero fill the viewport height, but cap it so it doesn't stretch on huge monitors.

Above the fold

What's visible before any scrolling, borrowed from newspaper layouts. Your value proposition and primary action belong here.

Say it

The signup CTA is below the fold on a laptop — pull it up into the hero.

Whitespace

Empty space used on purpose — also called negative space. It isn't wasted room; it's what gives elements breathing space and importance.

Say it

Don't add more content — add whitespace. Double the space around the pricing table.

Alignment

Elements sharing an invisible edge or axis. Even a few pixels of misalignment reads as sloppy long before anyone can say why.

Say it

Left-align the icon, heading, and body text in each card — they're all off by a few pixels.

Aspect ratio

The proportional relationship of width to height, like 16:9 or 1:1. Locking it stops images and video from stretching or jumping as they load.

Say it

Force the thumbnails to a 4:3 aspect ratio and crop with object-fit: cover.

Full-bleed

Content that runs edge-to-edge, ignoring the page's side margins. Great for hero images and section backgrounds that need drama.

Say it

Make the testimonial band full-bleed while keeping its text inside the content column.

Sticky

An element that scrolls with the page until it hits an edge, then pins there. Used for navs, table headers, and section labels.

Say it

Make the table header sticky so the column labels stay visible while scrolling rows.

Stacking order

Which elements sit on top of which — controlled by z-index. Dropdowns behind modals and tooltips under headers are stacking bugs.

Say it

The dropdown is rendering underneath the sticky header — fix the stacking order.

Masonry

A grid where items of varying heights pack tightly like brickwork, Pinterest-style. Good for image feeds, chaotic for scannable content.

Say it

Switch the gallery to a masonry layout so tall and short images pack together without gaps.

Density

How much information fits in a given area. Dashboards want compact density; marketing pages want comfortable. Pick one per surface, deliberately.

Say it

This table is for power users — increase the density: tighter row height, smaller padding.

Split layout

The screen divided into two persistent panes — often a list on the left, detail on the right. The backbone of mail clients and settings pages.

Say it

Use a split layout: conversation list at 320px on the left, the thread fills the rest.

Typography

14 terms

Ninety percent of interface design is text. Here's how to talk about it.

Typeface vs font

The typeface is the design (Inter); a font is one specific cut of it (Inter Semibold 16px). Saying either is fine — knowing the difference is the flex.

Say it

Keep the typeface, but swap the heading font to the semibold cut.

Serif

Letterforms with small strokes at the ends — bookish, editorial, trustworthy. Pairs beautifully with a clean sans for UI chrome.

Say it

Set the article body in a serif for warmth, but keep buttons and labels in the sans.

Sans-serif

Letterforms without the end strokes — clean, neutral, modern. The default voice of almost every interface you've ever used.

Say it

Use a geometric sans-serif for the whole app — something in the vein of Inter or Geist.

Monospace

Every character occupies the same width. The voice of code, terminals, and anything technical — instant developer credibility.

Say it

Render the API keys and code snippets in monospace with a subtle background tint.

Font weight

The thickness of strokes, from thin (100) to black (900). Weight contrast — bold heading, regular body — is the cheapest hierarchy you can buy.

Say it

Drop the headings from bold to semibold — 700 feels shouty at this size.

Line height

Vertical space each line of text occupies, classically called leading. Body text wants roughly 1.5; big headings tighten to 1.1 or so.

Say it

The paragraph feels cramped — bump line height to 1.6. Tighten the h1 to 1.1.

Letter spacing

Horizontal space between all letters, a.k.a. tracking. Big display text usually tightens; ALL-CAPS labels need extra to stay legible.

Say it

Add letter spacing to the uppercase section labels — about 0.08em — and tighten the hero headline slightly.

Kerning

Spacing between one specific pair of letters, like the awkward gap in 'AV'. Mostly the typeface's job, but worth naming when a logo looks off.

Say it

The 'To' pair in the logo wordmark has a gap — fix the kerning there specifically.

Measure

The length of a line of text. Around 45–75 characters is comfortable; full-width paragraphs on desktop are a readability crime.

Say it

Cap the article measure at 65 characters — max-width around 65ch on the prose container.

Type scale

A fixed ramp of font sizes (12, 14, 16, 20, 25, 31…) generated from a ratio. Picking from a scale beats inventing sizes ad hoc every time.

Say it

Define a type scale with a 1.25 ratio from a 16px base and use only those steps.

Baseline

The invisible line letters sit on. Aligning text to a shared baseline — not vertically centering boxes — is what makes mixed sizes look intentional.

Say it

The price and the '/month' label should share a baseline, not be center-aligned.

Tabular figures

Digits that all share the same width, so numbers align in columns and don't jitter when they update. Essential for tables, timers, and prices.

Say it

Use tabular figures in the stats column — font-variant-numeric: tabular-nums — so the digits stop dancing.

Truncation

Cutting text off with an ellipsis when it can't fit. Fine for titles in tight lists; hostile when it hides the only distinguishing words.

Say it

Truncate file names to one line with an ellipsis, and show the full name in a tooltip.

Widows & orphans

A lone word stranded on its own line (widow) or a lone line stranded at a break (orphan). One word dangling under a headline reads as unfinished.

Say it

The headline leaves the word 'faster' widowed on its own line — use text-wrap: balance.

Color

12 terms

Stop saying "make it pop." Start saying exactly what you mean.

Hue

The pure color identity — red, teal, violet — independent of how light or intense it is. 'Shift the hue' means move around the color wheel.

Say it

Keep the same saturation but shift the hue from blue toward teal.

Saturation

How intense or muted a color is. Fully saturated screams; desaturated whispers. Most 'this looks cheap' feedback is really 'too saturated.'

Say it

The background feels neon — desaturate it 30% so the CTA is the only vivid thing.

Lightness

How close a color sits to white or black. A palette usually keeps one hue and steps lightness: 50 for backgrounds down to 900 for text.

Say it

Generate a 10-step lightness ramp of the brand blue, from a near-white 50 to a near-black 950.

Tint & shade

A tint is a color mixed with white; a shade is mixed with black. 'A tint of the brand color' is the polite version of a pastel.

Say it

Use a light tint of the brand purple for the selected row, not full-strength purple.

Neutrals

The grays doing 90% of the work — text, borders, backgrounds. Slightly warm or cool neutrals give a product its temperature; pure #808080 gray feels dead.

Say it

Warm up the neutrals — shift the grays slightly toward beige instead of pure gray.

Accent color

The one vivid color reserved for what matters: primary actions, active states, links. If everything is accented, nothing is.

Say it

Coral is the accent — use it only for primary buttons and active states, nowhere else.

Semantic colors

Colors with assigned meaning: green success, red danger, amber warning, blue info. Never repurpose them — a green delete button breaks trust.

Say it

Add semantic tokens — success, warning, danger, info — and use them for toasts and form states.

Contrast ratio

The measured luminance difference between text and its background. WCAG asks for 4.5:1 on body text, 3:1 on large text. Not negotiable, and agents can check it.

Say it

Check every text/background pair against WCAG AA — flag anything under 4.5:1 and fix it.

Gradient

A smooth blend between colors. Neighboring hues blend cleanly; distant hues can smear through gray in the middle unless you route around it.

Say it

Give the hero a subtle gradient from violet to blue — nearby hues so it doesn't go muddy.

Opacity

How see-through something is, from 0 (invisible) to 1 (solid). Overlays, disabled states, and glass effects all live on translucency.

Say it

Dim the modal backdrop with black at 40% opacity instead of solid gray.

OKLCH

A modern color space where lightness actually matches human perception — equal lightness values genuinely look equally light. The right basis for generated palettes.

Say it

Rebuild the palette in OKLCH so every hue at step 500 has identical perceived lightness.

Color harmony

Schemes built from wheel relationships: analogous (neighbors, calm), complementary (opposites, tension), monochromatic (one hue, safe). Names for vibes.

Say it

Use an analogous scheme — blues through teals — instead of the current clashing complementary pair.

Spacing & Sizing

11 terms

The difference between polished and cluttered is usually measured in pixels of air.

Padding

Space inside an element, between its edge and its content. Cramped buttons and suffocating cards are padding problems.

Say it

The cards feel airless — increase padding to 24px on all sides.

Margin

Space outside an element, pushing neighbors away. Padding is personal space inside the jacket; margin is distance from the next person.

Say it

Add more margin below each section — they're visually merging into one another.

Gap

Uniform spacing between siblings in a flex or grid container. One gap value beats a margin on every child — cleaner and no leftover edge spacing.

Say it

Drop the per-item margins and use gap: 16px on the grid instead.

Inset

Shorthand for an element's distance from its container's edges, most often with absolute positioning. 'Inset by 16px' pins it 16px from every side.

Say it

Position the close button inset 12px from the card's top-right corner.

Spacing scale

A fixed menu of spacing values — 4, 8, 12, 16, 24, 32, 48, 64 — used everywhere. Arbitrary values like 13px and 27px are how inconsistency creeps in.

Say it

Snap all margins and padding to the 4px-based spacing scale — no arbitrary values.

8-point grid

A convention where sizes and spaces are multiples of 8 (with 4 for fine detail). It makes independent screens feel like one product.

Say it

Audit the settings page against the 8-point grid and round any stray values to it.

Vertical rhythm

Consistent, proportional spacing down the page — headings, paragraphs, and sections stepping in a predictable beat. When it's off, pages feel randomly assembled.

Say it

The vertical rhythm is off — make space above each h2 double the space below it, consistently.

Optical alignment

Nudging things until they look aligned rather than trusting the math. Play icons in circular buttons and quote marks in headings always need it.

Say it

The play icon looks off-center in the circle — optically align it by nudging it 1–2px right.

Touch target

The tappable area around a control — at least 44×44px, whatever the icon's visual size. Tiny close buttons with tiny hitboxes are rage-inducing.

Say it

The icon can stay 16px, but expand its touch target to 44px with padding.

Hug vs fill

Figma-born sizing vocabulary: an element either hugs its content's size or fills the space its parent offers. Perfect shorthand for describing intent.

Say it

Buttons should hug their label text; the search input should fill the remaining row width.

Fluid sizing

Values that scale smoothly with the viewport between a floor and a ceiling — usually via clamp(). Type that resizes gracefully instead of jumping at breakpoints.

Say it

Make the hero heading fluid — clamp between 36px on mobile and 72px on desktop.

Components

23 terms

Name the part and the agent builds the right thing on the first try.

Button hierarchy

Primary (solid, one per view), secondary (outlined or tinted), and tertiary/ghost (text only). The ranking tells users what you want them to do.

Say it

Make 'Save' the solid primary, 'Preview' a secondary outline, and 'Cancel' a ghost button.

Destructive action

An action that deletes or irreversibly changes something — styled in the danger color and never placed where muscle memory expects 'confirm.'

Say it

Style 'Delete workspace' as destructive — red, separated from the other actions, with a confirm step.

Badge

A tiny status label — a count on an icon, 'New' on a menu item, 'Beta' on a feature. Chips and pills are its interactive, often dismissible cousins.

Say it

Add a small 'Beta' badge next to the Insights nav item — subtle, not screaming.

Card

A contained surface grouping related content — image, title, meta, action — that reads as one unit. The workhorse of every dashboard and feed.

Say it

Show each project as a card: thumbnail on top, name, last-edited, and a kebab menu.

Modal

A dialog that blocks the page until dismissed. Reserve it for focused decisions; if the user might need the page behind it, use something non-blocking.

Say it

Open the export options in a modal with a clear primary action and an escape hatch.

Drawer

A panel that slides in from an edge — 'sheet' on mobile. Keeps page context visible, so it beats a modal for details, filters, and settings.

Say it

Show task details in a right-side drawer instead of navigating away from the board.

Popover

A small floating panel anchored to the element that opened it, dismissed by clicking elsewhere. Richer than a tooltip, lighter than a modal.

Say it

Put the date-range picker in a popover anchored to the filter button.

Tooltip

A short text hint on hover or focus. For labels and clarifications only — never for content someone can't get on a touchscreen.

Say it

Add tooltips to the icon-only toolbar buttons, delayed about 500ms so they don't flicker.

Toast

A brief, self-dismissing notification sliding in from a screen edge — also called a snackbar. Confirmation, not conversation; add an undo when possible.

Say it

On archive, fire a toast: 'Conversation archived' with an Undo action, auto-dismiss in 5s.

Select

A dropdown for choosing one option from a closed list. Under ~5 options, radio buttons or a segmented control show everything at once and beat it.

Say it

Replace the select with a segmented control — there are only three options.

Combobox

A text input fused with a filtered dropdown — type to narrow, then pick. The right call whenever the list is long: countries, users, tags.

Say it

The assignee list has 200 people — make it a combobox with type-ahead filtering.

Command palette

A keyboard-summoned search over every action in the app (⌘K). The power-user layer that makes a product feel fast and serious.

Say it

Add a ⌘K command palette with fuzzy search over navigation and common actions.

Accordion

Stacked headers that expand one section at a time. Great for FAQs and dense settings; wrong for content everyone needs to read.

Say it

Collapse the FAQ into an accordion, first question expanded by default.

Tabs

Peer views sharing one region, one visible at a time. Tabs switch content in place — if the URL should change, you want navigation, not tabs.

Say it

Split the profile page into tabs: Overview, Activity, Settings — Overview active by default.

Segmented control

A connected row of mutually exclusive buttons — an inline radio group that shows every option. Perfect for view toggles like list/grid or month/week.

Say it

Use a segmented control for the chart range: 1D · 1W · 1M · 1Y.

Breadcrumb

The 'you are here' trail — Home / Projects / Rebrand — with each ancestor clickable. Essential in anything hierarchical, noise in flat apps.

Say it

Add breadcrumbs above the file view showing the folder path, each segment clickable.

Pagination

Splitting long lists into numbered pages. Its rivals: 'load more' buttons and infinite scroll. Data tables want pagination; feeds want scroll.

Say it

Paginate the results table at 25 rows per page, with the row-count summary on the left.

Skeleton

Gray placeholder shapes mimicking the layout while content loads, usually with a shimmer. Feels faster than a spinner because the page's structure arrives instantly.

Say it

Replace the loading spinner with skeleton rows matching the table's real column layout.

Avatar

A user's visual identity — photo, initials on a colored background, or fallback icon, in that order. Stacked overlapping avatars imply a team.

Say it

Show assignee avatars, falling back to initials on a color derived from the user's name.

Banner

A full-width persistent message at the top of a page or section — 'Your trial ends in 3 days.' A callout is its inline cousin embedded in content.

Say it

Add a dismissible warning banner above the editor when the user is offline.

Toggle

A switch for on/off settings that take effect immediately. If the choice needs a Save button, use a checkbox — a toggle promises instant effect.

Say it

Make 'Email notifications' a toggle that saves instantly, with a toast confirming the change.

Hero

The big opening section of a landing page: headline, supporting line, primary CTA, and usually a visual. It has one job — make the value obvious in five seconds.

Say it

Build a hero with a punchy headline, one-sentence subhead, single CTA, and a product screenshot.

FAB

Floating action button — a round button hovering above the content for the single most important action. One per screen, or it stops meaning anything.

Say it

On mobile, replace the toolbar's New button with a FAB in the bottom-right.

States & Feedback

12 terms

An interface is never one picture — it's every state it can be in.

Hover

How an element responds to a pointer resting on it — a lift, a tint, a cursor change. It whispers 'I'm interactive.' Touchscreens never see it, so it can't carry meaning alone.

Say it

On hover, lift each card 2px with a soft shadow and ease it over 150ms.

Focus ring

The visible outline on the element that keyboard focus is on. Removing it because it 'looks ugly' strands keyboard users — restyle it instead, ideally with :focus-visible.

Say it

Style the focus ring as a 2px brand-colored outline with 2px offset — visible on every interactive element.

Active state

The pressed moment — the instant a control is being clicked or tapped. A slight darken or scale-down makes the interface feel physical rather than filmed.

Say it

Add an active state to buttons: scale to 0.98 and darken slightly while pressed.

Disabled state

A control that's visible but inert — dimmed, unclickable, and honest about it. If users won't understand why it's disabled, hide it or explain it in a tooltip.

Say it

Disable Submit until the form validates, with a tooltip explaining what's missing.

Empty state

What a screen shows with no data yet — first run, empty search, cleared inbox. The lazy version is a blank void; the good version explains and offers the first action.

Say it

Design the empty state for Projects: short encouraging line, small illustration, 'Create your first project' button.

Error state

How the UI behaves when things fail — inline field errors, dead-end pages, failed loads. Say what happened, keep the user's data, and offer a way forward.

Say it

On failed save, keep the form filled, show an inline error above the actions, and offer Retry.

Loading state

Everything between action and result: spinners, skeletons, progress bars, disabled-with-spinner buttons. Under ~300ms, show nothing — a flash of spinner reads slower than silence.

Say it

Show the button's loading spinner only if the request exceeds 300ms, and keep the label visible.

Inline validation

Checking form fields as the user works instead of ambushing them at submit. Validate on blur, re-validate on change — never scream mid-keystroke.

Say it

Validate email on blur, show the error under the field, and clear it as soon as it's fixed.

Optimistic UI

Showing the result immediately and syncing in the background — the like turns red before the server agrees. Instant feel, with a rollback if the request fails.

Say it

Make favoriting optimistic: update the star instantly, revert with a toast if the request fails.

Affordance

The visual cues telling you what something does — buttons look pressable, handles look draggable, links look clickable. 'Weak affordance' = 'nobody knows it's a button.'

Say it

The cards are clickable but don't look it — add affordance: hover lift, cursor pointer, a chevron.

Microinteraction

A tiny contained moment of feedback — the heart pop, the checkmark drawing itself, the toggle's satisfying slide. Small enough to miss, big enough to make software feel alive.

Say it

Add a microinteraction to the checkbox: the check draws in over ~200ms with a slight bounce.

Debounce

Waiting for a pause in input before reacting — search that fires 300ms after the last keystroke instead of on every one. Its sibling throttle limits to a steady maximum rate.

Say it

Debounce the search input by 300ms so we're not firing a request per keystroke.

Motion

11 terms

Animation is seasoning: measured in milliseconds, ruined by excess.

Duration

How long an animation runs. UI motion lives between 100–400ms — hovers near 150ms, panels near 300ms. Anything approaching a second better be a showpiece.

Say it

The drawer feels sluggish — cut the open animation from 500ms to 250ms.

Easing

The acceleration curve of motion. Linear reads robotic; real objects speed up and slow down. Easing is the single biggest 'this feels cheap vs. premium' lever.

Say it

Nothing should animate linearly — apply an ease-out curve like cubic-bezier(0.16, 1, 0.3, 1) across the board.

Ease-out vs ease-in

Ease-out starts fast and settles — right for things entering, since the UI responds instantly. Ease-in starts slow and accelerates — occasionally right for exits, mostly just laggy-feeling.

Say it

Menus should ease-out on open so they feel snappy, and can ease-in slightly on close.

Spring

Physics-based motion defined by stiffness and damping instead of duration. A touch of springiness feels alive; too little damping turns your UI into a bobblehead.

Say it

Animate the modal in with a spring — noticeably bouncy is too much, just a hint of overshoot.

Transition

Animating a property between two states — background on hover, height on expand. The declarative workhorse: define what animates, how long, and with which curve.

Say it

Add a 200ms ease-out transition on background and border-color for all interactive elements.

Keyframes

Named waypoints an animation passes through, for motion more choreographed than A-to-B — pulses, shakes, orbits. The head-shake 'no' on a wrong password is keyframes.

Say it

On failed login, shake the form with keyframes — three quick 4px oscillations, then settle.

Stagger

Starting siblings' animations a few dozen milliseconds apart so a list cascades in instead of thudding in as a block. Cheap choreography, expensive feel.

Say it

Stagger the cards' entrance by 50ms each so the grid cascades in from the top.

Enter & exit

The paired animations for things appearing and disappearing. Exits should be faster than entrances — users are done with it; get it out of the way.

Say it

Toast enters over 250ms with ease-out, exits in 150ms. Never let it just pop out of existence.

Parallax

Layers scrolling at different speeds to fake depth. A few percent of drift adds dimension; aggressive parallax is a 2013 time capsule and a motion-sickness trigger.

Say it

Give the hero illustration a subtle parallax — background drifts at 20% of scroll speed, no more.

Shimmer

The light sweep across skeleton placeholders that says 'still loading, not frozen.' One slow, subtle pass — a strobing shimmer is worse than none.

Say it

Add a shimmer to the skeletons: a soft highlight sweeping left to right every 1.5s.

Reduced motion

An OS-level accessibility setting requesting minimal animation. Respect it via prefers-reduced-motion: swap movement for opacity fades. Non-optional in polished work.

Say it

Wrap all motion in a prefers-reduced-motion check — fall back to simple fades.

Visual Style

12 terms

The aesthetic layer — and the names of the looks you're borrowing from.

Border radius

How rounded corners are. Sharp reads serious and editorial; mid (8–16px) reads friendly SaaS; full-round pills read playful. Pick a radius scale and stay loyal to it.

Say it

Standardize radii: 8px inputs, 12px cards, fully rounded pill buttons — nothing in between.

Elevation

Simulated height above the page, expressed with shadows: cards low, dropdowns middle, modals top. A consistent elevation ramp keeps depth believable.

Say it

Define three elevation levels — card, dropdown, modal — and stop hand-rolling shadows per component.

Drop shadow

The shadow itself. Good ones are soft, layered, and barely-there — often two stacked shadows. Harsh dark offsets are the fastest way to look dated (unless you're doing neubrutalism on purpose).

Say it

Soften the card shadow — layer two: 0 1px 2px at 6% black and 0 8px 24px at 8%.

Stroke

Designer-speak for a border or outline. Hairline strokes separate without weight; 'stroke instead of shadow' is a common flat-design trade.

Say it

Drop the card shadows and use a 1px hairline stroke in the border neutral instead.

Glassmorphism

Frosted-glass surfaces: translucent fill, backdrop blur, a light edge stroke. Gorgeous over colorful backgrounds, invisible over white, and a contrast hazard over busy ones.

Say it

Make the sticky nav glassmorphic — semi-transparent white with backdrop-filter: blur(12px).

Neubrutalism

Loud, raw, and proud: thick black strokes, hard offset shadows, unapologetic saturated fills, visible structure. A deliberate rejection of soft-and-safe SaaS polish.

Say it

Style the CTA neubrutalist: 3px black border, hard 4px offset shadow, flat yellow fill.

Skeuomorphism

Digital things imitating physical ones — leather calendars, realistic knobs. Mostly historical, but its ghost lives on in every 'pressed' button and raised card.

Say it

Give the audio controls a lightly skeuomorphic feel — subtle knob shading, not full 2010 leather.

Flat design

The reaction to skeuomorphism: no gradients, no shadows, pure color and typography. Clean but affordance-poor — 'flat 2.0' quietly re-added soft shadows so buttons look pressable again.

Say it

Keep the illustration style flat, but allow soft shadows on interactive elements for affordance.

Grain

Subtle noise texture over flat colors and gradients. Kills the sterile 'default CSS' smoothness, adds a tactile, printed feel — and hides gradient banding for free.

Say it

Overlay a fine grain at ~3% opacity on the hero gradient to keep it from feeling plasticky.

Bento grid

A dashboard-style mosaic of rounded tiles in mixed sizes, like a bento box — the dominant 2020s pattern for feature sections and portfolio highlights.

Say it

Lay out the features as a bento grid: one 2×2 hero tile, the rest filling 1×1 around it.

Icon style

Icons come in families — outline, filled, duotone — with a shared stroke width and grid. Mixing families is the visual equivalent of mixing fonts mid-sentence.

Say it

Use one icon family throughout — outline style, 1.5px stroke, 24px grid. Replace the strays.

Visual weight

How strongly an element pulls the eye — a product of size, color, contrast, and density. Balancing weight across a layout is what 'it feels lopsided' is actually about.

Say it

The left column feels heavier — the dark image outweighs the text. Rebalance or crop it lighter.

Principles & Laws

12 terms

The psychology underneath — why some interfaces just work.

Visual hierarchy

The order the eye visits things, engineered with size, weight, color, and position. If everything is emphasized, the hierarchy is flat and nothing is.

Say it

Establish hierarchy: headline dominant, price second, metadata clearly third. Right now they all shout equally.

Proximity

Gestalt principle: things placed close together are perceived as related. Group with space before you reach for borders and boxes.

Say it

Use proximity instead of dividers — tighten spacing within each field group, widen it between groups.

Similarity

Gestalt principle: things that look alike are perceived as belonging together. It's also why all links must look the same — one styled differently reads as a different kind of thing.

Say it

All secondary actions should share one style — right now three different treatments imply three different meanings.

Consistency

Same pattern, same look, same behavior, everywhere. Every inconsistency is a tiny tax on the user's attention — and the main thing design review exists to catch.

Say it

Audit the app for consistency: one date format, one save pattern, one confirmation style throughout.

Progressive disclosure

Show the essentials, put the rest behind 'Advanced.' Complexity should be available, not ambient.

Say it

Show only name and visibility by default — move the other eight fields behind an 'Advanced settings' disclosure.

Fitts's law

Bigger and closer targets are faster to hit. It's why primary buttons are large, why context menus appear at the cursor, and why screen corners and edges are prime real estate.

Say it

Per Fitts's law, make the primary CTA bigger and move it adjacent to the input, not across the layout.

Hick's law

More choices, slower decisions. Every option you add taxes every user who didn't need it. The justification behind short menus, defaults, and progressive disclosure.

Say it

Twelve plans is a Hick's law violation — show three tiers and link to a full comparison.

Jakob's law

Users spend most of their time on other sites, so they expect yours to work the same way. Logo top-left goes home, cart top-right. Spend novelty on your product, not your navigation.

Say it

Keep the checkout flow conventional per Jakob's law — this is not the place to innovate.

Cognitive load

The mental effort a screen demands — parsing, remembering, deciding. Every element, option, and inconsistency adds load. Simplicity is measured here, not in element count.

Say it

Reduce cognitive load on this form: group related fields, add sensible defaults, cut the two optional questions.

Scanning patterns

Eyes sweep text-heavy pages in an F (down the left edge) and simpler layouts in a Z. Put what matters along the path — the top-left is gold, the mid-right is Siberia.

Say it

Restructure for F-pattern scanning: front-load keywords into headings and lead sentences down the left edge.

Call to action

The action you most want taken — 'Start free trial,' not 'Submit.' One primary CTA per view, phrased as the value, visually unmissable.

Say it

There are three competing CTAs above the fold — keep 'Start building,' demote the rest to links.

Accessibility

Designing so people with different vision, motor ability, and cognition can actually use the thing — contrast, keyboard support, screen-reader semantics, motion respect. Abbreviated a11y. Not a feature; a floor.

Say it

Run an accessibility pass: contrast to WCAG AA, full keyboard operability, alt text, visible focus states.

Systems & Process

12 terms

The vocabulary of how design work is actually organized and shipped.

Design system

The complete kit a product is built from: components, tokens, patterns, and the rules for using them. Material and Apple's HIG are famous ones; serious products grow their own.

Say it

Follow the existing design system — reuse its components and tokens; don't invent new variants.

Design tokens

Design decisions stored as named variables — color-accent, space-4, radius-card — instead of hardcoded values. Change the token, change the product. The API between design and code.

Say it

Extract the hardcoded colors and spacing into design tokens as CSS custom properties, then reference only tokens.

Component library

The implemented, reusable building blocks — the code half of a design system. Radix, shadcn/ui, and Material UI are the ones your agent already knows by heart.

Say it

Build the form from our component library — no one-off inputs or buttons.

Style guide

The documented rules of a brand's look and voice: logo usage, palette, type, tone. Narrower than a design system — rules on paper rather than parts in code.

Say it

Write a one-page style guide: palette with hex values, type scale, radius and shadow rules, voice notes.

Wireframe

A deliberately unstyled sketch of structure — boxes and labels, no colors, no fonts. Low fidelity is the point: nobody debates button shades while the layout is still in question.

Say it

Before styling anything, wireframe the dashboard — grayscale boxes showing placement and hierarchy only.

Mockup

A static, high-fidelity picture of the final design — real colors, type, and content, but nothing clickable. The step between wireframe and prototype.

Say it

Turn the approved wireframe into a full mockup with the brand palette and real copy.

Prototype

A clickable simulation of the flow, wired together before the real build. With agents, working HTML prototypes are often cheaper than fake ones — prototype in code.

Say it

Make a clickable prototype of onboarding — three linked screens, fake data is fine.

Information architecture

How content is named, grouped, and nested — the sitemap and the navigation's logical skeleton. When users say 'I can't find anything,' this is what's broken.

Say it

Rework the IA: flatten settings from four levels to two and group by user goal, not by internal team.

User flow

The step-by-step path through a task — every screen, decision, and dead end from entry to done. Map it before building it; every extra step sheds users.

Say it

Map the checkout flow end to end, count the steps, and cut it from six to four.

Atomic design

Brad Frost's hierarchy for composing interfaces: atoms (button) → molecules (search bar) → organisms (header) → templates → pages. A shared language for component granularity.

Say it

Structure the components atomically — build the button and input atoms first, then compose the search molecule.

Semantic HTML

Using elements for their meaning — nav, main, button, h1 — not divs styled to fake it. Free accessibility, free SEO, and the difference between markup and div soup.

Say it

Replace the div soup with semantic HTML — real buttons, nav/main/footer landmarks, one h1, ordered heading levels.

ARIA

Attributes that tell assistive tech what custom widgets are and are doing — roles, labels, live regions. Rule one: prefer native elements; no ARIA beats bad ARIA.

Say it

Make the custom dropdown screen-reader friendly: proper ARIA roles, aria-expanded, and keyboard navigation.