Create AeThex OS Logo Component
cgen-4845a911b17d4f80b9bce1edbec367f4
This commit is contained in:
parent
57491d84d2
commit
4daa6b797a
1 changed files with 139 additions and 0 deletions
139
client/components/AeThexOSLogo.tsx
Normal file
139
client/components/AeThexOSLogo.tsx
Normal file
|
|
@ -0,0 +1,139 @@
|
||||||
|
import { cn } from "@/lib/utils";
|
||||||
|
|
||||||
|
interface AeThexOSLogoProps {
|
||||||
|
size?: "sm" | "md" | "lg" | "xl";
|
||||||
|
animate?: boolean;
|
||||||
|
className?: string;
|
||||||
|
variant?: "default" | "light" | "header" | "footer";
|
||||||
|
}
|
||||||
|
|
||||||
|
const GRADIENTS = {
|
||||||
|
default: { id: "osGradient", stops: [{ offset: "0%", color: "#a78bfa" }, { offset: "100%", color: "#60a5fa" }] },
|
||||||
|
light: { id: "osGradientLight", stops: [{ offset: "0%", color: "#e9d5ff" }, { offset: "100%", color: "#bfdbfe" }] },
|
||||||
|
header: { id: "osGradientHeader", stops: [{ offset: "0%", color: "#a78bfa" }, { offset: "100%", color: "#60a5fa" }] },
|
||||||
|
footer: { id: "osGradientFooter", stops: [{ offset: "0%", color: "#818cf8" }, { offset: "100%", color: "#a78bfa" }] },
|
||||||
|
};
|
||||||
|
|
||||||
|
const SIZES = {
|
||||||
|
sm: "h-6 w-6",
|
||||||
|
md: "h-10 w-10",
|
||||||
|
lg: "h-16 w-16",
|
||||||
|
xl: "h-24 w-24",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function AeThexOSLogo({
|
||||||
|
size = "md",
|
||||||
|
animate = false,
|
||||||
|
className,
|
||||||
|
variant = "default",
|
||||||
|
}: AeThexOSLogoProps) {
|
||||||
|
const gradient = GRADIENTS[variant];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
className={cn(
|
||||||
|
SIZES[size],
|
||||||
|
animate && "transition-all duration-300 hover:scale-110",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
viewBox="0 0 64 64"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
>
|
||||||
|
<defs>
|
||||||
|
<linearGradient
|
||||||
|
id={gradient.id}
|
||||||
|
x1="0%"
|
||||||
|
y1="0%"
|
||||||
|
x2="100%"
|
||||||
|
y2="100%"
|
||||||
|
>
|
||||||
|
{gradient.stops.map((stop, idx) => (
|
||||||
|
<stop key={idx} offset={stop.offset} stopColor={stop.color} />
|
||||||
|
))}
|
||||||
|
</linearGradient>
|
||||||
|
<filter id="glow">
|
||||||
|
<feGaussianBlur stdDeviation="1.5" result="coloredBlur" />
|
||||||
|
<feMerge>
|
||||||
|
<feMergeNode in="coloredBlur" />
|
||||||
|
<feMergeNode in="SourceGraphic" />
|
||||||
|
</feMerge>
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
{/* OS Window Frame */}
|
||||||
|
<rect
|
||||||
|
x="6"
|
||||||
|
y="6"
|
||||||
|
width="52"
|
||||||
|
height="52"
|
||||||
|
rx="6"
|
||||||
|
fill="none"
|
||||||
|
stroke={`url(#${gradient.id})`}
|
||||||
|
strokeWidth="2"
|
||||||
|
opacity="0.8"
|
||||||
|
/>
|
||||||
|
|
||||||
|
{/* Title Bar */}
|
||||||
|
<rect
|
||||||
|
x="6"
|
||||||
|
y="6"
|
||||||
|
width="52"
|
||||||
|
height="12"
|
||||||
|
rx="6"
|
||||||
|
fill={`url(#${gradient.id})`}
|
||||||
|
opacity="0.15"
|
||||||
|
/>
|
||||||
|
<line
|
||||||
|
x1="6"
|
||||||
|
y1="18"
|
||||||
|
x2="58"
|
||||||
|
y2="18"
|
||||||
|
stroke={`url(#${gradient.id})`}
|
||||||
|
strokeWidth="1"
|
||||||
|
opacity="0.3"
|
||||||
|
/>
|
||||||
|
|
||||||
|
{/* System Dots */}
|
||||||
|
<circle cx="12" cy="12" r="1.5" fill="#a78bfa" opacity="0.7" />
|
||||||
|
<circle cx="18" cy="12" r="1.5" fill="#60a5fa" opacity="0.7" />
|
||||||
|
<circle cx="24" cy="12" r="1.5" fill="#c4b5fd" opacity="0.7" />
|
||||||
|
|
||||||
|
{/* Central OS Symbol */}
|
||||||
|
<g transform="translate(32, 35)">
|
||||||
|
<line
|
||||||
|
x1="-6"
|
||||||
|
y1="6"
|
||||||
|
x2="0"
|
||||||
|
y2="-8"
|
||||||
|
stroke={`url(#${gradient.id})`}
|
||||||
|
strokeWidth="2"
|
||||||
|
strokeLinecap="round"
|
||||||
|
filter="url(#glow)"
|
||||||
|
/>
|
||||||
|
<line
|
||||||
|
x1="6"
|
||||||
|
y1="6"
|
||||||
|
x2="0"
|
||||||
|
y2="-8"
|
||||||
|
stroke={`url(#${gradient.id})`}
|
||||||
|
strokeWidth="2"
|
||||||
|
strokeLinecap="round"
|
||||||
|
filter="url(#glow)"
|
||||||
|
/>
|
||||||
|
<line
|
||||||
|
x1="-3"
|
||||||
|
y1="0"
|
||||||
|
x2="3"
|
||||||
|
y2="0"
|
||||||
|
stroke={`url(#${gradient.id})`}
|
||||||
|
strokeWidth="2"
|
||||||
|
strokeLinecap="round"
|
||||||
|
filter="url(#glow)"
|
||||||
|
/>
|
||||||
|
<circle cx="-6" cy="6" r="1.5" fill="#a78bfa" opacity="0.9" />
|
||||||
|
<circle cx="6" cy="6" r="1.5" fill="#60a5fa" opacity="0.9" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue