94 lines
2.2 KiB
TypeScript
94 lines
2.2 KiB
TypeScript
import type { Meta, StoryObj } from '@storybook/react-webpack5';
|
|
import { GitBranch } from 'lucide-react';
|
|
|
|
import { Card } from './Card';
|
|
|
|
const meta = {
|
|
title: 'Design System/Primitives/Card',
|
|
component: Card.Container,
|
|
} as Meta<typeof Card.Container>;
|
|
|
|
export default meta;
|
|
type Story = StoryObj<typeof meta>;
|
|
|
|
export const Default: Story = {
|
|
args: {
|
|
children: <Card.Body>A basic card with body padding.</Card.Body>,
|
|
},
|
|
};
|
|
|
|
export const WithShadow: Story = {
|
|
args: {
|
|
shadow: true,
|
|
children: (
|
|
<Card.Body>Card with a drop shadow to create visual elevation.</Card.Body>
|
|
),
|
|
},
|
|
};
|
|
|
|
export const FilledVariant: Story = {
|
|
args: {
|
|
variant: 'filled',
|
|
children: (
|
|
<Card.Body>
|
|
Filled card using the gray background variant for nested or secondary
|
|
content areas.
|
|
</Card.Body>
|
|
),
|
|
},
|
|
};
|
|
|
|
export const WithHeader: Story = {
|
|
render: (args) => (
|
|
<Card.Container {...args}>
|
|
<Card.Header title="Container registries" />
|
|
<Card.Body>
|
|
Manage connected registries and configure pull-through caching.
|
|
</Card.Body>
|
|
</Card.Container>
|
|
),
|
|
};
|
|
|
|
export const WithHeaderAndSubtitle: Story = {
|
|
render: (args) => (
|
|
<Card.Container {...args}>
|
|
<Card.Header
|
|
title="Container registries"
|
|
subtitle="2 registries connected"
|
|
/>
|
|
<Card.Body>
|
|
Manage connected registries and configure pull-through caching.
|
|
</Card.Body>
|
|
</Card.Container>
|
|
),
|
|
};
|
|
|
|
export const WithHeaderIconAndActions: Story = {
|
|
render: (args) => (
|
|
<Card.Container {...args}>
|
|
<Card.Header
|
|
title="Git repositories"
|
|
subtitle="3 repositories linked"
|
|
actions={<button type="button">Add repository</button>}
|
|
icon={GitBranch}
|
|
/>
|
|
<Card.Body>
|
|
Connect and manage Git repositories for GitOps deployments.
|
|
</Card.Body>
|
|
</Card.Container>
|
|
),
|
|
};
|
|
|
|
export const WithLongText: Story = {
|
|
args: {
|
|
className: 'max-w-xs',
|
|
children: (
|
|
<Card.Body>
|
|
This card contains a very long piece of text to verify the component
|
|
handles overflow gracefully. The container should clip or wrap content
|
|
without breaking the surrounding layout.
|
|
</Card.Body>
|
|
),
|
|
},
|
|
};
|