Skip to content

Commit 709a868

Browse files
feat(brand): use /logo.svg for the wolf mark + document favicon drop-in
WolfMark now loads public/logo.svg (your provided SVG mark) with the built-in SVG fallback when absent. Favicon goes at apps/web/src/app/favicon.ico. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent c85f966 commit 709a868

2 files changed

Lines changed: 10 additions & 8 deletions

File tree

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,11 @@ Timer config shape:
167167

168168
### Adding your logo
169169

170-
Drop your wolf mark at `apps/web/public/wolf_mark.png` and it is used
171-
automatically across the overlays and panel. If the file is missing, a built-in
172-
brand SVG mark is shown instead, so nothing ever renders broken.
170+
Drop your wolf mark (head only) at `apps/web/public/logo.svg` and it is used
171+
automatically across the overlays and panel. Put your favicon at
172+
`apps/web/src/app/favicon.ico` (Next serves it automatically). If `logo.svg` is
173+
missing, a built-in brand SVG mark is shown instead, so nothing ever renders
174+
broken.
173175

174176
## Tech Stack
175177

apps/web/src/components/wolf-mark.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,25 @@ import { useState } from "react";
55
/**
66
* The Wolfathon mark.
77
*
8-
* Prefers your real logo at `public/wolf_mark.png` (drop it in and it's used
8+
* Prefers your real logo at `public/logo.svg` (drop it in and it's used
99
* everywhere automatically). If that file is missing, it falls back to a
1010
* built-in brand SVG so nothing ever renders broken — handy on the OBS overlay.
1111
*
1212
* Size is controlled entirely by `className` (e.g. `size-8` or `size-[4cqw]`).
1313
*/
1414
export function WolfMark({ className }: { className?: string }) {
15-
const [usePng, setUsePng] = useState(true);
15+
const [useLogo, setUseLogo] = useState(true);
1616

1717
return (
1818
<span className={className} role="img" aria-label="Wolfathon">
19-
{usePng ? (
19+
{useLogo ? (
2020
// Plain <img> (not next/image) so a missing file degrades gracefully.
2121
// eslint-disable-next-line @next/next/no-img-element
2222
<img
23-
src="/wolf_mark.png"
23+
src="/logo.svg"
2424
alt=""
2525
className="h-full w-full object-contain"
26-
onError={() => setUsePng(false)}
26+
onError={() => setUseLogo(false)}
2727
/>
2828
) : (
2929
<WolfMarkSvg />

0 commit comments

Comments
 (0)