Welcome to Intora's design system.
The single source of truth for Intora's visual language β tokens, components, and patterns used across the app.
- 60+ color tokens
- 18 components
- 24 Lucide icons
- 5 breakpoints
- Poppins Β· single typeface
Colors
The Intora color palette is anchored in deep navy surfaces and a vivid mint-teal brand accent. All values are available as CSS custom properties.
Brand
Surfaces
Text
Icons
Feedback
Intolerance Levels
Typography
Intora uses Poppins across all surfaces. The type scale is consistent between desktop and mobile, with minor size reductions at smaller breakpoints.
Type Scale β Desktop
Font Weights
Spacing
All spacing follows an 8px base grid. Tokens from --space-1 (4px) to --space-24 (96px).
Radius
Five radius tokens from sharp corners to full-pill shapes.
4px--radius-xs8px--radius-sm12px--radius-md20px--radius-lg999px--radius-fullElevation
Five shadow levels creating spatial depth hierarchy. Each variant uses a neutral black shadow; parameters list offset-x, offset-y, blur, and spread (CSS box-shadow order).
--shadow-xs--shadow-sm--shadow-md--shadow-lg--shadow-xlIcons
Intora uses Lucide icons throughout. Standard size is 16Γ16 for UI; 20Γ20 for primary actions; 24Γ24 for emphasis.
Sizes
Color Roles
App Icon Set
Grid
Intora uses a responsive grid with consistent gutters. The content max-width for the Browse layout is ~960px centered.
Top Bar
The app's primary navigation bar sits on the navy surface with the Intora logo, nav links, and contextual actions.
Search Bar
Two variants: simple (no scan button) and with scan action. Four interaction states.
Buttons
Six variants Γ four sizes. All use the btn base class with modifier classes.
Input Fields
Text inputs with label, hint, error, and icon variants.
Chips & Pills
Category chips, intolerance toggle chips, and intolerance level pills.
Dropdowns & Filters
Filter dropdowns for category and intolerance level selection.
Tabs
Two tab styles: segmented (pill) and underline.
Onboarding
First-run steps for choosing app language and tracking intolerances. Language uses selectable cards with a checkmark; intolerances use the same typography rhythm with icons and toggles for multi-select.
Language item
Primary label (locale name) + secondary line (English name). Selected: mint-tinted surface, brand border, trailing check. Unselected: white surface, cool neutral border.
Choose how you want to use Intora. You can change this anytime in settings.
| Class | Purpose |
|---|---|
.onboarding-lang-list |
Vertical stack; gap --space-3 |
.onboarding-lang-card |
Card shell; add .onboarding-lang-card--selected for active |
.onboarding-lang-card__primary / __secondary |
Bold title + muted subtitle |
.onboarding-lang-card__check |
Hidden when unselected (layout preserved) |
Intolerance item
Horizontal row: icon in a sunken tile, title + short explainer, and the standard toggle-switch for on/off. Border uses a light mint stroke to group the list visually.
Select all that apply. You can change these anytime.
| Class | Purpose |
|---|---|
.onboarding-intol-list |
Vertical stack of rows |
.onboarding-intol-row |
Flex row; mint border #A5E3C8, radius --radius-lg |
.onboarding-intol-row__icon |
44Γ44 tile, --surface-sunken |
.onboarding-intol-row__title / __desc |
Name + one-line helper |
.toggle-switch |
Same component as Settings; --interactive-primary when on |
Shared screen chrome
Use .onboarding-header, .onboarding-title, and .onboarding-subtitle above either list. Optional .onboarding-demo-frame constrains width for mobile-first previews in this doc only.
Food List
The primary list view for Browse and My List. Each row shows an emoji, food name, level dots, and bookmark action.
Modals
Food detail modal with navy header, Nutri-Score, intolerance breakdown, and save action.
Data from Open Food Facts.
Banners
Contextual banners for feedback and system messages.
Nutri-Score
Five-letter nutritional quality indicator. Active letter is highlighted and scaled.
Anatomy & Tokens
| Property | Value |
|---|---|
| Track background | #E6EAF0 |
| Letter color (inactive) | #7C8797 |
| Letter color (active) | #FFFFFF |
| A β Excellent | --nutriscore-a Β· #1A8E3E |
| B β Good | --nutriscore-b Β· #83B83A |
| C β Average | --nutriscore-c Β· #F5C42A |
| D β Poor | --nutriscore-d Β· #E96B2A |
| E β Bad | --nutriscore-e Β· #D62D1B |
Tables
Used in the design system itself and for data-heavy views.
| Token | Value | Usage |
|---|---|---|
--surface-navy |
#1C2E47 |
Navigation bar background |
--interactive-primary |
#12B584 |
Primary buttons, toggles, counts |
--surface-brand |
#2DF8BB |
Logo accent, active nav underline |
--level-too-high |
#F44336 |
Too High intolerance level |
--radius-full |
999px | Chips, pills, badges |
Settings Rows
List rows used in the Profile / Settings tab.
Language Selector
Confirm Dialog
Barcode Scanner
Photo/barcode check modal with scanner viewport, tip, and manual entry fallback.
Supported Intolerances
Intora tracks the four most common food intolerances.