refactor(storybook): organize storybook file and loglical
Some checks are pending
Publish Docker image to Dockerhub / test (push) Waiting to run
Publish Docker image to Dockerhub / Build OCI Images (push) Blocked by required conditions
Publish Docker image to Dockerhub / Build OCI Images-1 (push) Blocked by required conditions
Publish Docker image to Dockerhub / Merge OCI Images and Push (push) Blocked by required conditions

This commit is contained in:
FoxxMD 2026-06-30 21:03:14 +00:00
parent e04965eb35
commit 3e7bbab5b0
26 changed files with 105 additions and 528 deletions

Binary file not shown.

View file

@ -1,58 +0,0 @@
import preview from "../../.storybook/preview.js";
import { fn } from 'storybook/test';
import { Button } from './Button.js';
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Example/Button',
component: Button,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
layout: 'centered',
},
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
tags: ['autodocs'],
// More on argTypes: https://storybook.js.org/docs/api/argtypes
argTypes: {
backgroundColor: { control: 'color' },
},
// Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#story-args
args: { onClick: fn() },
});
// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
export const Primary = meta.story({
args: {
primary: true,
label: 'Button',
},
});
export const Secondary = meta.story({
args: {
label: 'Button',
},
});
export const Large = meta.story({
args: {
size: 'large',
label: 'Button',
},
});
export const Small = meta.story({
args: {
size: 'small',
label: 'Button',
},
});
export const Mine = meta.story({
args: {
primary: false,
label: "Button"
}
});

View file

@ -1,37 +0,0 @@
import React from 'react';
import './button.css';
export interface ButtonProps {
/** Is this the principal call to action on the page? */
primary?: boolean;
/** What background color to use */
backgroundColor?: string;
/** How large should the button be? */
size?: 'small' | 'medium' | 'large';
/** Button contents */
label: string;
/** Optional click handler */
onClick?: () => void;
}
/** Primary UI component for user interaction */
export const Button = ({
primary = false,
size = 'medium',
backgroundColor,
label,
...props
}: ButtonProps) => {
const mode = primary ? 'storybook-button--primary' : 'storybook-button--secondary';
return (
<button
type="button"
className={['storybook-button', `storybook-button--${size}`, mode].join(' ')}
style={{ backgroundColor }}
{...props}
>
{label}
</button>
);
};

View file

@ -1,31 +0,0 @@
import preview from "../../.storybook/preview.js";
import { AppHeader } from "../client/components/AppHeader.js";
import {Provider} from "../client/components/Provider";
const meta = preview.meta({
title: 'Example/Header',
component: AppHeader,
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
tags: ['autodocs'],
parameters: {
// More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
layout: 'padded',
},
render: function Render(args) {
return (<AppHeader/>)
},
decorators: [
(Story) => (<Provider><Story/></Provider>),
]
});
export const LoggedIn = meta.story({
args: {
user: {
name: 'Jane Doe',
},
},
});
export const LoggedOut = meta.story();

View file

@ -1,56 +0,0 @@
import React from 'react';
import { Button } from './Button';
import './header.css';
type User = {
name: string;
};
export interface HeaderProps {
user?: User;
onLogin?: () => void;
onLogout?: () => void;
onCreateAccount?: () => void;
}
export const Header = ({ user, onLogin, onLogout, onCreateAccount }: HeaderProps) => (
<header>
<div className="storybook-header">
<div>
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fillRule="evenodd">
<path
d="M10 0h12a10 10 0 0110 10v12a10 10 0 01-10 10H10A10 10 0 010 22V10A10 10 0 0110 0z"
fill="#FFF"
/>
<path
d="M5.3 10.6l10.4 6v11.1l-10.4-6v-11zm11.4-6.2l9.7 5.5-9.7 5.6V4.4z"
fill="#555AB9"
/>
<path
d="M27.2 10.6v11.2l-10.5 6V16.5l10.5-6zM15.7 4.4v11L6 10l9.7-5.5z"
fill="#91BAF8"
/>
</g>
</svg>
<h1>Acme</h1>
</div>
<div>
{user ? (
<>
<span className="welcome">
Welcome, <b>{user.name}</b>!
</span>
<Button size="small" onClick={onLogout} label="Log out" />
</>
) : (
<>
<Button size="small" onClick={onLogin} label="Log in" />
<Button primary size="small" onClick={onCreateAccount} label="Sign up" />
</>
)}
</div>
</div>
</header>
);

