Compare commits

..

No commits in common. "a088586c4a4bc8664f5fd0a84795ccaceb4a9b8b" and "13155672a8f4bed51b1c264833abaa99834a9422" have entirely different histories.

19 changed files with 2471 additions and 9252 deletions

2375
bun.lock Normal file

File diff suppressed because it is too large Load diff

View file

@ -9,25 +9,24 @@
"astro": "astro"
},
"dependencies": {
"@astrojs/sitemap": "^3.7.3",
"@astrojs/svelte": "^9.0.1",
"@astrojs/sitemap": "^3.7.0",
"@astrojs/svelte": "^7.2.5",
"@fontsource-variable/inter": "^5.2.8",
"@fontsource-variable/jetbrains-mono": "^5.2.8",
"@indiefellas/astro-adapter-nekoweb": "^3.7.1",
"@swup/astro": "^1.8.0",
"@tailwindcss/vite": "^4.3.2",
"astro": "^7.0.7",
"@tailwindcss/vite": "^4.1.18",
"astro": "^5.17.2",
"d3-scale": "^4.0.2",
"d3-shape": "^3.2.0",
"layerchart": "^2.0.1",
"sharp": "^0.35.3",
"svelte": "^5.56.4",
"tailwindcss": "^4.3.2",
"typescript": "^7.0.2"
"layerchart": "^2.0.0-next.44",
"svelte": "^5.51.1",
"tailwindcss": "^4.1.18",
"typescript": "^5.9.3"
},
"devDependencies": {
"@types/d3-scale": "^4.0.9",
"@types/d3-shape": "^3.1.8",
"vite": "^8.1.3"
"vite": "^7.3.1"
}
}

9146
pnpm-lock.yaml generated

File diff suppressed because it is too large Load diff

View file

