CardArt
Card art surface with automatic rarity-driven tilt, glow, specular, and fallback treatment.

import { CardArt } from "@cardspark/ui/core"; const card = { name: "M Venusaur EX", rarity: "Ultra Rare", imageUrl: "https://images.pokemontcg.io/xy12/100_hires.png"}; export function CardArtDemo() { return ( <CardArt src={card.imageUrl} alt="M Venusaur EX Pokemon card" fallbackLabel={card.name} rarity={card.rarity} /> );}Installation
Install the package.
npm install @cardspark/uiImport the shared stylesheet layer near your app root.
app/layout.tsx
import "@cardspark/ui/tokens.css";import "@cardspark/ui/themes/basement.css";import "@cardspark/ui/styles.css";Import and render CardArt from its package entry point.
Usage
CardArtDemo.tsx
import { CardArt } from "@cardspark/ui/core"; const card = { name: "M Venusaur EX", rarity: "Ultra Rare", imageUrl: "https://images.pokemontcg.io/xy12/100_hires.png"}; export function CardArtDemo() { return ( <CardArt src={card.imageUrl} alt="M Venusaur EX Pokemon card" fallbackLabel={card.name} rarity={card.rarity} /> );}Composition
Use CardArt as the card-art media node inside detail pages, media panels, rows, thumbnails, or focused card previews.
MediaSurface└── CardArt ├── src / alt / fallbackLabel ├── load placeholder and reveal state ├── rarity-driven effects └── optional back faceProvide meaningful alt text and a fallback label so image failures still identify the card.
Features
- Renders
srcandaltas the focused card artwork surface with package tilt, glow, and specular behavior. - Uses
fallbackLabelwhen artwork is unavailable so media slots still identify the card. - Forwards its ref and native div props;
rarity,showGlow,showSpecular,specularEffect, andshowBackFacetune visual effects.
Examples
Loading
Use the automatic loading state for image fetches, or force it when rendering a deterministic placeholder.

import { CardArt } from "@cardspark/ui/core"; const card = { name: "M Venusaur EX", rarity: "Ultra Rare", imageUrl: "https://images.pokemontcg.io/xy12/100_hires.png"}; export function CardArtLoadingDemo() { return ( <CardArt src={card.imageUrl} alt="M Venusaur EX Pokemon card" fallbackLabel={card.name} rarity={card.rarity} loadState="loading" /> );}Transition
When the image resolves, CardArt flips the placeholder 180 degrees on the vertical axis to reveal the loaded artwork.

import { CardArt } from "@cardspark/ui/core"; const card = { name: "M Venusaur EX", rarity: "Ultra Rare", imageUrl: "https://images.pokemontcg.io/xy12/100_hires.png"}; export function CardArtTransitionDemo() { return ( <CardArt src={card.imageUrl} alt="M Venusaur EX Pokemon card" fallbackLabel={card.name} rarity={card.rarity} loadState="transitioning" /> );}Loaded
Loaded art keeps the same rarity-driven glow, holo specular, and pointer tilt behavior.

import { CardArt } from "@cardspark/ui/core"; const card = { name: "M Venusaur EX", rarity: "Ultra Rare", imageUrl: "https://images.pokemontcg.io/xy12/100_hires.png"}; export function CardArtLoadedDemo() { return ( <CardArt src={card.imageUrl} alt="M Venusaur EX Pokemon card" fallbackLabel={card.name} rarity={card.rarity} loadState="loaded" /> );}API Reference
| Prop | Type | Default | Description |
|---|---|---|---|
src | string | - | Card artwork URL. |
alt | string | - | Accessible card artwork description. |
fallbackLabel | string | - | Text shown when artwork is missing. |
rarity | string | - | Card rarity used to resolve automatic glow and specular effects. |
loadState | "auto" | "loading" | "transitioning" | "loaded" | "auto" | Controls the image load placeholder and 180-degree reveal state. |
showGlow | boolean | "auto" | "auto" | Controls the blurred artwork glow. |
showSpecular | boolean | "auto" | "auto" | Controls the interactive foil/specular overlay. |
specularEffect | "auto" | "plain" | "holo" | "auto" | Chooses the specular treatment. Auto uses holo for high-rarity and holo card rarities. |
showBackFace | boolean | false | Renders the card back face for detail spin treatments. |
tiltMultiplier | number | 1 | Scales the pointer-driven card tilt amount. |