let's move stuff around
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 550 B |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 3 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 690 B |
Before Width: | Height: | Size: 1 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 25 KiB |
6
src/app/favicon.ico/route.tsx
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
import { NextRequest } from "next/server";
|
||||||
|
|
||||||
|
export async function GET(request: NextRequest) {
|
||||||
|
return Response.redirect("https://cdn.abtmtr.link/site_content/favicon.ico");
|
||||||
|
}
|
|
@ -1,54 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"name": "abtmtr.link",
|
|
||||||
"main": {
|
|
||||||
"title": "Systems Administrator",
|
|
||||||
"email": "me@abtmtr.link",
|
|
||||||
"url": "https://abtmtr.link/"
|
|
||||||
},
|
|
||||||
"involvement": [
|
|
||||||
{
|
|
||||||
"description": "It's me",
|
|
||||||
"start": "August 2023"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Fyra Labs",
|
|
||||||
"main": {
|
|
||||||
"title": "Artist in Residence",
|
|
||||||
"email": "mtr@fyralabs.com",
|
|
||||||
"url": "https://fyralabs.com/about/"
|
|
||||||
},
|
|
||||||
"involvement": [
|
|
||||||
{
|
|
||||||
"description": "Drew Plasmanine art for Jaiden and Lleyton",
|
|
||||||
"date": "March 2024"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Testing for UM on ARM Chromebooks",
|
|
||||||
"supervisor": "Owen Zimmerman",
|
|
||||||
"start": "April 2024"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Miscellaneous involvement",
|
|
||||||
"start": "April 2024"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Team Elrant",
|
|
||||||
"main": {
|
|
||||||
"title": "Member",
|
|
||||||
"email": "abtmtr@elrant.team",
|
|
||||||
"url": "https://github.com/orgs/elrant/people"
|
|
||||||
},
|
|
||||||
"involvement": [
|
|
||||||
{
|
|
||||||
"_type": "default",
|
|
||||||
"description": "Member",
|
|
||||||
"start": "May 2024"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,42 +1,60 @@
|
||||||
import { MainLayout } from "@/layout/MainLayout/MainLayout";
|
import { MainLayout } from "@/layout/MainLayout/MainLayout";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import o from "./organizations.json";
|
import { ConditionalNull, ConditionalParent } from "@/components/utility/Conditional";
|
||||||
import { ConditionalNull } from "@/components/utility/Conditional";
|
|
||||||
|
|
||||||
export default async function Home() {
|
export default async function Home() {
|
||||||
|
const o = await fetch("https://cdn.abtmtr.link/site_content/organizations.json").then(x=>x.json()).catch(_ => null);
|
||||||
const organizations: {
|
const organizations: {
|
||||||
name: string,
|
name: string,
|
||||||
|
url: string,
|
||||||
main: {
|
main: {
|
||||||
title: string,
|
title?: string,
|
||||||
email?: string,
|
email?: string,
|
||||||
url: string
|
url?: string,
|
||||||
},
|
},
|
||||||
involvement: {
|
involvement: {
|
||||||
description: string,
|
description: string,
|
||||||
supervisor?: string,
|
supervisor?: string,
|
||||||
|
url?: string,
|
||||||
start?: string,
|
start?: string,
|
||||||
date?: string,
|
date?: string,
|
||||||
end?: string
|
end?: string
|
||||||
}[]
|
}[]
|
||||||
}[] = o;
|
}[] = o.reverse();
|
||||||
return (
|
return (
|
||||||
<MainLayout currentPage="/orgs/" title="Organizations">
|
<MainLayout currentPage="/orgs/" title="Organizations">
|
||||||
<img className="headerImage" src="/headers/orgs.png" alt="ORGANIZATIONS"></img>
|
<img className="headerImage" src="/headers/orgs.png" alt="ORGANIZATIONS"></img>
|
||||||
<p>Organizations, corporations, companies, or just general groups I'm a part of.</p>
|
<p>Organizations I've contributed to, corporations/companies I've done work for, or just general groups I'm a part of.</p>
|
||||||
<p>All of it's listed here, as well as my work for them.</p>
|
<p>All of it's listed here, as well as what I've done.</p>
|
||||||
{organizations.map((organization) => (<div style={{margin: "2em 0"}}>
|
{organizations.map((organization) => (<div style={{margin: "2em 0"}}>
|
||||||
<h2>{organization.name}</h2>
|
<h2><a target="_blank" href={organization.url}>{organization.name}</a></h2>
|
||||||
<p><a href={organization.main.url}>{organization.main.title}</a>
|
<p>
|
||||||
|
<ConditionalNull condition={organization.main.title != null}>
|
||||||
|
<ConditionalParent condition={organization.main.url != null} parent={x =>
|
||||||
|
<a target="_blank" href={organization.main.url}>{x}</a>
|
||||||
|
}>
|
||||||
|
{organization.main.title}
|
||||||
|
</ConditionalParent>
|
||||||
|
</ConditionalNull>
|
||||||
|
<ConditionalNull condition={organization.main.title != null && organization.main.email != null}>
|
||||||
|
{" - "}
|
||||||
|
</ConditionalNull>
|
||||||
<ConditionalNull condition={organization.main.email != null}>
|
<ConditionalNull condition={organization.main.email != null}>
|
||||||
{" - "}<a href={`mailto:${organization.main.email}`}>{organization.main.email}</a>
|
<a href={`mailto:${organization.main.email}`}>{organization.main.email}</a>
|
||||||
</ConditionalNull>
|
</ConditionalNull>
|
||||||
</p>
|
</p>
|
||||||
{organization.involvement.map((involvement) => (<>
|
{organization.involvement.reverse().map((involvement) => (<>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>{involvement.description}</p>
|
<p>
|
||||||
|
<ConditionalParent condition={involvement.url != null} parent={x =>
|
||||||
|
<a target="_blank" href={involvement.url}>{x}</a>
|
||||||
|
}>
|
||||||
|
{involvement.description}
|
||||||
|
</ConditionalParent>
|
||||||
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<ConditionalNull condition={involvement.supervisor != null}>
|
<ConditionalNull condition={involvement.supervisor != null}>
|
||||||
<small>{involvement.supervisor}</small>
|
<small>w/ {involvement.supervisor}</small>
|
||||||
</ConditionalNull>
|
</ConditionalNull>
|
||||||
<ConditionalNull condition={involvement.supervisor != null && (involvement.start || involvement.date) != null}>
|
<ConditionalNull condition={involvement.supervisor != null && (involvement.start || involvement.date) != null}>
|
||||||
<small>{" - "}</small>
|
<small>{" - "}</small>
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import { MainLayout } from "@/layout/MainLayout/MainLayout";
|
import { MainLayout } from "@/layout/MainLayout/MainLayout";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import buttons from "@/buttons.json";
|
|
||||||
import Searchbar from "@/components/Searchbar/Searchbar";
|
import Searchbar from "@/components/Searchbar/Searchbar";
|
||||||
|
|
||||||
export default async function Home() {
|
export default async function Home() {
|
||||||
const data = await fetch("https://pronouns.cc/api/v1/users/mtr").then(x=>x.json());
|
const buttons = await fetch("https://cdn.abtmtr.link/site_content/buttons.json").then(x=>x.json()).catch(_ => null);
|
||||||
|
const data = await fetch("https://pronouns.cc/api/v1/users/mtr").then(x=>x.json()).catch(_ => null);
|
||||||
const domainreq = await fetch("https://blog.abtmtr.link/api/collections/paste/posts/domain")
|
const domainreq = await fetch("https://blog.abtmtr.link/api/collections/paste/posts/domain")
|
||||||
.then(x=>x.json());
|
.then(x=>x.json()).catch(_ => "[]");
|
||||||
const domains = JSON.parse(domainreq?.data?.body.replace(/[“”]/g, "\"")) ?? [];
|
const domains = JSON.parse(domainreq?.data?.body.replace(/[“”]/g, "\"")) ?? [];
|
||||||
|
|
||||||
const goodNames = data.names.filter((x:{status:string})=>x.status == "okay");
|
const goodNames = data.names.filter((x:{status:string})=>x.status == "okay");
|
||||||
|
@ -39,95 +39,11 @@ export default async function Home() {
|
||||||
flexWrap: "wrap",
|
flexWrap: "wrap",
|
||||||
padding: 8,
|
padding: 8,
|
||||||
gap: 8
|
gap: 8
|
||||||
}}>{buttons.map((button) => (
|
}}>{buttons.map((button:{href: string, img: string, alt: string}) => (
|
||||||
<Link href={button.href} target="_blank">
|
<Link href={button.href} target="_blank">
|
||||||
<img src={button.img} title={button.alt} alt={button.alt} width="88" height="31" />
|
<img src={button.img} title={button.alt} alt={button.alt} width="88" height="31" />
|
||||||
</Link>
|
</Link>
|
||||||
))}</div>
|
))}</div>
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
{
|
|
||||||
"id": "clhd8desmggedm3q1t3g",
|
|
||||||
"id_new": "251576323070604865",
|
|
||||||
"sid": "qftsk",
|
|
||||||
"name": "mtr",
|
|
||||||
"display_name": "abtmtr.link: FURRY REVOLUTION",
|
|
||||||
"bio": "https://abtmtr.link/\nminor (16)\nabtmtr.link sysadmin\n🇩🇴 & 🏳️⚧️-ish & pluralflux ND ",
|
|
||||||
"member_title": "Managers",
|
|
||||||
"avatar": "dfa7038db301508df749772f07ae9302fb0b9d71dff6770f9a6fefb6cf16f2e3",
|
|
||||||
"links": [
|
|
||||||
"https://last.fm/user/MeowcaTheoRange",
|
|
||||||
"https://liberapay.com/abtmtr.link/",
|
|
||||||
"https://beta.trollcall.xyz/clan/meowcatheorange",
|
|
||||||
"https://movie-web.app/",
|
|
||||||
"https://picrew.me/en/image_maker/92646",
|
|
||||||
"https://pronouns.cc/@mtr"
|
|
||||||
],
|
|
||||||
"names": [
|
|
||||||
{
|
|
||||||
"value": "MeowcaTheoRange",
|
|
||||||
"status": "okay"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"value": "abtmtr.link",
|
|
||||||
"status": "okay"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"value": "Theo",
|
|
||||||
"status": "okay"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"pronouns": [
|
|
||||||
{
|
|
||||||
"pronouns": "[any]",
|
|
||||||
"display_text": null,
|
|
||||||
"status": "okay"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"members": [
|
|
||||||
{
|
|
||||||
"id": "cng1h37m985pb3k8ohe0",
|
|
||||||
"id_new": "286009441537261082",
|
|
||||||
"sid": "shdvoo",
|
|
||||||
"name": "MeowcaTheoRange",
|
|
||||||
"display_name": "MeowcaTheoRange",
|
|
||||||
"bio": "totality in association.",
|
|
||||||
"avatar": "a686a0bfeeb19ce6591a3bef6bb0f4ff38586f0d75b857cb21c3d86ae42b39e4",
|
|
||||||
"links": [
|
|
||||||
|
|
||||||
],
|
|
||||||
"names": [
|
|
||||||
{
|
|
||||||
"value": "Theo",
|
|
||||||
"status": "okay"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"value": "Thea",
|
|
||||||
"status": "okay"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"pronouns": [
|
|
||||||
{
|
|
||||||
"pronouns": "[any]",
|
|
||||||
"display_text": null,
|
|
||||||
"status": "okay"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"fields": [
|
|
||||||
|
|
||||||
],
|
|
||||||
"custom_preferences": {
|
|
||||||
|
|
||||||
},
|
|
||||||
"flags": [
|
|
||||||
|
|
||||||
],
|
|
||||||
"badges": 0,
|
|
||||||
"utc_offset": -18000
|
|
||||||
}
|
|
||||||
*/
|
|
|
@ -1,87 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"href": "https://jaiden.sh/",
|
|
||||||
"img": "/88x31/jaiden_sh.png",
|
|
||||||
"alt": "jaiden.sh"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://owenzimmerman.com/",
|
|
||||||
"img": "/88x31/owenzimmerman_com.png",
|
|
||||||
"alt": "owenzimmerman.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://arimelody.me/",
|
|
||||||
"img": "/88x31/arimelody_me.gif",
|
|
||||||
"alt": "arimelody.me"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://freeplay.floof.company/",
|
|
||||||
"img": "/88x31/freeplay_floof_company.png",
|
|
||||||
"alt": "freeplay.floof.company"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://invoxiplaygames.uk/",
|
|
||||||
"img": "/88x31/invoxiplaygames_uk.png",
|
|
||||||
"alt": "invoxiplaygames.uk"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://ioletsgo.gay/",
|
|
||||||
"img": "/88x31/ioletsgo_gay.gif",
|
|
||||||
"alt": "ioletsgo.gay"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://mae.wtf/",
|
|
||||||
"img": "/88x31/mae_wtf.png",
|
|
||||||
"alt": "mae.wtf"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://micro.pages.gay/",
|
|
||||||
"img": "/88x31/micro_pages_gay.png",
|
|
||||||
"alt": "micro.pages.gay"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://sneexy.pages.gay/",
|
|
||||||
"img": "/88x31/sneexy_pages_gay.gif",
|
|
||||||
"alt": "sneexy.pages.gay"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://whois.slipfox.xyz/",
|
|
||||||
"img": "/88x31/whois_slipfox_xyz.png",
|
|
||||||
"alt": "whois.slipfox.xyz"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://moth.monster/",
|
|
||||||
"img": "/88x31/moth_monster.png",
|
|
||||||
"alt": "moth.monster"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://translunar.academy/",
|
|
||||||
"img": "/88x31/translunar_academy.png",
|
|
||||||
"alt": "translunar.academy"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://ultramarine-linux.org/",
|
|
||||||
"img": "/88x31/esoteric/gnu-linux.gif",
|
|
||||||
"alt": "Made on GNU/Linux"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://abtmtr.link/projects/item/normalize",
|
|
||||||
"img": "/88x31/esoteric/html.gif",
|
|
||||||
"alt": "<HTML> - Learn it today!"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://vivaldi.com",
|
|
||||||
"img": "/88x31/esoteric/vivaldi.gif",
|
|
||||||
"alt": "I use Vivaldi"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://ublockorigin.com",
|
|
||||||
"img": "/88x31/esoteric/ublock.png",
|
|
||||||
"alt": "uBlock Origin Now!"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"href": "https://channelstore.roku.com/details/7da3fa0c2209746730df8a4e21e83b02",
|
|
||||||
"img": "/88x31/esoteric/xkcd.gif",
|
|
||||||
"alt": "xkcd"
|
|
||||||
}
|
|
||||||
]
|
|