s-m-r-t

Card

Container for grouping related content with optional header and footer sections. Supports multiple visual variants and hover effects.

Installation

typescript
import { Card } from '@happyvertical/smrt-svelte';

Basic Usage

A simple card with default styling.

This is some card content.

svelte
<Card>
  <p>This is some card content.</p>
</Card>

Variants

Choose from default, outlined, or elevated styles.

Default card

Outlined card

Elevated card

svelte
<Card variant="default">Default card</Card>
<Card variant="outlined">Outlined card</Card>
<Card variant="elevated">Elevated card</Card>

Padding Sizes

Control content padding with the padding prop.

No padding

Small padding

Medium padding

Large padding

svelte
<Card padding="none">No padding</Card>
<Card padding="sm">Small padding</Card>
<Card padding="md">Medium padding (default)</Card>
<Card padding="lg">Large padding</Card>

With Header and Footer

Add header and footer sections using snippets.

Card Title

Main card content goes here with supporting text and details.

svelte
<Card>
  {#snippet header()}
    <h3>Card Title</h3>
  {/snippet}

  <p>Main card content goes here.</p>

  {#snippet footer()}
    <Button>Action</Button>
  {/snippet}
</Card>

Hoverable

Add hover effects for interactive cards.

Hover over this card to see the effect.

svelte
<Card hoverable>
  <p>Hover over this card to see the effect.</p>
</Card>

Real-World Example

A product card with header, content, and footer.

Premium Plan

Popular

$29/month

  • Unlimited users
  • Priority support
  • Advanced analytics
svelte
<Card variant="elevated">
  {#snippet header()}
    <div class="product-header">
      <h3>Premium Plan</h3>
      <Badge variant="primary">Popular</Badge>
    </div>
  {/snippet}

  <p>$29/month</p>
  <ul>
    <li>Unlimited users</li>
    <li>Priority support</li>
    <li>Advanced analytics</li>
  </ul>

  {#snippet footer()}
    <Button>Subscribe</Button>
  {/snippet}
</Card>

Props

PropTypeDefaultDescription
variant 'default' | 'outlined' | 'elevated''default'Visual style variant
padding 'none' | 'sm' | 'md' | 'lg''md'Content padding size
hoverable booleanfalseAdds hover effect with elevation
header Snippet-Content for the card header section
footer Snippet-Content for the card footer section

TypeScript

typescript
import { Card } from '@happyvertical/smrt-svelte';

type CardVariant = 'default' | 'outlined' | 'elevated';
type CardPadding = 'none' | 'sm' | 'md' | 'lg';

interface Props {
  variant?: CardVariant;
  padding?: CardPadding;
  hoverable?: boolean;
  children?: Snippet;
  header?: Snippet;
  footer?: Snippet;
}