<!-- source-hash: b4a4c7c8c54bac836e374bc9dd198d5b -->
Reusable skeleton loading components for card UI elements, providing animated placeholder states that match the structure of vendor, blog, category, and alternative card layouts.

## Key Components

| Export | Description |
|--------|-------------|
| `CardSkeleton` | Single card skeleton with variant-based layout rendering |
| `CardSkeletonGrid` | Responsive grid of `CardSkeleton` instances for list loading states |
| `CardSkeletonProps` | Interface defining variant, visibility toggles, and styling options |

**Internal sub-components (not exported):**

| Component | Mirrors |
|-----------|---------|
| `VendorCardContent` | Logo, title, category, description, stats, and tag |
| `BlogCardContent` | OG image, title chips, description, author, and date metadata |
| `CategoryCardContent` | Icon grid, title, description, and action button |
| `AlternativeCardContent` | Avatar, title, description, and optional action button |

## Usage Example

```typescript
import { CardSkeleton, CardSkeletonGrid } from "./card-skeleton"

// Single skeleton while fetching one vendor
<CardSkeleton variant="vendor" showActions showMetadata />

// Full loading grid for a blog listing page
<CardSkeletonGrid
  variant="blog"
  count={4}
  showActions={false}
  showMetadata
  className="my-8"
/>

// Category grid without custom container styling
<CardSkeletonGrid
  variant="category"
  count={8}
  containerClassName="bg-neutral-900 border border-neutral-700"
/>
```

## Props Reference

| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `variant` | `'vendor' \| 'blog' \| 'category' \| 'alternative'` | `'vendor'` | Card layout to replicate |
| `showActions` | `boolean` | `true` | Renders action button placeholder |
| `showMetadata` | `boolean` | `true` | Renders footer metadata placeholder |
| `containerClassName` | `string` | `bg-ods-card border border-ods-border` | Overrides card container background and border |
| `count` *(grid only)* | `number` | `6` | Number of skeleton cards to render |