import React, { useState, useEffect } from 'react'; import { Terminal, ExternalLink, AtSign, Calendar, Binary } from 'lucide-react'; import { HeroProps, QuickLink, AnimationState } from './types'; const defaultIntroText = `> const profile = { name: "Christopher Wylde", alias: "boilerrat", roles: [ "Radiation Protection Specialist", "Journeyman Boilermaker", "Web3 Innovator", "DAO Designer" ], expertise: { boilermaker: "20+ years across industrial sectors, nationwide experience", nuclear: "20 years total, 8 years specialized in radiation protection", web3: "Lead multiple DAOs, $300K+ in grants secured and distributed" } };`; const quickLinks: QuickLink[] = [ { icon: ExternalLink, label: "Full Resume", href: "https://rxresu.me/boilerrat/victorious-present-lungfish", external: true }, { icon: AtSign, label: "Contact", href: "mailto:128boilerrat@gmail.com" }, { icon: Calendar, label: "Schedule a Call", href: "https://calendly.com/boiler-chris/call-with-boilerrat", external: true }, { icon: Binary, label: "DAO Masons", href: "https://www.daomasons.com", external: true } ]; export const Hero: React.FC = ({ className = '', customIntroText }) => { const [animationState, setAnimationState] = useState({ text: '', showContent: false }); const introText = customIntroText || defaultIntroText; useEffect(() => { let currentIndex = 0; const typeWriter = setInterval(() => { if (currentIndex < introText.length) { setAnimationState(prev => ({ ...prev, text: prev.text + introText[currentIndex] })); currentIndex++; } else { clearInterval(typeWriter); setTimeout(() => setAnimationState(prev => ({ ...prev, showContent: true })), 500); } }, 50); return () => clearInterval(typeWriter); }, [introText]); return (
{/* Terminal Window */}
{animationState.text}
{/* Quick Links Section */} {animationState.showContent && (

Bridging Industry & Web3

Bringing decades of industrial expertise to decentralized innovation

{quickLinks.map((link, index) => ( {link.label} ))}
)}
); }; export default Hero;