@ -1,27 +0,0 @@
allowBuilds:
esbuild: true
sharp: true
minimumReleaseAgeExclude:
- "@astrojs/telemetry@3.3.3"
- astro@7.0.7
- "@typescript/typescript-aix-ppc64@7.0.2"
- "@typescript/typescript-darwin-arm64@7.0.2"
- "@typescript/typescript-darwin-x64@7.0.2"
- "@typescript/typescript-freebsd-arm64@7.0.2"
- "@typescript/typescript-freebsd-x64@7.0.2"
- "@typescript/typescript-linux-arm64@7.0.2"
- "@typescript/typescript-linux-arm@7.0.2"
- "@typescript/typescript-linux-loong64@7.0.2"
- "@typescript/typescript-linux-mips64el@7.0.2"
- "@typescript/typescript-linux-ppc64@7.0.2"
- "@typescript/typescript-linux-riscv64@7.0.2"
- "@typescript/typescript-linux-s390x@7.0.2"
- "@typescript/typescript-linux-x64@7.0.2"
- "@typescript/typescript-netbsd-arm64@7.0.2"
- "@typescript/typescript-netbsd-x64@7.0.2"
- "@typescript/typescript-openbsd-arm64@7.0.2"
- "@typescript/typescript-openbsd-x64@7.0.2"
- "@typescript/typescript-sunos-x64@7.0.2"
- "@typescript/typescript-win32-arm64@7.0.2"
- "@typescript/typescript-win32-x64@7.0.2"
- typescript@7.0.2

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24"><path fill="currentColor" d="M21.81 10.25c-.06-.04-.56-.43-1.64-.43c-.28 0-.56.03-.84.08c-.21-1.4-1.38-2.11-1.43-2.14l-.29-.17l-.18.27c-.24.36-.43.77-.51 1.19c-.2.8-.08 1.56.33 2.21c-.49.28-1.29.35-1.46.35H2.62c-.34 0-.62.28-.62.63c0 1.15.18 2.3.58 3.38c.45 1.19 1.13 2.07 2 2.61c.98.6 2.59.94 4.42.94c.79 0 1.61-.07 2.42-.22c1.12-.2 2.2-.59 3.19-1.16A8.3 8.3 0 0 0 16.78 16c1.05-1.17 1.67-2.5 2.12-3.65h.19c1.14 0 1.85-.46 2.24-.85c.26-.24.45-.53.59-.87l.08-.24zm-17.96.99h1.76c.08 0 .16-.07.16-.16V9.5c0-.08-.07-.16-.16-.16H3.85c-.09 0-.16.07-.16.16v1.58c.01.09.07.16.16.16m2.43 0h1.76c.08 0 .16-.07.16-.16V9.5c0-.08-.07-.16-.16-.16H6.28c-.09 0-.16.07-.16.16v1.58c.01.09.07.16.16.16m2.47 0h1.75c.1 0 .17-.07.17-.16V9.5c0-.08-.06-.16-.17-.16H8.75c-.08 0-.15.07-.15.16v1.58c0 .09.06.16.15.16m2.44 0h1.77c.08 0 .15-.07.15-.16V9.5c0-.08-.06-.16-.15-.16h-1.77c-.08 0-.15.07-.15.16v1.58c0 .09.07.16.15.16M6.28 9h1.76c.08 0 .16-.09.16-.18V7.25c0-.09-.07-.16-.16-.16H6.28c-.09 0-.16.06-.16.16v1.57c.01.09.07.18.16.18m2.47 0h1.75c.1 0 .17-.09.17-.18V7.25c0-.09-.06-.16-.17-.16H8.75c-.08 0-.15.06-.15.16v1.57c0 .09.06.18.15.18m2.44 0h1.77c.08 0 .15-.09.15-.18V7.25c0-.09-.07-.16-.15-.16h-1.77c-.08 0-.15.06-.15.16v1.57c0 .09.07.18.15.18m0-2.28h1.77c.08 0 .15-.07.15-.16V5c0-.1-.07-.17-.15-.17h-1.77c-.08 0-.15.06-.15.17v1.56c0 .08.07.16.15.16m2.46 4.52h1.76c.09 0 .16-.07.16-.16V9.5c0-.08-.07-.16-.16-.16h-1.76c-.08 0-.15.07-.15.16v1.58c0 .09.07.16.15.16"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 128 128"><path fill="currentColor" d="M21.906 5.484L4.961 51.848l11.45 3.83L6.276 74.434L23.49 88.027l-1.584 5.305l-7.508 26.293l35.852-12.957l24.55 15.85l45.083-18.057l2.105-67.781l-20.918 20.406v43.984H26.93V26.93h74.14v30.152l20.918-20.402L85.176 7.398L71.037 23.295l-10.83-13.287l-38.3-4.524zM27.93 27.93v72.14h72.14V27.93zm38.875 8.64h6.093v17.86a12.4 12.4 0 0 1-.668 4.254a7.92 7.92 0 0 1-4.964 4.879a12.1 12.1 0 0 1-4.036.632l.086.047a10.8 10.8 0 0 1-5.351-1.219a12.3 12.3 0 0 1-3.559-2.875l3.766-4.207c.687.778 1.484 1.45 2.367 2a4.85 4.85 0 0 0 2.621.73a3.46 3.46 0 0 0 2.668-1.058a5.07 5.07 0 0 0 .977-3.449zm-30.207.028h13.64v4.996h-3.816v17.261h3.816v5h-13.64v-5h3.824V41.594h-3.824zm-.051 50.148h27.43v4.574h-27.43z"/></svg>

After

