05 UI Components

Component Library

Reusable UI elements follow the brand palette, 12px control radius, compact spacing, and clear state changes.

Navigation

App Bar

‹Meal Plan⋯

Centered title with compact edge actions.

Actions

Buttons

Primary, secondary, outlined, text, loading, disabled, full-width, rounded, and icon states.

Forms

Text Fields

Add the number of servings before saving.

Standard, private, focused, disabled, icon, and error states.

Forms

Selects

CategoryVegetables⌄
FruitVegetablesGrains

Dropdown fields use the same radius, border, label, and focus language as text inputs.

Surfaces

Cards

LightRecipe content
DarkPriority content
AccentHelpful tip
OutlinedGrouped item

Light, dark, accent, outlined, gradient, tappable, and custom-radius variants.

Filters

Chips

DinnerQuickVegetarianHigh protein ×

Selected, unselected, removable, and tappable states.

Controls

Icon Buttons

Primary, secondary, outlined, ghost, loading, and disabled states.

Feedback

Modal

Dialogs and bottom sheets use clear titles, short body copy, and paired actions.

Feedback

Toast

✓Recipe saved
!Could not save recipe

Snackbars confirm success or error without blocking the current screen.

System

State Pattern

DefaultReady for interaction
Hover / focusVisible border or lift
LoadingSpinner replaces label
ErrorRed border plus helper text

States stay visible through colour, shape, text, and spacing.

Variant Examples

Every standard state

Each component below shows its main variants and states as visual examples.

Buttons

Inputs

Cards

LightDefault surface
DarkHigh contrast
AccentWarm highlight
OutlinedGrouped content
GradientBrand surface

Chips

DefaultSelectedRemovable ×Focus

Icon Buttons

Navigation, Selects, and Feedback

FilterQuick meals⌄
✓Shopping list updated

Component Tokens

Variants, sizes, and states

These values define the visible component variants, dimensions, and interaction states.

ComponentVariantsSizes / RadiusStates
Buttonprimary, secondary, outlined, text36, 48, 56px high. Radius 12px or 100px rounded.default, loading, disabled, full-width, left icon, right icon
Text fieldstandard, private12px radius. Padding 16px horizontal, 14px vertical.default, focus, error, disabled, private visibility toggle
Selectdropdown field12px radius. Matches text field padding and border.default, focus, selected, disabled
Cardlight, dark, accent, outlined, gradient16px default radius. 16px default padding.default, tappable, custom width, custom height, custom radius
Chipselected, unselected8px radius. Padding 14px by 10px.default, selected, removable, tappable
Icon buttonprimary, secondary, outlined, ghost48px default size. Icon uses 45% of button size.default, loading, disabled, custom colour
Bottom navigationfixed tab navigation10px horizontal padding, 8px vertical padding, 14px selected pill radius.selected, unselected, route change
Modaldialog, bottom sheetRounded surface with 16px plus internal spacing.open, confirm, cancel, dismissed
Toastsuccess, errorFloating snackbar surface with compact icon and label.shown, dismissed

Planner

Roasted tomato pasta

35 min · pantry friendly

Component preview: this mobile-style card shows how recipe cards and bottom navigation sit together in the product UI.