Skip to content
Velkin LogoVelkin Logo
Velkin
VELKIN/UI

Modern UI components for product teams and their AI agents. Lit core, typed wrappers, live MCP.

sales@velkinui.com

Product

  • Docs
  • Components
  • Studio
  • Pricing

Resources

  • Quick start
  • Blog
  • Changelog
  • Roadmap
  • Status

Project

  • About
  • Contact
  • License
  • Privacy
  • Terms

© 2026 Velkin. MIT core · Pro licenses available.

VELKIN

Card

A card component with media, header, body, and footer slots.

vu-card · @velkin/react/card

Copy page

Import

React
npm i @velkin/react

import { VuCard } from "@velkin/react/card";

Examples

API

Props

PropTypeDefaultDescription
variantVuCardVariant"elevated"Surface paint recipe. Default: `"elevated"`.
toneVuCardTone"normal"Neutral surface weight. Default: `"normal"`.
sizeVuCardSize"md"Content shell padding and section gap. Default: `"md"`.
radiusVuCardRadius"md"Corner radius preset. Default: `"md"`.
orientationVuCardOrientation"vertical"Layout axis. Default: `"vertical"`.
dividerVuCardDivider"none"Section hairline strategy. Default: `"none"`.
flushbooleanfalseZeros content shell padding. Default: `false`.
interactivebooleanfalseFocusable surface that dispatches `vu-activate`. Default: `false`.
selectedbooleanfalseChosen-state ring; sets `aria-pressed` when `interactive`. Default: `false`.
disabledbooleanfalseBlocks interaction when `interactive`. Default: `false`.
labelstring""Accessible name when `interactive` and no visible heading.

Events

EventDetailDescription
vu-activateVuCardActivateDetailFires on click or keyboard activation (Enter / Space) when `interactive` and not `disabled`. Detail: `{ source }` where `source` is the original `MouseEvent` / `KeyboardEvent`.

Slots

SlotDescription
mediaFull-bleed media (image, video, picture, svg). No padding; auto-sizes common media tags to `inline-size: 100%`. In `orientation="horizontal"`, this slot sits on the start edge instead of on top.
media-actionsOverlay actions positioned at the top-end of `media` (favorite, play, options menu). `media` is the containing block, so any slotted element is absolutely positioned for free — typically icon buttons.
headerTop section. Renders as a flex row with `space-between` (title left, secondary action right) so a slotted heading + actions split naturally; wraps on narrow widths.
—- Body content (the default slot).
footerBottom section. Renders as a flex row with `flex-end` (actions on the trailing edge — `Cancel` + `Save` pattern). For status-text + action layouts, add `margin-inline-start: auto` to the trailing item.

CSS parts

PartDescription
baseThe outer surface that lays the variant paint.
mediaThe media wrapper around the `media` slot. Acts as the positioning context for `media-actions`.
media-actionsThe overlay wrapper around the `media-actions` slot. Top-end of `media` by default.
media-dividerHairline between media and content when `divider` is `header` or `all`.
contentColumn wrapping `header` / body / `footer`; holds the shared padding inset and vertical `gap` between sections.
headerThe header section.
section-dividerHairline between adjacent content sections when `divider` is set.
bodyThe body section.
footerThe footer section.

Types

NameDefinition
VuCardActivateDetail
{ source: Event; }
VuCardDivider
"none" | "header" | "footer" | "all"
VuCardOrientation
"horizontal" | "vertical"
VuCardRadius
"sm" | "md" | "lg"
VuCardSize
"sm" | "md" | "lg"
VuCardTone
"subtle" | "normal" | "strong"
VuCardVariant
"outline"
| "elevated"
| "soft"
| "ghost"
| "filled"
| "glass"
| "gradient"

Related

Surfaces

  • AccordionAn accordion component for expandable sections with keyboard navigation.
  • Accordion ItemA collapsible accordion item component with a header trigger and body panel.
  • CarouselA slide carousel component with navigation, drag, and autoplay.
  • Carousel ItemA carousel slide component for use inside `<vu-carousel>`.

Guides

  • ThemingTokens and VuThemeProvider
  • StylingCSS parts and tokens
  • AppearanceSurface tone and radius

Browse

  • Previous: Accordion ItemEarlier in the sidebar
  • Next: CarouselLater in the sidebar
  • All componentsBrowse the full index