diff --git a/web/components/common/Logo/Logo.module.scss b/web/components/common/Logo/Logo.module.scss
new file mode 100644
index 0000000000..c5d1c31eee
--- /dev/null
+++ b/web/components/common/Logo/Logo.module.scss
@@ -0,0 +1,28 @@
+.root {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: max-content;
+ svg {
+ width: 50px;
+ height: 50px;
+ }
+}
+
+.contrast {
+ padding: 5px;
+ border-radius: 50%;
+ background-color: var(--color-owncast-gray-100);
+ svg {
+ width: 40px;
+ height: 40px;
+ }
+}
+
+.simple {
+ background-color: transparent;
+ svg {
+ width: 50px;
+ height: 50px;
+ }
+}
diff --git a/web/components/common/Logo/Logo.tsx b/web/components/common/Logo/Logo.tsx
new file mode 100644
index 0000000000..bdf98d376d
--- /dev/null
+++ b/web/components/common/Logo/Logo.tsx
@@ -0,0 +1,175 @@
+import React from 'react';
+import cn from 'classnames';
+import s from './Logo.module.scss'
+
+interface Props {
+ variant: 'simple' | 'contrast'
+}
+
+export default function Logo({variant = 'simple'}: Props) {
+ const rootClassName = cn(
+ s.root,
+ {
+ [s.simple]: variant === 'simple',
+ [s.contrast]: variant === 'contrast',
+ }
+ )
+
+ return (
+
+
+
+ );
+}
diff --git a/web/components/common/Logo/index.ts b/web/components/common/Logo/index.ts
new file mode 100644
index 0000000000..a5be7785e1
--- /dev/null
+++ b/web/components/common/Logo/index.ts
@@ -0,0 +1 @@
+export { default } from './Logo';
diff --git a/web/components/common/index.ts b/web/components/common/index.ts
index b3a78beabb..a4c62b7458 100644
--- a/web/components/common/index.ts
+++ b/web/components/common/index.ts
@@ -1 +1,2 @@
export { default as UserDropdown } from './UserDropdown'
+export { default as OwncastLogo } from './Logo'
diff --git a/web/components/logo.tsx b/web/components/logo.tsx
deleted file mode 100644
index eb2721a12a..0000000000
--- a/web/components/logo.tsx
+++ /dev/null
@@ -1,159 +0,0 @@
-import React from 'react';
-
-export default function Logo() {
- return (
-
- );
-}
diff --git a/web/components/main-layout.tsx b/web/components/main-layout.tsx
index bebec70c31..fd80e3a0ea 100644
--- a/web/components/main-layout.tsx
+++ b/web/components/main-layout.tsx
@@ -21,7 +21,7 @@ import classNames from 'classnames';
import { upgradeVersionAvailable } from '../utils/apis';
import { parseSecondsToDurationString } from '../utils/format';
-import OwncastLogo from './logo';
+import { OwncastLogo } from './common';
import { ServerStatusContext } from '../utils/server-status-context';
import { AlertMessageContext } from '../utils/alert-message-context';
diff --git a/web/components/ui/Header/Header.module.scss b/web/components/ui/Header/Header.module.scss
index 5dd3678b42..0d9078ac13 100644
--- a/web/components/ui/Header/Header.module.scss
+++ b/web/components/ui/Header/Header.module.scss
@@ -7,9 +7,6 @@
.logo {
display: flex;
align-items: center;
- svg {
- height: 60px;
- }
span {
margin-left: 1rem;
font-size: 1.7rem;
diff --git a/web/components/ui/Header/Header.tsx b/web/components/ui/Header/Header.tsx
index 8ce96fb556..1f22680831 100644
--- a/web/components/ui/Header/Header.tsx
+++ b/web/components/ui/Header/Header.tsx
@@ -1,6 +1,5 @@
import { Layout } from 'antd';
-import { UserDropdown } from '../../common';
-import Logo from '../../logo';
+import { OwncastLogo, UserDropdown } from '../../common';
import s from './Header.module.scss';
const { Header } = Layout;
@@ -13,7 +12,7 @@ export default function HeaderComponent({ name = 'Your stream title' }: Props) {
return (
-
+
{name}
diff --git a/web/stories/PageLogo.stories.tsx b/web/stories/PageLogo.stories.tsx
index 24c53a3193..5934eef4e2 100644
--- a/web/stories/PageLogo.stories.tsx
+++ b/web/stories/PageLogo.stories.tsx
@@ -1,15 +1,15 @@
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
-import PageLogo from '../components/PageLogo';
+import { OwncastLogo } from '../components/common';
export default {
- title: 'owncast/Page Logo',
- component: PageLogo,
+ title: 'owncast/Logo',
+ component: OwncastLogo,
parameters: {},
-} as ComponentMeta;
+} as ComponentMeta;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
-const Template: ComponentStory = args => ;
+const Template: ComponentStory = args => ;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export const Logo = Template.bind({});