App Bar
Centered title with compact edge actions.
05 UI Components
Reusable UI elements follow the brand palette, 12px control radius, compact spacing, and clear state changes.
Centered title with compact edge actions.
Primary, secondary, outlined, text, loading, disabled, full-width, rounded, and icon states.
Add the number of servings before saving.
Standard, private, focused, disabled, icon, and error states.
Dropdown fields use the same radius, border, label, and focus language as text inputs.
Five fixed tabs with selected and unselected states.
Light, dark, accent, outlined, gradient, tappable, and custom-radius variants.
Selected, unselected, removable, and tappable states.
Primary, secondary, outlined, ghost, loading, and disabled states.
Confirm changes before updating your pantry.
Dialogs and bottom sheets use clear titles, short body copy, and paired actions.
Snackbars confirm success or error without blocking the current screen.
States stay visible through colour, shape, text, and spacing.
Variant Examples
Each component below shows its main variants and states as visual examples.
This action needs confirmation.
Component Tokens
These values define the visible component variants, dimensions, and interaction states.
| Component | Variants | Sizes / Radius | States |
|---|---|---|---|
| Button | primary, secondary, outlined, text | 36, 48, 56px high. Radius 12px or 100px rounded. | default, loading, disabled, full-width, left icon, right icon |
| Text field | standard, private | 12px radius. Padding 16px horizontal, 14px vertical. | default, focus, error, disabled, private visibility toggle |
| Select | dropdown field | 12px radius. Matches text field padding and border. | default, focus, selected, disabled |
| Card | light, dark, accent, outlined, gradient | 16px default radius. 16px default padding. | default, tappable, custom width, custom height, custom radius |
| Chip | selected, unselected | 8px radius. Padding 14px by 10px. | default, selected, removable, tappable |
| Icon button | primary, secondary, outlined, ghost | 48px default size. Icon uses 45% of button size. | default, loading, disabled, custom colour |
| Bottom navigation | fixed tab navigation | 10px horizontal padding, 8px vertical padding, 14px selected pill radius. | selected, unselected, route change |
| Modal | dialog, bottom sheet | Rounded surface with 16px plus internal spacing. | open, confirm, cancel, dismissed |
| Toast | success, error | Floating snackbar surface with compact icon and label. | shown, dismissed |