/* WOAH! — Icon, DjLogo, Cocktail SVG components */ const Icon = ({ name, size = 18, color = 'currentColor', stroke = 2 }) => { const s = { width: size, height: size, color }; const p = { width: size, height: size, fill: 'none', stroke: 'currentColor', strokeWidth: stroke, strokeLinecap: 'round', strokeLinejoin: 'round', viewBox: '0 0 24 24' }; switch (name) { case 'arrow': return ; case 'globe': return ; case 'menu': return ; case 'speaker': return ; case 'speakerOff': return ; case 'upload': return ; case 'play': return ; case 'pause': return ; case 'volume': return ; case 'volumeLow': return ; case 'volumeOff': return ; case 'fullscreen': return ; case 'chevronL': return ; case 'chevronR': return ; case 'x': return ; case 'instagram': return ; case 'twitter': return ; case 'discord': return ; case 'twitch': return ; case 'spotify': return ; case 'zap': return ; case 'wine': return ; case 'sparkles': return ; case 'heart': return ; case 'moon': return ; case 'calendar': return ; case 'crown': return ; case 'trophy': return ; case 'camera': return ; case 'shield': return ; case 'star': return ; case 'dices': return ; case 'megaphone': return ; case 'music': return ; case 'lock': return ; default: return null; } }; /* === DJ LOGO — real PNG art === */ const DjLogo = ({ id, size = 140 }) => { const cfg = { gaia: { c1:'#FF2E97', c2:'#8B5CF6' }, aemilia: { c1:'#5DD3FF', c2:'#FF2E97' }, reyalex: { c1:'#FF6BCB', c2:'#00F0FF' }, khangomon: { c1:'#FF3B3B', c2:'#FFD700' }, rekse: { c1:'#5DD3FF', c2:'#FF6BCB' }, alec: { c1:'#FF3B3B', c2:'#FF0033' }, rin: { c1:'#8B5CF6', c2:'#FF3B3B' }, kiwi: { c1:'#A4DD3A', c2:'#FFD700' }, iris: { c1:'#8B5CF6', c2:'#5DD3FF' }, }[id] || { c1:'#FF2E97', c2:'#00F0FF' }; const { c1, c2 } = cfg; return (
); }; /* legacy (unused in active build) */ const _DjLogoLegacy = ({ id, size = 140 }) => { const cfg = { gaia: { glyph:'狐', sub:'Gaia', mono:'GA', c1:'#FF2E97', c2:'#8B5CF6', shape:'mask' }, aemilia: { glyph:'蝶', sub:'Aemilia', mono:'AE', c1:'#5DD3FF', c2:'#FF2E97', shape:'butterfly' }, reyalex: { glyph:'猫', sub:'Rey Alex', mono:'RA', c1:'#FF6BCB', c2:'#00F0FF', shape:'cat' }, khangomon: { glyph:'柴', sub:'Khango XIV', mono:'KX', c1:'#FF3B3B', c2:'#FFD700', shape:'shiba' }, rekse: { glyph:'桜', sub:'Rekse', mono:'RN', c1:'#5DD3FF', c2:'#FF6BCB', shape:'kitty' }, alec: { glyph:'髑', sub:'Marston', mono:'AM', c1:'#FF3B3B', c2:'#0a0a14', shape:'skull' }, rin: { glyph:'月', sub:'Rin Tsukii', mono:'RT', c1:'#8B5CF6', c2:'#FF3B3B', shape:'flame' }, kiwi: { glyph:'実', sub:'Kiwi', mono:'KW', c1:'#A4DD3A', c2:'#FFD700', shape:'splash' }, iris: { glyph:'星', sub:'Iris', mono:'IS', c1:'#8B5CF6', c2:'#5DD3FF', shape:'galaxy' }, }[id] || { glyph:'?', sub:'?', mono:'??', c1:'#FF2E97', c2:'#00F0FF', shape:'mask' }; const { glyph, sub, mono, c1, c2, shape } = cfg; const id2 = `g-${id}`; return ( {/* shape backplate */} {shape === 'mask' && ( )} {shape === 'butterfly' && ( )} {shape === 'cat' && ( )} {shape === 'shiba' && ( )} {shape === 'kitty' && ( )} {shape === 'skull' && ( )} {shape === 'flame' && ( )} {shape === 'splash' && ( )} {shape === 'galaxy' && ( )} {glyph} {sub.toUpperCase()} // {mono} · WOAH! ); }; /* === COCKTAIL SVG === */ const Cocktail = ({ kind, c1, c2, glass, extras = [] }) => { const gid = `cg-${kind}`; // Glass shapes let shape; if (glass === 'martini') { shape = ( ); } else if (glass === 'highball') { shape = ( ); } else if (glass === 'shot') { shape = ( ); } else if (glass === 'coupe') { shape = ( ); } else if (glass === 'can') { shape = ( POWA ); } return ( {/* halo */} {shape} {/* extras */} {extras.includes('ice') && ( )} {extras.includes('lime') && ( )} {extras.includes('flower') && ( )} {extras.includes('bubbles') && (Array.from({length:6}).map((_,i)=>( )))} {extras.includes('steam') && ( )} {extras.includes('spark') && ( )} {extras.includes('glitch') && ( )} ); }; Object.assign(window, { Icon, DjLogo, Cocktail });