Documentation Index
Fetch the complete documentation index at: https://copylabs.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
AspectRatio
AspectRatio is a utility component for maintaining consistent width-to-height ratios for content.
Import
import { AspectRatio } from 'radix-native-ui';
Usage
import { AspectRatio, Image } from 'radix-native-ui';
<AspectRatio ratio={16 / 9}>
<Image
source={{ uri: 'https://example.com/image.jpg' }}
style={{ width: '100%', height: '100%' }}
/>
</AspectRatio>
Props
Examples
Common Aspect Ratios
<Flex direction="column" gap={3}>
{/* 16:9 - Video */}
<AspectRatio ratio={16 / 9}>
<Image source={{ uri: 'https://example.com/video-thumb.jpg' }} />
</AspectRatio>
{/* 4:3 - Standard photo */}
<AspectRatio ratio={4 / 3}>
<Image source={{ uri: 'https://example.com/photo.jpg' }} />
</AspectRatio>
{/* 1:1 - Square */}
<AspectRatio ratio={1}>
<Image source={{ uri: 'https://example.com/square.jpg' }} />
</AspectRatio>
</Flex>
Square Avatar
<AspectRatio ratio={1}>
<Avatar
src="https://i.pravatar.cc/300"
fallback="JD"
style={{ width: '100%', height: '100%' }}
/>
</AspectRatio>
Video Thumbnail
<Card>
<AspectRatio ratio={16 / 9}>
<Image
source={{ uri: 'https://example.com/thumbnail.jpg' }}
style={{ width: '100%', height: '100%' }}
/>
<Flex
style={{ position: 'absolute', inset: 0 }}
justify="center"
align="center"
>
<IconButton size={3}>
<Icon name="play" />
</IconButton>
</Flex>
</AspectRatio>
</Card>
Image Gallery
<Flex direction="row" gap={2}>
<AspectRatio ratio={1} flex={1}>
<Image source={{ uri: 'https://example.com/img1.jpg' }} />
</AspectRatio>
<AspectRatio ratio={1} flex={1}>
<Image source={{ uri: 'https://example.com/img2.jpg' }} />
</AspectRatio>
<AspectRatio ratio={1} flex={1}>
<Image source={{ uri: 'https://example.com/img3.jpg' }} />
</AspectRatio>
</Flex>
Product Card
<Card>
<AspectRatio ratio={4 / 3}>
<Image
source={{ uri: 'https://example.com/product.jpg' }}
style={{ width: '100%', height: '100%' }}
/>
</AspectRatio>
<Flex direction="column" gap={2} padding={3}>
<Text weight="medium">Product Name</Text>
<Text color="gray" size={2}>Product description</Text>
<Text weight="bold">$29.99</Text>
</Flex>
</Card>
Profile Cover
<Flex direction="column">
<AspectRatio ratio={3}>
<Image
source={{ uri: 'https://example.com/cover.jpg' }}
width="100%"
height="100%"
/>
</AspectRatio>
<Flex padding={3}>
<Avatar
src="https://i.pravatar.cc/150"
fallback="JD"
size={6}
marginTop={-7}
/>
</Flex>
</Flex>
Responsive Grid
<Grid columns={2} gap={2}>
<AspectRatio ratio={1} flex={1} minWidth="45%">
<Card>
<Flex justify="center" align="center" height="100%">
<Icon name="image" size={3} />
</Flex>
</Card>
</AspectRatio>
<AspectRatio ratio={1} flex={1} minWidth="45%">
<Card>
<Flex justify="center" align="center" height="100%">
<Icon name="video" size={3} />
</Flex>
</Card>
</AspectRatio>
<AspectRatio ratio={1} flex={1} minWidth="45%">
<Card>
<Flex justify="center" align="center" height="100%">
<Icon name="music" size={3} />
</Flex>
</Card>
</AspectRatio>
<AspectRatio ratio={1} flex={1} minWidth="45%">
<Card>
<Flex justify="center" align="center" height="100%">
<Icon name="file" size={3} />
</Flex>
</Card>
</AspectRatio>
</Grid>