Files
kakeibo/frontend/src/components/logo.tsx
T
suphicakir f9be08114d feat(arayüz): logo ve uygulama ikonları
- Logo: indigo zemin, spiral defter ve ¥ (frontend/brand/*.svg)
- scripts/icons.sh (npm run icons): favicon (svg/ico), PWA 192/512, maskable, Apple touch icon, Tauri 1024
- Logo bileşeni (components/logo.tsx)
- index.html: ikon bağlantıları, theme-color, açıklama

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 00:30:39 +03:00

68 lines
2.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { useId } from 'react'
import { cn } from '@/lib/utils'
/**
* Kakeibo logosu (kaynak: `frontend/brand/logo.svg` — ikisi aynı tutulmalı).
* `withText` ile yanında "Kakeibo" yazısı gösterilir.
*/
export function Logo({
size = 32,
withText = false,
className,
}: {
size?: number
withText?: boolean
className?: string
}) {
// Sayfada birden fazla logo olursa gradient kimlikleri çakışmasın
const gradientId = useId()
return (
<span className={cn('inline-flex items-center gap-2.5', className)}>
<svg
viewBox="0 0 512 512"
width={size}
height={size}
role="img"
aria-label={withText ? undefined : 'Kakeibo'}
aria-hidden={withText || undefined}
className="shrink-0"
>
<defs>
<linearGradient id={gradientId} x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stopColor="#3b4aa8" />
<stop offset="1" stopColor="#26307a" />
</linearGradient>
</defs>
<rect width="512" height="512" rx="112" fill={`url(#${gradientId})`} />
<rect x="140" y="92" width="252" height="328" rx="28" fill="#f7f3ea" />
<rect x="140" y="92" width="52" height="328" rx="28" fill="#e6dfcf" />
<rect x="166" y="92" width="26" height="328" fill="#e6dfcf" />
<g fill="#26307a">
<circle cx="140" cy="150" r="13" />
<circle cx="140" cy="220" r="13" />
<circle cx="140" cy="290" r="13" />
<circle cx="140" cy="360" r="13" />
</g>
<g
fill="none"
stroke="#26307a"
strokeWidth="22"
strokeLinecap="round"
strokeLinejoin="round"
>
<path d="M238 178 L292 254 L346 178" />
<path d="M292 254 V342" />
<path d="M250 266 H334" />
<path d="M250 304 H334" />
</g>
</svg>
{withText && (
<span className="font-bold tracking-tight" style={{ fontSize: size * 0.6 }}>
Kakeibo
</span>
)}
</span>
)
}