- 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>
61 lines
1.4 KiB
TypeScript
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>
|
|
}
|