import type { Meta, StoryObj } from '@storybook/react'; import { bigDataSet, complexDataSet, legendConfig, secondaryDimensionDataSet, simpleDataSet, tooltipConfig } from '../../resources/DemoProps.js'; import { LineChart } from './LineChart.js'; const meta = { title: 'LineChart', component: LineChart, args: { dimensions: [ { accessor: 'name', formatter: (d) => `${d} 2019`, interval: 0 } ], measures: [ { accessor: 'users', label: 'Users', formatter: (val) => val.toLocaleString(), lineConfig: { type: 'linear' } }, { accessor: 'sessions', label: 'Active Sessions', formatter: (val) => `${val} sessions`, hideDataLabel: true }, { accessor: 'volume', label: 'Vol.' } ], dataset: complexDataSet }, argTypes: { dataset: { control: { disable: true } } } } satisfies Meta<typeof LineChart>; export default meta; type Story = StoryObj<typeof meta>; export const Default: Story = {}; export const WithCustomColor: Story = { args: { dimensions: [{ accessor: 'name' }], measures: [{ accessor: 'users', color: 'red' }], dataset: simpleDataSet } }; export const WithSecondaryDimension: Story = { args: { dimensions: [{ accessor: 'name' }, { accessor: 'dimension' }], measures: [{ accessor: 'users', color: 'red' }], dataset: secondaryDimensionDataSet } }; export const WithDataLabels: Story = { args: { dimensions: [{ accessor: 'name' }], measures: [ { accessor: 'users' }, { accessor: 'sessions' }, { accessor: 'volume' } ] } }; export const WithFormatter: Story = { args: { dimensions: [{ accessor: 'name', formatter: (element) => element.slice(0, 3) }], measures: [ { accessor: 'users', formatter: (element) => `${element / 10}`, label: 'number of users' }, { accessor: 'sessions' }, { accessor: 'volume' } ] } }; export const LoadingPlaceholder: Story = { args: { dataset: [] } }; export const WithReferenceLine: Story = { args: { dimensions: [{ accessor: 'name' }], chartConfig: { referenceLine: { color: 'red', label: 'MAX', value: 650 } }, measures: [ { accessor: 'users' }, { accessor: 'sessions' }, { accessor: 'volume' } ], dataset: bigDataSet } }; export const WithLinearGradient: Story = { render: (args) => ( <LineChart {...args}> <defs> <linearGradient id="colorUsers" x1="0%" y1="0%" x2="0%" y2="100%"> <stop offset="0%" stopColor="red" /> <stop offset="100%" stopColor="green" /> </linearGradient> </defs> </LineChart> ), args: { dataset: bigDataSet, dimensions: [{ accessor: 'name' }], measures: [ { accessor: 'users', width: 2, color: 'url(#colorUsers)' } ] } }; export const WithCustomTooltipConfig: Story = { args: tooltipConfig }; export const WithCustomLegendConfig: Story = { args: legendConfig };