import cn from 'classnames' import { useEffect, useRef, useState } from 'react' import { BrowserRouter, Link, Navigate, Route, Routes, useLocation } from 'react-router-dom' import bgmSrc from '@/assets/music.mp3' import ThreadListPage from '@/pages/threads/ThreadListPage' import ThreadDetailPage from '@/pages/threads/ThreadDetailPage' const colours = ['bg-fuchsia-500 dark:bg-fuchsia-900', 'bg-lime-500 dark:bg-lime-900', 'bg-cyan-500 dark:bg-cyan-900', 'bg-orange-500 dark:bg-orange-900', 'bg-pink-500 dark:bg-pink-900', 'bg-red-500 dark:bg-red-900', 'bg-blue-500 dark:bg-blue-900', 'bg-green-500 dark:bg-green-900', 'bg-yellow-500 dark:bg-yellow-900'] as const const ScrollToTop = () => { const { pathname } = useLocation () useEffect (() => { scrollTo (0, 0) }, [pathname]) return null } export default () => { const bgmRef = useRef (null) const [colourIndex, setColourIndex] = useState (0) const [mute, setMute] = useState (false) const [playing, setPlaying] = useState (false) useEffect (() => { bgmRef.current = new Audio (bgmSrc) bgmRef.current.loop = true bgmRef.current.volume = 1 const playBGM = async () => { if (playing || !(bgmRef.current)) return try { await bgmRef.current.play () setPlaying (true) } catch { setPlaying (false) } } const bgmInterval = setInterval (playBGM, 1000) document.addEventListener ('click', playBGM) document.addEventListener ('touchstart', playBGM) const changeColour = () => { setColourIndex (Math.floor (Math.random () * colours.length)) } changeColour () const colouringInterval = setInterval (changeColour, 3000) return () => { clearInterval (bgmInterval) clearInterval (colouringInterval) } }, []) return (

クソ掲示板

} /> } /> } />

) }