Width:  |  Height:  |  Size: 813 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M8.264 15.29a1 1 0 0 1 .822.522l1.892 3.493a1.809 1.809 0 0 1-1.856 2.65l-3.93-.582a1 1 0 0 1-.672-1.563l.623-.89l-.174-.984a1 1 0 0 1 .811-1.159l.985-.173l.623-.89a1 1 0 0 1 .876-.425Zm6.347-.024a1 1 0 0 1 .858-.043l.116.057l.94.543l.966-.259a1 1 0 0 1 1.188.596l.037.111l.259.966l.94.543a1 1 0 0 1 .154 1.623l-.103.078l-3.315 2.188a1.809 1.809 0 0 1-2.805-1.46l.003-.158l.238-3.965a1 1 0 0 1 .524-.82M12 2a4 4 0 0 1 4 4v1c0 1.214.502 2.267 1.166 3.354l.736 1.165c.1.16.195.315.28.457c.32.541.628 1.14.788 1.781a7 7 0 0 1 .194 1.358a2 2 0 0 0-1.932-.516l-.565.151l-.582-.336a2 2 0 0 0-2.996 1.613l-.238 3.965c-.021.345.022.684.121 1.003l-.269.005h-.406q-.114 0-.226-.004c.22-.71.152-1.492-.214-2.167l-1.891-3.493a2 2 0 0 0-3.397-.195l-.385.55l-.33.058a5.4 5.4 0 0 1 .024-1.16c.037-.285.086-.567.152-.832c.198-.792.535-1.459.857-2.02l.437-.74C7.74 10.28 8 9.722 8 9V6a4 4 0 0 1 4-4m-1.438 5.778l-.822.41c.224.597.572 1.156.897 1.6l.204.269l.184.225l.081.094l.25-.141l.329-.197c.176-.109.368-.232.566-.367c.604-.412 1.225-.91 1.662-1.427l-2.316-.58a1.5 1.5 0 0 0-1.035.114"/></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.6 KiB

View file

@ -1,14 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" fill="none" />
<g fill="none">
<g fill="currentColor" clip-path="url(#SVGXv8lpc2Y)">
<path d="M11.914 0C5.82 0 6.2 2.656 6.2 2.656l.007 2.752h5.814v.826H3.9S0 5.789 0 11.969s3.403 5.96 3.403 5.96h2.03v-2.867s-.109-3.42 3.35-3.42h5.766s3.24.052 3.24-3.148V3.202S18.28 0 11.913 0M8.708 1.85c.578 0 1.046.47 1.046 1.052c0 .581-.468 1.051-1.046 1.051s-1.046-.47-1.046-1.051c0-.582.467-1.052 1.046-1.052" />
<path d="M12.087 24c6.092 0 5.712-2.656 5.712-2.656l-.007-2.752h-5.814v-.826h8.123s3.9.445 3.9-5.735s-3.404-5.96-3.404-5.96h-2.03v2.867s.109 3.42-3.35 3.42H9.452s-3.24-.052-3.24 3.148v5.292S5.72 24 12.087 24m3.206-1.85c-.579 0-1.046-.47-1.046-1.052c0-.581.467-1.051 1.046-1.051c.578 0 1.046.47 1.046 1.051c0 .582-.468 1.052-1.046 1.052" />
</g>
<defs>
<clipPath id="SVGXv8lpc2Y">
<path fill="#fff" d="M0 0h24v24H0z" />
</clipPath>
</defs>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 991 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 128 128"><path fill="currentColor" d="M61.773 2.91c-3.652 2.344-4.707 7.2-2.351 10.84C72.359 33.79 75.414 48.902 74.09 62.148c-5.356 25.364-16.996 30.508-27.172 30.508c-9.934 0-7.273-16.344.195-21.129c4.457-2.785 10.164-4.593 14.547-4.593c4.34 0 7.86-3.508 7.86-7.836c0-4.332-3.52-7.84-7.86-7.84c-5.117 0-10.14 1.078-14.824 2.906c.957-4.516 1.309-9.398.07-14.586c-1.879-7.883-7.285-15.406-16.68-22.703a7.86 7.86 0 0 0-5.8-1.598a7.86 7.86 0 0 0-5.235 2.961a7.826 7.826 0 0 0 1.38 11c7.652 5.946 10.179 10.344 11.042 13.965c.867 3.621.172 7.504-1.566 12.844c-2.219 7.191-4.793 13.613-5.922 19.773c-.555 3.032-.602 6.328-.746 8.965c-5.512-5.37-7.668-12.46-7.668-22.824c0-4.328-3.52-7.84-7.86-7.836s-7.855 3.508-7.855 7.836c0 14.152 4.137 27.617 15.23 36.602c10.04 9.562 35.57 6.027 35.57 21.386c0 4.332 6.345 6.442 10.684 6.442c4.454 0 10.055-2.977 10.055-6.442c0-17.426 18.363-28.015 48.59-27.969c4.344.008 7.863-3.5 7.871-7.828c.008-4.332-3.504-7.847-7.848-7.855c-2.066 0-4.082.07-6.066.187c3.379-7.949 4.879-16.699 4.566-26.148c-.14-4.328-3.773-7.723-8.113-7.582c-4.344.144-7.746 3.77-7.601 8.098c.41 12.375-.055 23.425-9.274 29.253c-2.62 1.653-5.672 3.09-8.562 3.09c2.246-6.101 3.941-12.547 4.632-19.488c.446-4.434.493-9.7-.015-13.785c-.781-6.336-1.73-13.524.676-18.938c2.16-4.66 7-6.613 14.109-6.613c4.336-.004 7.852-3.512 7.852-7.836c.003-4.332-3.512-7.844-7.852-7.848c-10.563 0-18.57 5.56-23.11 12.274c-2.37-5.066-5.261-10.29-8.753-15.7a7.87 7.87 0 0 0-4.942-3.413a7.9 7.9 0 0 0-3.066-.059a7.9 7.9 0 0 0-2.856 1.121m0 0"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -98,16 +98,16 @@
});
</script>
<div class="relative transition-[translate,opacity] duration-300 delay-100 starting:opacity-0 starting:translate-y-4">
<div class="relative transition-[translate,opacity] duration-300 delay-200 starting:opacity-0 starting:translate-y-4">
<div class="flex justify-center items-center absolute -top-2 right-2 z-0">
<div class="w-4 h-4 rounded-full {online ? 'bg-green' : 'bg-red'}"></div>
<div class="w-4 h-4 rounded-full absolute animate-duration-2s animate-delay-2s {online ? 'bg-green animate-ping' : 'bg-red'}"></div>
</div>
<section>
<section class="mb-0!">
<legend>computer</legend>
<div class="font-mono text-sm space-y-4">
<div class="font-mono text-sm mb-4 space-y-4">
<!-- System Stats Row -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
@ -188,11 +188,6 @@
</div>
</div>
<div class="flex justify-between text-xs text-overlay1 my-2">
<p>// All time data since 9 November 2025</p>
<p>Past hour:</p>
</div>
<div class="relative h-96 rounded-md bg-mantle border border-surface0 p-2 shadow-sm">
<Chart
data={chartData}
@ -202,7 +197,7 @@
yDomain={[0, 1]}
yNice
padding={{ left: 32, top: 8, right: 12, bottom: 20 }}
tooltipContext={{ mode: "bisect-x" }}
tooltip={{ mode: "bisect-x" }}
>
<Svg>
<Axis
@ -266,7 +261,7 @@
yDomain={[0, null]}
yNice
padding={{ left: 32, top: 8, right: 12, bottom: 20 }}
tooltipContext={{ mode: "bisect-x" }}
tooltip={{ mode: "bisect-x" }}
>
<Svg>
<Axis
@ -323,5 +318,7 @@
</Tooltip.Root>
</Chart>
</div>
<p class="text-xs text-overlay1 mt-2">* Since 9 November 2025</p>
</section>
</div>

View file

@ -26,13 +26,13 @@
});
</script>
<div class="relative transition-[translate,opacity] duration-300 delay-200 starting:opacity-0 starting:translate-y-4">
<div class="relative transition-[translate,opacity] duration-300 delay-100 starting:opacity-0 starting:translate-y-4">
<div class="flex justify-center items-center absolute -top-2 right-2 z-0">
<div class="w-4 h-4 rounded-full {playing ? 'bg-green' : 'bg-red'}"></div>
<div class="w-4 h-4 rounded-full absolute animate-duration-2s animate-delay-2s {playing ? 'bg-green animate-ping' : 'bg-red'}"></div>
</div>
<section class="p-2! mb-0!">
<section class="p-2!">
<legend>last.fm</legend>
<a href={url} class="block relative h-24 group">

View file

@ -17,10 +17,7 @@
<div class="group relative hover:-translate-y-1 transition-transform duration-200">
<section class="h-full p-0! flex flex-col transition-colors group-hover:border-peach/50!">
{#if year}
<span
class={`absolute bg-peach text-base px-2 py-1 rounded-full text-xs font-medium z-10 shadow-md
${image ? "top-2 left-2" : "top-4 right-4"}`}>{year}</span
>
<span class="absolute top-2 left-2 bg-peach text-base px-2 py-1 rounded-full text-xs font-medium z-10 shadow-md">{year}</span>
{/if}
<!-- Image -->
@ -70,7 +67,10 @@
</a>
{#if websiteUrl}
<a href={websiteUrl} class="bg-peach/25 border border-peach/50 text-peach font-medium p-2 rounded-md flex justify-center items-center gap-2 text-sm">
<a
href={websiteUrl}
class="bg-peach/25 border border-peach/50 text-peach font-medium p-2 rounded-md flex justify-center items-center gap-2 text-sm"
>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 48 48"
><g fill="none" stroke="currentColor" stroke-width="3"
><path stroke-linejoin="round" d="M3 24a21 21 0 1 0 42 0a21 21 0 1 0-42 0" /><path

View file

@ -72,15 +72,6 @@
year: 2024,
image: "/projects/blockmatic.webp",
},
{
name: "jellyfin-spicetify",
owner: "trafficlunar",
description: "Spicetify plugin to play Jellyfin songs on the Spotify client - maybe I'll continue it eventually",
stargazers_count: 0,
language: "",
url: "https://github.com/trafficlunar/jellyfin-spicetify",
year: 2026,
},
{
name: "website",
owner: "trafficlunar",

View file

@ -23,12 +23,7 @@ import MailIcon from "../assets/icons/socials/mail.svg";
<a href="https://www.twitter.com/trafficlunr" data-tooltip="Twitter" aria-label="Twitter"><TwitterIcon /></a>
</li>
<li class="z-50">
<button
data-tooltip="Discord"
aria-label="Discord"
class="flex justify-center size-full py-1 cursor-pointer"
onclick="alert('My username is trafficlunar! (This alert is *hopefully* temporary)')"><DiscordIcon /></button
>
<a href="https://discord.gg/48cXBFKvWQ" data-tooltip="Discord" aria-label="Discord"><DiscordIcon /></a>
</li>
<li>
<a href="https://www.reddit.com/user/trafficlunr" data-tooltip="Reddit" aria-label="Reddit"><RedditIcon /></a>

View file

@ -1,15 +1,19 @@
---
import VSCodiumIcon from "../assets/icons/coding/vscodium.svg";
import IntelliJIdeaIcon from "../assets/icons/coding/intellij.svg";
import TypeScriptIcon from "../assets/icons/coding/typescript.svg";
import GoIcon from "../assets/icons/coding/go.svg";
import RustIcon from "../assets/icons/coding/rust.svg";
import LuaUIcon from "../assets/icons/coding/lua.svg";
import JavaIcon from "../assets/icons/coding/java.svg";
import PythonIcon from "../assets/icons/coding/python.svg";
import SvelteIcon from "../assets/icons/coding/svelte.svg";
import ReactIcon from "../assets/icons/coding/react.svg";
import NextIcon from "../assets/icons/coding/next.svg";
import AstroIcon from "../assets/icons/coding/astro.svg";
import TailwindIcon from "../assets/icons/coding/tailwind.svg";
import PostgresIcon from "../assets/icons/coding/postgres.svg";
import DockerIcon from "../assets/icons/coding/docker.svg";
import LinuxIcon from "../assets/icons/coding/linux.svg";
---
<section class="mb-0! transition-[translate,opacity] duration-300 delay-200 starting:opacity-0 starting:translate-y-4">
@ -17,6 +21,24 @@ import TailwindIcon from "../assets/icons/coding/tailwind.svg";
<!-- separator -->
<div class="flex items-center gap-2 text-overlay1 text-sm font-medium mb-2">
<hr class="w-4 border-surface0" />
<span>editors</span>
<hr class="grow border-surface0" />
</div>
<div class="flex flex-wrap gap-1 mb-4 *:bg-surface0/30 *:shadow *:border *:border-surface1/50 *:rounded-md *:p-1.5 *:text-sm *:flex *:items-center *:gap-1.5">
<div>
<VSCodiumIcon class="size-5" />
<span>VSCodium</span>
</div>
<div>
<IntelliJIdeaIcon class="size-5" />
<span>IntelliJ IDEA</span>
</div>
</div>
<!-- separator -->
<div class="flex items-center gap-2 text-overlay1 text-sm font-medium my-2">
<hr class="w-4 border-surface0" />
<span>languages</span>
<hr class="grow border-surface0" />
@ -35,7 +57,7 @@ import TailwindIcon from "../assets/icons/coding/tailwind.svg";
<RustIcon class="size-5" />
<span>Rust</span>
</div>
<div data-tooltip="yes, the Roblox version">
<div data-tooltip="The Roblox version">
<LuaUIcon class="size-5" />
<span>Luau</span>
</div>
@ -43,10 +65,6 @@ import TailwindIcon from "../assets/icons/coding/tailwind.svg";
<JavaIcon class="size-5" />
<span>Java</span>
</div>
<div>
<PythonIcon class="size-5" />
<span>Python</span>
</div>
</div>
<!-- separator -->
@ -56,7 +74,7 @@ import TailwindIcon from "../assets/icons/coding/tailwind.svg";
<hr class="grow border-surface0" />
</div>
<div class="flex flex-wrap gap-1 *:bg-surface0/30 *:shadow *:border *:border-surface1/50 *:rounded-md *:p-1.5 *:text-sm *:flex *:items-center *:gap-1.5">
<div class="flex flex-wrap gap-1 mb-4 *:bg-surface0/30 *:shadow *:border *:border-surface1/50 *:rounded-md *:p-1.5 *:text-sm *:flex *:items-center *:gap-1.5">
<div>
<SvelteIcon class="size-5" />
<span>Svelte</span>
@ -78,4 +96,25 @@ import TailwindIcon from "../assets/icons/coding/tailwind.svg";
<span>Tailwind</span>
</div>
</div>
<!-- separator -->
<div class="flex flex-wrap items-center gap-2 text-overlay1 text-sm font-medium my-2">
<hr class="w-4 border-surface0" />
<span>infrastructure</span>
<hr class="grow border-surface0" />
</div>
<div class="flex flex-wrap gap-1 *:bg-surface0/30 *:shadow *:border *:border-surface1/50 *:rounded-md *:p-1.5 *:text-sm *:flex *:items-center *:gap-1.5">
<div>
<PostgresIcon class="size-5" />
<span>PostgreSQL</span>
</div>
<div>
<DockerIcon class="size-5" />
<span>Docker</span>
</div>
<div>
<LinuxIcon class="size-5" />
<span>Linux</span>
</div>
</div>
</section>

View file

@ -6,6 +6,6 @@ import Computer from "../components/Computer.svelte";
---
<Layout>
<Computer client:load />
<Music client:load />
<Computer client:load />
</Layout>

View file

@ -22,13 +22,13 @@ import EightyEightyThirtyOne from "../components/88x31.svelte";
<CopyButton client:load />
<code class="text-sm font-mono" style="font-variant-ligatures: none;">
<span class="text-teal">{"<"}</span><span class="text-blue">a</span>{" "}
<span class="text-yellow">href</span><span class="text-teal">=</span><span class="text-green">{'"https://trafficlunar.net/"'}</span>{" "}
<span class="text-teal">{"<"}</span><span class="text-blue">a</span>
<span class="text-yellow">href</span><span class="text-teal">=</span><span class="text-green">{'"https://trafficlunar.net/"'}</span>
<span class="text-yellow">target</span><span class="text-teal">=</span><span class="text-green">{'"_blank"'}</span><span class="text-teal"
>{"><"}</span
><span class="text-blue">img</span>{" "}
<span class="text-yellow">src</span><span class="text-teal">=</span><span class="text-green">{'"https://trafficlunar.net/88x31.gif"'}</span>{" "}
<span class="text-yellow">alt</span><span class="text-teal">=</span><span class="text-green">{'"trafficlunar"'}</span>{" "}
><span class="text-blue">img</span>
<span class="text-yellow">src</span><span class="text-teal">=</span><span class="text-green">{'"https://trafficlunar.net/88x31.gif"'}</span>
<span class="text-yellow">alt</span><span class="text-teal">=</span><span class="text-green">{'"trafficlunar"'}</span>
<span class="text-teal">{"/></"}</span><span class="text-blue">a</span><span class="text-teal">{">"}</span>
</code>
</div>

View file

@ -10,36 +10,41 @@ import LocationIcon from "../assets/icons/location.svg";
---
<Layout>
<section class="transition-[translate,opacity] duration-300 delay-100 starting:opacity-0 starting:translate-y-4 text-[0.938rem] flex flex-col gap-2">
<section class="transition-[translate,opacity] duration-300 delay-100 starting:opacity-0 starting:translate-y-4 text-[0.938rem]">
<legend>about</legend>
<p>
Hey! I'm <strong class="text-peach">trafficlunar</strong>. I'm a <Age client:only /> year old self-taught programmer.
</p>
<p>I like coding things, self-hosting, 3D printing, playing video games, watching anime, and listening to music.</p>
<p>If you're looking to contact me, I'd recommend sending a message request on Discord! (username is trafficlunar)</p>
<p>
This site was made using Astro + Svelte and is hosted on both{" "}
<p class="mt-2">I like coding things, maintaining and setting up servers, playing video games, watching anime, and listening to music.</p>
<p class="mt-2">If you're looking to contact me, here are the best ways from fastest to slowest response:</p>
<ol class="list-decimal pl-8 text-sm mt-2">
<li>Discord <span class="text-surface2">(fastest, within a day or two)</span></li>
<li>Reddit <span class="text-surface2">(fast)</span></li>
<li>Email <span class="text-surface2">(really slow, within days or even a month, probably weeks tbh)</span></li>
</ol>
<p class="mt-4">
This site was made using Astro + Svelte and is hosted on both
<a href="https://pages.cloudflare.com/" class="link" data-tooltip="At trafficlunar.net!">Cloudflare Pages (?)</a> and <a
href="https://nekoweb.org/"
class="link"
data-tooltip="At trafficlunar.nekoweb.org!">Nekoweb (?)</a
>.
</p>
<p>
I use Arch BTW and Hyprland with the Catppuccin{" "}
<p class="mt-2">
I use Arch BTW and Hyprland with the Catppuccin
<span class="text-red">F</span><span class="text-peach">r</span><span class="text-yellow">a</span><span class="text-green">p</span><span class="text-blue"
>p</span
><span class="text-mauve">é</span> color scheme for everything (including this website!).
><span class="text-mauve">é</span> color scheme for everything (including this website!) I self-host a bunch of services and I also own a 3D printer.
</p>
<div class="flex gap-1 mt-2">
<div class="flex gap-1 mt-4">
<div data-tooltip="Pronouns" class="text-sm rounded bg-peach/25 text-peach w-fit pl-1 pr-2 py-1 flex gap-1 items-center">
<PersonIcon />
he/him
</div>
<div data-tooltip="Location" class="text-sm rounded bg-peach/25 text-peach w-fit pl-1 pr-2 py-1 flex gap-1 items-center">
<LocationIcon />
UK
Scotland
</div>
</div>
</section>