mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
refactor(branding): extract GemLogo to shared component and add to About section
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
export function GemLogo({ className = "h-6 w-6" }: { className?: string }) {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
className={className}
|
||||||
|
viewBox="0 0 140 140"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
aria-hidden="true"
|
||||||
|
>
|
||||||
|
<polygon points="70,16 100,48 70,60 40,48" fill="currentColor" opacity="1" />
|
||||||
|
<polygon points="40,48 70,60 70,124 22,60" fill="currentColor" opacity="0.7" />
|
||||||
|
<polygon points="100,48 70,60 70,124 118,60" fill="currentColor" opacity="0.5" />
|
||||||
|
<polygon points="70,16 40,48 22,60" fill="currentColor" opacity="0.85" />
|
||||||
|
<polygon points="70,16 100,48 118,60" fill="currentColor" opacity="0.65" />
|
||||||
|
<polygon
|
||||||
|
points="70,16 118,60 70,124 22,60"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeWidth="2.5"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="48"
|
||||||
|
x2="100"
|
||||||
|
y2="48"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeWidth="1.5"
|
||||||
|
opacity="0.4"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -5,46 +5,13 @@ import { useMobile } from "@/hooks/use-mobile";
|
|||||||
import { apiGet } from "@/lib/api";
|
import { apiGet } from "@/lib/api";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { Dropzone } from "../common/dropzone";
|
import { Dropzone } from "../common/dropzone";
|
||||||
|
import { GemLogo } from "../common/gem-logo";
|
||||||
import { HelpDialog } from "../help/help-dialog";
|
import { HelpDialog } from "../help/help-dialog";
|
||||||
import { SettingsDialog } from "../settings/settings-dialog";
|
import { SettingsDialog } from "../settings/settings-dialog";
|
||||||
import { Footer } from "./footer";
|
import { Footer } from "./footer";
|
||||||
import { Sidebar } from "./sidebar";
|
import { Sidebar } from "./sidebar";
|
||||||
import { ToolPanel } from "./tool-panel";
|
import { ToolPanel } from "./tool-panel";
|
||||||
|
|
||||||
function GemLogo({ className = "h-6 w-6" }: { className?: string }) {
|
|
||||||
return (
|
|
||||||
<svg
|
|
||||||
className={className}
|
|
||||||
viewBox="0 0 140 140"
|
|
||||||
fill="none"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<polygon points="70,16 100,48 70,60 40,48" fill="currentColor" opacity="1" />
|
|
||||||
<polygon points="40,48 70,60 70,124 22,60" fill="currentColor" opacity="0.7" />
|
|
||||||
<polygon points="100,48 70,60 70,124 118,60" fill="currentColor" opacity="0.5" />
|
|
||||||
<polygon points="70,16 40,48 22,60" fill="currentColor" opacity="0.85" />
|
|
||||||
<polygon points="70,16 100,48 118,60" fill="currentColor" opacity="0.65" />
|
|
||||||
<polygon
|
|
||||||
points="70,16 118,60 70,124 22,60"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth="2.5"
|
|
||||||
strokeLinejoin="round"
|
|
||||||
/>
|
|
||||||
<line
|
|
||||||
x1="40"
|
|
||||||
y1="48"
|
|
||||||
x2="100"
|
|
||||||
y2="48"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth="1.5"
|
|
||||||
opacity="0.4"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
interface AppLayoutProps {
|
interface AppLayoutProps {
|
||||||
children?: React.ReactNode;
|
children?: React.ReactNode;
|
||||||
showToolPanel?: boolean;
|
showToolPanel?: boolean;
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import {
|
|||||||
import { useCallback, useEffect, useMemo, useState } from "react";
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
||||||
import { apiDelete, apiGet, apiPost, apiPut, clearToken } from "@/lib/api";
|
import { apiDelete, apiGet, apiPost, apiPut, clearToken } from "@/lib/api";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
|
import { GemLogo } from "../common/gem-logo";
|
||||||
|
|
||||||
interface SettingsDialogProps {
|
interface SettingsDialogProps {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@@ -1729,6 +1730,7 @@ function AboutSection() {
|
|||||||
|
|
||||||
<div className="p-4 rounded-lg border border-border bg-muted/20 space-y-3">
|
<div className="p-4 rounded-lg border border-border bg-muted/20 space-y-3">
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
|
<GemLogo className="h-8 w-8 text-primary" />
|
||||||
<div className="text-2xl font-bold text-foreground">
|
<div className="text-2xl font-bold text-foreground">
|
||||||
Stirling <span className="text-primary">Image</span>
|
Stirling <span className="text-primary">Image</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user