---
import "../styles/global.css";
import SocialLink, { type Props as SLProps } from "../components/link.astro";
import githubImage from "../images/github.svg";
import bskyImage from "../images/bsky.svg";
import stalwartImage from "../images/stalwart.svg";
import linkedinImage from "../images/linkedin.svg";
import tangledImage from "../images/tangled.svg";
import logoImage from "../images/logo.svg";
import steamImage from "../images/steam.svg";
import plateImage from "../images/plate.svg";
import kofiImage from "../images/kofi.svg";
import { getImage } from "astro:assets";
const contactMethods = [
{
name: "Email",
url: "mailto:me@thecoded.prof",
status: "active",
icon: stalwartImage,
},
{
name: "LinkedIn",
url: "https://www.linkedin.com/in/samuelshuert",
status: "active",
icon: linkedinImage,
},
{
name: "Tangled Repos",
url: "https://tangled.org/thecoded.prof",
status: "active",
icon: tangledImage,
},
{
name: "Bluesky",
url: "https://bsky.app/profile/thecoded.prof",
status: "active",
icon: bskyImage,
},
{
name: "GitHub Repos",
url: "https://github.com/thecodedprof",
status: "disabled",
icon: githubImage,
},
{
name: "Personal Site",
url: "https://tangled.org/thecoded.prof/thecoded.prof",
status: "wip",
icon: logoImage,
},
{
name: "Steam",
url: "https://steamcommunity.com/id/thecodedprof/",
status: "active",
icon: steamImage,
},
{
name: "Plate",
url: "https://github.com/TheCodedProf/Plate",
status: "wip",
icon: plateImage,
},
{
name: "Ko-Fi",
url: "https://ko-fi.com/thecodedprof",
status: "active",
icon: kofiImage,
},
] as SLProps[];
const activeLinks = contactMethods.filter(
(method) => method.status === "active",
);
const wipLinks = contactMethods.filter((method) => method.status === "wip");
const disabledLinks = contactMethods.filter(
(method) => method.status === "disabled",
);
const optimizedImages = await Promise.all(
contactMethods.map(async (method) => await getImage({ src: method.icon })),
);
---
Contact TCP
{
optimizedImages.map((image) => (
))
}
TheCoded​Prof
{
activeLinks.length >= 1 && (
-
Active
)
}
{
activeLinks
.toSorted((a, b) => a.name.localeCompare(b.name))
.map(({ name, url, icon, status }) => (
-
))
}
{
wipLinks.length >= 1 && (
-
WIP
)
}
{
wipLinks
.toSorted((a, b) => a.name.localeCompare(b.name))
.map(({ name, url, icon, status }) => (
-
))
}
{
disabledLinks.length >= 1 && (
-
Old / Rarely used
)
}
{
disabledLinks
.toSorted((a, b) => a.name.localeCompare(b.name))
.map(({ name, url, icon, status }) => (
-
))
}