import type { Meta, StoryObj } from '@storybook/react-vite';
import { ThemeProvider } from '@/hooks/useTheme';
import ClientTrafficCell from './ClientTrafficCell';
const GiB = 1024 ** 3;
const meta = {
title: 'Clients/ClientTrafficCell',
component: ClientTrafficCell,
tags: ['autodocs'],
decorators: [
(Story) => (
),
],
parameters: {
layout: 'padded',
docs: {
description: {
component:
'Traffic usage cell for the clients table: used bytes, a color-coded progress bar, and the quota (or an infinity icon for unlimited clients), with an upload/download/remaining breakdown in a hover popover.',
},
},
},
argTypes: {
up: { description: 'Uploaded bytes counted against the client.' },
down: { description: 'Downloaded bytes counted against the client.' },
total: { description: 'Traffic quota in bytes; 0 or less renders as unlimited.' },
enabled: { description: 'Grays the bar out when the client is disabled.' },
trafficDiff: {
description:
'Headroom in bytes below the quota at which the bar shifts from green to orange.',
},
compact: { description: 'Smaller bar and tighter layout for dense table rows.' },
},
} satisfies Meta;
export default meta;
type Story = StoryObj;
export const Default: Story = {
args: {
up: 6 * GiB,
down: 35 * GiB,
total: 100 * GiB,
trafficDiff: 5 * GiB,
},
};
export const Unlimited: Story = {
args: {
up: 87 * GiB,
down: 940 * GiB,
total: 0,
},
};
export const Depleted: Story = {
args: {
up: 9 * GiB,
down: 42 * GiB,
total: 50 * GiB,
trafficDiff: 5 * GiB,
},
};
export const DisabledCompact: Story = {
args: {
up: 2 * GiB,
down: 11 * GiB,
total: 40 * GiB,
enabled: false,
compact: true,
},
};