256 lines
11 KiB
TypeScript
256 lines
11 KiB
TypeScript
import './App.css'
|
|
import {AdvancedBr, Singular88, SingularOomfie} 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 [shouldpopup88, setpopup88] = createSignal(false)
|
|
export const [shouldpopupEasterEgg, setpopupEasterEgg] = 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 [oomfies, setoomfies] = createSignal(<>oomfies</>)
|
|
const [isAnimating, setIsAnimating] = 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.lgbt/exhq"
|
|
}, 200);
|
|
gitgay.src = "/gaybackground.png"
|
|
}} classList={{'gitgayimg': true, 'animate': isAnimating(), 'gaybackground': isAnimating()}}
|
|
src="https://proxy.spiro.exhq.dev/_/plain/https://git.lgbt/assets/img/logo.png"
|
|
alt="logo of git.lgbt"/> as HTMLImageElement
|
|
// @ts-ignore
|
|
return (
|
|
<>
|
|
{isitmybd() ? <Bdpfp setpopupEasterEgg={setpopupEasterEgg}/> :
|
|
<Normalpfp setpopupEasterEgg={setpopupEasterEgg}/>}
|
|
|
|
<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}
|
|
|
|
</div>
|
|
<br/>
|
|
<div class='linktree'>
|
|
<span class='gitgaytext'>Git</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div style={{
|
|
opacity: isAnimating() ? "0%" : "100%"
|
|
}} class='cardchild'>
|
|
<InfoCard bd={isitmybd()}/>
|
|
|
|
</div>
|
|
<div
|
|
onMouseEnter={() => {
|
|
setishover(true)
|
|
}}
|
|
onmouseleave={() => {
|
|
setishover(false)
|
|
}}
|
|
style={{
|
|
opacity: isAnimating() ? "0%" : "100%"
|
|
}} class='cardchild'>
|
|
<Reviews/>
|
|
</div>
|
|
</div>
|
|
<AdvancedBr count={2}/>
|
|
<div class='easteregg' style={{opacity: isAnimating() ? "0%" : "100%"}}>
|
|
<div class="musicbutton" onClick={() => {
|
|
setpopup(!shouldpopup())
|
|
}}>
|
|
<p>typa shit ive been on</p><img style={{
|
|
"margin-left": "0.3em",
|
|
"max-width": "1.5em"
|
|
}} src="./fireemoji.png"/>
|
|
</div>
|
|
<div class="musicbutton">
|
|
<div class="oomfies" onClick={() => {
|
|
setoomfies(
|
|
<>
|
|
<SingularOomfie name='ashley' discordid='836177139798638592'
|
|
url='https://ashleygraves.eu/'></SingularOomfie>
|
|
<SingularOomfie name='nea' discordid='310702108997320705'
|
|
url='https://nea.moe'></SingularOomfie>
|
|
<SingularOomfie name='vozy' discordid='359175647257690113'
|
|
url='https://vozy.exhq.dev'></SingularOomfie>
|
|
<SingularOomfie name='hazel' discordid='435026627907420161'
|
|
url='https://yellows.ink/'></SingularOomfie>
|
|
<SingularOomfie name='nax' discordid='148801388938264576'
|
|
url='https://nax.dev/'></SingularOomfie>
|
|
<SingularOomfie name='squirrelly' discordid='218032723296649217'
|
|
url='https://squirrelly13.neocities.org/'></SingularOomfie>
|
|
<SingularOomfie name='ushie' discordid='399862294143696897'
|
|
url='https://ushie.dev/'></SingularOomfie>
|
|
<SingularOomfie name='mugman' discordid='601836455006044163'
|
|
url='https://mugman.tech'></SingularOomfie>
|
|
<SingularOomfie name='krystal' discordid='929208515883569182'
|
|
url='https://krystal.exhq.dev/'></SingularOomfie>
|
|
|
|
</>
|
|
)
|
|
}}> {oomfies()}</div>
|
|
</div>
|
|
<div class="musicbutton" onClick={vivsiepop}>
|
|
<p>echo if it was written by vivsiepop</p>
|
|
</div>
|
|
<div class="musicbutton" onClick={() => {
|
|
setpopup88(true)
|
|
}}>
|
|
<p>88x31's</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>
|
|
<Music shouldpopup={shouldpopupEasterEgg}>
|
|
<div class='musicdiv'>
|
|
<div class='innermusic'>
|
|
<div class="music-close-button-div">
|
|
<button class="close-button" onClick={() => {
|
|
setpopupEasterEgg(false)
|
|
}}>X
|
|
</button>
|
|
</div>
|
|
<img src={"https://pico.exhq.dev/-Aax47Gmdsy"}/>
|
|
</div>
|
|
</div>
|
|
</Music>
|
|
<Music shouldpopup={shouldpopup88}>
|
|
<div class='musicdiv'>
|
|
<div class='innermusic'>
|
|
<div class="music-close-button-div">
|
|
<button class="close-button" onClick={() => {
|
|
setpopup88(false)
|
|
}}>X
|
|
</button>
|
|
</div>
|
|
<div style={{}}>
|
|
<img src="https://exhq.dev/88x31.png" alt=""/>
|
|
<br/>
|
|
<span>feel free to link mine, <code>https://exhq.dev/88x31.png</code></span>
|
|
<div style={{"background-color": "gray", height: "1px"}}/>
|
|
<div>
|
|
<Singular88 name="nax" url="https://nax.dev" src="https://nax.dev/88x31.gif"/>
|
|
<Singular88 name="sophari" url="https://sophari.org" src="https://sophari.org/img/sophari.gif"/>
|
|
<Singular88 name="rini" url="https://rinici.de/" src="https://rinici.de/button.png"/>
|
|
<Singular88 name="sophari" url="https://sophari.org/" src="https://sophari.org/img/sophari.gif"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</Music>
|
|
<div class='footer'> <a href="https://ko-fi.com/amyarson">support me ♥</a><br/>made with ♥ by amy. <a
|
|
href="https://git.lgbt/exhq/v2.exhq.dev">this website is
|
|
opensource</a></div>
|
|
</>
|
|
)
|
|
}
|
|
|
|
export default App
|