Moul UIBeta
Components

Card

A container component to group related content, actions, and information.

Card

The Card component is a flexible container built with React Aria and styled using StyleX. It supports multiple design variants, sizing presets, and section borders.

Import

import { Card, CardHeader, CardBody, CardFooter } from '@moul-dev/ui';

Preview

Interactive
Card Title
This is the card body description content.

Properties

Variant
Size
Elevation
Live Code Snippet
import { Card, CardHeader, CardBody, CardFooter, Button } from '@moul-dev/ui';

export default function Example() {
  return (
    <Card className="w-80">
      <CardHeader>Card Title</CardHeader>
      <CardBody>
        This is the card body description content.
      </CardBody>
      <CardFooter className="flex justify-end gap-2">
        <Button variant="secondary">Cancel</Button>
        <Button variant="primary">Confirm</Button>
      </CardFooter>
    </Card>
  );
}

Variants

Cards support three distinct aesthetic styles to match your design requirements:

Default (Elevated)

Standard surface card featuring clean elevated shadows.

Elevated Card
Standard elevated container with shadow.
<Card variant="default" elevation={1}>
  <CardHeader>Elevated Card</CardHeader>
  <CardBody>Standard elevated container with shadow.</CardBody>
</Card>

Flat

Clean card with no shadow and a subtle background fill.

Flat Card
Flat container with subtle solid background.
<Card variant="flat">
  <CardHeader>Flat Card</CardHeader>
  <CardBody>Flat container with subtle solid background.</CardBody>
</Card>

Glass

Premium translucent glassmorphic look using backdrop blur and opacity.

Glass Card
Translucent glass card with elegant backdrop filters.
<Card variant="glass">
  <CardHeader>Glass Card</CardHeader>
  <CardBody>Translucent glass card with elegant backdrop filters.</CardBody>
</Card>

Divided Layout

By default, card headers, bodies, and footers flow continuously without separation lines. Passing the divided boolean prop adds subtle separator lines between sections.

Divided Card
Borders separate the header, body, and footer sections.
<Card divided>
  <CardHeader>Divided Card</CardHeader>
  <CardBody>Borders separate the header, body, and footer sections.</CardBody>
  <CardFooter><Button size="sm">Action</Button></CardFooter>
</Card>

Sizes

Choose between different sizing presets to customize block and inline paddings:

Small (sm)

Compact spacing suitable for dense layouts or list grids.

<Card size="sm">...</Card>

Medium (md)

Balanced standard spacing (default).

<Card size="md">...</Card>

Large (lg)

Generous breathing spacing ideal for hero sections or details views.

<Card size="lg">...</Card>

API Reference

Card Props

PropTypeDefaultDescription
variant'default' | 'flat' | 'glass''default'The visual style variation of the card.
size'sm' | 'md' | 'lg''md'Padding sizes applied to the card sections.
dividedbooleanfalseWhen true, renders borders between header, body, and footer.
elevation0 | 1 | 2 | 3 | 'none' | 'sm' | 'md' | 'lg'1Shadow elevation level (applies to 'default' variant only).

On this page