Anvil/stories/organisms/FileTable.stories.ts
André Jaenisch 769e3bcab3
feat: add new components to Storybook
I included stories for the new components introduced by the Projects
page.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00

193 lines
4.5 KiB
TypeScript

/* Stories for FileTable organism.
* Copyright (C) 2024 André Jaenisch
* SPDX-FileCopyrightText: 2024 André Jaenisch
* SPDX-License-Identifier: AGPL-3.0-or-later
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { withActions } from '@storybook/addon-actions/decorator';
import { withLinks } from '@storybook/addon-links';
import type { Meta, StoryObj } from '@storybook/svelte';
import FileTable from '$lib/components/organisms/FileTable.svelte';
const meta = {
title: 'Organisms/FileTable',
component: FileTable,
tags: ['autodocs'],
args: {
sb: 'Templates/Profile'
},
argTypes: {
onSubmit: { action: 'submit' },
sb: { control: 'radio', options: ['Templates/Profile'] }
},
decorators: [withActions, withLinks]
} satisfies Meta<FileTable>;
export default meta;
type Story = StoryObj<typeof meta>;
export const NoProjects: Story = {
args: {
i18n: {
heading: {
lastUpdated: 'page.projects.table.heading.last_updated',
name: 'page.projects.table.heading.name'
},
table: {
updated: 'page.projects.file_table.updated'
}
},
projects: []
}
};
export const SingleProject: Story = {
args: {
i18n: {
heading: {
lastUpdated: 'page.projects.table.heading.last_updated',
name: 'page.projects.table.heading.name'
},
table: {
updated: 'page.projects.file_table.updated'
}
},
projects: [
{
name: 'Project A',
description:
'This software project is a web-based application that will allow users to book appointments online.',
avatar: 'https://example.com',
// Date back three months
lastUpdated: new Date(Date.now() - 3 * 30 * 24 * 60 * 60 * 1000),
members: [
{
name: 'Person A',
avatar: 'https://example.com',
slug: 'a'
},
{
name: 'Person B',
avatar: 'https://example.com',
slug: 'b'
},
{
name: 'Person C',
avatar: 'https://example.com',
slug: 'c'
}
],
tags: [
{
name: 'ActivityPub',
link: '/tag/ActivityPub'
},
{
name: 'css',
link: '/tag/css'
},
{
name: 'guile',
link: '/tag/guile'
}
]
}
]
}
};
export const MultipleProjects: Story = {
args: {
i18n: {
heading: {
lastUpdated: 'page.projects.table.heading.last_updated',
name: 'page.projects.table.heading.name'
},
table: {
updated: 'page.projects.file_table.updated'
}
},
projects: [
{
name: 'Project A',
description:
'This software project is a web-based application that will allow users to book appointments online.',
avatar: 'https://example.com',
// Date back three months
lastUpdated: new Date(Date.now() - 3 * 30 * 24 * 60 * 60 * 1000),
members: [
{
name: 'Person A',
avatar: 'https://example.com',
slug: 'a'
},
{
name: 'Person B',
avatar: 'https://example.com',
slug: 'b'
},
{
name: 'Person C',
avatar: 'https://example.com',
slug: 'c'
}
],
tags: [
{
name: 'ActivityPub',
link: '/tag/ActivityPub'
},
{
name: 'css',
link: '/tag/css'
},
{
name: 'guile',
link: '/tag/guile'
}
]
},
{
name: 'Project B',
description:
'This software project is a web-based application that will allow users to book appointments online.',
avatar: 'https://example.com',
// Date back three months
lastUpdated: new Date(Date.now() - 3 * 30 * 24 * 60 * 60 * 1000),
members: [
{
name: 'Person A',
avatar: 'https://example.com',
slug: 'a'
},
{
name: 'Person B',
avatar: 'https://example.com',
slug: 'b'
}
],
tags: [
{
name: 'ActivityPub',
link: '/tag/ActivityPub'
},
{
name: 'css',
link: '/tag/css'
},
{
name: 'guile',
link: '/tag/guile'
}
]
}
]
}
};