Major theme updates, formatting, updated every page's information.

This commit is contained in:
Alexis Werefox 2021-10-14 21:22:07 +00:00
parent 93a29dfb32
commit 7ebdfdf404
40 changed files with 325 additions and 266 deletions

View File

@ -8,11 +8,12 @@ export default function BasicPage({
card_title,
children,
back_url,
page_button_title,
}) {
const url = Boolean(back_url) ? back_url : "/";
return (
<div className="min-h-screen bg-werefox-grey-lighter dark:bg-werefox-grey-dark font-nerd">
<div className="min-h-screen bg-werefox-grey-light dark:bg-werefox-grey font-nerd">
<Head>
<title>{page_title}</title>
<link rel="icon" href="/favicon.ico" />
@ -21,7 +22,7 @@ export default function BasicPage({
<TCard card_title={card_title} />
<nav>
<PButton
title="Take me back home!"
title={page_button_title}
images={[
{ src: "/emoji/pixel_alexis.png", alt: "Pixel Alexis!" },
{ src: "/emoji/blue_heart.svg", alt: "Blue heart" },
@ -32,7 +33,7 @@ export default function BasicPage({
{children}
<nav>
<PButton
title="Take me back home!"
title={page_button_title}
images={[
{ src: "/emoji/pixel_alexis.png", alt: "Pixel Alexis!" },
{ src: "/emoji/blue_heart.svg", alt: "Blue heart" },

View File

@ -2,7 +2,7 @@ import FCard from "./faq-card";
export default function FAQBlock({ faqs }) {
return (
<div className="p-4 space-y-4 rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<div className="p-4 space-y-4 rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lightest dark:bg-werefox-grey-dark">
{Object.keys(faqs).map((faq) => (
<FCard
key={faq}

View File

@ -1,7 +1,7 @@
import FButton from "./footer-button";
export default function FooterCard() {
return (
<footer className="p-4 space-y-2 rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<footer className="p-4 space-y-2 rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lightest dark:bg-werefox-grey-dark">
<div className="flex text-werefox-blue-darker dark:text-werefox-blue">
<div className="flex-1"></div>
<FButton url="/contacts" inner_text="Contact" />

View File

@ -4,7 +4,7 @@ import FCard from "../components/footer-card";
export default function HomePage({ page_title, card_title, children }) {
return (
<div className="min-h-screen bg-werefox-grey-lighter dark:bg-werefox-grey-dark font-nerd">
<div className="min-h-screen bg-werefox-grey-light dark:bg-werefox-grey font-nerd">
<Head>
<title>{page_title}</title>
<link rel="icon" href="/favicon.ico" />

View File

@ -0,0 +1,15 @@
import Link from "next/link";
export default function IdentityCardButton({ url, button_text }) {
return (
<div>
<Link href={url}>
<a target="_blank">
<div className="p-4 hover:text-werefox-pink-dark dark:hover:text-werefox-pink ring-2 ring-werefox-blue-dark dark:ring-werefox-blue hover:ring-werefox-pink-dark dark:hover:ring-werefox-pink hover:animate-yip transition">
{button_text}
</div>
</a>
</Link>
</div>
);
}

View File

@ -0,0 +1,18 @@
export default function IdentityCardTextBox({ info }) {
let infoarray = [];
let infodict = {};
if (info) {
infoarray = info.split("\n");
infoarray = infoarray.slice(0, infoarray.length - 1);
infodict = Object.assign({}, infoarray);
}
return (
<div className="p-4 text-center text-md sm:text-lg ring-2 ring-werefox-blue-dark dark:ring-werefox-blue">
{Object.keys(infodict).map((i) => (
<p className="overflow-auto" key={i}>
{infodict[i] == "" ? <br /> : infodict[i]}
</p>
))}
</div>
);
}

View File

@ -1,143 +1,11 @@
import Link from "next/link";
import Image from "next/image";
import WCard from "./werefox-card";
export default function IdentityCard({
title,
info,
url,
src,
alt,
src2,
alt2,
children,
}) {
let infoarray = [];
let infodict = {};
if (info) {
infoarray = info.split("\n");
infoarray = infoarray.slice(0, infoarray.length - 1);
infodict = Object.assign({}, infoarray);
}
if (children) {
return (
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<div className="p-2 space-y-3">
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
<p className="p-4 text-center text-lg sm:text-2xl text-werefox-grey-dark dark:text-werefox-grey-lighter">
<img
className="object-contain relative inline-block w-8 h-8 align-middle mb-1"
src={src}
alt={alt}
/>{" "}
{title}
</p>
</div>
<div className="p-4 space-y-4 rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
{children}
</div>
</div>
</div>
);
} else if (src2) {
return (
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<div className="p-2 flow space-y-3">
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
<p className="p-4 text-center text-lg sm:text-2xl text-werefox-grey-dark dark:text-werefox-grey-lighter">
<img
className="object-contain relative inline-block w-8 h-8 align-middle mb-1"
src={src}
alt={alt}
/>{" "}
{title}
</p>
</div>
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
<div className="p-4 space-y-4 text-center text-md sm:text-lg text-werefox-blue-dark dark:text-werefox-blue">
{Object.keys(infodict).map((i) => (
<p key={i}>{infodict[i] == "" ? <br /> : infodict[i]}</p>
))}
</div>
</div>
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
<a href="https://twitter.com/ribbonfemale" target="_blank">
<span className="relative inline-flex align-middle">
<Image
className="rounded-lg"
src={src2}
layout="intrinsic"
width="2048"
height="2048"
alt={alt2}
/>
</span>
</a>
</div>
</div>
</div>
);
} else if (url) {
return (
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<div className="p-2 flow space-y-3" id={title}>
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
<p className="p-4 text-center text-lg sm:text-2xl text-werefox-grey-dark dark:text-werefox-grey-lighter">
<img
className="object-contain relative inline-block w-8 h-8 align-middle mb-1"
src={src}
alt={alt}
/>{" "}
{title}
</p>
</div>
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
<div className="p-4 space-y-4 text-center text-md sm:text-lg text-werefox-blue-dark dark:text-werefox-blue">
{Object.keys(infodict).map((i) => (
<p className="overflow-auto" key={i}>
{infodict[i] == "" ? <br /> : infodict[i]}
</p>
))}
</div>
<div className="pb-4 text-center text-md sm:text-lg text-werefox-blue-dark dark:text-werefox-blue">
<Link href={url}>
<a
target="_blank"
className=" transition hover:text-werefox-pink-dark dark:hover:text-werefox-pink"
>
Learn More
</a>
</Link>
</div>
</div>
</div>
</div>
);
} else {
return (
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<div className="p-2 flow space-y-3">
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
<h4 className="p-4 text-center text-lg sm:text-2xl text-werefox-grey-dark dark:text-werefox-grey-lighter">
<img
className="relative inline-block w-8 h-8 align-middle mb-1"
src={src}
alt={alt}
/>{" "}
{title}
</h4>
</div>
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
<div className="p-4 space-y-4 text-center text-md sm:text-lg text-werefox-blue-dark dark:text-werefox-blue">
{Object.keys(infodict).map((i) => (
<p className="overflow-auto" key={i}>
{" "}
{infodict[i] == "" ? <br /> : infodict[i]}
</p>
))}
</div>
</div>
</div>
</div>
);
}
export default function IdentityCard({ title, src, alt, children }) {
return (
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<WCard title={title} title_emoji={{ src: `${src}`, alt: `${alt}` }}>
{children}
</WCard>
</div>
);
}

View File

@ -3,7 +3,7 @@ import PButton from "./page-button";
export default function ProjectBlock({ pages }) {
return (
<nav>
<div className="flow space-y-2">
<div className="flow space-y-4">
{Object.keys(pages).map((page) => (
<PButton
key={page}

View File

@ -3,10 +3,10 @@ import Image from "next/image";
export default function PageButton({ title, images, url, extra_classes }) {
return (
<div className="p-1">
<div>
<Link href={url}>
<a
className={`${extra_classes} p-2 w-full inline-block text-lg text-center rounded-sm ring-2 ring-werefox-blue-dark dark:ring-werefox-blue hover:ring-werefox-pink-dark dark:hover:ring-werefox-pink text-werefox-blue-dark dark:text-werefox-blue hover:text-werefox-pink-dark dark:hover:text-werefox-pink focus:text-werefox-pink-dark dark:focus:text-werefox-pink hover:animate-yip transition`}
className={`${extra_classes} p-2 w-full inline-block text-lg text-center rounded-sm ring-2 bg-werefox-grey-lightest dark:bg-werefox-grey-dark ring-werefox-blue-dark dark:ring-werefox-blue hover:ring-werefox-pink-dark dark:hover:ring-werefox-pink text-werefox-blue-dark dark:text-werefox-blue hover:text-werefox-pink-dark dark:hover:text-werefox-pink focus:text-werefox-pink-dark dark:focus:text-werefox-pink hover:animate-yip transition`}
>
{images.map((source) => (
<span

View File

@ -19,7 +19,7 @@ export function renderPossibleURLField(field) {
return (
<Link href={field}>
<a target="_blank">
<div className="p-2 flex min-w-full min-h-full justify-center items-center align-middle ring-2 rounded-sm ring-werefox-blue-dark dark:ring-werefox-blue hover:ring-werefox-pink-dark dark:hover:ring-werefox-pink text-werefox-blue-dark dark:text-werefox-blue hover:text-werefox-pink-dark dark:hover:text-werefox-pink hover:animate-yip transition">
<div className="p-2 flex min-w-full min-h-full justify-center items-center align-middle ring-2 rounded-sm ring-werefox-pink-dark dark:ring-werefox-pink hover:ring-werefox-blue-dark dark:hover:ring-werefox-blue text-werefox-pink-dark dark:text-werefox-pink hover:text-werefox-blue-dark dark:hover:text-werefox-blue hover:animate-yip transition">
{field}
</div>
</a>
@ -41,10 +41,10 @@ export default function PartnerCard({ src, alt, url, fields, bio, user }) {
const biodict = Object.assign({}, bioarray);
return (
<div className="p-4 flex-column space-y-4 break-all group rounded-sm ring-2 ring-werefox-pink-dark dark:ring-werefox-pink hover:ring-werefox-blue-dark dark:hover:ring-werefox-blue text-werefox-pink-dark dark:text-werefox-pink hover:text-werefox-blue-dark dark:hover:text-werefox-blue hover:animate-yip transition">
<div className="p-4 flex-column space-y-4 break-all sm:text-sm text-xs text-center rounded-sm ring-2 ring-werefox-pink-dark dark:ring-werefox-pink">
<Link href={url}>
<a target="_blank">
<div className="p-4 flex rounded-sm ring-2 ring-werefox-pink-dark dark:ring-werefox-pink group-hover:ring-werefox-blue-dark dark:group-hover:ring-werefox-blue">
<div className="p-4 flex group rounded-sm ring-2 ring-werefox-pink-dark dark:ring-werefox-pink hover:ring-werefox-blue-dark dark:hover:ring-werefox-blue text-werefox-pink-dark dark:text-werefox-pink hover:text-werefox-blue-dark dark:hover:text-werefox-blue hover:animate-yip transition">
<div className="order-1 flex-1 flex-shrink-0 relative items-center justify-center align-middle sm:w-32 w-16 min-h-full mr-4">
<Image
src={finalsrc}
@ -53,7 +53,7 @@ export default function PartnerCard({ src, alt, url, fields, bio, user }) {
alt={alt}
/>
</div>
<div className="order-2 flex-5 sm:text-sm text-xs text-center space-y-4">
<div className="order-2 flex-5 space-y-4">
<div className="p-2 rounded-sm ring-2 ring-werefox-pink-dark dark:ring-werefox-pink group-hover:ring-werefox-blue-dark dark:group-hover:ring-werefox-blue">
{Object.keys(biodict).map((bio) => (
<div key={bio}>
@ -66,7 +66,7 @@ export default function PartnerCard({ src, alt, url, fields, bio, user }) {
</div>
</a>
</Link>
<div className="flex-column space-y-4">
<div className="flex-column space-y-4 text-werefox-pink-dark dark:text-werefox-pink">
{Object.keys(fields).map((field) => (
<div className="grid grid-cols-2 space-x-4" key={field}>
<div className="order-1">{renderPossibleURLField(field)}</div>

View File

@ -1,14 +1,10 @@
import PCard from "./project-card";
import WCard from "./werefox-card";
export default function ProjectCardBlock({ title, cards }) {
return (
<div className="p-2 space-y-4">
<div className="p-2 rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
<p className="sm:text-xl text-lg text-center text-werefox-blue-dark dark:text-werefox-blue">
{title}
</p>
</div>
<ul className="p-4 space-y-4 rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
<WCard title={title}>
<ul className="space-y-4">
{Object.keys(cards).map((card) => (
<PCard
key={card}
@ -20,6 +16,6 @@ export default function ProjectCardBlock({ title, cards }) {
/>
))}
</ul>
</div>
</WCard>
);
}

View File

@ -3,20 +3,22 @@ import Link from "next/link";
export default function ServerBlock({ servers }) {
return (
<div className="p-4 w-full inline-flow align-middle justify-center space-y-4">
<p className="w-full text-lg text-center text-werefox-blue-dark dark:text-werefox-blue">
All the stuff I run uses the following server machines with reverse SSH
connections to a{" "}
<Link href="https://www.linode.com/?r=61251dc51397edcfacadd7f3744b258b63ad4248">
<a
target="_blank"
className="transition hover:text-werefox-pink-dark dark:hover:text-werefox-pink"
>
Linode VPS
</a>
</Link>
{"."}
</p>
<div className="p-4 w-full inline-flow align-middle justify-center space-y-8">
<div className="p-4 ring-2 ring-werefox-blue-dark dark:ring-werefox-blue">
<p>
All the stuff I run uses the following server machines with reverse
SSH connections to a{" "}
<Link href="https://www.linode.com/?r=61251dc51397edcfacadd7f3744b258b63ad4248">
<a
target="_blank"
className="transition hover:text-werefox-pink-dark dark:hover:text-werefox-pink"
>
Linode VPS
</a>
</Link>
{"."}
</p>
</div>
{Object.keys(servers).map((server) => (
<SCard
server={server}

View File

@ -1,6 +1,6 @@
export default function ServerCard({ server, model, cpu, gpu, ram, os }) {
return (
<div className="p-2 space-y-1 w-full inline-flow ring-4 ring-werefox-blue-darkest dark:ring-werefox-blue bg-werefox-grey-lightest dark:bg-werefox-grey-darker text-lg text-werefox-blue-darkest dark:text-werefox-blue-light">
<div className="p-2 space-y-1 w-full inline-flow text-left ring-4 ring-werefox-blue-darkest dark:ring-werefox-blue bg-werefox-grey-lightest dark:bg-werefox-grey-darker text-lg text-werefox-cyan-dark dark:text-werefox-cyan-light">
<p>
<code>{`System: ${server}`}</code>
</p>

View File

@ -5,7 +5,7 @@ import KWidget from "./kofi-donation-widget.js";
export default function SupportBlock({ support }) {
return (
<WCard
innerText="I would sincerely appreciate if you would throw some financial
title="I would sincerely appreciate if you would throw some financial
support my way!! 💙"
>
<div className="p-4 space-y-4">

View File

@ -3,7 +3,7 @@ import Image from "next/image";
export default function TitleCard({ card_title }) {
return (
<div className="p-4 w-full rounded-lg ring-4 ring-werefox-blue-dark dark:ring-werefox-blue bg-werefox-grey-light dark:bg-werefox-grey text-xl text-center text-werefox-blue-dark dark:text-werefox-blue">
<div className="p-4 w-full rounded-sm ring-4 ring-werefox-blue-dark dark:ring-werefox-blue bg-werefox-grey-lightest dark:bg-werefox-grey-dark text-xl text-center text-werefox-blue-dark dark:text-werefox-blue">
<span className="animate-bounce align-middle inline-block w-6 h-6">
<Image
src="/emoji/pixel_alexis.png"

View File

@ -0,0 +1,29 @@
import Image from "next/image";
export default function WerefoxCardTitle({ title, title_emoji }) {
if (Boolean(title_emoji)) {
return (
<div className="p-4 w-full items-center justify-center align-middle rounded-sm ring-2 ring-werefox-blue-dark dark:ring-werefox-blue ">
<span className="object-contain relative inline-block w-8 h-8 mb-1 align-middle">
<Image
src={title_emoji["src"]}
layout="fill"
objectFit="contain"
alt={title_emoji["alt"]}
/>
</span>
<p className="inline text-md sm:text-lg text-werefox-blue-dark dark:text-werefox-blue">
{` ${title}`}
</p>
</div>
);
} else {
return (
<div className="rounded-sm ring-2 ring-werefox-blue-dark dark:ring-werefox-blue">
<p className="p-4 text-center text-md sm:text-lg text-werefox-blue-dark dark:text-werefox-blue">
{title}
</p>
</div>
);
}
}

View File

@ -1,26 +1,21 @@
export default function WerefoxCard({
isTitle,
innerText,
children,
}) {
if (isTitle) {
import WCT from "./werefox-card-title";
export default function WerefoxCard({ title_emoji, title, children }) {
if (Boolean(title_emoji)) {
return (
<div className="rounded-lg ring-4 ring-werefox-blue bg-werefox-grey-light dark:bg-werefox-grey">
{children}
<div className="p-4 space-y-4 text-center text-werefox-blue-dark dark:text-werefox-blue rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lightest dark:bg-werefox-grey-dark">
<WCT title={title} title_emoji={title_emoji} />
<div className="p-4 space-y-4 rounded-sm ring-2 ring-werefox-blue-dark dark:ring-werefox-blue">
{children}
</div>
</div>
);
} else {
return (
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<div className="p-2 space-y-2">
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
<p className="p-2 text-center text-md sm:text-lg text-werefox-blue-dark dark:text-werefox-blue">
{innerText}
</p>
</div>
<div className="p-2 space-y-2 rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lighter dark:bg-werefox-grey-dark">
{children}
</div>
<div className="p-4 space-y-4 text-center text-werefox-blue-dark dark:text-werefox-blue rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-lightest dark:bg-werefox-grey-dark">
<WCT title={title} />
<div className="p-4 space-y-4 rounded-sm ring-2 ring-werefox-blue-dark dark:ring-werefox-blue">
{children}
</div>
</div>
);

View File

@ -6,6 +6,12 @@
alt: "The Mastodon logo"
url_text: "@shadow8t4@vulpine.club"
"Ada's Mastodon":
url: "https://masto.werefox.dev/@ada"
src: "/emoji/mastodon-logo.png"
alt: "The Mastodon logo"
url_text: "@ada@masto.werefox.dev"
"My Twitter":
url: "https://twitter.com/alexis_werefox"
src: "/emoji/twitter-logo.png"

View File

@ -30,15 +30,15 @@
src: "/images/alexis_coffee.png"
alt: "Alexis sipping on some coffee"
'What is "Werefox Isekai"?':
answer: >
"Werefox Isekai" is just a silly term I've been using to refer to a series of
trips I've been planning in order to visit the folks I've met online over the
past few months/years. I believe my original post on this was "A hot, cute
girl from a foreign land falls from the sky and moves in with you temporarily,
and there's potentially a ton of sexual tension the entire time."
src: "/images/alexis_wink.png"
alt: "Alexis winking and giving a peace sign"
# 'What is "Werefox Isekai"?':
# answer: >
# "Werefox Isekai" is just a silly term I've been using to refer to a series of
# trips I've been planning in order to visit the folks I've met online over the
# past few months/years. I believe my original post on this was "A hot, cute
# girl from a foreign land falls from the sky and moves in with you temporarily,
# and there's potentially a ton of sexual tension the entire time."
# src: "/images/alexis_wink.png"
# alt: "Alexis winking and giving a peace sign"
"What do you do?":
answer: >
@ -50,13 +50,29 @@
src: "/images/alexis_shrug.png"
alt: "Alexis shrugging"
"Are you accepting more partners?":
'What happened to "Werefox Isekai"?':
answer: >
Hhaaa,,, Uhh, not at the moment? Anything can happen, though! Just don't
make it your main goal to try and date me, yeah? 💙
"Yeah, so... That was kind of a whole lot, I've been traveling and having folks
visit for a couple months. I very much need some time to relax and be to myself.
There are still more folks I want to visit, and I am going to be making trips to
see my partners again eventually as well, but for now I need a break."
src: "/images/alexis_coffee.png"
alt: "Alexis sipping on some coffee"
# "Are you accepting more partners?":
# answer: >
# Hhaaa,,, Uhh, not at the moment? Anything can happen, though! Just don't
# make it your main goal to try and date me, yeah? 💙
# src: "/images/alexis_coffee.png"
# alt: "Alexis sipping on some coffee"
"Are you accepting more partners?":
answer: >
I wouldn't say I'm looking, but I'm certainly open to the idea right now!
Just don't make it your main goal to try and date me, yeah? 💙
src: "/images/alexis_wink.png"
alt: "Alexis winking and giving a peace sign"
"... Wait, don't I know you?":
answer: >
Hey hey, if you're here from knowing me pre-transition, that's cool too.
@ -64,5 +80,5 @@
person than the one you knew before. Regardless, if you feel like
reaching out, in most cases I'm willing to catch up. If that's the case,
your best bets are Twitter DM, e-mail, or a text if you still have my number.
src: "/images/alexis_wink.png"
alt: "Alexis winking and giving a peace sign"
src: "/images/alexis_shrug.png"
alt: "Alexis shrugging"

View File

@ -66,11 +66,11 @@ avie:
being utter disasters and proud"
Elizafox:
url: "https://vulpine.club/@Elizafox"
json: "https://vulpine.club/@Elizafox.json"
Dax:
url: "https://masto.werefox.dev/@Dax"
json: "https://masto.werefox.dev/@Dax.json"
content: |
"I'd just like to interject for a moment. What you're referring to as Alexis, is in fact, Werefox/Alexis, or as I've recently taken to calling her, Werefox plus Alexis. Alexis is not a system unto herself, but rather another free member of a fully functioning plural system made useful by the Ada, Alice, and other vital system members comprising a full plural system as defined by DSM-V."
"im love alexis a lot 💚 🐀"
plausocks:
url: "https://masto.werefox.dev/@plausocks"
@ -78,11 +78,11 @@ plausocks:
content: |
"*headpats the entire werefox system*"
Dax:
url: "https://masto.werefox.dev/@Dax"
json: "https://masto.werefox.dev/@Dax.json"
karma:
url: "https://awoo.space/@karma"
json: "https://awoo.space/@karma.json"
content: |
"im love alexis a lot 💚 🐀"
"wtf it's not even 7:30 PM why are you at ihop"
lindsays:
url: "https://hackers.town/@lindsays"

View File

@ -26,8 +26,9 @@ export default function Contacts({ CONTACTS }) {
<BasicPage
page_title="Where To Find Me"
card_title={`"Do you have a [Social Media]?"`}
page_button_title="Take me back home!"
>
<WCard innerText="You can find me in quite a few places!">
<WCard title="You can find me in quite a few places!">
<CBlock contacts={CONTACTS} />
</WCard>
</BasicPage>

View File

@ -22,7 +22,11 @@ export async function getStaticProps() {
export default function FAQ({ FAQ }) {
return (
<BasicPage page_title="FAQ" card_title="Frequently Asked Questions!">
<BasicPage
page_title="FAQ"
card_title="Frequently Asked Questions!"
page_button_title="Take me back home!"
>
<FBlock faqs={FAQ} />
</BasicPage>
);

View File

@ -44,8 +44,9 @@ export default function HRT({ startTimes }) {
<BasicPage
page_title="Alexis Werefox HRT Tracker"
card_title="Track my HRT progress!"
page_button_title="Take me back home!"
>
<WCard innerText={`I'm so glad you're interested!!`}>
<WCard title={`I'm so glad you're interested!!`}>
<div className="p-2 sm:text-xl text-lg text-center text-werefox-blue-dark dark:text-werefox-blue grid grid-cols-1 grid-rows-4 gap-2">
<p>I've been on HRT for:</p>
{Object.keys(timesArray).map((t) => (

View File

@ -1,5 +1,8 @@
import BasicPage from "../../../components/basic-page";
import IDCard from "../../../components/identity-card";
import IDCardText from "../../../components/identity-card-textbox";
import Link from "next/link";
import Image from "next/image";
export async function getStaticProps() {
const fs = require("fs");
@ -21,18 +24,37 @@ export async function getStaticProps() {
export default function Fursona({ FURSONA }) {
return (
<BasicPage page_title={FURSONA["Fursona"].page_title} card_title={FURSONA["Fursona"].card_title}>
{Object.keys(FURSONA).map((fursona) => (
<IDCard
key={fursona}
title={FURSONA[fursona].title}
info={FURSONA[fursona].info}
src={FURSONA[fursona].src}
alt={FURSONA[fursona].alt}
src2={FURSONA[fursona].src2}
alt2={FURSONA[fursona].alt2}
/>
))}
<BasicPage
page_title={FURSONA["Fursona"].page_title}
card_title={FURSONA["Fursona"].card_title}
page_button_title="Take me back home!"
>
{Object.keys(FURSONA).map((fursona) => (
<IDCard
key={fursona}
title={FURSONA[fursona].title}
src={FURSONA[fursona].src}
alt={FURSONA[fursona].alt}
>
<IDCardText info={FURSONA[fursona].info} />
<div className="rounded-lg hover:animate-yip transition">
<Link href="https://twitter.com/ribbonfemale">
<a target="_blank">
<span className="relative inline-flex align-middle">
<Image
className="rounded-lg"
src={FURSONA[fursona].src2}
layout="intrinsic"
width="2048"
height="2048"
alt={FURSONA[fursona].alt2}
/>
</span>
</a>
</Link>
</div>
</IDCard>
))}
</BasicPage>
);
}

View File

@ -1,5 +1,7 @@
import BasicPage from "../../../components/basic-page";
import IDCard from "../../../components/identity-card";
import IDCardText from "../../../components/identity-card-textbox";
import IDCardButton from "../../../components/identity-card-button";
export async function getStaticProps() {
const fs = require("fs");
@ -24,16 +26,18 @@ export default function Gender({ GENDER }) {
<BasicPage
page_title={GENDER["Gender"].page_title}
card_title={GENDER["Gender"].card_title}
page_button_title="Take me back home!"
>
{Object.keys(GENDER).map((gender) => (
<IDCard
key={gender}
title={GENDER[gender].title}
info={GENDER[gender].info}
url={GENDER[gender].url}
src={GENDER[gender].src}
alt={GENDER[gender].alt}
/>
>
<IDCardText info={GENDER[gender].info} />
<IDCardButton url={GENDER[gender].url} button_text="Learn More" />
</IDCard>
))}
</BasicPage>
);

View File

@ -1,5 +1,7 @@
import BasicPage from "../../../components/basic-page";
import IDCard from "../../../components/identity-card";
import IDCardText from "../../../components/identity-card-textbox";
import IDCardButton from "../../../components/identity-card-button";
export async function getStaticProps() {
const fs = require("fs");
@ -24,16 +26,18 @@ export default function Neurodiversity({ NEURO }) {
<BasicPage
page_title={NEURO["Neuro"].page_title}
card_title={NEURO["Neuro"].card_title}
page_button_title="Take me back home!"
>
{Object.keys(NEURO).map((neuro) => (
<IDCard
key={neuro}
title={NEURO[neuro].title}
info={NEURO[neuro].info}
url={NEURO[neuro].url}
src={NEURO[neuro].src}
alt={NEURO[neuro].alt}
/>
>
<IDCardText info={NEURO[neuro].info} />
<IDCardButton url={NEURO[neuro].url} button_text="Learn More" />
</IDCard>
))}
</BasicPage>
);

View File

@ -1,6 +1,7 @@
import BasicPage from "../../../components/basic-page";
import IDCard from "../../../components/identity-card";
import PCard from "../../../components/partner-card";
import IDCardText from "../../../components/identity-card-textbox";
// An object listing pages folks can visit
export async function getStaticProps() {
@ -24,7 +25,11 @@ export async function getStaticProps() {
export default function Partners({ PARTNERS }) {
if (PARTNERS) {
return (
<BasicPage page_title="Partners" card_title="Partners!">
<BasicPage
page_title="Partners"
card_title="Partners!"
page_button_title="Take me back home!"
>
<IDCard
title="My loves!"
src="/emoji/blue_heart.svg"
@ -51,11 +56,14 @@ export default function Partners({ PARTNERS }) {
title="My loves!"
src="/emoji/blue_heart.svg"
alt="Blue heart emoji"
info={`Oh! It looks like I don't have any partners at the moment.
>
<IDCardText
info={`Oh! It looks like I don't have any partners at the moment.
Oh well!
`}
></IDCard>
/>
</IDCard>
</BasicPage>
);
}

View File

@ -1,5 +1,7 @@
import BasicPage from "../../../components/basic-page";
import IDCard from "../../../components/identity-card";
import IDCardText from "../../../components/identity-card-textbox";
import IDCardButton from "../../../components/identity-card-button";
export async function getStaticProps() {
const fs = require("fs");
@ -24,16 +26,18 @@ export default function Pronouns({ PRONOUNS }) {
<BasicPage
page_title={PRONOUNS["Pronouns"].page_title}
card_title={PRONOUNS["Pronouns"].card_title}
page_button_title="Take me back home!"
>
{Object.keys(PRONOUNS).map((pronouns) => (
<IDCard
key={pronouns}
title={PRONOUNS[pronouns].title}
info={PRONOUNS[pronouns].info}
url={PRONOUNS[pronouns].url}
src={PRONOUNS[pronouns].src}
alt={PRONOUNS[pronouns].alt}
/>
>
<IDCardText info={PRONOUNS[pronouns].info} />
<IDCardButton url={PRONOUNS[pronouns].url} button_text="Learn More" />
</IDCard>
))}
</BasicPage>
);

View File

@ -1,5 +1,7 @@
import BasicPage from "../../../components/basic-page";
import IDCard from "../../../components/identity-card";
import IDCardText from "../../../components/identity-card-textbox";
import IDCardButton from "../../../components/identity-card-button";
export async function getStaticProps() {
const fs = require("fs");
@ -31,7 +33,11 @@ export async function getStaticProps() {
export default function Sexuality({ SEXUALITY, page_title, card_title }) {
return (
<BasicPage page_title={page_title} card_title={card_title}>
<BasicPage
page_title={page_title}
card_title={card_title}
page_button_title="Take me back home!"
>
{Object.keys(SEXUALITY).map((sexuality) => (
<IDCard
key={sexuality}
@ -40,7 +46,13 @@ export default function Sexuality({ SEXUALITY, page_title, card_title }) {
url={SEXUALITY[sexuality].url}
src={SEXUALITY[sexuality].src}
alt={SEXUALITY[sexuality].alt}
/>
>
<IDCardText info={SEXUALITY[sexuality].info} />
<IDCardButton
url={SEXUALITY[sexuality].url}
button_text="Learn More"
/>
</IDCard>
))}
</BasicPage>
);

View File

@ -43,13 +43,13 @@ export default function Home({ IDENTITIES, INTRODUCTION, PAGES, PARTNERS }) {
return (
<HomePage page_title="About A Werefox" card_title="Hi! I'm Alexis Werefox!">
<WCard innerText="Basic Info">
<WCard title="Basic Info">
<IDBlock identities={IDENTITIES} partners={partnerslen} />
</WCard>
<WCard innerText="Welcome to my little info site!">
<WCard title="Welcome to my little info site!">
<ICard introduction={introdict} />
</WCard>
<WCard innerText="Neat Pages!">
<WCard title="Neat Pages!">
<PBlock pages={PAGES} />
</WCard>
</HomePage>

View File

@ -22,7 +22,11 @@ export async function getStaticProps() {
export default function Services({ PROJECTS }) {
return (
<BasicPage page_title="Personal Projects" card_title="Some stuff I do!">
<BasicPage
page_title="Personal Projects"
card_title="Some stuff I do!"
page_button_title="Take me back home!"
>
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<PBlock title="Personal Projects" cards={PROJECTS} />
</div>

View File

@ -8,7 +8,10 @@ export async function getStaticProps() {
let OTHER = {};
try {
let fileContent = fs.readFileSync("./data/pages/projects/other.yml", "utf8");
let fileContent = fs.readFileSync(
"./data/pages/projects/other.yml",
"utf8"
);
OTHER = yaml.load(fileContent);
} catch (e) {
console.log(e);
@ -22,7 +25,12 @@ export async function getStaticProps() {
export default function Services({ OTHER }) {
return (
<BasicPage page_title="Misc Projects" card_title="Some other things I do!" back_url="/projects">
<BasicPage
page_title="Misc Projects"
card_title="Some other things I do!"
page_button_title="Take me back!"
back_url="/projects"
>
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<PBlock title="Miscelaneous Projects" cards={OTHER} />
</div>

View File

@ -8,7 +8,10 @@ export async function getStaticProps() {
let PRIVATE = {};
try {
let fileContent = fs.readFileSync("./data/pages/projects/private.yml", "utf8");
let fileContent = fs.readFileSync(
"./data/pages/projects/private.yml",
"utf8"
);
PRIVATE = yaml.load(fileContent);
} catch (e) {
console.log(e);
@ -22,7 +25,12 @@ export async function getStaticProps() {
export default function Services({ PRIVATE }) {
return (
<BasicPage page_title="Private Services" card_title="Some stuff I host for myself!" back_url="/projects">
<BasicPage
page_title="Private Services"
card_title="Some stuff I host for myself!"
page_button_title="Take me back!"
back_url="/projects"
>
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<PBlock title="Private Services" cards={PRIVATE} />
</div>

View File

@ -8,7 +8,10 @@ export async function getStaticProps() {
let SERVICES = {};
try {
let fileContent = fs.readFileSync("./data/pages/projects/services.yml", "utf8");
let fileContent = fs.readFileSync(
"./data/pages/projects/services.yml",
"utf8"
);
SERVICES = yaml.load(fileContent);
} catch (e) {
console.log(e);
@ -22,7 +25,12 @@ export async function getStaticProps() {
export default function Services({ SERVICES }) {
return (
<BasicPage page_title="Werefox Services" card_title="Services I Host!" back_url="/projects">
<BasicPage
page_title="Werefox Services"
card_title="Services I Host!"
page_button_title="Take me back!"
back_url="/projects"
>
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<PBlock title="Services" cards={SERVICES} />
</div>

View File

@ -8,7 +8,10 @@ export async function getStaticProps() {
let STREAMING = {};
try {
let fileContent = fs.readFileSync("./data/pages/projects/streaming.yml", "utf8");
let fileContent = fs.readFileSync(
"./data/pages/projects/streaming.yml",
"utf8"
);
STREAMING = yaml.load(fileContent);
} catch (e) {
console.log(e);
@ -22,7 +25,12 @@ export async function getStaticProps() {
export default function Services({ STREAMING }) {
return (
<BasicPage page_title="Streaming Links" card_title="Come watch my streams!" back_url="/projects">
<BasicPage
page_title="Streaming Links"
card_title="Come watch my streams!"
page_button_title="Take me back!"
back_url="/projects"
>
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
<PBlock title="Streaming" cards={STREAMING} />
</div>

View File

@ -22,8 +22,12 @@ export async function getStaticProps() {
}
export default function Servers({ SERVERS }) {
return (
<BasicPage page_title="Servers" card_title="Here are my server specs!">
<WCard innerText="Servers">
<BasicPage
page_title="Servers"
card_title="Here are my server specs!"
page_button_title="Take me back home!"
>
<WCard title="Servers">
<SBlock servers={SERVERS} />
</WCard>
</BasicPage>

View File

@ -21,7 +21,11 @@ export async function getStaticProps() {
export default function Support({ SUPPORT }) {
return (
<BasicPage page_title="Support" card_title="Support Me!">
<BasicPage
page_title="Support"
card_title="Support Me!"
page_button_title="Take me back home!"
>
<SBlock support={SUPPORT} />
</BasicPage>
);

View File

@ -42,9 +42,13 @@ export const getStaticProps = async () => {
export default function Testimonials({ iconUrls, TESTIMONIALS }) {
return (
<BasicPage page_title="Werefox Testimonials" card_title="Testimonials!">
<BasicPage
page_title="Werefox Testimonials"
card_title="Testimonials!"
page_button_title="Take me back home!"
>
<WCard
innerText={`Sometimes, people say some nice things about me. Here are some
title={`Sometimes, people say some nice things about me. Here are some
examples!`}
>
<div className="p-2 space-y-4">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

View File

@ -7,6 +7,11 @@ module.exports = {
nerd: ["DejaVuSansMono"],
},
colors: {
"werefox-cyan": {
light: "#AAFFFF",
DEFAULT: "#50FFFF",
dark: "#008888",
},
"werefox-blue": {
light: "#94C2FF",
DEFAULT: "#75B1FF",