diff options
Diffstat (limited to 'src/ui/components/Logo.tsx')
| -rw-r--r-- | src/ui/components/Logo.tsx | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/ui/components/Logo.tsx b/src/ui/components/Logo.tsx new file mode 100644 index 0000000..a9ec9be --- /dev/null +++ b/src/ui/components/Logo.tsx | |||
| @@ -0,0 +1,34 @@ | |||
| 1 | import type { HTMLAttributes } from "corvos/plugins/jsx.ts"; | ||
| 2 | |||
| 3 | import site from "@/corvos.config.ts"; | ||
| 4 | |||
| 5 | export type Props = HTMLAttributes<"a"> & { | ||
| 6 | size?: "sm" | "lg"; | ||
| 7 | variant?: "static-black" | "static-white"; | ||
| 8 | }; | ||
| 9 | |||
| 10 | export const Logo = async ({ size, variant, class: cls, ...props }: Props) => { | ||
| 11 | const symbols = await site.load("assets/symbols.svg"); | ||
| 12 | |||
| 13 | return ( | ||
| 14 | <a | ||
| 15 | aria-label="Home" | ||
| 16 | class:list={[ | ||
| 17 | "c-logo", | ||
| 18 | { | ||
| 19 | [`c-logo--${size}`]: size, | ||
| 20 | [`c-logo--${variant}`]: variant, | ||
| 21 | }, | ||
| 22 | cls, | ||
| 23 | ]} | ||
| 24 | href={site.$.url()} | ||
| 25 | rel="home" | ||
| 26 | {...props} | ||
| 27 | > | ||
| 28 | <svg class="c-logo__img"> | ||
| 29 | <title>Logo</title> | ||
| 30 | <use href={`${symbols.url}#logo${size === "sm" ? "-sm" : ""}`} /> | ||
| 31 | </svg> | ||
| 32 | </a> | ||
| 33 | ); | ||
| 34 | }; | ||
