Card

Displays a card container with flexible layout sections for structured content.

Import

import { Card } from 'heroui-native';

Anatomy

<Card>
  <Card.Header>...</Card.Header>
  <Card.Body>
    <Card.Title>...</Card.Title>
    <Card.Description>...</Card.Description>
  </Card.Body>
  <Card.Footer>...</Card.Footer>
</Card>
  • Card: Main container that extends Surface component. Provides base card structure with configurable surface variants and handles overall layout.
  • Card.Header: Header section for top-aligned content like icons or badges.
  • Card.Body: Main content area with flex-1 that expands to fill all available space between Card.Header and Card.Footer.
  • Card.Title: Title text with foreground color and medium font weight.
  • Card.Description: Description text with muted color and smaller font size.
  • Card.Footer: Footer section for bottom-aligned actions like buttons.

Usage

Basic Usage

The Card component creates a container with built-in sections for organized content.

<Card>
  <Card.Body>...</Card.Body>
</Card>

With Title and Description

Combine title and description components for structured text content.

<Card>
  <Card.Body>
    <Card.Title>...</Card.Title>
    <Card.Description>...</Card.Description>
  </Card.Body>
</Card>

Add header and footer sections for icons, badges, or actions.

<Card>
  <Card.Header>...</Card.Header>
  <Card.Body>...</Card.Body>
  <Card.Footer>...</Card.Footer>
</Card>

Variants

Control the card's background appearance using different variants.

<Card variant="default">...</Card>
<Card variant="secondary">...</Card>
<Card variant="tertiary">...</Card>
<Card variant="quaternary">...</Card>
<Card variant="transparent">...</Card>

Horizontal Layout

Create horizontal cards by using flex-row styling.

<Card className="flex-row gap-4">
  <Image source={...} className="size-24 rounded-lg" />
</Card>

Background Image

Use an image as an absolute positioned background.

<Card>
  <Image source={...} className="absolute inset-0" />
  <View className="gap-4">...</View>
</Card>

Example

import { Button, Card } from 'heroui-native';
import { Ionicons } from '@expo/vector-icons';
import { View } from 'react-native';

export default function CardExample() {
  return (
    <Card>
      <View className="gap-4">
        <Card.Body className="mb-4">
          <View className="gap-1 mb-2">
            <Card.Title className="text-pink-500">$450</Card.Title>
            <Card.Title>Living room Sofa • Collection 2025</Card.Title>
          </View>
          <Card.Description>
            This sofa is perfect for modern tropical spaces, baroque inspired
            spaces.
          </Card.Description>
        </Card.Body>
        <Card.Footer className="gap-3">
          <Button variant="primary">Buy now</Button>
          <Button variant="ghost">
            <Button.Label>Add to cart</Button.Label>
            <Ionicons name="bag-outline" size={16} />
          </Button>
        </Card.Footer>
      </View>
    </Card>
  );
}

API Reference

Card

proptypedefaultdescription
childrenReact.ReactNode-Content to be rendered inside the card
variant'default' | 'secondary' | 'tertiary' | 'quaternary' | 'transparent''default'Visual variant of the card surface
classNamestring-Additional CSS classes to apply
animation"disable-all" | undefinedundefinedAnimation configuration. Use "disable-all" to disable all animations including children
...ViewPropsViewProps-All standard React Native View props are supported

Card.Header

proptypedefaultdescription
childrenReact.ReactNode-Children elements to be rendered inside the header
classNamestring-Additional CSS classes
...ViewPropsViewProps-All standard React Native View props are supported

Card.Body

proptypedefaultdescription
childrenReact.ReactNode-Children elements to be rendered inside the body
classNamestring-Additional CSS classes
...ViewPropsViewProps-All standard React Native View props are supported

Card.Footer

proptypedefaultdescription
childrenReact.ReactNode-Children elements to be rendered inside the footer
classNamestring-Additional CSS classes
...ViewPropsViewProps-All standard React Native View props are supported

Card.Title

proptypedefaultdescription
childrenReact.ReactNode-Children elements to be rendered as the title text
classNamestring-Additional CSS classes
...TextPropsTextProps-All standard React Native Text props are supported

Card.Description

proptypedefaultdescription
childrenReact.ReactNode-Children elements to be rendered as the description text
classNamestring-Additional CSS classes
...TextPropsTextProps-All standard React Native Text props are supported

On this page