176 lines
5.6 KiB
TypeScript
176 lines
5.6 KiB
TypeScript
import './App.css'
|
|
import AdvancedBr from './components/comps.tsx'
|
|
import { createSignal, onMount } from 'solid-js';
|
|
import Reviews from './components/api.tsx';
|
|
import Music, { MusicEntry } from './components/music.tsx';
|
|
import { Bdpfp, Normalpfp } from './components/pfp.tsx';
|
|
import { InfoCard } from './components/middlecard.tsx';
|
|
export const [shouldpopup, setpopup] = createSignal(false)
|
|
export const [ishover, setishover] = createSignal(false)
|
|
|
|
let explodcount = 0
|
|
const isitmybd = () => new Date().toISOString().slice(5, 10) === '08-22';
|
|
|
|
function getRandomVivsieWord() {
|
|
const words = [
|
|
"fuck",
|
|
"shit",
|
|
"pussy",
|
|
"penis",
|
|
"dick"
|
|
]
|
|
return words[Math.floor(Math.random() * words.length)]
|
|
}
|
|
|
|
function vivsiepop() {
|
|
const blep = document.body.childNodes;
|
|
function fuckshit(node: ChildNode) {
|
|
if (node.nodeType === Node.TEXT_NODE) {
|
|
node.textContent = getRandomVivsieWord();
|
|
} else {
|
|
node.childNodes.forEach(fuckshit);
|
|
}
|
|
}
|
|
blep.forEach(fuckshit)
|
|
}
|
|
function nyaboom() {
|
|
explodcount++
|
|
const blep = document.body.childNodes;
|
|
function fuckshit(node: ChildNode) {
|
|
if (node.nodeType === Node.TEXT_NODE) {
|
|
(node as Element).textContent = ''
|
|
node.parentElement?.appendChild(<img style={{
|
|
width: "1.5em"
|
|
}} src="./explod.gif"/> as Element)
|
|
} else if (node instanceof HTMLImageElement){
|
|
node.src = "./explod.gif"
|
|
}
|
|
else {
|
|
node.childNodes.forEach(fuckshit);
|
|
}
|
|
}
|
|
blep.forEach(fuckshit)
|
|
}
|
|
|
|
function App() {
|
|
|
|
const [musicList, setMusicList] = createSignal<string[]>([]);
|
|
const [isLoading, setIsLoading] = createSignal(true);
|
|
const [isAnimating, setIsAnimating] = createSignal(false);
|
|
const [animatedwoem, setanimatedwoem] = createSignal(false);
|
|
onMount(async () => {
|
|
try {
|
|
const response = await fetch("https://imtoolazytomakeaproperapi.exhq.dev/");
|
|
const data = await response.json();
|
|
setMusicList(data);
|
|
} catch (error) {
|
|
console.error("Error fetching music data:", error);
|
|
} finally {
|
|
setIsLoading(false);
|
|
}
|
|
});
|
|
let gitgay = <img onClick={() => {
|
|
setIsAnimating(true)
|
|
setTimeout(() => {
|
|
window.location.href = "https://git.gay/exhq"
|
|
}, 200);
|
|
gitgay.src = "/gaybackground.png"
|
|
}} classList={{ 'gitgayimg': true, 'animate': isAnimating(), 'gaybackground': isAnimating() }} src="https://git.gay/assets/img/logo.png" alt="LMAO IMAGINE BEING BLIND" /> as HTMLImageElement
|
|
return (
|
|
<>
|
|
{/* <div onmouseenter={remov} class='header'>
|
|
<div>
|
|
<Normalpfp />
|
|
</div>
|
|
<HoverComponent />
|
|
</div> */}
|
|
{isitmybd() ? <Bdpfp /> : <Normalpfp />}
|
|
|
|
<p style={{ display: "none" }}>AdvancedBr my beloved</p>
|
|
<AdvancedBr count={6} />
|
|
|
|
|
|
<div class='parent'>
|
|
<div class='cardchild'>
|
|
<h1>link tree</h1>
|
|
<div class='linktree'>
|
|
{gitgay}
|
|
<img onClick={() => {
|
|
setanimatedwoem(true)
|
|
setTimeout(() => {
|
|
window.location.href = "https://woem.men/@echo"
|
|
}, 200);
|
|
}} classList={{ 'woemimg': true, 'animate': animatedwoem() }} src="https://woem.men/files/356134d8-df3b-41dc-ac73-c4420442bf3a" alt="LMAO IMAGINE BEING BLIND" />
|
|
</div>
|
|
<br />
|
|
<div class='linktree'>
|
|
<span class='gitgaytext' >Git</span>
|
|
<span class='woemtext' >Fedi</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div style={{
|
|
opacity: isAnimating() || animatedwoem() ? "0%" : "100%"
|
|
}} class='cardchild'>
|
|
<InfoCard bd={isitmybd()} />
|
|
|
|
</div>
|
|
|
|
<div
|
|
onMouseEnter={() => { setishover(true) }}
|
|
onmouseleave={() => { setishover(false) }}
|
|
style={{
|
|
opacity: isAnimating() || animatedwoem() ? "0%" : "100%"
|
|
}} class='cardchild'>
|
|
<Reviews />
|
|
</div>
|
|
</div>
|
|
<AdvancedBr count={2} />
|
|
<div class='easteregg'>
|
|
<div class="musicbutton" onclick={() => { setpopup(!shouldpopup()) }}>
|
|
<p>typa shit ive been on</p><img style={{
|
|
"margin-left": "0.3em",
|
|
"max-width": "1.5em"
|
|
}} src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f525.png" />
|
|
</div>
|
|
<div class="musicbutton" onclick={vivsiepop}>
|
|
<p>echo if it was written by vivsiepop</p>
|
|
</div>
|
|
<div class="musicbutton" onclick={() => {
|
|
if (explodcount > 5) {
|
|
document.body.innerHTML = ""
|
|
setTimeout(() => {alert("sorry bud, you exploded so much that my document.body is gon")}, 500)
|
|
} else {
|
|
new Audio("./explod.mp3").play()
|
|
nyaboom()
|
|
}
|
|
}}>
|
|
<img style={{
|
|
"margin-left": "0.3em",
|
|
"max-width": "1.5em"
|
|
}} src="./nyaboom.webp" />
|
|
</div>
|
|
</div>
|
|
<AdvancedBr count={3} />
|
|
<Music shouldpopup={shouldpopup}>
|
|
<div class='musicdiv'>
|
|
<div class='innermusic'>
|
|
<div class="music-close-button-div">
|
|
<button class="close-button" onClick={() => { setpopup(false) }}>X</button>
|
|
</div>
|
|
<div class='musiclist'>
|
|
{isLoading() ? (
|
|
<p>Loading...</p>
|
|
) : (
|
|
musicList().map((link) => <MusicEntry spotifylink={link} />)
|
|
)}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</Music>
|
|
<div class='footer'> made with ♥ by echo. <a href="https://git.gay/exhq/v2.exhq.dev">this website is opensource</a></div>
|
|
</>
|
|
)
|
|
}
|
|
|
|
export default App
|