Staaarter

Stacked Release Cards

A simple, dense changelog: each release is its own bordered card with a heading, description, and bulleted list of tone-coded changes, ending in a hairline-separated footer row that repeats the version and date once the reader has scanned the content above it.

By Staaarter Team
Changelog
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its badge dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/stacked-release-cards.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/changelog/changelog15.tsx instead.

Usage

The file also exports changelog15Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.

import { Changelog15, changelog15Demo } from "@/components/blocks/changelog/changelog15";

export default function Page() {
  return <Changelog15 {...changelog15Demo} />;
}

Props

PropTypeDefaultDescription
headingstring"Changelog"Section heading above the card stack.
descriptionstringundefinedShort intro paragraph under the heading.
releasesRelease[]noneReleases rendered top to bottom, most recent first.
classNamestringnoneExtra classes for the outer section element.

Types

type ChangeType = "added" | "changed" | "fixed" | "removed";

interface Change {
  type: ChangeType;
  label: string;
  text: string;
}

interface Release {
  version: string;
  date: string;
  heading: string;
  description: string;
  changes: Change[];
}

Behavior notes

  • The change tags follow this category's tone convention: added uses Badge variant default, changed uses secondary, fixed uses outline, removed uses destructive; each entry supplies its own display label so text like "Breaking" or "Security" can appear while still mapping to a consistent color.
  • The version/date footer row sits below a `border-t` hairline inside each card, visually separated from the change list above it rather than mixed in with the bullets.
  • Fully static server component: no photos, no client state, no pagination.