Files
app/frontend/src/components/Common/Logo.tsx
T
Melvin StroblandClaude Opus 5 5988822053 De-template the frontend and apply the design system
- FastAPI branding replaced throughout: title, favicon, logo (now the org/
  brand SVGs), footer links, route titles; workspace package renamed
- shadcn primitives restyled to the component radius/shadow map: pill
  controls, rounded-lg surfaces, shadow-e1/e2/e3
- floating frosted AppSidebar over a bg-card content region
- theme storage key aligned with the pre-paint script, MotionConfig added
- scripts/capture-screenshots.mjs backs the root 'make verify'

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 15:33:56 +02:00

61 lines
1.4 KiB
TypeScript

import { Link } from "@tanstack/react-router"
import { useTheme } from "@/components/theme-provider"
import { cn } from "@/lib/utils"
import logoDark from "/assets/images/fluksio-dark.svg"
import logo from "/assets/images/fluksio-light.svg"
interface LogoProps {
variant?: "full" | "icon" | "responsive"
className?: string
asLink?: boolean
}
export function Logo({
variant = "full",
className,
asLink = true,
}: LogoProps) {
const { resolvedTheme } = useTheme()
const src = resolvedTheme === "dark" ? logoDark : logo
// The mark and the wordmark live in the same SVG, so the collapsed sidebar
// shows the same asset cropped to a square rather than a separate icon file.
const content =
variant === "responsive" ? (
<>
<img
src={src}
alt="Fluksio"
className={cn(
"h-6 w-auto group-data-[collapsible=icon]:hidden",
className,
)}
/>
<img
src={src}
alt="Fluksio"
className={cn(
"size-5 object-contain hidden group-data-[collapsible=icon]:block",
className,
)}
/>
</>
) : (
<img
src={src}
alt="Fluksio"
className={cn(
variant === "full" ? "h-6 w-auto" : "size-5 object-contain",
className,
)}
/>
)
if (!asLink) {
return content
}
return <Link to="/">{content}</Link>
}