Skip to main content

Layout

Layout provides a safe area wrapper with the theme background color applied automatically.

Usage

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

export default function App() {
return (
<SafeAreaProvider>
<ThemeProvider>
<Layout>
<Typography variant="headlineSmall">Inside safe area</Typography>
<Typography variant="bodyMedium">Theme background applied automatically.</Typography>
</Layout>
</ThemeProvider>
</SafeAreaProvider>
)
}

Immersive Mode

For full-screen layouts that extend behind the status bar:

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

export default function App() {
return (
<SafeAreaProvider>
<ThemeProvider>
<Layout immersive>
<Typography variant="headlineSmall">Immersive content</Typography>
<Typography variant="bodyMedium">No safe area insets applied.</Typography>
</Layout>
</ThemeProvider>
</SafeAreaProvider>
)
}

Custom Edges

Control which safe area edges are applied:

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

export default function App() {
return (
<SafeAreaProvider>
<ThemeProvider>
<Layout edges={['top', 'bottom']}>
<Typography variant="headlineSmall">Top + Bottom insets</Typography>
</Layout>
</ThemeProvider>
</SafeAreaProvider>
)
}

By default, only the bottom edge is applied. In immersive mode, no edges are applied.

Props

PropTypeDefaultRequiredDescription
immersivebooleanfalseNoWhen `true`, removes all safe area insets for full-screen layout.
edgesEdge[]-NoExplicit set of safe-area edges to apply. Overrides `immersive` when provided.
styleStyleProp<ViewStyle>-NoAdditional styles applied to the SafeAreaView container.