Browse Source
* Migrate web action-buttons directory to CSF3 notation * Migrate web chat directory to CSF3 notation * Migrate web common directory to CSF3 notation * Migrate web layout directory to CSF3 notation * Migrate web modals directory to CSF3 notation * Migrate web ui directory to CSF3 notation * Migrate web video directory to CSF3 notation * Migrate web stories directory to CSF3 notationpull/3414/head
44 changed files with 966 additions and 780 deletions
@ -1,17 +1,12 @@
@@ -1,17 +1,12 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { Meta } from '@storybook/react'; |
||||
import { ChatModeratorNotification } from './ChatModeratorNotification'; |
||||
|
||||
export default { |
||||
const meta = { |
||||
title: 'owncast/Chat/Messages/Moderation Role Notification', |
||||
component: ChatModeratorNotification, |
||||
parameters: {}, |
||||
} as ComponentMeta<typeof ChatModeratorNotification>; |
||||
} satisfies Meta<typeof ChatModeratorNotification>; |
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const Template: ComponentStory<typeof ChatModeratorNotification> = (args: object) => ( |
||||
<ChatModeratorNotification {...args} /> |
||||
); |
||||
export default meta; |
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export const Basic = Template.bind({}); |
||||
export const Basic = {}; |
||||
|
@ -1,23 +1,21 @@
@@ -1,23 +1,21 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { Meta } from '@storybook/react'; |
||||
import { ChatNameChangeMessage } from './ChatNameChangeMessage'; |
||||
|
||||
export default { |
||||
const meta = { |
||||
title: 'owncast/Chat/Messages/Chat name change', |
||||
component: ChatNameChangeMessage, |
||||
} as ComponentMeta<typeof ChatNameChangeMessage>; |
||||
} satisfies Meta<typeof ChatNameChangeMessage>; |
||||
|
||||
const Template: ComponentStory<typeof ChatNameChangeMessage> = args => ( |
||||
<ChatNameChangeMessage {...args} /> |
||||
); |
||||
export default meta; |
||||
|
||||
export const Basic = Template.bind({}); |
||||
Basic.args = { |
||||
message: { |
||||
oldName: 'JohnnyOldName', |
||||
user: { |
||||
displayName: 'JohnnyNewName', |
||||
displayColor: '3', |
||||
export const Basic = { |
||||
args: { |
||||
message: { |
||||
oldName: 'JohnnyOldName', |
||||
user: { |
||||
displayName: 'JohnnyNewName', |
||||
displayColor: '3', |
||||
}, |
||||
}, |
||||
}, |
||||
}; |
||||
|
@ -1,66 +1,70 @@
@@ -1,66 +1,70 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { Meta } from '@storybook/react'; |
||||
import { ChatSocialMessage } from './ChatSocialMessage'; |
||||
|
||||
export default { |
||||
const meta = { |
||||
title: 'owncast/Chat/Messages/Social-fediverse event', |
||||
component: ChatSocialMessage, |
||||
parameters: {}, |
||||
} as ComponentMeta<typeof ChatSocialMessage>; |
||||
} satisfies Meta<typeof ChatSocialMessage>; |
||||
|
||||
const Template: ComponentStory<typeof ChatSocialMessage> = args => <ChatSocialMessage {...args} />; |
||||
export default meta; |
||||
|
||||
export const Follow = Template.bind({}); |
||||
Follow.args = { |
||||
message: { |
||||
type: 'FEDIVERSE_ENGAGEMENT_FOLLOW', |
||||
body: '<p>james followed this live stream.</p>', |
||||
title: 'james@mastodon.social', |
||||
image: 'https://mastodon.social/avatars/original/missing.png', |
||||
link: 'https://mastodon.social/@james', |
||||
export const Follow = { |
||||
args: { |
||||
message: { |
||||
type: 'FEDIVERSE_ENGAGEMENT_FOLLOW', |
||||
body: '<p>james followed this live stream.</p>', |
||||
title: 'james@mastodon.social', |
||||
image: 'https://mastodon.social/avatars/original/missing.png', |
||||
link: 'https://mastodon.social/@james', |
||||
}, |
||||
}, |
||||
}; |
||||
|
||||
export const Like = Template.bind({}); |
||||
Like.args = { |
||||
message: { |
||||
type: 'FEDIVERSE_ENGAGEMENT_LIKE', |
||||
body: '<p>james liked that this stream went live.</p>', |
||||
title: 'james@mastodon.social', |
||||
image: 'https://mastodon.social/avatars/original/missing.png', |
||||
link: 'https://mastodon.social/@james', |
||||
export const Like = { |
||||
args: { |
||||
message: { |
||||
type: 'FEDIVERSE_ENGAGEMENT_LIKE', |
||||
body: '<p>james liked that this stream went live.</p>', |
||||
title: 'james@mastodon.social', |
||||
image: 'https://mastodon.social/avatars/original/missing.png', |
||||
link: 'https://mastodon.social/@james', |
||||
}, |
||||
}, |
||||
}; |
||||
|
||||
export const Repost = Template.bind({}); |
||||
Repost.args = { |
||||
message: { |
||||
type: 'FEDIVERSE_ENGAGEMENT_REPOST', |
||||
body: '<p>james shared this stream with their followers.</p>', |
||||
title: 'james@mastodon.social', |
||||
image: 'https://mastodon.social/avatars/original/missing.png', |
||||
link: 'https://mastodon.social/@james', |
||||
export const Repost = { |
||||
args: { |
||||
message: { |
||||
type: 'FEDIVERSE_ENGAGEMENT_REPOST', |
||||
body: '<p>james shared this stream with their followers.</p>', |
||||
title: 'james@mastodon.social', |
||||
image: 'https://mastodon.social/avatars/original/missing.png', |
||||
link: 'https://mastodon.social/@james', |
||||
}, |
||||
}, |
||||
}; |
||||
|
||||
export const LongAccountName = Template.bind({}); |
||||
LongAccountName.args = { |
||||
message: { |
||||
type: 'FEDIVERSE_ENGAGEMENT_REPOST', |
||||
body: '<p>james shared this stream with their followers.</p>', |
||||
title: 'littlejimmywilliams@technology.biz.net.org.technology.gov', |
||||
image: 'https://mastodon.social/avatars/original/missing.png', |
||||
link: 'https://mastodon.social/@james', |
||||
export const LongAccountName = { |
||||
args: { |
||||
message: { |
||||
type: 'FEDIVERSE_ENGAGEMENT_REPOST', |
||||
body: '<p>james shared this stream with their followers.</p>', |
||||
title: 'littlejimmywilliams@technology.biz.net.org.technology.gov', |
||||
image: 'https://mastodon.social/avatars/original/missing.png', |
||||
link: 'https://mastodon.social/@james', |
||||
}, |
||||
}, |
||||
}; |
||||
|
||||
export const InvalidAvatarImage = Template.bind({}); |
||||
InvalidAvatarImage.args = { |
||||
message: { |
||||
type: 'FEDIVERSE_ENGAGEMENT_REPOST', |
||||
body: '<p>james shared this stream with their followers.</p>', |
||||
title: 'james@mastodon.social', |
||||
image: 'https://xx.xx/avatars/original/missing.png', |
||||
link: 'https://mastodon.social/@james', |
||||
export const InvalidAvatarImage = { |
||||
args: { |
||||
message: { |
||||
type: 'FEDIVERSE_ENGAGEMENT_REPOST', |
||||
body: '<p>james shared this stream with their followers.</p>', |
||||
title: 'james@mastodon.social', |
||||
image: 'https://xx.xx/avatars/original/missing.png', |
||||
link: 'https://mastodon.social/@james', |
||||
}, |
||||
}, |
||||
}; |
||||
|
@ -1,76 +1,77 @@
@@ -1,76 +1,77 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { Meta } from '@storybook/react'; |
||||
import { ContentHeader } from './ContentHeader'; |
||||
|
||||
export default { |
||||
const meta = { |
||||
title: 'owncast/Components/Content Header', |
||||
component: ContentHeader, |
||||
parameters: {}, |
||||
} as ComponentMeta<typeof ContentHeader>; |
||||
} satisfies Meta<typeof ContentHeader>; |
||||
|
||||
const Template: ComponentStory<typeof ContentHeader> = args => <ContentHeader {...args} />; |
||||
export default meta; |
||||
|
||||
export const Example = Template.bind({}); |
||||
Example.args = { |
||||
name: 'My Awesome Owncast Stream', |
||||
summary: 'A calvacade of glorious sights and sounds', |
||||
tags: ['word', 'tag with spaces', 'music'], |
||||
logo: 'https://watch.owncast.online/logo', |
||||
links: [ |
||||
{ |
||||
platform: 'github', |
||||
url: 'https://github.com/owncast/owncast', |
||||
icon: 'https://watch.owncast.online/img/platformlogos/github.svg', |
||||
}, |
||||
{ |
||||
platform: 'Documentation', |
||||
url: 'https://owncast.online', |
||||
icon: 'https://watch.owncast.online/img/platformlogos/link.svg', |
||||
}, |
||||
{ |
||||
platform: 'mastodon', |
||||
url: 'https://fosstodon.org/users/owncast', |
||||
icon: 'https://watch.owncast.online/img/platformlogos/mastodon.svg', |
||||
}, |
||||
], |
||||
export const Example = { |
||||
args: { |
||||
name: 'My Awesome Owncast Stream', |
||||
summary: 'A calvacade of glorious sights and sounds', |
||||
tags: ['word', 'tag with spaces', 'music'], |
||||
logo: 'https://watch.owncast.online/logo', |
||||
links: [ |
||||
{ |
||||
platform: 'github', |
||||
url: 'https://github.com/owncast/owncast', |
||||
icon: 'https://watch.owncast.online/img/platformlogos/github.svg', |
||||
}, |
||||
{ |
||||
platform: 'Documentation', |
||||
url: 'https://owncast.online', |
||||
icon: 'https://watch.owncast.online/img/platformlogos/link.svg', |
||||
}, |
||||
{ |
||||
platform: 'mastodon', |
||||
url: 'https://fosstodon.org/users/owncast', |
||||
icon: 'https://watch.owncast.online/img/platformlogos/mastodon.svg', |
||||
}, |
||||
], |
||||
}, |
||||
}; |
||||
|
||||
export const LongContent = Template.bind({}); |
||||
LongContent.args = { |
||||
name: 'My Awesome Owncast Stream, streaming the best of streams and some lorem ipsum too', |
||||
summary: |
||||
'A calvacade of glorious sights and sounds. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', |
||||
tags: [ |
||||
'word', |
||||
'tag with spaces', |
||||
'music', |
||||
'more tags', |
||||
'a bunch', |
||||
'keep going', |
||||
'and more', |
||||
'just a few more', |
||||
'video games', |
||||
'things', |
||||
'stuff', |
||||
'ok some more', |
||||
'this should do it', |
||||
], |
||||
logo: 'https://watch.owncast.online/logo', |
||||
links: [ |
||||
{ |
||||
platform: 'github', |
||||
url: 'https://github.com/owncast/owncast', |
||||
icon: 'https://watch.owncast.online/img/platformlogos/github.svg', |
||||
}, |
||||
{ |
||||
platform: 'Documentation', |
||||
url: 'https://owncast.online', |
||||
icon: 'https://watch.owncast.online/img/platformlogos/link.svg', |
||||
}, |
||||
{ |
||||
platform: 'mastodon', |
||||
url: 'https://fosstodon.org/users/owncast', |
||||
icon: 'https://watch.owncast.online/img/platformlogos/mastodon.svg', |
||||
}, |
||||
], |
||||
export const LongContent = { |
||||
args: { |
||||
name: 'My Awesome Owncast Stream, streaming the best of streams and some lorem ipsum too', |
||||
summary: |
||||
'A calvacade of glorious sights and sounds. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', |
||||
tags: [ |
||||
'word', |
||||
'tag with spaces', |
||||
'music', |
||||
'more tags', |
||||
'a bunch', |
||||
'keep going', |
||||
'and more', |
||||
'just a few more', |
||||
'video games', |
||||
'things', |
||||
'stuff', |
||||
'ok some more', |
||||
'this should do it', |
||||
], |
||||
logo: 'https://watch.owncast.online/logo', |
||||
links: [ |
||||
{ |
||||
platform: 'github', |
||||
url: 'https://github.com/owncast/owncast', |
||||
icon: 'https://watch.owncast.online/img/platformlogos/github.svg', |
||||
}, |
||||
{ |
||||
platform: 'Documentation', |
||||
url: 'https://owncast.online', |
||||
icon: 'https://watch.owncast.online/img/platformlogos/link.svg', |
||||
}, |
||||
{ |
||||
platform: 'mastodon', |
||||
url: 'https://fosstodon.org/users/owncast', |
||||
icon: 'https://watch.owncast.online/img/platformlogos/mastodon.svg', |
||||
}, |
||||
], |
||||
}, |
||||
}; |
||||
|
@ -1,25 +1,24 @@
@@ -1,25 +1,24 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { Meta } from '@storybook/react'; |
||||
import { OwncastLogo } from './OwncastLogo'; |
||||
|
||||
export default { |
||||
const meta = { |
||||
title: 'owncast/Components/Header Logo', |
||||
component: OwncastLogo, |
||||
parameters: { |
||||
chromatic: { diffThreshold: 0.8 }, |
||||
}, |
||||
} as ComponentMeta<typeof OwncastLogo>; |
||||
} satisfies Meta<typeof OwncastLogo>; |
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const Template: ComponentStory<typeof OwncastLogo> = args => <OwncastLogo {...args} />; |
||||
export default meta; |
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export const Logo = Template.bind({}); |
||||
Logo.args = { |
||||
url: '/logo', |
||||
export const Logo = { |
||||
args: { |
||||
url: '/logo', |
||||
}, |
||||
}; |
||||
|
||||
export const DemoServer = Template.bind({}); |
||||
DemoServer.args = { |
||||
url: 'https://watch.owncast.online/logo', |
||||
export const DemoServer = { |
||||
args: { |
||||
url: 'https://watch.owncast.online/logo', |
||||
}, |
||||
}; |
||||
|
@ -1,21 +1,17 @@
@@ -1,21 +1,17 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { Meta } from '@storybook/react'; |
||||
import { FatalErrorStateModal } from './FatalErrorStateModal'; |
||||
|
||||
export default { |
||||
const meta = { |
||||
title: 'owncast/Modals/Global error state', |
||||
component: FatalErrorStateModal, |
||||
parameters: {}, |
||||
} as ComponentMeta<typeof FatalErrorStateModal>; |
||||
} satisfies Meta<typeof FatalErrorStateModal>; |
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const Template: ComponentStory<typeof FatalErrorStateModal> = args => ( |
||||
<FatalErrorStateModal {...args} /> |
||||
); |
||||
export default meta; |
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export const Example = Template.bind({}); |
||||
Example.args = { |
||||
title: 'Example error title', |
||||
message: 'Example error message', |
||||
export const Example = { |
||||
args: { |
||||
title: 'Example error title', |
||||
message: 'Example error message', |
||||
}, |
||||
}; |
||||
|
File diff suppressed because one or more lines are too long
@ -1,22 +1,25 @@
@@ -1,22 +1,25 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { StoryFn, Meta } from '@storybook/react'; |
||||
import { RecoilRoot } from 'recoil'; |
||||
import { Footer } from './Footer'; |
||||
|
||||
export default { |
||||
const meta = { |
||||
title: 'owncast/Layout/Footer', |
||||
component: Footer, |
||||
parameters: {}, |
||||
} as ComponentMeta<typeof Footer>; |
||||
} satisfies Meta<typeof Footer>; |
||||
|
||||
const Template: ComponentStory<typeof Footer> = args => ( |
||||
export default meta; |
||||
|
||||
const Template: StoryFn<typeof Footer> = args => ( |
||||
<RecoilRoot> |
||||
<Footer {...args} /> |
||||
</RecoilRoot> |
||||
); |
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export const Example = Template.bind({}); |
||||
Example.args = { |
||||
version: 'v1.2.3', |
||||
export const Example = { |
||||
render: Template, |
||||
|
||||
args: { |
||||
version: 'v1.2.3', |
||||
}, |
||||
}; |
||||
|
@ -1,30 +1,37 @@
@@ -1,30 +1,37 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { StoryFn, Meta } from '@storybook/react'; |
||||
import { RecoilRoot } from 'recoil'; |
||||
import { Header } from './Header'; |
||||
|
||||
export default { |
||||
const meta = { |
||||
title: 'owncast/Layout/Header', |
||||
component: Header, |
||||
parameters: { |
||||
chromatic: { diffThreshold: 0.75 }, |
||||
}, |
||||
} as ComponentMeta<typeof Header>; |
||||
} satisfies Meta<typeof Header>; |
||||
|
||||
const Template: ComponentStory<typeof Header> = args => ( |
||||
export default meta; |
||||
|
||||
const Template: StoryFn<typeof Header> = args => ( |
||||
<RecoilRoot> |
||||
<Header {...args} /> |
||||
</RecoilRoot> |
||||
); |
||||
|
||||
export const ChatAvailable = Template.bind({}); |
||||
ChatAvailable.args = { |
||||
name: 'Example Stream Name', |
||||
chatAvailable: true, |
||||
export const ChatAvailable = { |
||||
render: Template, |
||||
|
||||
args: { |
||||
name: 'Example Stream Name', |
||||
chatAvailable: true, |
||||
}, |
||||
}; |
||||
|
||||
export const ChatNotAvailable = Template.bind({}); |
||||
ChatNotAvailable.args = { |
||||
name: 'Example Stream Name', |
||||
chatAvailable: false, |
||||
export const ChatNotAvailable = { |
||||
render: Template, |
||||
|
||||
args: { |
||||
name: 'Example Stream Name', |
||||
chatAvailable: false, |
||||
}, |
||||
}; |
||||
|
@ -1,39 +1,38 @@
@@ -1,39 +1,38 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { Meta } from '@storybook/react'; |
||||
import { SocialLinks } from './SocialLinks'; |
||||
|
||||
export default { |
||||
const meta = { |
||||
title: 'owncast/Components/Social links', |
||||
component: SocialLinks, |
||||
parameters: {}, |
||||
} as ComponentMeta<typeof SocialLinks>; |
||||
} satisfies Meta<typeof SocialLinks>; |
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const Template: ComponentStory<typeof SocialLinks> = args => <SocialLinks {...args} />; |
||||
export default meta; |
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export const Populated = Template.bind({}); |
||||
Populated.args = { |
||||
links: [ |
||||
{ |
||||
platform: 'github', |
||||
url: 'https://github.com/owncast/owncast', |
||||
icon: '/img/platformlogos/github.svg', |
||||
}, |
||||
{ |
||||
platform: 'Documentation', |
||||
url: 'https://owncast.online', |
||||
icon: '/img/platformlogos/link.svg', |
||||
}, |
||||
{ |
||||
platform: 'mastodon', |
||||
url: 'https://fosstodon.org/users/owncast', |
||||
icon: '/img/platformlogos/mastodon.svg', |
||||
}, |
||||
], |
||||
export const Populated = { |
||||
args: { |
||||
links: [ |
||||
{ |
||||
platform: 'github', |
||||
url: 'https://github.com/owncast/owncast', |
||||
icon: '/img/platformlogos/github.svg', |
||||
}, |
||||
{ |
||||
platform: 'Documentation', |
||||
url: 'https://owncast.online', |
||||
icon: '/img/platformlogos/link.svg', |
||||
}, |
||||
{ |
||||
platform: 'mastodon', |
||||
url: 'https://fosstodon.org/users/owncast', |
||||
icon: '/img/platformlogos/mastodon.svg', |
||||
}, |
||||
], |
||||
}, |
||||
}; |
||||
|
||||
export const Empty = Template.bind({}); |
||||
Empty.args = { |
||||
links: [], |
||||
export const Empty = { |
||||
args: { |
||||
links: [], |
||||
}, |
||||
}; |
||||
|
@ -1,25 +1,26 @@
@@ -1,25 +1,26 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { Meta } from '@storybook/react'; |
||||
import { subHours } from 'date-fns'; |
||||
import { Statusbar } from './Statusbar'; |
||||
|
||||
export default { |
||||
const meta = { |
||||
title: 'owncast/Player/Status bar', |
||||
component: Statusbar, |
||||
parameters: {}, |
||||
} as ComponentMeta<typeof Statusbar>; |
||||
} satisfies Meta<typeof Statusbar>; |
||||
|
||||
const Template: ComponentStory<typeof Statusbar> = args => <Statusbar {...args} />; |
||||
export default meta; |
||||
|
||||
export const Online = Template.bind({}); |
||||
Online.args = { |
||||
online: true, |
||||
viewerCount: 42, |
||||
lastConnectTime: subHours(new Date(), 3), |
||||
export const Online = { |
||||
args: { |
||||
online: true, |
||||
viewerCount: 42, |
||||
lastConnectTime: subHours(new Date(), 3), |
||||
}, |
||||
}; |
||||
|
||||
export const Offline = Template.bind({}); |
||||
Offline.args = { |
||||
online: false, |
||||
lastDisconnectTime: subHours(new Date(), 3), |
||||
export const Offline = { |
||||
args: { |
||||
online: false, |
||||
lastDisconnectTime: subHours(new Date(), 3), |
||||
}, |
||||
}; |
||||
|
@ -1,30 +1,30 @@
@@ -1,30 +1,30 @@
|
||||
import React from 'react'; |
||||
import { ComponentStory, ComponentMeta } from '@storybook/react'; |
||||
import { Meta } from '@storybook/react'; |
||||
import { Logo } from '../components/ui/Logo/Logo'; |
||||
|
||||
export default { |
||||
const meta = { |
||||
title: 'owncast/Components/Page Logo', |
||||
component: Logo, |
||||
parameters: { |
||||
chromatic: { diffThreshold: 0.8 }, |
||||
}, |
||||
} as ComponentMeta<typeof Logo>; |
||||
} satisfies Meta<typeof Logo>; |
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const Template: ComponentStory<typeof Logo> = args => <Logo {...args} />; |
||||
export default meta; |
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export const LocalServer = Template.bind({}); |
||||
LocalServer.args = { |
||||
src: 'http://localhost:8080/logo', |
||||
export const LocalServer = { |
||||
args: { |
||||
src: 'http://localhost:8080/logo', |
||||
}, |
||||
}; |
||||
|
||||
export const DemoServer = Template.bind({}); |
||||
DemoServer.args = { |
||||
src: 'https://watch.owncast.online/logo', |
||||
export const DemoServer = { |
||||
args: { |
||||
src: 'https://watch.owncast.online/logo', |
||||
}, |
||||
}; |
||||
|
||||
export const NotSquare = Template.bind({}); |
||||
NotSquare.args = { |
||||
src: 'https://via.placeholder.com/150x325/FF0000/FFFFFF?text=Rectangle', |
||||
export const NotSquare = { |
||||
args: { |
||||
src: 'https://via.placeholder.com/150x325/FF0000/FFFFFF?text=Rectangle', |
||||
}, |
||||
}; |
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue