Move everything around in src (again)

To reflect the composition of the website with two distinct parts
(those being `Main` and `Infos`)
That way, it's much clearer what component belongs where
This commit is contained in:
Taevas 2025-02-17 17:57:03 +01:00
parent 3424924762
commit cbc005b995
42 changed files with 73 additions and 68 deletions

View file

@ -38,6 +38,10 @@
"typescript-eslint": "^8.24.0", "typescript-eslint": "^8.24.0",
"vite": "^5.4.14" "vite": "^5.4.14"
}, },
"imports": {
"#parts/*": "./src/parts/*",
"#contexts": "./src/contexts.js"
},
"type": "module", "type": "module",
"name": "taevas.xyz", "name": "taevas.xyz",
"module": "index.ts" "module": "index.ts"

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

View file

@ -1,8 +1,9 @@
import React from "react"; import React from "react";
import {createRoot} from "react-dom/client"; import {createRoot} from "react-dom/client";
import Infos from "./views/Infos.js"; import MainContent from "./Main/index.js";
import MainContent from "./views/MainContent.js"; import Infos from "./Infos/index.js";
const container = document.getElementById("root"); const container = document.getElementById("root");
const root = createRoot(container!); const root = createRoot(container!);

View file

@ -1,6 +1,6 @@
import React, {useState, useEffect} from "react"; import React, {useState, useEffect} from "react";
import Website from "../../Website.js"; import Website from "../Website.js";
import ButtonLink from "../../Link/ButtonLink.js"; import ButtonLink from "#parts/ButtonLink.js";
export type AnilistInfo = { export type AnilistInfo = {
title: string; title: string;

View file

@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import Info from "../Info.js"; import Info from "../Info.js";
import Anilist from "./Anime/Anilist.js"; import Anilist from "./Anilist.js";
export default function Anime() { export default function Anime() {
const anilist = <Anilist key={"Anilist"}/>; const anilist = <Anilist key={"Anilist"}/>;

View file

@ -1,6 +1,6 @@
import React, {useState, useEffect} from "react"; import React, {useState, useEffect} from "react";
import Website from "../../Website.js"; import Website from "../Website.js";
import ButtonLink from "../../Link/ButtonLink.js"; import ButtonLink from "#parts/ButtonLink.js";
export interface GithubInfo { export interface GithubInfo {
public?: { public?: {

View file

@ -1,5 +1,5 @@
import React, {useState, useEffect} from "react"; import React, {useState, useEffect} from "react";
import Website from "../../Website.js"; import Website from "../Website.js";
export type GitlabInfo = { export type GitlabInfo = {
date: string; date: string;

View file

@ -1,7 +1,7 @@
import React from "react"; import React from "react";
import Info from "../Info.js"; import Info from "../Info.js";
import GitHub from "./Coding/GitHub.js"; import GitHub from "./GitHub.js";
import GitLab from "./Coding/GitLab.js"; import GitLab from "./GitLab.js";
export default function Coding() { export default function Coding() {
const github = <GitHub key={"github"}/>; const github = <GitHub key={"github"}/>;

View file

@ -1,5 +1,5 @@
import React, {useState, useEffect} from "react"; import React, {useState, useEffect} from "react";
import Website from "../../Website.js"; import Website from "../Website.js";
export type KitsuclubInfo = { export type KitsuclubInfo = {
id: string id: string

View file

@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import Info from "../Info.js"; import Info from "../Info.js";
import KitsuClub from "./Fediverse/KitsuClub.js"; import KitsuClub from "./KitsuClub.js";
export default function Hacking() { export default function Hacking() {
const kitsuclub = <KitsuClub key={"kitsuclub"}/>; const kitsuclub = <KitsuClub key={"kitsuclub"}/>;

View file

@ -1,6 +1,6 @@
import React, {useState, useEffect} from "react"; import React, {useState, useEffect} from "react";
import Website from "../../Website.js"; import Website from "../Website.js";
import ButtonLink from "../../Link/ButtonLink.js"; import ButtonLink from "#parts/ButtonLink.js";
export type HacktheboxInfo = { export type HacktheboxInfo = {
id: string; id: string;

View file

@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import Info from "../Info.js"; import Info from "../Info.js";
import Hackthebox from "./Hacking/Hackthebox.js"; import Hackthebox from "./Hackthebox.js";
export default function Hacking() { export default function Hacking() {
const hackthebox = <Hackthebox key={"hackthebox"}/>; const hackthebox = <Hackthebox key={"hackthebox"}/>;

View file

@ -1,5 +1,5 @@
import React, {useState, useEffect} from "react"; import React, {useState, useEffect} from "react";
import Website from "../../Website.js"; import Website from "../Website.js";
import { WKLevelProgression, WKReset } from "@bachmacintosh/wanikani-api-types"; import { WKLevelProgression, WKReset } from "@bachmacintosh/wanikani-api-types";
export type WanikaniInfo = { export type WanikaniInfo = {

View file

@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import Info from "../Info.js"; import Info from "../Info.js";
import Wanikani from "./Japanese/Wanikani.js"; import Wanikani from "./Wanikani.js";
export default function Japanese() { export default function Japanese() {
const wanikani = <Wanikani key={"wanikani"}/>; const wanikani = <Wanikani key={"wanikani"}/>;

View file

@ -1,7 +1,7 @@
import React, {useState, useEffect} from "react"; import React, {useState, useEffect} from "react";
import {format} from "timeago.js"; import {format} from "timeago.js";
import Website from "../../Website.js"; import Website from "../Website.js";
import Link from "../../Link.js"; import Link from "#parts/Link.js";
export type LastfmInfo = { export type LastfmInfo = {
artist: string; artist: string;

View file

@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import Info from "../Info.js"; import Info from "../Info.js";
import Lastfm from "./Music/Lastfm.js"; import Lastfm from "./Lastfm.js";
export default function Anime() { export default function Anime() {
const lastfm = <Lastfm key={"Lastfm"}/>; const lastfm = <Lastfm key={"Lastfm"}/>;

View file

@ -1,5 +1,5 @@
import React, {useState, useEffect} from "react"; import React, {useState, useEffect} from "react";
import Website from "../../Website.js"; import Website from "../Website.js";
import { Ruleset } from "osu-api-v2-js"; import { Ruleset } from "osu-api-v2-js";
export type OsuInfo = { export type OsuInfo = {
@ -38,7 +38,7 @@ export default function Osu(args: {ruleset: Ruleset}) {
try { try {
setElements([ setElements([
<div key={`osu-${ruleset}`} className="flex"> <div key={`osu-${ruleset}`} className="flex">
<img className="m-auto w-16 h-16" alt={`${ruleset} mode logo`} src={`/mode-${ruleset}.png`}/> <img className="m-auto w-16 h-16" alt={`${ruleset} mode logo`} src={`/osu_rulesets/${ruleset}.png`}/>
<div className="m-auto"> <div className="m-auto">
<p>Global: <strong>#{osu.ranks.global}</strong></p> <p>Global: <strong>#{osu.ranks.global}</strong></p>
<p>{osu.country}: <strong>#{osu.ranks.country}</strong></p> <p>{osu.country}: <strong>#{osu.ranks.country}</strong></p>

View file

@ -1,7 +1,7 @@
import React, {useEffect, useState} from "react"; import React, {useEffect, useState} from "react";
import Info from "../Info.js"; import Info from "../Info.js";
import Osu from "./RhythmGames/Osu.js"; import Osu from "./Osu.js";
import { Ruleset } from "osu-api-v2-js"; import { Ruleset } from "osu-api-v2-js";
export default function RhythmGames() { export default function RhythmGames() {

View file

@ -1,6 +1,6 @@
import React, {useState, useEffect} from "react"; import React, {useState, useEffect} from "react";
import Website from "../../Website.js"; import Website from "../Website.js";
import ButtonLink from "../../Link/ButtonLink.js"; import ButtonLink from "#parts/ButtonLink.js";
export type SpeedruncomInfo = { export type SpeedruncomInfo = {
place: number; place: number;

View file

@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import Info from "../Info.js"; import Info from "../Info.js";
import Speedruncom from "./Speedrunning/Speedruncom.js"; import Speedruncom from "./Speedruncom.js";
export default function Speedrun() { export default function Speedrun() {
const speedruncom = <Speedruncom key={"speedruncom"}/>; const speedruncom = <Speedruncom key={"speedruncom"}/>;

View file

@ -1,12 +1,12 @@
import React, {Component} from "react"; import React, {Component} from "react";
import Music from "../components/Info/Music.js"; import Music from "./Music/index.js";
import Speedrun from "../components/Info/Speedrun.js"; import Speedrun from "./Speedrun/index.js";
import Hacking from "../components/Info/Hacking.js"; import Hacking from "./Hacking/index.js";
import Coding from "../components/Info/Coding.js"; import Coding from "./Coding/index.js";
import RhythmGames from "../components/Info/RhythmGames.js"; import RhythmGames from "./RhythmGames/index.js";
import Anime from "../components/Info/Anime.js"; import Anime from "./Anime/index.js";
// import Japanese from "../components/Info/Japanese.js"; // import Japanese from "./Japanese/index.js";
import Fediverse from "../components/Info/Fediverse.js"; import Fediverse from "./Fediverse/index.js";
export default class Infos extends Component { export default class Infos extends Component {
private readonly dragbar = React.createRef<HTMLDivElement>(); private readonly dragbar = React.createRef<HTMLDivElement>();

View file

@ -1,5 +1,5 @@
import React from "react"; import React from "react";
import SocialButton from "../../../components/SocialButton.js"; import SocialButton from "./SocialButton.js";
export default function SocialButtons() { export default function SocialButtons() {
return ( return (

View file

@ -1,7 +1,7 @@
import React from "react"; import React from "react";
import TabButton from "../../../components/TabButton.js"; import TabButton from "./TabButton.js";
import Translatable from "../../../components/Translatable.js"; import Translatable from "#parts/Translatable.js";
import {type TabDetails, LanguageContext, TabContext} from "../../../contexts.js"; import {type TabDetails, LanguageContext, TabContext} from "#contexts";
export default function TabButtons({ export default function TabButtons({
setLang, setLang,

View file

@ -1,11 +1,11 @@
import React from "react"; import React from "react";
import AnimateHeight from "react-animate-height"; import AnimateHeight from "react-animate-height";
import TabButtons from "./MainWindow/TabButtons.js"; import TabButtons from "./TabButtons/index.js";
import SocialButtons from "./MainWindow/SocialButtons.js"; import SocialButtons from "./SocialButtons/index.js";
import Translatable from "../../components/Translatable.js"; import Translatable from "#parts/Translatable.js";
import {type TabDetails, TabContext} from "../../contexts.js"; import {type TabDetails, TabContext} from "#contexts";
export default function MainWindow({ export default function MainWindow({
setLang, setLang,

View file

@ -1,9 +1,9 @@
import React from "react"; import React from "react";
import Tab from "../Tab.js"; import Tab from "../Tab.js";
import Translatable from "../Translatable.js"; import Translatable from "#parts/Translatable.js";
import {UserProfile} from "@carbon/icons-react"; import {UserProfile} from "@carbon/icons-react";
import {type TabDetails} from "../../contexts.js"; import {type TabDetails} from "#contexts";
import Link from "../Link.js"; import Link from "#parts/Link.js";
export default function About({ export default function About({
setTabs, setTabs,

View file

@ -1,11 +1,11 @@
import React from "react"; import React from "react";
import Tab from "../Tab.js"; import Tab from "../Tab.js";
import CopyField from "../CopyField.js";
import ButtonLink from "../Link/ButtonLink.js";
import Translatable from "../Translatable.js";
import {MailAll} from "@carbon/icons-react"; import {MailAll} from "@carbon/icons-react";
import {type TabDetails} from "../../contexts.js"; import CopyField from "#parts/CopyField.js";
import Link from "../Link.js"; import ButtonLink from "#parts/ButtonLink.js";
import Translatable from "#parts/Translatable.js";
import Link from "#parts/Link.js";
import {type TabDetails} from "#contexts";
export default function Contact({ export default function Contact({
setTabs, setTabs,

View file

@ -1,9 +1,9 @@
import React from "react"; import React from "react";
import Tab from "../Tab.js"; import Tab from "../Tab.js";
import Translatable from "../Translatable.js"; import Translatable from "#parts/Translatable.js";
import {Devices} from "@carbon/icons-react"; import {Devices} from "@carbon/icons-react";
import {type TabDetails} from "../../contexts.js"; import {type TabDetails} from "#contexts";
import Link from "../Link.js"; import Link from "#parts/Link.js";
export default function Projects({ export default function Projects({
setTabs, setTabs,

View file

@ -1,9 +1,9 @@
import React from "react"; import React from "react";
import Tab from "../Tab.js"; import Tab from "../Tab.js";
import Translatable from "../Translatable.js"; import Translatable from "#parts/Translatable.js";
import {UserFavorite} from "@carbon/icons-react"; import {UserFavorite} from "@carbon/icons-react";
import {type TabDetails} from "../../contexts.js"; import {type TabDetails} from "#contexts";
import ButtonLink from "../Link/ButtonLink.js"; import ButtonLink from "#parts/ButtonLink.js";
export default function Support({ export default function Support({
setTabs, setTabs,

View file

@ -1,7 +1,7 @@
import React, {Component} from "react"; import React, {Component} from "react";
import AnimateHeight from "react-animate-height"; import AnimateHeight from "react-animate-height";
import type Translatable from "./Translatable.js"; import type Translatable from "#parts/Translatable.js";
import {type TabDetails, TabContext} from "../contexts.js"; import {type TabDetails, TabContext} from "#contexts";
export default class Tab extends Component<{ export default class Tab extends Component<{
setTabs: React.Dispatch<React.SetStateAction<TabDetails[]>>; setTabs: React.Dispatch<React.SetStateAction<TabDetails[]>>;

View file

@ -1,9 +1,9 @@
import React from "react"; import React from "react";
import About from "../../components/Tab/About.js"; import About from "./About/index.js";
import Contact from "../../components/Tab/Contact.js"; import Contact from "./Contact/index.js";
import Projects from "../../components/Tab/Projects.js"; import Projects from "./Projects/index.js";
import Support from "../../components/Tab/Support.js"; import Support from "./Support/index.js";
import {type TabDetails} from "../../contexts.js"; import {type TabDetails} from "#contexts";
export default function Tabs({ export default function Tabs({
setTabs, setTabs,

View file

@ -1,7 +1,7 @@
import React, {useEffect, useState} from "react"; import React, {useEffect, useState} from "react";
import MainWindow from "./MainContent/MainWindow.js"; import MainWindow from "./MainWindow/index.js";
import Tabs from "./MainContent/Tabs.js"; import Tabs from "./Tabs/index.js";
import {type TabDetails, LanguageContext, TabContext} from "../contexts.js"; import {type TabDetails, LanguageContext, TabContext} from "#contexts";
export default function MainContent() { export default function MainContent() {
const [lang, setLang] = useState<string>(localStorage.getItem("lang") ?? "en"); const [lang, setLang] = useState<string>(localStorage.getItem("lang") ?? "en");

View file

@ -1,5 +1,5 @@
import React from "react"; import React from "react";
import Link from "../Link.js"; import Link from "./Link.js";
export default function ButtonLink({ export default function ButtonLink({
link, link,

View file

@ -1,5 +1,5 @@
import React from "react"; import React from "react";
import {LanguageContext} from "../contexts.js"; import {LanguageContext} from "#contexts";
export default function Translatable<T extends string | React.JSX.Element>({ export default function Translatable<T extends string | React.JSX.Element>({
en, en,