v2.exhq.dev/src/App.tsx

177 lines
5.6 KiB
TypeScript
Raw Normal View History

2024-06-23 20:41:02 +02:00
import './App.css'
import AdvancedBr from './components/comps.tsx'
2024-06-26 13:25:12 +02:00
import { createSignal, onMount } from 'solid-js';
import Reviews from './components/api.tsx';
2024-06-26 13:25:12 +02:00
import Music, { MusicEntry } from './components/music.tsx';
2024-08-07 07:55:55 +02:00
import { Bdpfp, Normalpfp } from './components/pfp.tsx';
2024-08-09 16:48:28 +02:00
import { InfoCard } from './components/middlecard.tsx';
2024-06-26 13:25:12 +02:00
export const [shouldpopup, setpopup] = createSignal(false)
export const [ishover, setishover] = createSignal(false)
2024-07-08 13:58:29 +02:00
2024-08-09 18:39:10 +02:00
let explodcount = 0
2024-08-07 07:31:25 +02:00
const isitmybd = () => new Date().toISOString().slice(5, 10) === '08-22';
function getRandomVivsieWord() {
2024-07-08 13:58:29 +02:00
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)
}
2024-08-09 16:48:28 +02:00
function nyaboom() {
2024-08-09 18:39:10 +02:00
explodcount++
2024-08-09 16:48:28 +02:00
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)
}
2024-07-08 13:58:29 +02:00
2024-06-23 20:41:02 +02:00
function App() {
2024-08-07 07:31:25 +02:00
2024-06-26 13:25:12 +02:00
const [musicList, setMusicList] = createSignal<string[]>([]);
const [isLoading, setIsLoading] = createSignal(true);
2024-06-23 20:41:02 +02:00
const [isAnimating, setIsAnimating] = createSignal(false);
const [animatedwoem, setanimatedwoem] = createSignal(false);
2024-06-26 13:25:12 +02:00
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);
}
});
2024-06-23 20:41:02 +02:00
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 (
<>
2024-08-07 07:31:25 +02:00
{/* <div onmouseenter={remov} class='header'>
<div>
<Normalpfp />
</div>
2024-06-23 20:41:02 +02:00
<HoverComponent />
2024-08-07 07:31:25 +02:00
</div> */}
2024-08-07 07:55:55 +02:00
{isitmybd() ? <Bdpfp /> : <Normalpfp />}
2024-06-23 20:41:02 +02:00
<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(() => {
2024-08-04 08:16:51 +02:00
window.location.href = "https://woem.men/@echo"
2024-06-23 20:41:02 +02:00
}, 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'>
2024-08-09 16:48:28 +02:00
<InfoCard bd={isitmybd()} />
2024-06-23 20:41:02 +02:00
</div>
2024-06-25 16:14:17 +02:00
<div
2024-06-26 13:25:12 +02:00
onMouseEnter={() => { setishover(true) }}
onmouseleave={() => { setishover(false) }}
style={{
opacity: isAnimating() || animatedwoem() ? "0%" : "100%"
}} class='cardchild'>
2024-06-25 16:14:17 +02:00
<Reviews />
2024-06-23 20:41:02 +02:00
</div>
</div>
2024-06-26 13:25:12 +02:00
<AdvancedBr count={2} />
2024-06-25 16:14:17 +02:00
<div class='easteregg'>
2024-06-28 12:14:19 +02:00
<div class="musicbutton" onclick={() => { setpopup(!shouldpopup()) }}>
<p>typa shit ive been on</p><img style={{
"margin-left": "0.3em",
"max-width": "1.5em"
2024-07-08 13:58:29 +02:00
}} 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>
2024-06-28 12:14:19 +02:00
</div>
2024-08-09 16:48:28 +02:00
<div class="musicbutton" onclick={() => {
2024-08-09 18:39:10 +02:00
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()
}
2024-08-09 16:48:28 +02:00
}}>
<img style={{
"margin-left": "0.3em",
"max-width": "1.5em"
}} src="./nyaboom.webp" />
</div>
2024-06-25 16:14:17 +02:00
</div>
<AdvancedBr count={3} />
2024-06-26 13:25:12 +02:00
<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>
2024-08-07 07:55:55 +02:00
<div class='footer'> made with by echo. <a href="https://git.gay/exhq/v2.exhq.dev">this website is opensource</a></div>
2024-06-23 20:41:02 +02:00
</>
)
}
export default App