Skip to Content
ComponentsTypography

Typography Components

Components for rendering text and icons with consistent styling from the theme system.

import { Icon, Text } from '@/common/components';

Icon

A themed wrapper around @expo/vector-icons/Ionicons with 6 semantic color variants and named size presets. Used throughout the component library for consistent iconography.

Basic Usage

<Icon name="home-outline" /> <Icon name="settings-outline" variant="secondary" /> <Icon name="heart" variant="accent" />

Semantic Variants

Each variant maps to a theme icon color token, ensuring icons adapt to light and dark modes automatically.

<Icon name="person-outline" variant="primary" /> {/* Default -- main content color */} <Icon name="time-outline" variant="secondary" /> {/* Reduced emphasis */} <Icon name="help-outline" variant="tertiary" /> {/* Even less emphasis */} <Icon name="ellipsis-horizontal" variant="muted" /> {/* Subtle, decorative */} <Icon name="checkmark" variant="inverse" /> {/* For use on colored backgrounds */} <Icon name="star" variant="accent" /> {/* Teal accent color */}

Sizing

You can use either a numeric pixel size or a named size variant from the theme.

{/* Numeric size */} <Icon name="alert-circle" size={32} /> {/* Named size variants */} <Icon name="arrow-back" sizeVariant="xs" /> {/* Extra small */} <Icon name="arrow-back" sizeVariant="sm" /> {/* Small */} <Icon name="arrow-back" sizeVariant="md" /> {/* Medium */} <Icon name="arrow-back" sizeVariant="lg" /> {/* Large */} <Icon name="arrow-back" sizeVariant="xl" /> {/* Extra large */}

When both size and sizeVariant are provided, sizeVariant takes precedence since it is derived from theme metrics and scales consistently across devices.

Custom Color

Override the theme variant with a specific color value. Useful for one-off cases.

<Icon name="flame" color="#FF6B35" />

Destructive

Renders the icon in the error/destructive color — useful for delete or warning actions.

<Icon name="trash-outline" destructive />

Props

PropTypeDefaultDescription
nameIoniconsNamerequiredIonicons icon name (e.g., 'home-outline', 'settings')
variant'primary' | 'secondary' | 'tertiary' | 'muted' | 'inverse' | 'accent''primary'Semantic color variant
sizenumber24Icon size in pixels
sizeVariant'xs' | 'sm' | 'md' | 'lg' | 'xl'Named size from theme metrics (overrides size)
colorstringCustom color override (overrides variant)
destructivebooleanRender in error/destructive color
accessibilityLabelstringScreen reader label

Color precedence: destructive > color > variant. When destructive is true, it always uses the error color regardless of other color props.

Common Icon Names

Here are frequently used Ionicons in the template:

IconNameUsage
Navigationchevron-forward, chevron-back, arrow-backList items, headers
Actionsadd-outline, close-outline, create-outline, trash-outlineCRUD operations
Statuscheckmark-circle, alert-circle, information-circleFeedback
UIsearch-outline, ellipsis-vertical, settings-outlineControls
Socialheart-outline, share-outline, star-outlineEngagement

Browse all available icons at Ionicons .


Text

The Text component is the foundation of the typography system with 8 variants, 4 weights, and 7 semantic colors. It is documented in detail under Data Display.

Quick Reference

VariantTypical Use
h1Page titles
h2Section headers
h3Subsection headers
bodyDefault paragraph text
bodySmallSecondary content
captionTimestamps, metadata
labelForm labels, badges
overlineCategory tags, section labels

Type Scale Example

<Text variant="h1" weight="bold">Page Title</Text> <Text variant="h2">Section Header</Text> <Text variant="h3">Subsection</Text> <Text variant="body">Regular paragraph text for main content.</Text> <Text variant="bodySmall" color="secondary">Supporting text with less emphasis.</Text> <Text variant="caption" color="muted">Jan 15, 2026</Text> <Text variant="label" weight="semibold">FORM LABEL</Text> <Text variant="overline" color="tertiary">CATEGORY</Text>

Semantic Colors

ColorTokenUsage
primarytheme.colors.text.primaryDefault text, headings
secondarytheme.colors.text.secondarySubtitles, descriptions
tertiarytheme.colors.text.tertiaryHints, placeholders
mutedtheme.colors.text.mutedDisabled, decorative text
inversetheme.colors.text.inverseText on colored backgrounds
accenttheme.colors.brand.accentHighlighted, teal-colored text
linktheme.colors.text.linkTappable link text

See the full props table and additional examples on the Data Display page.

Last updated on