Skip to main content

Typography

Typography renders text using the Material Design 3 type scale.

Usage

import { Typography } from '@onlynative/components'
import { ThemeProvider } from '@onlynative/core'
import { SafeAreaProvider } from 'react-native-safe-area-context'
import { View } from 'react-native'

export default function App() {
return (
<SafeAreaProvider>
<ThemeProvider>
<View style={{ flex: 1, justifyContent: 'center', padding: 16, gap: 8 }}>
<Typography variant="headlineMedium">Hello World</Typography>
<Typography variant="bodyLarge">Body text content.</Typography>
</View>
</ThemeProvider>
</SafeAreaProvider>
)
}

Variants

The full MD3 type scale:

CategoryVariants
DisplaydisplayLarge, displayMedium, displaySmall
HeadlineheadlineLarge, headlineMedium, headlineSmall
TitletitleLarge, titleMedium, titleSmall
BodybodyLarge, bodyMedium, bodySmall
LabellabelLarge, labelMedium, labelSmall

Accessibility

Display and headline variants automatically receive accessibilityRole="header" for screen readers.

Custom Styles

import { Typography } from '@onlynative/components'
import { ThemeProvider } from '@onlynative/core'
import { SafeAreaProvider } from 'react-native-safe-area-context'
import { View } from 'react-native'

export default function App() {
return (
<SafeAreaProvider>
<ThemeProvider>
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Typography variant="bodyMedium" style={{ color: 'red' }}>
Custom colored text
</Typography>
</View>
</ThemeProvider>
</SafeAreaProvider>
)
}

Custom Text Component

Use the as prop to render with a custom text component:

import { Typography } from '@onlynative/components'
import { ThemeProvider } from '@onlynative/core'
import { SafeAreaProvider } from 'react-native-safe-area-context'
import { Animated, View } from 'react-native'

export default function App() {
return (
<SafeAreaProvider>
<ThemeProvider>
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Typography variant="titleLarge" as={Animated.Text}>
Animated text
</Typography>
</View>
</ThemeProvider>
</SafeAreaProvider>
)
}

Props

PropTypeDefaultRequiredDescription
childrenReactNode-YesContent to display. Accepts strings, numbers, or nested elements.
variantenumbodyMediumNoMD3 type scale role. Controls font size, weight, line height, and letter spacing.
colorstring-NoOverride the text color. Takes priority over `style.color`. Defaults to the theme's `onSurface` color.
styleStyleProp<TextStyle>-NoAdditional text styles. Can override the default theme color via `style.color` when no `color` prop is set.
asComponentType<TextProps>TextNoOverride the underlying text component (e.g. Animated.Text).