|
| 1 | +// src/components/Logo.tsx |
| 2 | +import React from 'react'; |
| 3 | + |
| 4 | +interface LogoProps { |
| 5 | + size?: number; |
| 6 | + className?: string; |
| 7 | +} |
| 8 | + |
| 9 | +export const CodePatchworkLogo: React.FC<LogoProps> = ({ |
| 10 | + size = 32, |
| 11 | + className = "" |
| 12 | +}) => { |
| 13 | + return ( |
| 14 | + <svg |
| 15 | + viewBox="0 0 256 256" |
| 16 | + xmlns="http://www.w3.org/2000/svg" |
| 17 | + role="img" |
| 18 | + aria-label="CodePatchwork Icon Logo" |
| 19 | + width={size} |
| 20 | + height={size} |
| 21 | + className={className} |
| 22 | + > |
| 23 | + <style> |
| 24 | + {` |
| 25 | + .bg { fill: hsl(207, 90%, 54%); } |
| 26 | + .stitch { stroke: hsl(240, 3.7%, 15.9%); stroke-width: 2; stroke-dasharray: 6, 6; fill: none; } |
| 27 | + .symbol { fill: hsl(0, 0%, 98%); font-family: 'Courier New', monospace; font-weight: bold; font-size: 24px; dominant-baseline: middle; text-anchor: middle; } |
| 28 | + `} |
| 29 | + </style> |
| 30 | + <rect className="bg" width="256" height="256" rx="16" ry="16"/> |
| 31 | + <line className="stitch" x1="85.3" y1="0" x2="85.3" y2="256"/> |
| 32 | + <line className="stitch" x1="170.6" y1="0" x2="170.6" y2="256"/> |
| 33 | + <line className="stitch" x1="0" y1="85.3" x2="256" y2="85.3"/> |
| 34 | + <line className="stitch" x1="0" y1="170.6" x2="256" y2="170.6"/> |
| 35 | + <text className="symbol" x="42.6" y="42.6">{"{}"}</text> |
| 36 | + <text className="symbol" x="128" y="42.6">{"<>"}</text> |
| 37 | + <text className="symbol" x="213.3" y="42.6">//</text> |
| 38 | + <text className="symbol" x="42.6" y="128">[]</text> |
| 39 | + <text className="symbol" x="128" y="128">JS</text> |
| 40 | + <text className="symbol" x="213.3" y="128">PY</text> |
| 41 | + <text className="symbol" x="42.6" y="213.3">01</text> |
| 42 | + <text className="symbol" x="128" y="213.3">.PY</text> |
| 43 | + <text className="symbol" x="213.3" y="213.3">⎇</text> |
| 44 | + </svg> |
| 45 | + ); |
| 46 | +}; |
0 commit comments