import type { Meta, StoryObj } from "@storybook/react-vite";
import { Card } from "@shared/components/Card";
import { Button } from "@shared/components/Button";
import { MetricCard } from "@shared/components/MetricCard";
import { StatusBadge } from "@shared/components/StatusBadge";
function CardBody({ color }: { color: string }) {
return (
{color} card
Surface treatment with the {color} accent strip.
);
}
const meta: Meta = {
title: "Primitives/Card",
component: Card,
tags: ["autodocs"],
parameters: { layout: "padded" },
args: {
accent: undefined,
padding: "default",
interactive: false,
},
argTypes: {
accent: {
control: "inline-radio",
options: [undefined, "blue", "purple", "green", "amber", "red"],
},
padding: {
control: "inline-radio",
options: ["tight", "default", "loose"],
},
interactive: { control: "boolean" },
},
decorators: [
(S) => (
),
],
render: (args) => (
),
};
export default meta;
type Story = StoryObj;
/** Flip accent / padding / interactive in controls. */
export const Playground: Story = {};
export const AccentMatrix: Story = {
decorators: [
(S) => (
),
],
render: () => (
{(["blue", "purple", "green", "amber", "red", undefined] as const).map(
(accent) => (
),
)}
),
};
export const InContext_ProductGrid: Story = {
decorators: [
(S) => (
),
],
render: () => (
Sources
Attach pipelines where PDFs already live.
Pipelines
Hero
Compose document workflows from typed operations.
Agents
Wire your agent via MCP, REST, or tool definitions.
),
};
export const InContext_MetricsInsideCard: Story = {
args: { padding: "loose" },
render: (args) => (
Last 24 hours
),
};