Browse Source

refactor(stories): co-locate stories with components (#2078)

* refactor: move ActionButton component

* refactor: move BanUserButton component

* refactor: move ChatActionMessage component

* refactor: move ChatContainer component

* refactor: move AuthModal component

* refactor: move BrowserNotifyModal component

* refactor: move ChatUserMessage component

* refactor: move ChatJoinMessage component

* refactor: move ChatTextField component

* refactor: move ChatUserBadge component

* refactor: move FollowerCollection and SingleFollower components

* fix: bad import path

* refactor: move FollowModal component

* refactor: move Modal component

* refactor: move ContentHeader component

* refactor: move ChatSystemMessage component

* refactor: move Header component

* refactor: move Footer component

* refactor: move StatusBar component

* refactor: move OfflineBanner component

* refactor: move OwncastPlayer component

* refactor: move IndieAuthModal component

* refactor: move SocialLinks component

* refactor: move VideoPoster component

* refactor: move FollowModal component

* refactor: move FediAuthModal.tsx component

* refactor: move UserDropdown component

* refactor: move ChatSocialMessage component

* refactor: move Logo component

* refactor: move NotifyReminderPopup component

* refactor: move NameChangeModal component

* refactor: move FatalErrorStateModal component

* refactor: move ChatModeratorNotification component

* refactor: move ChatModerationActionMenu and ChatModerationDetailsModal components

* refactor: move CustomPageContent component

* refactor: move storybook Introduction file

* refactor: update storybook story import path

* refactor: move storybook preview styles

* refactor: move storybook doc pages

* refactor: move Color and ImageAsset components

* fix: bad import path

* fix: bad import path in story file
pull/2083/head
James Young 3 years ago committed by GitHub
parent
commit
5ebbbb8bf2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      web/.storybook/main.js
  2. 2
      web/.storybook/preview.js
  3. 2
      web/.storybook/preview.scss
  4. 4
      web/.storybook/stories-category-doc-pages/Chat.stories.mdx
  5. 2
      web/.storybook/stories-category-doc-pages/Colors.stories.mdx
  6. 16
      web/.storybook/stories-category-doc-pages/Images.stories.mdx
  7. 0
      web/.storybook/stories-category-doc-pages/Introduction.stories.mdx
  8. 0
      web/.storybook/stories-category-doc-pages/Typography.stories.mdx
  9. 0
      web/components/Color.tsx
  10. 0
      web/components/ImageAsset.tsx
  11. 0
      web/components/action-buttons/ActionButton/ActionButton.module.scss
  12. 2
      web/components/action-buttons/ActionButton/ActionButton.stories.tsx
  13. 4
      web/components/action-buttons/ActionButton/ActionButton.tsx
  14. 0
      web/components/action-buttons/ActionButtonRow/ActionButtonRow.module.scss
  15. 4
      web/components/action-buttons/ActionButtonRow/ActionButtonRow.stories.tsx
  16. 2
      web/components/action-buttons/ActionButtonRow/ActionButtonRow.tsx
  17. 4
      web/components/action-buttons/FollowButton.tsx
  18. 2
      web/components/action-buttons/NotifyButton.tsx
  19. 0
      web/components/chat/ChatActionMessage/ChatActionMessage.module.scss
  20. 4
      web/components/chat/ChatActionMessage/ChatActionMessage.stories.tsx
  21. 0
      web/components/chat/ChatActionMessage/ChatActionMessage.tsx
  22. 4
      web/components/chat/ChatContainer/ChatContainer.stories.tsx
  23. 4
      web/components/chat/ChatJoinMessage/ChatJoinMessage.stories.tsx
  24. 2
      web/components/chat/ChatModerationActionMenu/ChatModerationActionMenu.stories.tsx
  25. 2
      web/components/chat/ChatModerationActionMenu/ChatModerationActionMenu.tsx
  26. 0
      web/components/chat/ChatModerationDetailsModal/ChatModerationDetailsModal.module.scss
  27. 2
      web/components/chat/ChatModerationDetailsModal/ChatModerationDetailsModal.stories.tsx
  28. 0
      web/components/chat/ChatModerationDetailsModal/ChatModerationDetailsModal.tsx
  29. 2
      web/components/chat/ChatModeratorNotification/ChatModeratorNotification.stories.tsx
  30. 2
      web/components/chat/ChatSocialMessage/ChatSocialMessage.stories.tsx
  31. 2
      web/components/chat/ChatSocialMessage/ChatSocialMessage.tsx
  32. 6
      web/components/chat/ChatSystemMessage/ChatSystemMessage.stories.tsx
  33. 4
      web/components/chat/ChatTextField/ChatTextField.stories.tsx
  34. 2
      web/components/chat/ChatUserBadge/ChatUserBadge.stories.tsx
  35. 12
      web/components/chat/ChatUserMessage/ChatUserMessage.stories.tsx
  36. 2
      web/components/client-table.tsx
  37. 2
      web/components/common/ContentHeader/ContentHeader.stories.tsx
  38. 2
      web/components/common/Logo/Logo.stories.tsx
  39. 2
      web/components/common/UserDropdown/UserDropdown.stories.tsx
  40. 2
      web/components/common/UserDropdown/UserDropdown.tsx
  41. 2
      web/components/layouts/Main.tsx
  42. 2
      web/components/modals/AuthModal/AuthModal.stories.tsx
  43. 4
      web/components/modals/AuthModal/AuthModal.tsx
  44. 0
      web/components/modals/BrowserNotifyModal/BrowserNotifyModal.module.scss
  45. 4
      web/components/modals/BrowserNotifyModal/BrowserNotifyModal.stories.tsx
  46. 0
      web/components/modals/BrowserNotifyModal/BrowserNotifyModal.tsx
  47. 2
      web/components/modals/FatalErrorStateModal/FatalErrorStateModal.stories.tsx
  48. 0
      web/components/modals/FatalErrorStateModal/FatalErrorStateModal.tsx
  49. 4
      web/components/modals/FediAuthModal/FediAuthModal.stories.tsx
  50. 0
      web/components/modals/FediAuthModal/FediAuthModal.tsx
  51. 0
      web/components/modals/FollowModal/FollowModal.module.scss
  52. 4
      web/components/modals/FollowModal/FollowModal.stories.tsx
  53. 0
      web/components/modals/FollowModal/FollowModal.tsx
  54. 4
      web/components/modals/IndieAuthModal/IndieAuthModal.stories.tsx
  55. 2
      web/components/modals/IndieAuthModal/IndieAuthModal.tsx
  56. 2
      web/components/modals/NameChangeModal/NameChangeModal.stories.tsx
  57. 6
      web/components/modals/NameChangeModal/NameChangeModal.tsx
  58. 4
      web/components/other/ban-user-button/ban-user-button.tsx
  59. 10
      web/components/ui/Content/Content.tsx
  60. 2
      web/components/ui/CustomPageContent/CustomPageContent.stories.tsx
  61. 2
      web/components/ui/Footer/Footer.stories.tsx
  62. 2
      web/components/ui/Header/Header.stories.tsx
  63. 2
      web/components/ui/Modal/Modal.stories.tsx
  64. 14
      web/components/ui/NotifyReminderPopup/NotifyReminderPopup.stories.tsx
  65. 4
      web/components/ui/OfflineBanner/OfflineBanner.stories.tsx
  66. 2
      web/components/ui/SocialLinks/SocialLinks.stories.tsx
  67. 2
      web/components/ui/Statusbar/StatusBar.stories.tsx
  68. 3
      web/components/ui/followers/FollowerCollection/FollowerCollection.module.scss
  69. 2
      web/components/ui/followers/FollowerCollection/FollowerCollection.stories.tsx
  70. 6
      web/components/ui/followers/FollowerCollection/FollowerCollection.tsx
  71. 4
      web/components/ui/followers/SingleFollower/SingleFollower.module.scss
  72. 4
      web/components/ui/followers/SingleFollower/SingleFollower.stories.tsx
  73. 4
      web/components/ui/followers/SingleFollower/SingleFollower.tsx
  74. 2
      web/components/user-popover.tsx
  75. 2
      web/components/user-table.tsx
  76. 2
      web/components/video/OwncastPlayer/OwncastPlayer.stories.tsx
  77. 16
      web/components/video/OwncastPlayer/OwncastPlayer.tsx
  78. 0
      web/components/video/VideoPoster/VideoPoster.module.scss
  79. 2
      web/components/video/VideoPoster/VideoPoster.stories.tsx
  80. 2
      web/components/video/VideoPoster/VideoPoster.tsx
  81. 2
      web/pages/embed/video/index.tsx
  82. 2
      web/stories/preview.scss

4
web/.storybook/main.js

@ -3,9 +3,9 @@ module.exports = { @@ -3,9 +3,9 @@ module.exports = {
builder: 'webpack5',
},
stories: [
'../stories/Introduction.stories.mdx',
'../stories/**/*.stories.mdx',
'../.storybook/stories-category-doc-pages/**/*.stories.mdx',
'../stories/**/*.stories.@(js|jsx|ts|tsx)',
'../components/**/*.stories.@(js|jsx|ts|tsx)',
],
addons: [
'@storybook/addon-links',

2
web/.storybook/preview.js

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import '../styles/variables.css';
import '../styles/global.less';
import '../styles/theme.less';
import '../stories/preview.scss';
import './preview.scss';
import { themes } from '@storybook/theming';
import { DocsContainer } from './storybook-theme';

2
web/.storybook/preview.scss

@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
@import '../styles/globals';
@import '../styles/ant-overrides';

4
web/stories/Chat.stories.mdx → web/.storybook/stories-category-doc-pages/Chat.stories.mdx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import { Meta } from '@storybook/addon-docs';
import { Typography } from 'antd';
import UserChatMessage from '../components/chat/ChatUserMessage';
import { ChatMessage } from '../interfaces/chat-message.model';
import UserChatMessage from '../../components/chat/ChatUserMessage';
import { ChatMessage } from '../../interfaces/chat-message.model';
<Meta title="Owncast/Documentation/Chat" />

2
web/stories/Colors.stories.mdx → web/.storybook/stories-category-doc-pages/Colors.stories.mdx

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
import { Canvas, Meta, Story } from '@storybook/addon-docs';
import { Color, ColorRow } from './Color';
import { Color, ColorRow } from '../../components/Color';
<Meta title="owncast/Style Guide/Default Theme" />

16
web/stories/Images.stories.mdx → web/.storybook/stories-category-doc-pages/Images.stories.mdx

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
import { Canvas, Meta, Story } from '@storybook/addon-docs';
import { Image, ImageRow } from './ImageAsset';
import Logo from '../assets/images/logo.svg';
import FediverseColor from '../assets/images/fediverse-color.png';
import FediverseBlack from '../assets/images/fediverse-black.png';
import Moderator from '../assets/images/moderator.svg';
import IndieAuth from '../assets/images/indieauth.png';
import IsBot from '../assets/images/bot.svg';
import { Image, ImageRow } from '../../components/ImageAsset';
import Logo from '../../assets/images/logo.svg';
import FediverseColor from '../../assets/images/fediverse-color.png';
import FediverseBlack from '../../assets/images/fediverse-black.png';
import Moderator from '../../assets/images/moderator.svg';
import IndieAuth from '../../assets/images/indieauth.png';
import IsBot from '../../assets/images/bot.svg';
<Meta title="owncast/Style Guide/Images+Icons" />

0
web/stories/Introduction.stories.mdx → web/.storybook/stories-category-doc-pages/Introduction.stories.mdx

0
web/stories/Typography.stories.mdx → web/.storybook/stories-category-doc-pages/Typography.stories.mdx

0
web/stories/Color.tsx → web/components/Color.tsx

0
web/stories/ImageAsset.tsx → web/components/ImageAsset.tsx

0
web/components/action-buttons/ActionButton.module.scss → web/components/action-buttons/ActionButton/ActionButton.module.scss

2
web/stories/ActionButton.stories.tsx → web/components/action-buttons/ActionButton/ActionButton.stories.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import ActionButton from '../components/action-buttons/ActionButton';
import ActionButton from './ActionButton';
export default {
title: 'owncast/Components/Action Buttons/Single button',

4
web/components/action-buttons/ActionButton.tsx → web/components/action-buttons/ActionButton/ActionButton.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import { Button } from 'antd';
import { useState } from 'react';
import Modal from '../ui/Modal/Modal';
import { ExternalAction } from '../../interfaces/external-action';
import Modal from '../../ui/Modal/Modal';
import { ExternalAction } from '../../../interfaces/external-action';
import s from './ActionButton.module.scss';
interface Props {

0
web/components/action-buttons/ActionButtons.module.scss → web/components/action-buttons/ActionButtonRow/ActionButtonRow.module.scss

4
web/stories/ActionButtonRow.stories.tsx → web/components/action-buttons/ActionButtonRow/ActionButtonRow.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import ActionButtonRow from '../components/action-buttons/ActionButtonRow';
import ActionButton from '../components/action-buttons/ActionButton';
import ActionButtonRow from './ActionButtonRow';
import ActionButton from '../ActionButton/ActionButton';
export default {
title: 'owncast/Components/Action Buttons/Buttons Row',

2
web/components/action-buttons/ActionButtonRow.tsx → web/components/action-buttons/ActionButtonRow/ActionButtonRow.tsx

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
import React from 'react';
import s from './ActionButtons.module.scss';
import s from './ActionButtonRow.module.scss';
interface Props {
children: React.ReactNode[];

4
web/components/action-buttons/FollowButton.tsx

@ -3,8 +3,8 @@ import { HeartFilled } from '@ant-design/icons'; @@ -3,8 +3,8 @@ import { HeartFilled } from '@ant-design/icons';
import { useState } from 'react';
import { useRecoilValue } from 'recoil';
import Modal from '../ui/Modal/Modal';
import FollowModal from '../modals/Follow/FollowModal';
import s from './ActionButton.module.scss';
import FollowModal from '../modals/FollowModal/FollowModal';
import s from './ActionButton/ActionButton.module.scss';
import { clientConfigStateAtom } from '../stores/ClientConfigStore';
import { ClientConfig } from '../../interfaces/client-config.model';

2
web/components/action-buttons/NotifyButton.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import { Button } from 'antd';
import { BellFilled } from '@ant-design/icons';
import s from './ActionButton.module.scss';
import s from './ActionButton/ActionButton.module.scss';
interface Props {
onClick: () => void;

0
web/components/chat/ChatAction/ChatActionMessage.module.scss → web/components/chat/ChatActionMessage/ChatActionMessage.module.scss

4
web/stories/ChatActionMessage.stories.tsx → web/components/chat/ChatActionMessage/ChatActionMessage.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import ChatActionMessage from '../components/chat/ChatAction/ChatActionMessage';
import Mock from './assets/mocks/chatmessage-action.png';
import ChatActionMessage from './ChatActionMessage';
import Mock from '../../../stories/assets/mocks/chatmessage-action.png';
export default {
title: 'owncast/Chat/Messages/Chat action',

0
web/components/chat/ChatAction/ChatActionMessage.tsx → web/components/chat/ChatActionMessage/ChatActionMessage.tsx

4
web/stories/ChatContainer.stories.tsx → web/components/chat/ChatContainer/ChatContainer.stories.tsx

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
import React, { useState } from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { RecoilRoot } from 'recoil';
import ChatContainer from '../components/chat/ChatContainer';
import { ChatMessage } from '../interfaces/chat-message.model';
import ChatContainer from './index';
import { ChatMessage } from '../../../interfaces/chat-message.model';
export default {
title: 'owncast/Chat/Chat messages container',

4
web/stories/ChatJoinMessage.stories.tsx → web/components/chat/ChatJoinMessage/ChatJoinMessage.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import ChatJoinMessage from '../components/chat/ChatJoinMessage/ChatJoinMessage';
import Mock from './assets/mocks/chatmessage-action.png';
import ChatJoinMessage from './ChatJoinMessage';
import Mock from '../../../stories/assets/mocks/chatmessage-action.png';
export default {
title: 'owncast/Chat/Messages/Chat Join',

2
web/stories/ChatModerationActionMenu.stories.tsx → web/components/chat/ChatModerationActionMenu/ChatModerationActionMenu.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { RecoilRoot } from 'recoil';
import ChatModerationActionMenu from '../components/chat/ChatModerationActionMenu/ChatModerationActionMenu';
import ChatModerationActionMenu from './ChatModerationActionMenu';
const mocks = {
mocks: [

2
web/components/chat/ChatModerationActionMenu/ChatModerationActionMenu.tsx

@ -6,7 +6,7 @@ import { @@ -6,7 +6,7 @@ import {
} from '@ant-design/icons';
import { Dropdown, Menu, MenuProps, Space, Modal, message } from 'antd';
import { useState } from 'react';
import ChatModerationDetailsModal from './ChatModerationDetailsModal';
import ChatModerationDetailsModal from '../ChatModerationDetailsModal/ChatModerationDetailsModal';
import s from './ChatModerationActionMenu.module.scss';
import ChatModeration from '../../../services/moderation-service';

0
web/components/chat/ChatModerationActionMenu/ChatModerationDetailsModal.module.scss → web/components/chat/ChatModerationDetailsModal/ChatModerationDetailsModal.module.scss

2
web/stories/ChatModerationDetailsModal.stories.tsx → web/components/chat/ChatModerationDetailsModal/ChatModerationDetailsModal.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { RecoilRoot } from 'recoil';
import ChatModerationDetailsModal from '../components/chat/ChatModerationActionMenu/ChatModerationDetailsModal';
import ChatModerationDetailsModal from './ChatModerationDetailsModal';
const mocks = {
mocks: [

0
web/components/chat/ChatModerationActionMenu/ChatModerationDetailsModal.tsx → web/components/chat/ChatModerationDetailsModal/ChatModerationDetailsModal.tsx

2
web/stories/ChatModeratorNotification.stories.tsx → web/components/chat/ChatModeratorNotification/ChatModeratorNotification.stories.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import ChatModeratorNotification from '../components/chat/ChatModeratorNotification/ChatModeratorNotification';
import ChatModeratorNotification from './ChatModeratorNotification';
export default {
title: 'owncast/Chat/Messages/Moderation Role Notification',

2
web/stories/ChatSocialMessage.stories.tsx → web/components/chat/ChatSocialMessage/ChatSocialMessage.stories.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import ChatSocialMessage from '../components/chat/ChatSocialMessage';
import ChatSocialMessage from './ChatSocialMessage';
export default {
title: 'owncast/Chat/Messages/Social-fediverse event',

2
web/components/chat/ChatSocialMessage.tsx → web/components/chat/ChatSocialMessage/ChatSocialMessage.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
/* eslint-disable react/no-unused-prop-types */
/* eslint-disable @typescript-eslint/no-unused-vars */
import { ChatMessage } from '../../interfaces/chat-message.model';
import { ChatMessage } from '../../../interfaces/chat-message.model';
interface Props {
message: ChatMessage;

6
web/stories/ChatSystemMessage.stories.tsx → web/components/chat/ChatSystemMessage/ChatSystemMessage.stories.tsx

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import ChatSystemMessage from '../components/chat/ChatSystemMessage/ChatSystemMessage';
import Mock from './assets/mocks/chatmessage-system.png';
import { ChatMessage } from '../interfaces/chat-message.model';
import ChatSystemMessage from './ChatSystemMessage';
import Mock from '../../../stories/assets/mocks/chatmessage-system.png';
import { ChatMessage } from '../../../interfaces/chat-message.model';
export default {
title: 'owncast/Chat/Messages/System',

4
web/stories/ChatTextField.stories.tsx → web/components/chat/ChatTextField/ChatTextField.stories.tsx

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { RecoilRoot } from 'recoil';
import ChatTextField from '../components/chat/ChatTextField/ChatTextField';
import Mock from './assets/mocks/chatinput-mock.png';
import ChatTextField from './ChatTextField';
import Mock from '../../../stories/assets/mocks/chatinput-mock.png';
export default {
title: 'owncast/Chat/Input text field',

2
web/stories/ChatUserBadge.stories.tsx → web/components/chat/ChatUserBadge/ChatUserBadge.stories.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import ChatUserBadge from '../components/chat/ChatUserBadge/ChatUserBadge';
import ChatUserBadge from './ChatUserBadge';
export default {
title: 'owncast/Chat/Messages/User Flag',

12
web/stories/ChatUserMessage.stories.tsx → web/components/chat/ChatUserMessage/ChatUserMessage.stories.tsx

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import UserChatMessage from '../components/chat/ChatUserMessage';
import { ChatMessage } from '../interfaces/chat-message.model';
import Mock from './assets/mocks/chatmessage-user.png';
import ChatUserMessage from './index';
import { ChatMessage } from '../../../interfaces/chat-message.model';
import Mock from '../../../stories/assets/mocks/chatmessage-user.png';
export default {
title: 'owncast/Chat/Messages/Standard user',
component: UserChatMessage,
component: ChatUserMessage,
parameters: {
design: {
type: 'image',
@ -19,9 +19,9 @@ export default { @@ -19,9 +19,9 @@ export default {
},
},
},
} as ComponentMeta<typeof UserChatMessage>;
} as ComponentMeta<typeof ChatUserMessage>;
const Template: ComponentStory<typeof UserChatMessage> = args => <UserChatMessage {...args} />;
const Template: ComponentStory<typeof ChatUserMessage> = args => <ChatUserMessage {...args} />;
const standardMessage: ChatMessage = JSON.parse(`{
"type": "CHAT",

2
web/components/client-table.tsx

@ -5,7 +5,7 @@ import { SearchOutlined } from '@ant-design/icons'; @@ -5,7 +5,7 @@ import { SearchOutlined } from '@ant-design/icons';
import { formatDistanceToNow } from 'date-fns';
import { Client } from '../types/chat';
import UserPopover from './user-popover';
import BanUserButton from './ban-user-button';
import BanUserButton from './other/ban-user-button/ban-user-button';
import { formatUAstring } from '../utils/format';
export default function ClientTable({ data }: ClientTableProps) {

2
web/stories/ContentHeader.stories.tsx → web/components/common/ContentHeader/ContentHeader.stories.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import ContentHeader from '../components/common/ContentHeader/ContentHeader';
import ContentHeader from './ContentHeader';
export default {
title: 'owncast/Components/Content Header',

2
web/stories/HeaderLogo.stories.tsx → web/components/common/Logo/Logo.stories.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { OwncastLogo } from '../components/common';
import OwncastLogo from './Logo';
export default {
title: 'owncast/Components/Header Logo',

2
web/stories/UserDropdownMenu.stories.tsx → web/components/common/UserDropdown/UserDropdown.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { RecoilRoot } from 'recoil';
import { UserDropdown } from '../components/common';
import UserDropdown from './UserDropdown';
export default {
title: 'owncast/Components/User settings menu',

2
web/components/common/UserDropdown/UserDropdown.tsx

@ -16,7 +16,7 @@ import { @@ -16,7 +16,7 @@ import {
appStateAtom,
} from '../../stores/ClientConfigStore';
import s from './UserDropdown.module.scss';
import NameChangeModal from '../../modals/NameChangeModal';
import NameChangeModal from '../../modals/NameChangeModal/NameChangeModal';
import { AppStateOptions } from '../../stores/application-state';
import AuthModal from '../../modals/AuthModal/AuthModal';

2
web/components/layouts/Main.tsx

@ -11,7 +11,7 @@ import { @@ -11,7 +11,7 @@ import {
import { Content, Header } from '../ui';
import { ClientConfig } from '../../interfaces/client-config.model';
import { DisplayableError } from '../../types/displayable-error';
import FatalErrorStateModal from '../modals/FatalErrorModal';
import FatalErrorStateModal from '../modals/FatalErrorStateModal/FatalErrorStateModal';
import setupNoLinkReferrer from '../../utils/no-link-referrer';
function Main() {

2
web/stories/AuthModal.stories.tsx → web/components/modals/AuthModal/AuthModal.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { RecoilRoot } from 'recoil';
import AuthModal from '../components/modals/AuthModal/AuthModal';
import AuthModal from './AuthModal';
const Example = () => (
<div>

4
web/components/modals/AuthModal/AuthModal.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import { Tabs } from 'antd';
import { useRecoilValue } from 'recoil';
import IndieAuthModal from '../IndieAuthModal';
import FediAuthModal from '../FediAuthModal';
import IndieAuthModal from '../IndieAuthModal/IndieAuthModal';
import FediAuthModal from '../FediAuthModal/FediAuthModal';
import FediverseIcon from '../../../assets/images/fediverse-black.png';
import IndieAuthIcon from '../../../assets/images/indieauth.png';

0
web/components/modals/BrowserNotify/BrowserNotifyModal.module.scss → web/components/modals/BrowserNotifyModal/BrowserNotifyModal.module.scss

4
web/stories/BrowserNotifyModal.stories.tsx → web/components/modals/BrowserNotifyModal/BrowserNotifyModal.stories.tsx

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { RecoilRoot } from 'recoil';
import BrowserNotifyModal from '../components/modals/BrowserNotify/BrowserNotifyModal';
import BrowserNotifyModalMock from './assets/mocks/notify-modal.png';
import BrowserNotifyModal from './BrowserNotifyModal';
import BrowserNotifyModalMock from '../../../stories/assets/mocks/notify-modal.png';
const Example = () => (
<div>

0
web/components/modals/BrowserNotify/BrowserNotifyModal.tsx → web/components/modals/BrowserNotifyModal/BrowserNotifyModal.tsx

2
web/stories/FatalErrorStateModal.stories.tsx → web/components/modals/FatalErrorStateModal/FatalErrorStateModal.stories.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import FatalErrorStateModal from '../components/modals/FatalErrorModal';
import FatalErrorStateModal from './FatalErrorStateModal';
export default {
title: 'owncast/Modals/Global error state',

0
web/components/modals/FatalErrorModal.tsx → web/components/modals/FatalErrorStateModal/FatalErrorStateModal.tsx

4
web/stories/FediAuthModal.stories.tsx → web/components/modals/FediAuthModal/FediAuthModal.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import FediAuthModal from '../components/modals/FediAuthModal';
import FediAuthModalMock from './assets/mocks/fediauth-modal.png';
import FediAuthModal from './FediAuthModal';
import FediAuthModalMock from '../../../stories/assets/mocks/fediauth-modal.png';
const Example = () => (
<div>

0
web/components/modals/FediAuthModal.tsx → web/components/modals/FediAuthModal/FediAuthModal.tsx

0
web/components/modals/Follow/FollowModal.module.scss → web/components/modals/FollowModal/FollowModal.module.scss

4
web/stories/FollowModal.stories.tsx → web/components/modals/FollowModal/FollowModal.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import FollowModal from '../components/modals/Follow/FollowModal';
import FollowModalMock from './assets/mocks/follow-modal.png';
import FollowModal from './FollowModal';
import FollowModalMock from '../../../stories/assets/mocks/follow-modal.png';
const Example = () => (
<div>

0
web/components/modals/Follow/FollowModal.tsx → web/components/modals/FollowModal/FollowModal.tsx

4
web/stories/IndieAuthModal.stories.tsx → web/components/modals/IndieAuthModal/IndieAuthModal.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import IndieAuthModal from '../components/modals/IndieAuthModal';
import Mock from './assets/mocks/indieauth-modal.png';
import IndieAuthModal from './IndieAuthModal';
import Mock from '../../../stories/assets/mocks/indieauth-modal.png';
const Example = () => (
<div>

2
web/components/modals/IndieAuthModal.tsx → web/components/modals/IndieAuthModal/IndieAuthModal.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import { Alert, Button, Input, Space, Spin, Collapse, Typography } from 'antd';
import React, { useState } from 'react';
import isValidURL from '../../utils/urls';
import isValidURL from '../../../utils/urls';
const { Panel } = Collapse;
const { Link } = Typography;

2
web/stories/NameChangeModal.stories.tsx → web/components/modals/NameChangeModal/NameChangeModal.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { RecoilRoot } from 'recoil';
import NameChangeModal from '../components/modals/NameChangeModal';
import NameChangeModal from './NameChangeModal';
export default {
title: 'owncast/Modals/Name change',

6
web/components/modals/NameChangeModal.tsx → web/components/modals/NameChangeModal/NameChangeModal.tsx

@ -1,13 +1,13 @@ @@ -1,13 +1,13 @@
import React, { CSSProperties, useState } from 'react';
import { useRecoilValue } from 'recoil';
import { Input, Button, Select } from 'antd';
import { MessageType } from '../../interfaces/socket-events';
import WebsocketService from '../../services/websocket-service';
import { MessageType } from '../../../interfaces/socket-events';
import WebsocketService from '../../../services/websocket-service';
import {
websocketServiceAtom,
chatDisplayNameAtom,
chatDisplayColorAtom,
} from '../stores/ClientConfigStore';
} from '../../stores/ClientConfigStore';
const { Option } = Select;

4
web/components/ban-user-button.tsx → web/components/other/ban-user-button/ban-user-button.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import { Modal, Button } from 'antd';
import { ExclamationCircleFilled, QuestionCircleFilled, StopTwoTone } from '@ant-design/icons';
import { USER_ENABLED_TOGGLE, fetchData } from '../utils/apis';
import { User } from '../types/chat';
import { USER_ENABLED_TOGGLE, fetchData } from '../../../utils/apis';
import { User } from '../../../types/chat';
interface BanUserButtonProps {
user: User;

10
web/components/ui/Content/Content.tsx

@ -18,23 +18,23 @@ import { @@ -18,23 +18,23 @@ import {
} from '../../stores/ClientConfigStore';
import { ClientConfig } from '../../../interfaces/client-config.model';
import CustomPageContent from '../CustomPageContent/CustomPageContent';
import OwncastPlayer from '../../video/OwncastPlayer';
import FollowerCollection from '../Followers/FollowersCollection';
import OwncastPlayer from '../../video/OwncastPlayer/OwncastPlayer';
import FollowerCollection from '../followers/FollowerCollection/FollowerCollection';
import s from './Content.module.scss';
import Sidebar from '../Sidebar';
import Footer from '../Footer';
// import ChatContainer from '../../chat/ChatContainer';
// import { ChatMessage } from '../../../interfaces/chat-message.model';
// import ChatTextField from '../../chat/ChatTextField/ChatTextField';
import ActionButtonRow from '../../action-buttons/ActionButtonRow';
import ActionButton from '../../action-buttons/ActionButton';
import ActionButtonRow from '../../action-buttons/ActionButtonRow/ActionButtonRow';
import ActionButton from '../../action-buttons/ActionButton/ActionButton';
import NotifyReminderPopup from '../NotifyReminderPopup/NotifyReminderPopup';
import OfflineBanner from '../OfflineBanner/OfflineBanner';
import { AppStateOptions } from '../../stores/application-state';
import FollowButton from '../../action-buttons/FollowButton';
import NotifyButton from '../../action-buttons/NotifyButton';
import Modal from '../Modal/Modal';
import BrowserNotifyModal from '../../modals/BrowserNotify/BrowserNotifyModal';
import BrowserNotifyModal from '../../modals/BrowserNotifyModal/BrowserNotifyModal';
import ContentHeader from '../../common/ContentHeader';
import { ServerStatus } from '../../../interfaces/server-status.model';
import { StatusBar } from '..';

2
web/stories/CustomPageContent.stories.tsx → web/components/ui/CustomPageContent/CustomPageContent.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
/* eslint-disable no-useless-escape */
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import CustomPageContent from '../components/ui/CustomPageContent/CustomPageContent';
import CustomPageContent from './CustomPageContent';
export default {
title: 'owncast/Components/Custom page content',

2
web/stories/Footer.stories.tsx → web/components/ui/Footer/Footer.stories.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import Footer from '../components/ui/Footer/Footer';
import Footer from './Footer';
export default {
title: 'owncast/Layout/Footer',

2
web/stories/Header.stories.tsx → web/components/ui/Header/Header.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { RecoilRoot } from 'recoil';
import Header from '../components/ui/Header/Header';
import Header from './Header';
export default {
title: 'owncast/Layout/Header',

2
web/stories/Modal.stories.tsx → web/components/ui/Modal/Modal.stories.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import Modal from '../components/ui/Modal/Modal';
import Modal from './Modal';
export default {
title: 'owncast/Modals/Container',

14
web/stories/NotifyReminder.stories.tsx → web/components/ui/NotifyReminderPopup/NotifyReminderPopup.stories.tsx

@ -1,20 +1,20 @@ @@ -1,20 +1,20 @@
/* eslint-disable no-alert */
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import NotifyReminder from '../components/ui/NotifyReminderPopup/NotifyReminderPopup';
import Mock from './assets/mocks/notify-popup.png';
import NotifyReminderPopup from './NotifyReminderPopup';
import Mock from '../../../stories/assets/mocks/notify-popup.png';
const Example = args => (
<div style={{ margin: '20px', marginTop: '130px' }}>
<NotifyReminder {...args}>
<NotifyReminderPopup {...args}>
<button type="button">notify button</button>
</NotifyReminder>
</NotifyReminderPopup>
</div>
);
export default {
title: 'owncast/Components/Notify Reminder',
component: NotifyReminder,
component: NotifyReminderPopup,
parameters: {
design: {
type: 'image',
@ -27,9 +27,9 @@ Clicking it will make the notification modal display. Clicking the "X" will hide @@ -27,9 +27,9 @@ Clicking it will make the notification modal display. Clicking the "X" will hide
},
},
},
} as ComponentMeta<typeof NotifyReminder>;
} as ComponentMeta<typeof NotifyReminderPopup>;
const Template: ComponentStory<typeof NotifyReminder> = args => <Example {...args} />;
const Template: ComponentStory<typeof NotifyReminderPopup> = args => <Example {...args} />;
export const Active = Template.bind({});
Active.args = {

4
web/stories/OfflineBanner.stories.tsx → web/components/ui/OfflineBanner/OfflineBanner.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import OfflineBanner from '../components/ui/OfflineBanner/OfflineBanner';
import OfflineState from './assets/mocks/offline-state.png';
import OfflineBanner from './OfflineBanner';
import OfflineState from '../../../stories/assets/mocks/offline-state.png';
export default {
title: 'owncast/Layout/Offline Banner',

2
web/stories/SocialLinks.stories.tsx → web/components/ui/SocialLinks/SocialLinks.stories.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import SocialLinks from '../components/ui/SocialLinks/SocialLinks';
import SocialLinks from './SocialLinks';
export default {
title: 'owncast/Components/Social links',

2
web/stories/StatusBar.stories.tsx → web/components/ui/Statusbar/StatusBar.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { subHours } from 'date-fns';
import Statusbar from '../components/ui/Statusbar/Statusbar';
import Statusbar from './Statusbar';
export default {
title: 'owncast/Player/Status bar',

3
web/components/ui/followers/FollowerCollection/FollowerCollection.module.scss

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
.followers {
width: 100%;
}

2
web/stories/Followercollection.stories.tsx → web/components/ui/followers/FollowerCollection/FollowerCollection.stories.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import FollowerCollection from '../components/ui/Followers/FollowersCollection';
import FollowerCollection from './FollowerCollection';
export default {
title: 'owncast/Components/Followers/Followers collection',

6
web/components/ui/Followers/FollowersCollection.tsx → web/components/ui/followers/FollowerCollection/FollowerCollection.tsx

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
import { useEffect, useState } from 'react';
import { Col, Pagination, Row } from 'antd';
import { Follower } from '../../../interfaces/follower';
import SingleFollower from './Follower';
import s from './Followers.module.scss';
import { Follower } from '../../../../interfaces/follower';
import SingleFollower from '../SingleFollower/SingleFollower';
import s from '../SingleFollower/SingleFollower.module.scss';
export default function FollowerCollection() {
const ENDPOINT = '/api/followers';

4
web/components/ui/Followers/Followers.module.scss → web/components/ui/followers/SingleFollower/SingleFollower.module.scss

@ -31,7 +31,3 @@ @@ -31,7 +31,3 @@
height: 100%;
}
}
.followers {
width: 100%;
}

4
web/stories/Follower.stories.tsx → web/components/ui/followers/SingleFollower/SingleFollower.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import SingleFollower from '../components/ui/Followers/Follower';
import SingleFollowerMock from './assets/mocks/single-follower.png';
import SingleFollower from './SingleFollower';
import SingleFollowerMock from '../../../../stories/assets/mocks/single-follower.png';
export default {
title: 'owncast/Components/Followers/Single Follower',

4
web/components/ui/Followers/Follower.tsx → web/components/ui/followers/SingleFollower/SingleFollower.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import { Avatar, Col, Row } from 'antd';
import React from 'react';
import { Follower } from '../../../interfaces/follower';
import s from './Followers.module.scss';
import { Follower } from '../../../../interfaces/follower';
import s from './SingleFollower.module.scss';
interface Props {
follower: Follower;

2
web/components/user-popover.tsx

@ -6,7 +6,7 @@ import formatDistanceToNow from 'date-fns/formatDistanceToNow'; @@ -6,7 +6,7 @@ import formatDistanceToNow from 'date-fns/formatDistanceToNow';
import format from 'date-fns/format';
import { uniq } from 'lodash';
import BlockUserbutton from './ban-user-button';
import BlockUserbutton from './other/ban-user-button/ban-user-button';
import ModeratorUserbutton from './moderator-user-button';
import { User, UserConnectionInfo } from '../types/chat';

2
web/components/user-table.tsx

@ -3,7 +3,7 @@ import format from 'date-fns/format'; @@ -3,7 +3,7 @@ import format from 'date-fns/format';
import { SortOrder } from 'antd/lib/table/interface';
import { User } from '../types/chat';
import UserPopover from './user-popover';
import BanUserButton from './ban-user-button';
import BanUserButton from './other/ban-user-button/ban-user-button';
export function formatDisplayDate(date: string | Date) {
return format(new Date(date), 'MMM d H:mma');

2
web/stories/Video.stories.tsx → web/components/video/OwncastPlayer/OwncastPlayer.stories.tsx

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import { RecoilRoot } from 'recoil';
import OwncastPlayer from '../components/video/OwncastPlayer';
import OwncastPlayer from './OwncastPlayer';
const streams = {
DemoServer: `https://watch.owncast.online/hls/stream.m3u8`,

16
web/components/video/OwncastPlayer.tsx → web/components/video/OwncastPlayer/OwncastPlayer.tsx

@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
import React, { useEffect } from 'react';
import { useRecoilState, useRecoilValue } from 'recoil';
import { useHotkeys } from 'react-hotkeys-hook';
import VideoJS from './player';
import ViewerPing from './viewer-ping';
import VideoPoster from './VideoPoster';
import { getLocalStorage, setLocalStorage } from '../../utils/localStorage';
import { isVideoPlayingAtom, clockSkewAtom } from '../stores/ClientConfigStore';
import PlaybackMetrics from './metrics/playback';
import createVideoSettingsMenuButton from './settings-menu';
import LatencyCompensator from './latencyCompensator';
import VideoJS from '../player';
import ViewerPing from '../viewer-ping';
import VideoPoster from '../VideoPoster/VideoPoster';
import { getLocalStorage, setLocalStorage } from '../../../utils/localStorage';
import { isVideoPlayingAtom, clockSkewAtom } from '../../stores/ClientConfigStore';
import PlaybackMetrics from '../metrics/playback';
import createVideoSettingsMenuButton from '../settings-menu';
import LatencyCompensator from '../latencyCompensator';
const VIDEO_CONFIG_URL = '/api/video/variants';
const PLAYER_VOLUME = 'owncast_volume';

0
web/components/video/VideoPoster.module.scss → web/components/video/VideoPoster/VideoPoster.module.scss

2
web/stories/VideoPoster.stories.tsx → web/components/video/VideoPoster/VideoPoster.stories.tsx

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import VideoPoster from '../components/video/VideoPoster';
import VideoPoster from './VideoPoster';
export default {
title: 'owncast/Player/Video poster',

2
web/components/video/VideoPoster.tsx → web/components/video/VideoPoster/VideoPoster.tsx

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
import { useEffect, useState } from 'react';
import CrossfadeImage from '../ui/CrossfadeImage/CrossfadeImage';
import CrossfadeImage from '../../ui/CrossfadeImage/CrossfadeImage';
import s from './VideoPoster.module.scss';
const REFRESH_INTERVAL = 20_000;

2
web/pages/embed/video/index.tsx

@ -8,7 +8,7 @@ import { @@ -8,7 +8,7 @@ import {
} from '../../../components/stores/ClientConfigStore';
import OfflineBanner from '../../../components/ui/OfflineBanner/OfflineBanner';
import Statusbar from '../../../components/ui/Statusbar/Statusbar';
import OwncastPlayer from '../../../components/video/OwncastPlayer';
import OwncastPlayer from '../../../components/video/OwncastPlayer/OwncastPlayer';
import { ClientConfig } from '../../../interfaces/client-config.model';
import { ServerStatus } from '../../../interfaces/server-status.model';

2
web/stories/preview.scss

@ -1,2 +0,0 @@ @@ -1,2 +0,0 @@
@import '../styles/globals.scss';
@import '../styles/ant-overrides.scss';
Loading…
Cancel
Save