View file

@ -1,30 +0,0 @@
import preview from "../../.storybook/preview.js";
import { expect, userEvent, within } from 'storybook/test';
import { Page } from './Page.js';
const meta = preview.meta({
title: 'Example/Page',
component: Page,
parameters: {
// More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
layout: 'fullscreen',
},
});
export const LoggedOut = meta.story();
// More on component testing: https://storybook.js.org/docs/writing-tests/interaction-testing
export const LoggedIn = meta.story({
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);
const loginButton = canvas.getByRole('button', { name: /Log in/i });
await expect(loginButton).toBeInTheDocument();
await userEvent.click(loginButton);
await expect(loginButton).not.toBeInTheDocument();
const logoutButton = canvas.getByRole('button', { name: /Log out/i });
await expect(logoutButton).toBeInTheDocument();
},
});

View file

@ -1,73 +0,0 @@
import React from 'react';
import { Header } from './Header';
import './page.css';
type User = {
name: string;
};
export const Page: React.FC = () => {
const [user, setUser] = React.useState<User>();
return (
<article>
<Header
user={user}
onLogin={() => setUser({ name: 'Jane Doe' })}
onLogout={() => setUser(undefined)}
onCreateAccount={() => setUser({ name: 'Jane Doe' })}
/>
<section className="storybook-page">
<h2>Pages in Storybook</h2>
<p>
We recommend building UIs with a{' '}
<a href="https://componentdriven.org" target="_blank" rel="noopener noreferrer">
<strong>component-driven</strong>
</a>{' '}
process starting with atomic components and ending with pages.
</p>
<p>
Render pages with mock data. This makes it easy to build and review page states without
needing to navigate to them in your app. Here are some handy patterns for managing page
data in Storybook:
</p>
<ul>
<li>
Use a higher-level connected component. Storybook helps you compose such data from the
"args" of child component stories
</li>
<li>
Assemble data in the page component from your services. You can mock these services out
using Storybook.
</li>
</ul>
<p>
Get a guided tutorial on component-driven development at{' '}
<a href="https://storybook.js.org/tutorials/" target="_blank" rel="noopener noreferrer">
Storybook tutorials
</a>
. Read more in the{' '}
<a href="https://storybook.js.org/docs" target="_blank" rel="noopener noreferrer">
docs
</a>
.
</p>
<div className="tip-wrapper">
<span className="tip">Tip</span> Adjust the width of the canvas with the{' '}
<svg width="10" height="10" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fillRule="evenodd">
<path
d="M1.5 5.2h4.8c.3 0 .5.2.5.4v5.1c-.1.2-.3.3-.4.3H1.4a.5.5 0 01-.5-.4V5.7c0-.3.2-.5.5-.5zm0-2.1h6.9c.3 0 .5.2.5.4v7a.5.5 0 01-1 0V4H1.5a.5.5 0 010-1zm0-2.1h9c.3 0 .5.2.5.4v9.1a.5.5 0 01-1 0V2H1.5a.5.5 0 010-1zm4.3 5.2H2V10h3.8V6.2z"
id="a"
fill="#999"
/>
</g>
</svg>
Viewports addon in the toolbar
</div>
</section>
</article>
);
};

View file

@ -1,30 +1,30 @@
import '../client/wdyr.js';
import preview from "../../.storybook/preview.js";
import '../../client/wdyr.js';
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { http, HttpResponse, delay, sse } from 'msw';
import { fn } from 'storybook/test';
import { Container } from '@chakra-ui/react';
import { ListContainerFetchable, ListContainerFilterable, ActivityList } from "../client/components/playActivity/ActivityList.js";
import {Provider} from "../client/components/Provider.js";
import { generateJsonPlays, generatePlay, normalizePlays } from "../core/PlayTestUtils.js";
import { ErrorLike, JsonPlayObject, PlayState, qsOptions } from "../core/Atomic.js";
import {playWithLifecycleScrobble, generatePlayWithLifecycle, randomPlayState} from '../core/tests/utils/fixtures.js'
import { generateArray } from "../core/DataUtils.js";
import { ListContainerFetchable, ListContainerFilterable, ActivityList } from "../../client/components/playActivity/ActivityList.js";
import {Provider} from "../../client/components/Provider.js";
import { generateJsonPlays, generatePlay, normalizePlays } from "../../core/PlayTestUtils.js";
import { ErrorLike, JsonPlayObject, PlayState, qsOptions } from "../../core/Atomic.js";
import {playWithLifecycleScrobble, generatePlayWithLifecycle, randomPlayState} from '../../core/tests/utils/fixtures.js'
import { generateArray } from "../../core/DataUtils.js";
import dayjs from "dayjs";
import qs from 'qs';
import { asJsonPlayObject } from "../core/PlayMarshalUtils.js";
import { generatePlayApiCommon, generatePlayApiCommonDetailed, generatePlayApiCommonDetailedList } from "../core/tests/utils/apiFixtures.js";
import { MsSseEvent, PlayApiCommonDetailed } from "../core/Api.js";
import { CompareDateBetween, PaginatedResponse } from "../backend/common/database/drizzle/repositories/BaseRepository.js";
import { QueryPlaysOptsJson } from '../backend/common/database/drizzle/repositories/PlayRepository.js';
import { asJsonPlayObject } from "../../core/PlayMarshalUtils.js";
import { generatePlayApiCommon, generatePlayApiCommonDetailed, generatePlayApiCommonDetailedList } from "../../core/tests/utils/apiFixtures.js";
import { MsSseEvent, PlayApiCommonDetailed } from "../../core/Api.js";
import { CompareDateBetween, PaginatedResponse } from "../../backend/common/database/drizzle/repositories/BaseRepository.js";
import { QueryPlaysOptsJson } from '../../backend/common/database/drizzle/repositories/PlayRepository.js';
import { SSEProvider } from "@flamefrontend/sse-runtime-react";
import { sseProviderOptions } from '../client/AppNext.js';
import { sseProviderOptions } from '../../client/AppNext.js';
import { faker } from '@faker-js/faker';
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/Activity List',
title: 'Activities/List',
component: ActivityList,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -10,7 +10,7 @@ import { ActivitySummarySkeleton } from "../../client/components/ActivityDetail.
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Static Components/Activity List Skeleton',
title: 'Activities/List Skeleton',
component: ActivitySummarySkeleton
,
parameters: {

View file

@ -1,17 +1,17 @@
import preview from "../../.storybook/preview.js";
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { Container } from '@chakra-ui/react';
import { fn } from 'storybook/test';
import { ErrorAlert } from "../client/components/ErrorAlert.js";
import {Provider} from "../client/components/Provider";
import { ErrorLike } from "../core/Atomic.js";
import { PlayStateFilter } from "../client/components/playActivity/ListFilters.js";
import { ErrorAlert } from "../../client/components/ErrorAlert.js";
import {Provider} from "../../client/components/Provider.js";
import { ErrorLike } from "../../core/Atomic.js";
import { PlayStateFilter } from "../../client/components/playActivity/ListFilters.js";
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/List Filters/Play State',
title: 'Activities/List Filters/Play State',
component: PlayStateFilter,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -1,15 +1,15 @@
import preview from "../../../.storybook/preview.js";
import preview from "../../../../.storybook/preview.js";
import React from 'react';
import { Container } from '@chakra-ui/react';
import { fn } from 'storybook/test';
import { PlayDateRangeFilter } from "../../client/components/playActivity/ListFilters.js";
import { Provider } from "../../client/components/Provider.js";
import { PlayDateRangeFilter } from "../../../client/components/playActivity/ListFilters.js";
import { Provider } from "../../../client/components/Provider.js";
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/List Filters/Play Date Range',
title: 'Activities/List Filters/Play Date Range',
component: PlayDateRangeFilter,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -1,15 +1,15 @@
import preview from "../../../.storybook/preview.js";
import preview from "../../../../.storybook/preview.js";
import React from 'react';
import { Container } from '@chakra-ui/react';
import { fn } from 'storybook/test';
import { PhraseFilter } from "../../client/components/playActivity/ListFilters.js";
import { Provider } from "../../client/components/Provider.js";
import { PhraseFilter } from "../../../client/components/playActivity/ListFilters.js";
import { Provider } from "../../../client/components/Provider.js";
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/List Filters/Phrase',
title: 'Activities/List Filters/Phrase',
component: PhraseFilter,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -1,30 +0,0 @@
.storybook-button {
display: inline-block;
cursor: pointer;
border: 0;
border-radius: 3em;
font-weight: 700;
line-height: 1;
font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
.storybook-button--primary {
background-color: #555ab9;
color: white;
}
.storybook-button--secondary {
box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset;
background-color: transparent;
color: #333;
}
.storybook-button--small {
padding: 10px 16px;
font-size: 12px;
}
.storybook-button--medium {
padding: 11px 20px;
font-size: 14px;
}
.storybook-button--large {
padding: 12px 24px;
font-size: 16px;
}

View file

@ -1,19 +1,19 @@
import preview from "../../.storybook/preview.js";
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { http, HttpResponse, delay, sse } from 'msw';
import { Container, Box } from '@chakra-ui/react';
import { DeadLetterIndicator } from "../client/components/msComponent/Stats.js";
import { sseProviderOptions } from "../client/AppNext.js";
import {Provider} from "../client/components/Provider";
import { DeadLetterIndicator } from "../../client/components/msComponent/Stats.js";
import { sseProviderOptions } from "../../client/AppNext.js";
import {Provider} from "../../client/components/Provider.js";
import { SSEProvider } from "@flamefrontend/sse-runtime-react";
import { generateClientApiJson, generateSourceApiJson, generateSourcePlayerJson, LOG_MESSAGE_FIXTURE, logsApiResponse } from "../core/tests/utils/apiFixtures.js";
import { MsSseEvent } from "../core/Api.js";
import { generateClientApiJson, generateSourceApiJson, generateSourcePlayerJson, LOG_MESSAGE_FIXTURE, logsApiResponse } from "../../core/tests/utils/apiFixtures.js";
import { MsSseEvent } from "../../core/Api.js";
import { faker } from "@faker-js/faker";
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/Component Details/Stat Dead',
title: 'Component/Details/Stat Dead',
component: DeadLetterIndicator,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -1,18 +1,18 @@
import preview from "../../.storybook/preview.js";
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { http, HttpResponse, delay, sse } from 'msw';
import { Container, Box } from '@chakra-ui/react';
import { CountLiveIndicator } from "../client/components/msComponent/Stats.js";
import { sseProviderOptions } from "../client/AppNext.js";
import {Provider} from "../client/components/Provider";
import { CountLiveIndicator } from "../../client/components/msComponent/Stats.js";
import { sseProviderOptions } from "../../client/AppNext.js";
import {Provider} from "../../client/components/Provider.js";
import { SSEProvider } from "@flamefrontend/sse-runtime-react";
import { generateClientApiJson, generateSourceApiJson, generateSourcePlayerJson, LOG_MESSAGE_FIXTURE, logsApiResponse } from "../core/tests/utils/apiFixtures.js";
import { MsSseEvent } from "../core/Api.js";
import { generateClientApiJson, generateSourceApiJson, generateSourcePlayerJson, LOG_MESSAGE_FIXTURE, logsApiResponse } from "../../core/tests/utils/apiFixtures.js";
import { MsSseEvent } from "../../core/Api.js";
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/Component Details/Stats Count',
title: 'Component/Details/Stats Count',
component: CountLiveIndicator,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -1,19 +1,19 @@
import preview from "../../.storybook/preview.js";
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { http, HttpResponse, delay, sse } from 'msw';
import { Container, Box } from '@chakra-ui/react';
import { QueuedIndicator } from "../client/components/msComponent/Stats.js";
import { sseProviderOptions } from "../client/AppNext.js";
import {Provider} from "../client/components/Provider";
import { QueuedIndicator } from "../../client/components/msComponent/Stats.js";
import { sseProviderOptions } from "../../client/AppNext.js";
import {Provider} from "../../client/components/Provider.js";
import { SSEProvider } from "@flamefrontend/sse-runtime-react";
import { generateClientApiJson, generateSourceApiJson, generateSourcePlayerJson, LOG_MESSAGE_FIXTURE, logsApiResponse } from "../core/tests/utils/apiFixtures.js";
import { MsSseEvent } from "../core/Api.js";
import { MsSseEvent } from "../../core/Api.js";
import { faker } from "@faker-js/faker";
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/Component Details/Stat Queued',
title: 'Component/Details/Stat Queued',
component: QueuedIndicator,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -1,21 +1,21 @@
import preview from "../../.storybook/preview.js";
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { http, HttpResponse, delay, sse } from 'msw';
import { Container } from '@chakra-ui/react';
import { MSComponentSummary } from "../client/components/msComponent/MSComponentSummary.js";
import {Provider} from "../client/components/Provider";
import { generateClientApiJson, generateSourceApiJson, generateSourcePlayerJson } from "../core/tests/utils/apiFixtures.js";
import { MsSseEvent } from "../core/Api.js";
import { MSComponentSummary } from "../../client/components/msComponent/MSComponentSummary.js";
import {Provider} from "../../client/components/Provider.js";
import { generateClientApiJson, generateSourceApiJson, generateSourcePlayerJson } from "../../core/tests/utils/apiFixtures.js";
import { MsSseEvent } from "../../core/Api.js";
import { SSEProvider } from "@flamefrontend/sse-runtime-react";
import { sseProviderOptions } from "../client/AppNext.js";
import { sseProviderOptions } from "../../client/AppNext.js";
import { faker } from "@faker-js/faker";
import { withRouter, reactRouterParameters } from 'storybook-addon-remix-react-router';
import dayjs from "dayjs";
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/ComponentSummary',
title: 'Component/Summary',
component: MSComponentSummary,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
@ -43,7 +43,7 @@ const meta = preview.meta({
return (<MSComponentSummary {...args} />)
},
decorators: [
(Story) => (<Provider><Container maxWidth="4xl"><Story/></Container></Provider>),
(Story) => (<Provider><Container maxWidth="4xl"><SSEProvider<MsSseEvent> options={sseProviderOptions}><Story/></SSEProvider></Container></Provider>),
withRouter
]
// Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#story-args
@ -62,10 +62,6 @@ export const SourceSummaryFetchable = meta.story({
fetchable: true,
componentId: 1,
},
decorators: [
(Story) =>
(<Provider><Container maxWidth="4xl"><SSEProvider<MsSseEvent> options={sseProviderOptions}><Story/></SSEProvider></Container></Provider>),
],
parameters: {
msw: {
handlers: [
@ -106,10 +102,6 @@ export const ClientSummaryFetchable = meta.story({
fetchable: true,
componentId: 1,
},
decorators: [
(Story) =>
(<Provider><Container maxWidth="4xl"><SSEProvider<MsSseEvent> options={sseProviderOptions}><Story/></SSEProvider></Container></Provider>),
],
parameters: {
msw: {
handlers: [

View file

@ -1,32 +0,0 @@
.storybook-header {
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
padding: 15px 20px;
font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
.storybook-header svg {
display: inline-block;
vertical-align: top;
}
.storybook-header h1 {
display: inline-block;
vertical-align: top;
margin: 6px 0 6px 10px;
font-weight: 700;
font-size: 20px;
line-height: 1;
}
.storybook-header button + button {
margin-left: 10px;
}
.storybook-header .welcome {
margin-right: 10px;
color: #333;
font-size: 14px;
}

View file

@ -1,68 +0,0 @@
.storybook-page {
margin: 0 auto;
padding: 48px 20px;
max-width: 600px;
color: #333;
font-size: 14px;
line-height: 24px;
font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
.storybook-page h2 {
display: inline-block;
vertical-align: top;
margin: 0 0 4px;
font-weight: 700;
font-size: 32px;
line-height: 1;
}
.storybook-page p {
margin: 1em 0;
}
.storybook-page a {
color: inherit;
}
.storybook-page ul {
margin: 1em 0;
padding-left: 30px;
}
.storybook-page li {
margin-bottom: 8px;
}
.storybook-page .tip {
display: inline-block;
vertical-align: top;
margin-right: 10px;
border-radius: 1em;
background: #e7fdd8;
padding: 4px 12px;
color: #357a14;
font-weight: 700;
font-size: 11px;
line-height: 12px;
}
.storybook-page .tip-wrapper {
margin-top: 40px;
margin-bottom: 40px;
font-size: 13px;
line-height: 20px;
}
.storybook-page .tip-wrapper svg {
display: inline-block;
vertical-align: top;
margin-top: 3px;
margin-right: 4px;
width: 12px;
height: 12px;
}
.storybook-page .tip-wrapper svg path {
fill: #1ea7fd;
}

View file

@ -1,16 +1,16 @@
import preview from "../../.storybook/preview.js";
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { http, HttpResponse, delay, sse } from 'msw';
import { Container } from '@chakra-ui/react';
import { ComponentDetailedDesktop } from "../client/components/msComponent/MSComponentDetailed.js";
import {Provider} from "../client/components/Provider";
import { generateClientApiJson, generateFakeError, generatePlayApiCommonDetailed, generatePlayApiCommonDetailedList, generateSourceApiJson, generateSourcePlayerJson } from "../core/tests/utils/apiFixtures.js";
import { MsSseEvent, PlayApiCommonDetailed } from "../core/Api.js";
import { ComponentDetailedDesktop } from "../../client/components/msComponent/MSComponentDetailed.js";
import {Provider} from "../../client/components/Provider.js";
import { generateClientApiJson, generateFakeError, generatePlayApiCommonDetailed, generatePlayApiCommonDetailedList, generateSourceApiJson, generateSourcePlayerJson } from "../../core/tests/utils/apiFixtures.js";
import { MsSseEvent, PlayApiCommonDetailed } from "../../core/Api.js";
import { SSEProvider } from "@flamefrontend/sse-runtime-react";
import { sseProviderOptions } from "../client/AppNext.js";
import { sseProviderOptions } from "../../client/AppNext.js";
import { faker } from "@faker-js/faker";
import { PaginatedResponse } from "../backend/common/database/drizzle/repositories/BaseRepository.js";
import { PaginatedResponse } from "../../backend/common/database/drizzle/repositories/BaseRepository.js";
import dayjs from "dayjs";
import { serializeError } from "serialize-error";
@ -18,7 +18,7 @@ let livePlayData: PlayApiCommonDetailed[] = [];
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/Component Detailed',
title: 'Pages/Component Detailed',
component: ComponentDetailedDesktop,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -1,20 +1,20 @@
import preview from "../../.storybook/preview.js";
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { Container } from '@chakra-ui/react';
import { MSComponentList } from "../client/components/msComponent/MSComponentList.js";
import {Provider} from "../client/components/Provider";
import { generateClientApiJson, generateSourceApiJson, generateSourcePlayerJson } from "../core/tests/utils/apiFixtures.js";
import { generateArray } from "../core/DataUtils.js";
import { MSComponentList } from "../../client/components/msComponent/MSComponentList.js";
import {Provider} from "../../client/components/Provider.js";
import { generateClientApiJson, generateSourceApiJson, generateSourcePlayerJson } from "../../core/tests/utils/apiFixtures.js";
import { generateArray } from "../../core/DataUtils.js";
import { faker } from "@faker-js/faker";
import { MsSseEvent } from "../core/Api.js";
import { MsSseEvent } from "../../core/Api.js";
import { SSEProvider } from "@flamefrontend/sse-runtime-react";
import { sseProviderOptions } from "../client/AppNext.js";
import { sseProviderOptions } from "../../client/AppNext.js";
import { withRouter, reactRouterParameters } from 'storybook-addon-remix-react-router';
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/ComponentList',
title: 'Pages/Components List',
component: MSComponentList,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -1,14 +1,14 @@
import preview from "../../.storybook/preview.js";
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { Container, Box } from '@chakra-ui/react';
import { MobileSidebarNav } from "../client/components/MobileMenu";
import {Provider} from "../client/components/Provider";
import { MobileSidebarNav } from "../../client/components/MobileMenu.js";
import {Provider} from "../../client/components/Provider.js";
import { withRouter, reactRouterParameters } from 'storybook-addon-remix-react-router';
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/MobileSidebar',
title: 'Static Components/Mobile Sidebar',
component: MobileSidebarNav,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -1,15 +1,15 @@
import preview from "../../.storybook/preview.js";
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { Container, Box } from '@chakra-ui/react';
import { SideNavItems, NAV_LINKS } from "../client/components/SideNav";
import {Provider} from "../client/components/Provider";
import { generateClientApiJson, generateSourceApiJson, generateSourcePlayerJson } from "../core/tests/utils/apiFixtures.js";
import { SideNavItems, NAV_LINKS } from "../../client/components/SideNav.js";
import {Provider} from "../../client/components/Provider.js";
import { generateClientApiJson, generateSourceApiJson, generateSourcePlayerJson } from "../../core/tests/utils/apiFixtures.js";
import { withRouter, reactRouterParameters } from 'storybook-addon-remix-react-router';
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/NavbarItems',
title: 'Static Components/Navbar Items',
component: SideNavItems,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -1,14 +1,14 @@
import preview from "../../.storybook/preview.js";
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { fn } from 'storybook/test';
import { PlayData } from "../client/components/PlayData.js";
import {Provider} from "../client/components/Provider";
import { PlayData } from "../../client/components/PlayData.js";
import {Provider} from "../../client/components/Provider.js";
import { Container } from '@chakra-ui/react';
import { generateArtistCredits, generateArtists, generateJsonPlay, generatePlay, withBrainz } from "../core/PlayTestUtils.js"
import { generateArtistCredits, generateArtists, generateJsonPlay, generatePlay, withBrainz } from "../../core/PlayTestUtils.js"
import clone from "clone";
import { asJsonPlayObject } from '../core/PlayMarshalUtils.js';
import { JsonPlayObject } from "../core/Atomic.js";
import { asJsonPlayObject } from '../../core/PlayMarshalUtils.js';
import { JsonPlayObject } from "../../core/Atomic.js";
type PropsAndCustomArgs = React.ComponentProps<typeof PlayData> & {
includeAlbumArtists?: boolean;
@ -18,7 +18,7 @@ type PropsAndCustomArgs = React.ComponentProps<typeof PlayData> & {
};
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.type<{args: PropsAndCustomArgs}>().meta({
title: 'Examples/PlayInfo',
title: 'Static Components/Play Info',
component: PlayData,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -1,18 +1,18 @@
import preview from "../../.storybook/preview.js";
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { fn } from 'storybook/test';
import { Container } from '@chakra-ui/react';
import { ActivityTimeline } from "../client/components/ActivityTimeline";
import {Provider} from "../client/components/Provider";
import { generateJsonPlays } from "../core/PlayTestUtils.js";
import { generatePlayApiCommonDetailed } from "../core/tests/utils/apiFixtures.js";
import { generatePlayWithLifecycle, playWithLifecycleScrobble } from "../core/tests/utils/fixtures.js";
import { asJsonPlayObject } from '../core/PlayMarshalUtils.js';
import { ActivityTimeline } from "../../client/components/ActivityTimeline.js";
import {Provider} from "../../client/components/Provider.js";
import { generateJsonPlays } from "../../core/PlayTestUtils.js";
import { generatePlayApiCommonDetailed } from "../../core/tests/utils/apiFixtures.js";
import { generatePlayWithLifecycle, playWithLifecycleScrobble } from "../../core/tests/utils/fixtures.js";
import { asJsonPlayObject } from '../../core/PlayMarshalUtils.js';
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/ActivityTimline',
title: 'Timelines/Play',
component: ActivityTimeline,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout

View file

@ -1,17 +1,17 @@
import preview from "../../.storybook/preview.js";
import preview from "../../../.storybook/preview.js";
import React from 'react';
import { fn } from 'storybook/test';
import { Container } from '@chakra-ui/react';
import { TransformSteps } from "../client/components/TransformSteps.js";
import {Provider} from "../client/components/Provider";
import { generateJsonPlays, generatePlay } from "../core/PlayTestUtils.js";
import {generatePlayWithLifecycle} from '../core/tests/utils/fixtures'
import { asJsonPlayObject } from "../core/PlayMarshalUtils.js";
import { TransformSteps } from "../../client/components/TransformSteps.js";
import {Provider} from "../../client/components/Provider.js";
import { generateJsonPlays, generatePlay } from "../../core/PlayTestUtils.js";
import {generatePlayWithLifecycle} from '../../core/tests/utils/fixtures.js'
import { asJsonPlayObject } from "../../core/PlayMarshalUtils.js";
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = preview.meta({
title: 'Examples/TransformSteps',
title: 'Timelines/Play Transform Steps',
component: TransformSteps,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout