TypeScript 97.6%
SQL 1.4%
JavaScript 0.5%
1import { cn } from "@/lib/utils";23/** Spinza mark: a ring split by a diagonal spin stroke — original, drawn inline. */4export function SpinzaMark({ className, glow = true }: { className?: string; glow?: boolean }) {5 return (6 <svg viewBox="0 0 64 64" className={cn("h-8 w-8", className)} aria-hidden>7 <defs>8 <linearGradient id="spz-g" x1="0" y1="0" x2="1" y2="1">9 <stop offset="0" stopColor="#f3e2ad" />10 <stop offset="0.5" stopColor="#c9a961" />11 <stop offset="1" stopColor="#8a6d2e" />12 </linearGradient>13 {glow ? (14 <filter id="spz-glow" x="-30%" y="-30%" width="160%" height="160%">15 <feGaussianBlur stdDeviation="2.2" result="b" />16 <feMerge>17 <feMergeNode in="b" />18 <feMergeNode in="SourceGraphic" />19 </feMerge>20 </filter>21 ) : null}22 </defs>23 <g filter={glow ? "url(#spz-glow)" : undefined}>24 <circle cx="32" cy="32" r="24" fill="none" stroke="url(#spz-g)" strokeWidth="5" strokeDasharray="112 40" strokeLinecap="round" transform="rotate(-50 32 32)" />25 <path d="M20 40 L44 24" stroke="url(#spz-g)" strokeWidth="6" strokeLinecap="round" />26 <circle cx="44" cy="24" r="4.5" fill="#f3e2ad" />27 </g>28 </svg>29 );30}3132export function SpinzaWordmark({ className, size = "md" }: { className?: string; size?: "sm" | "md" | "lg" }) {33 const s = { sm: "text-lg", md: "text-xl", lg: "text-3xl" }[size];34 return (35 <span className={cn("inline-flex items-center gap-2 font-semibold tracking-[-0.02em]", s, className)}>36 <SpinzaMark className={size === "lg" ? "h-10 w-10" : size === "sm" ? "h-6 w-6" : "h-7 w-7"} />37 <span>38 SPIN<span className="text-accent">ZA</span>39 </span>40 </span>41 );42}43