// 3D blocky Minecraft-style MINILANDS wordmark. // Each letter is rendered as a chunky 3D extruded glyph using stacked at depth offsets, // then re-stroked + filled on top to get the gold front face with darker amber side faces. // Also exports BlockCrown — the green grass-block icon that sits on top of the wordmark. const Wordmark = ({ height = 60, withCrown = false }) => { // Aspect with crown: wider; without: 5.4:1 const aspect = withCrown ? 5.6 : 5.4; const w = height * aspect; // The 3D depth is achieved by drawing the same text many times, each offset by (1,1) pixels, // in a darker amber. Then the final layer on top is the bright gold fill with a black outline. const DEPTH = 8; // px of extrusion const depthLayers = Array.from({ length: DEPTH }, (_, i) => i + 1); return ( {/* Bright gold→amber front face gradient */} {/* Top sheen highlight on letters */} {/* CROWN — green grass block on top, optional */} {withCrown && ( {/* Block outline */} {/* Top grass face */} {/* Left dirt face */} {/* Grass strip on left */} {/* Right dirt face — slightly darker */} {/* Grass strip on right */} {/* All inner edges */} {/* Dirt pixel details */} )} {/* 3D extrusion: stack of darkening copies, offset down-right */} {depthLayers.slice().reverse().map((d) => { // Color darkens from #c87010 (deep amber) to #5a2e08 (almost black) as depth grows const t = d / DEPTH; const r = Math.round(0xc8 - (0xc8 - 0x40) * t); const g = Math.round(0x70 - (0x70 - 0x18) * t); const b = Math.round(0x10 - (0x10 - 0x04) * t); const color = `rgb(${r}, ${g}, ${b})`; return ( MINILANDS ); })} {/* Outermost black outline */} MINILANDS {/* Bright gold front face */} MINILANDS {/* Top sheen — clipped to upper third via clipPath */} MINILANDS ); }; window.Wordmark = Wordmark;