From a59bf8f88cde4c725096c2c9a7dddd4218ad4ee4 Mon Sep 17 00:00:00 2001 From: Alexis Werefox Date: Sat, 1 May 2021 06:15:09 +0000 Subject: [PATCH] Big refactoring with more components, added a variables file to save data. --- .../{basic-page-template.js => basic-page.js} | 19 +- src/info/components/faq-block.js | 18 + src/info/components/faq-card.js | 43 +++ src/info/components/footer-card.js | 73 ++-- src/info/components/identity-block.js | 18 + src/info/components/identity-card.js | 154 ++++---- src/info/components/page-block.js | 17 + src/info/components/page-button.js | 29 ++ src/info/components/project-block.js | 4 +- src/info/components/project-card.js | 16 +- src/info/components/testimonial-card.js | 10 +- src/info/components/werefox-card.js | 47 +-- src/info/js/variables.js | 353 ++++++++++++++++++ src/info/pages/contacts/index.js | 299 ++++++++------- src/info/pages/faq/index.js | 58 +-- src/info/pages/hrt/index.js | 15 +- src/info/pages/identities/fursona/index.js | 36 +- src/info/pages/identities/gender/index.js | 25 +- src/info/pages/identities/neuro/index.js | 43 +-- src/info/pages/identities/partners/index.js | 77 ++-- src/info/pages/identities/pronouns/index.js | 27 +- src/info/pages/identities/sexuality/index.js | 65 ++-- src/info/pages/index.js | 209 ++--------- src/info/pages/projects/index.js | 75 +--- src/info/pages/projects/services/index.js | 13 + src/info/pages/support/index.js | 11 +- src/info/pages/testimonials/index.js | 108 +----- src/info/public/emoji/crt_blue_screen.svg | 1 + 28 files changed, 985 insertions(+), 878 deletions(-) rename src/info/components/{basic-page-template.js => basic-page.js} (86%) create mode 100644 src/info/components/faq-block.js create mode 100644 src/info/components/faq-card.js create mode 100644 src/info/components/identity-block.js create mode 100644 src/info/components/page-block.js create mode 100644 src/info/components/page-button.js create mode 100644 src/info/js/variables.js create mode 100644 src/info/pages/projects/services/index.js create mode 100644 src/info/public/emoji/crt_blue_screen.svg diff --git a/src/info/components/basic-page-template.js b/src/info/components/basic-page.js similarity index 86% rename from src/info/components/basic-page-template.js rename to src/info/components/basic-page.js index 714cd4b..0fdfb45 100644 --- a/src/info/components/basic-page-template.js +++ b/src/info/components/basic-page.js @@ -2,8 +2,9 @@ import Head from "next/head"; import Image from "next/image"; import WCard from "../components/werefox-card"; import FCard from "./footer-card"; +import PButton from "../components/page-button"; -export default function HRT({ is_home, page_title, card_title, children }) { +export default function BasicPage({ is_home, page_title, card_title, children }) { if (is_home) { return (
@@ -55,25 +56,21 @@ export default function HRT({ is_home, page_title, card_title, children }) { {card_title} - {children} - diff --git a/src/info/components/faq-block.js b/src/info/components/faq-block.js new file mode 100644 index 0000000..1429771 --- /dev/null +++ b/src/info/components/faq-block.js @@ -0,0 +1,18 @@ +import FCard from "./faq-card"; +import { FAQS } from "../js/variables"; + +export default function FAQBlock() { + return ( + <> + {Object.keys(FAQS).map((faq) => ( + + ))} + + ); +} diff --git a/src/info/components/faq-card.js b/src/info/components/faq-card.js new file mode 100644 index 0000000..25ec68f --- /dev/null +++ b/src/info/components/faq-card.js @@ -0,0 +1,43 @@ +import Link from "next/link"; + +export default function TestimonialCard({ question, answer, src, alt }) { + const finalsrc = Boolean(src) ? src : "/images/logo.png"; + + return ( +
+
+
+

+ {question} +

+
+
+ + +
+ {alt} +
+
+ {" "} +
+

+ {answer} +
+ {"- "} + + {`@shadow8t4`} + +

+
+
+
+
+ ); +} diff --git a/src/info/components/footer-card.js b/src/info/components/footer-card.js index 8dce0b7..eab0b9b 100644 --- a/src/info/components/footer-card.js +++ b/src/info/components/footer-card.js @@ -3,40 +3,45 @@ import WCard from "./werefox-card"; export default function FooterCard() { return ( - - ); } diff --git a/src/info/components/identity-block.js b/src/info/components/identity-block.js new file mode 100644 index 0000000..d93b8d9 --- /dev/null +++ b/src/info/components/identity-block.js @@ -0,0 +1,18 @@ +import IDButton from "./identity-button"; +import { IDENTITIES } from "../js/variables"; + +export default function IdentityBlock() { + return ( +
+ {Object.keys(IDENTITIES).map((ids) => ( + + ))} +
+ ); +} diff --git a/src/info/components/identity-card.js b/src/info/components/identity-card.js index 00ec7e2..f917712 100644 --- a/src/info/components/identity-card.js +++ b/src/info/components/identity-card.js @@ -13,82 +13,106 @@ export default function IdentityCard({ }) { if (children) { return ( -
-
-

- - {alt} - {" "} - {title} -

+
+
+
+

+ + {alt} + {" "} + {title} +

+
+ {children}
- {children}
); } else if (src2) { return ( -
-
-

- - {alt} - {" "} - {title} -

+
+
+
+

+ + {alt} + {" "} + {title} +

+
+
+

+ {Object.keys(info).map((i) => ( +

{info[i]}

+ ))} +

+
+
-
-

- {Object.keys(info).map((i) => ( -

- {info[i]} -

- ))} -

-
- + ); + } else if (url) { + return ( +
+
+
+

+ + {alt} + {" "} + {title} +

+
+
+

+ {Object.keys(info).map((i) => ( +

{info[i]}

+ ))} +

+ +
); } else { return ( -
-
-

- - {alt} - {" "} - {title} -

-
-
-

- {Object.keys(info).map((i) => ( -

- {info[i]} -

- ))} -

-
- - - Learn More - - +
+
+
+

+ + {alt} + {" "} + {title} +

+
+
+

+ {Object.keys(info).map((i) => ( +

{info[i]}

+ ))} +

diff --git a/src/info/components/page-block.js b/src/info/components/page-block.js new file mode 100644 index 0000000..dddd1bd --- /dev/null +++ b/src/info/components/page-block.js @@ -0,0 +1,17 @@ +import PButton from "./page-button"; +import { PAGES } from "../js/variables"; + +export default function ProjectBlock() { + return ( + <> + {Object.keys(PAGES).map((page) => ( + + ))} + + ); +} diff --git a/src/info/components/page-button.js b/src/info/components/page-button.js new file mode 100644 index 0000000..fc61447 --- /dev/null +++ b/src/info/components/page-button.js @@ -0,0 +1,29 @@ +import Link from "next/link"; +import Image from "next/image"; + +export default function PageButton({ title, images, url, extra_classes }) { + return ( + + ); +} diff --git a/src/info/components/project-block.js b/src/info/components/project-block.js index 80b663f..723674d 100644 --- a/src/info/components/project-block.js +++ b/src/info/components/project-block.js @@ -1,6 +1,6 @@ import PCard from "./project-card"; -export default function ProjectBlock({ title, cards }) { +export default function ProjectCardBlock({ title, cards }) { return (
@@ -13,7 +13,7 @@ export default function ProjectBlock({ title, cards }) { {Object.keys(cards).map((card) => (
diff --git a/src/info/components/werefox-card.js b/src/info/components/werefox-card.js index d8a5add..9da13f1 100644 --- a/src/info/components/werefox-card.js +++ b/src/info/components/werefox-card.js @@ -1,51 +1,28 @@ -import Image from "next/image"; -import Link from "next/link"; - export default function WerefoxCard({ isTitle, - isCardButton, - extraClasses, - imageObj, innerText, - url, children, }) { - const images = Array(imageObj).flat(); if (isTitle) { return (
{children}
); - } else if (isCardButton) { + } else { return ( -
- - - {images.map((source) => ( - - {source.alt} - - ))}{" "} - {innerText} - - +
+
+
+

+ {innerText} +

+
+
+ {children} +
+
); } - return ( -
- {children} -
- ); } diff --git a/src/info/js/variables.js b/src/info/js/variables.js new file mode 100644 index 0000000..76db107 --- /dev/null +++ b/src/info/js/variables.js @@ -0,0 +1,353 @@ +// An object listing my different identity aspects + +export const IDENTITIES = { + 26: { + url: "", + images: [ + { + src: "/emoji/18_plus.svg", + alt: "Over 18 emoji", + }, + ], + extra_classes: "pointer-events-none", + }, + "Trans-femme": { + url: "/identities/gender", + images: [ + { + src: "/emoji/transgender_flag.svg", + alt: "Transgender flag emoji", + }, + { + src: "/emoji/female_symbol.svg", + alt: "Female symbol emoji", + }, + ], + extra_classes: "xl:pt-1 xl:align-text-bottom xl:text-sm xl:min-h-full", + }, + "She/her": { + url: "/identities/pronouns", + images: [ + { + src: "/emoji/speech_bubble_left.svg", + alt: "A speech bubble emoji", + }, + ], + extra_classes: "", + }, + Polyam: { + url: "/identities/sexuality", + images: [ + { + src: "/emoji/polyamory_flag.svg", + alt: "Polyamory flag emoji", + }, + ], + extra_classes: "", + }, + Pansexual: { + url: "/identities/sexuality", + images: [ + { + src: "/emoji/pansexual_flag.svg", + alt: "Pansexual flag emoji", + }, + ], + extra_classes: "", + }, + Lesbian: { + url: "/identities/sexuality", + images: [ + { + src: "/emoji/lesbian_flag.svg", + alt: "Lesbian flag emoji", + }, + ], + extra_classes: "", + }, + Single: { + url: "/identities/partners", + images: [ + { + src: "/emoji/blue_heart.svg", + alt: "Blue heart emoji", + }, + ], + extra_classes: "", + }, + ADHD: { + url: "/identities/neuro", + images: [ + { + src: "/emoji/neurodiversity.svg", + alt: "Neurodiversity symbol emoji", + }, + ], + extra_classes: "", + }, + "Fox witch": { + url: "/identities/fursona", + images: [ + { + src: "/emoji/fox.svg", + alt: "Fox emoji", + }, + { + src: "/emoji/magic_wand.svg", + alt: "Magic wand emoji", + }, + ], + extra_classes: "xl:pt-1 xl:align-text-bottom xl:text-sm xl:min-h-full", + }, +}; + +// An object listing pages folks can visit + +export const PAGES = { + "Stuff I do!": { + url: "/projects", + images: [ + { + src: "/emoji/crt_prompt.svg", + alt: "CRT prompt emoji", + }, + ], + }, + "See Testimonials!": { + url: "/testimonials", + images: [{ src: "/emoji/awoo.svg", alt: "Awoo emoji" }], + }, + "HRT Tracker!": { + url: "/hrt", + images: [ + { + src: "/emoji/trans_heart.png", + alt: "Transgender heart emoji", + }, + ], + }, + FAQ: { + url: "/faq", + images: [ + { + src: "/emoji/red_question_mark.svg", + alt: "Red question mark emoji", + }, + ], + }, + "Support Me?": { + url: "/support", + images: [ + { + src: "/emoji/green_money.svg", + alt: "Green money emoji", + }, + ], + }, +}; + +// Use this to list out partners on the partners page. >w> + +export const PARTNERS = { + // parnter: { + // url: "", + // avi: "", + // fields: { + // "": "", + // }, + // bio: ``, + // }, +}; + +// This is where you put the testimonial users' info + +export const TESTIMONIALS = { + colabunny: { + json: "https://yiff.life/@colabunny.json", + url: "https://yiff.life/@colabunny", + content: '"please stay your jokes are funny and smart"', + }, + ElfLord: { + url: "https://freedom.horse/@ElfLord", + json: "https://freedom.horse/@ElfLord.json", + content: `"Someday I'm gonna visit you in Texas, and when I get there, I'm going to realize you don't live in Texas at all, and I'm in the wrong state"`, + }, + Decimal: { + url: "https://plush.city/@Decimal", + json: "https://plush.city/@Decimal.json", + content: `"I will appreciate the heck out of you any day"`, + }, + skelly: { + url: "https://redroo.ml/@skelly", + json: "https://redroo.ml/@skelly.json", + content: `"this an an official invitation for any one of you to put 'fuck you i dont give testimonials' as a testimonial by me on your profile"`, + }, + Drako_Fenris: { + url: "https://yiff.life/@Drako_Fenris", + json: "https://yiff.life/@Drako_Fenris.json", + content: `"[Alexis' future wife] lives in the ether yet to be revealed. she awaits the day her big tiddie goth gf rides in on her unicorn and rescues her."`, + }, + "00dani": { + url: "https://vulpine.club/@00dani", + json: "https://vulpine.club/@00dani.json", + content: `"*falls in love with you* haha whoopsies 😳"`, + }, + Gumby: { + url: "https://puppy.cafe/@Gumby", + json: "https://puppy.cafe/@Gumby.json", + content: `"im love alexis a lot 💚 🐀"`, + }, + AshBunny: { + url: "https://vulpine.club/@AshBunny", + json: "https://vulpine.club/@AshBunny.json", + content: `"heck. I don't think I can take all of this support."`, + }, + heatherhorns: { + url: "https://plush.city/@heatherhorns", + json: "https://plush.city/@heatherhorns.json", + content: `";~; + + gpsd gosh"`, + }, + MutoShack: { + url: "https://functional.cafe/@MutoShack", + json: "https://functional.cafe/@MutoShack.json", + content: `"yess w'all say nice things! usually "alexis is the good" and "alexis is the gay" + + because it is the truth"`, + }, + immychan: { + url: "https://antabaka.me/@immychan", + json: "https://antabaka.me/@immychan.json", + content: `"Oh damn you're cute 😳"`, + }, + nautilee: { + url: "https://dragon.style/@nautilee", + json: "https://dragon.style/@nautilee.json", + content: `"...how are you so goshdarn cute"`, + }, + lindsays: { + url: "https://hackers.town/@lindsays", + json: "https://hackers.town/@lindsays.json", + content: `"Regarding @shadow8t4 : She's an amazing, sweet, beautiful dork, and a spectacular best friend. also, a butt."`, + }, +}; + +// This is where I put the questions and answers for the FAQ + +export const FAQS = { + q1: { + question: `"So is Werefox like a species or...?"`, + answer: `That's a good question! No, my fursona's full name is Alexis Werefox, + so Werefox is just a last name. I am just a fox!`, + src: "/images/alexis_heart.png", + alt: "Alexis giving a heart emoji", + }, + q2: { + question: `"How can you be Pansexual and a Lesbian?"`, + answer: `I believe I've been told the proper term is "sapphic", + it just means I *am* Pansexual, but I prefer those who identify more femme.`, + src: "/images/alexis_wink.png", + alt: "Alexis winking and giving a peace sign", + }, + q3: { + question: `"How do I get more Xenia stickers?"`, + answer: `Yeah, about that. So, I've made a few posts aobut this, but when + I first started giving those out, I was in a good financial position, among + other things. Now I'm not! I will get to it when I do.`, + src: "/images/alexis_annoyed.png", + alt: "Alexis looking annoyed and crossing her arms", + }, + q4: { + question: `"What do you do?"`, + answer: `Something! I mainly focus on maintaining the services I run at the + moment, Beat Saber streaming, myself and my transition. I could use some + financial support, if you're feeling up to it and can afford it!`, + src: "/images/alexis_shrug.png", + alt: "Alexis shrugging", + }, +}; + +// An object listing the different stuff I do + +export const PROJECTS = { + Services: { + url: "/projects/services", + src: "/emoji/crt_blue_screen.svg", + alt: "A CRT blue screen emoji", + description: `Here is a list of some of the services I host. + Some of them, because a few I keep to just myself.`, + }, + Poetry: { + url: "https://write.as/a-letter-to-the-void", + new_tab: true, + src: "/emoji/pen.svg", + alt: "Pen emoji", + description: `Sometimes, I write poetry. It's not the happiest + always, but I am proud of it. It would mean a lot if you took + a look!`, + }, +}; + +// An object listing the services I host + +export const SERVICES = { + Mastodon: { + url: "https://masto.werefox.dev/about/", + new_tab: true, + src: "/emoji/mastodon-logo.png", + alt: "The Mastodon logo", + description: `Mastodon is an online, self-hosted social media, and social networking service. + It allows anyone to host their own server node in the network, and its various separately + operated user bases are federated across many different servers.`, + }, + Pinafore: { + url: "https://pina.werefox.dev/", + new_tab: true, + src: "/emoji/pinafore_logo.svg", + alt: "The Pinafore logo", + description: `An alternative web client for Mastodon, focused on speed and simplicity.`, + }, + Halcyon: { + url: "https://halcyon.werefox.dev/", + new_tab: true, + src: "/emoji/halcyon_logo.png", + alt: "The Halcyon logo", + description: `Halcyon is standard Twitter like client of Mastodon, And you can use it just + by login to your instance. Let's Toot like a tweet.`, + }, + Brutaldon: { + url: "https://brutal.werefox.dev/", + new_tab: true, + src: "/emoji/brutaldon_logo.png", + alt: "The Brutaldon logo", + description: `Brutaldon is a brutalist, Web 1.0 web interface for Mastodon and Pleroma.`, + }, + PeerTube: { + url: "https://vid.werefox.dev/", + new_tab: true, + src: "/emoji/peertube_logo.svg", + alt: "The PeerTube logo", + description: `PeerTube is a free and open-source, decentralized, federated video platform + powered by ActivityPub and WebTorrent, that uses peer-to-peer technology to reduce load on + individual servers when viewing videos.`, + }, + Element: { + url: "https://elem.werefox.dev/", + new_tab: true, + src: "/emoji/element_logo.svg", + alt: "The Element logo", + description: `Element (previously Riot) is an all-in-one secure chat app for teams, + friends and organisations. Keeps conversations in your control, safe from data-mining + and ads. Talk to everyone through the open global Matrix network, protected by proper + end-to-end encryption. (additionally, I host a Matrix server at matrix.werefox.dev)`, + }, + Gitea: { + url: "https://gitea.werefox.dev/", + new_tab: true, + src: "/emoji/gitea_logo.svg", + alt: "The Gitea logo", + description: `A painless self-hosted Git service. Gitea is a community managed + lightweight code hosting solution written in Go. It is published under the MIT license.`, + }, +}; diff --git a/src/info/pages/contacts/index.js b/src/info/pages/contacts/index.js index 839d5f4..0b79c7a 100644 --- a/src/info/pages/contacts/index.js +++ b/src/info/pages/contacts/index.js @@ -1,4 +1,4 @@ -import BasicPage from "../../components/basic-page-template"; +import BasicPage from "../../components/basic-page"; import WCard from "../../components/werefox-card"; import Image from "next/image"; @@ -8,158 +8,151 @@ export default function Contacts() { page_title="Where To Find Me" card_title={`"Do you have a [Social Media]?"`} > - -
-
-

- You can find me in quite a few places! -

-
-
-

- - - Mastodon logo - - {" "} - My public Mastodon{" "} - - @shadow8t4@vulpine.club - -

-

- - - Twitter logo - - {" "} - My Twitter{" "} - - @alexis_werefox - -

-

- - - Twitch logo - - {" "} - My Twitch{" "} - - @Alexis_Werefox - -

-

- - - VHS tape emoji - - {" "} - My PeerTube (mostly VODs from the stream){" "} - - vid.werefox.dev - -

-

- - - Pen emoji - - {" "} - My poetry{" "} - - write.as/a-letter-to-the-void - -

-

- - - A piece of paper with a pencil emoji - - {" "} - My (often outdated) blog{" "} - - werefox.dev - -

-

- - - Inbox emoji - - {" "} - My e-mail{" "} - - adh9694@gmail.com - -

-
+ +
+

+ + + Mastodon logo + + {" "} + My public Mastodon{" "} + + @shadow8t4@vulpine.club + +

+

+ + + Twitter logo + + {" "} + My Twitter{" "} + + @alexis_werefox + +

+

+ + + Twitch logo + + {" "} + My Twitch{" "} + + @Alexis_Werefox + +

+

+ + + VHS tape emoji + + {" "} + My PeerTube (mostly VODs from the stream){" "} + + vid.werefox.dev + +

+

+ + + Pen emoji + + {" "} + My poetry{" "} + + write.as/a-letter-to-the-void + +

+

+ + + A piece of paper with a pencil emoji + + {" "} + My (often outdated) blog{" "} + + werefox.dev + +

+

+ + + Inbox emoji + + {" "} + My e-mail{" "} + + adh9694@gmail.com + +

diff --git a/src/info/pages/faq/index.js b/src/info/pages/faq/index.js index 8a85cd0..ec0e959 100644 --- a/src/info/pages/faq/index.js +++ b/src/info/pages/faq/index.js @@ -1,62 +1,10 @@ -import BasicPage from "../../components/basic-page-template"; -import WCard from "../../components/werefox-card"; -import TCard from "../../components/testimonial-card"; +import BasicPage from "../../components/basic-page"; +import FBlock from "../../components/faq-block"; export default function FAQ() { return ( - -

- "So is Werefox like a species or...?" -

-
- - -

- "How can you be Pansexual and a Lesbian?" -

-
- - -

- "How do I get more Xenia stickers?" -

-
- - -

- "What do you do?" -

-
- +
); } diff --git a/src/info/pages/hrt/index.js b/src/info/pages/hrt/index.js index 41d684e..fa79198 100644 --- a/src/info/pages/hrt/index.js +++ b/src/info/pages/hrt/index.js @@ -1,4 +1,4 @@ -import BasicPage from "../../components/basic-page-template"; +import BasicPage from "../../components/basic-page"; import WCard from "../../components/werefox-card"; import { useEffect, useState } from "react"; @@ -45,20 +45,13 @@ export default function HRT({ startTimes }) { page_title="Alexis Werefox HRT Tracker" card_title="Track my HRT progress!" > - -
-

- I'm so glad you're interested!! -

-

- I've been on HRT for: -

-
+ +
+

I've been on HRT for:

{Object.keys(timesArray).map((t) => (

{timesArray[t]}

))}
-
); diff --git a/src/info/pages/identities/fursona/index.js b/src/info/pages/identities/fursona/index.js index e741a80..c4cf2a5 100644 --- a/src/info/pages/identities/fursona/index.js +++ b/src/info/pages/identities/fursona/index.js @@ -1,28 +1,24 @@ -import BasicPage from "../../../components/basic-page-template"; -import WCard from "../../../components/werefox-card"; +import BasicPage from "../../../components/basic-page"; import IDCard from "../../../components/identity-card"; export default function Fursona() { return ( - - - + ); } diff --git a/src/info/pages/identities/gender/index.js b/src/info/pages/identities/gender/index.js index eb93596..408aab4 100644 --- a/src/info/pages/identities/gender/index.js +++ b/src/info/pages/identities/gender/index.js @@ -1,22 +1,19 @@ -import BasicPage from "../../../components/basic-page-template"; -import WCard from "../../../components/werefox-card"; +import BasicPage from "../../../components/basic-page"; import IDCard from "../../../components/identity-card"; export default function Gender() { return ( - - - + ); } diff --git a/src/info/pages/identities/neuro/index.js b/src/info/pages/identities/neuro/index.js index f25451a..6c9f251 100644 --- a/src/info/pages/identities/neuro/index.js +++ b/src/info/pages/identities/neuro/index.js @@ -1,5 +1,4 @@ -import BasicPage from "../../../components/basic-page-template"; -import WCard from "../../../components/werefox-card"; +import BasicPage from "../../../components/basic-page"; import IDCard from "../../../components/identity-card"; export default function Neurodiversity() { @@ -8,27 +7,25 @@ export default function Neurodiversity() { page_title="Neurodiversity, Fam" card_title="I'm Neurodivergent!" > - - - + ); } diff --git a/src/info/pages/identities/partners/index.js b/src/info/pages/identities/partners/index.js index 047a0b7..1f9e3b8 100644 --- a/src/info/pages/identities/partners/index.js +++ b/src/info/pages/identities/partners/index.js @@ -1,64 +1,43 @@ -import BasicPage from "../../../components/basic-page-template"; +import BasicPage from "../../../components/basic-page"; import IDCard from "../../../components/identity-card"; import LCard from "../../../components/love-card"; -import WCard from "../../../components/werefox-card"; - -// Use this to list out partner info on this page. >w> - -const PARTNERS = { - // parnter: { - // url: "", - // avi: "", - // fields: { - // "": "", - // }, - // bio: ``, - // }, -}; +import { PARTNERS } from "../../../js/variables"; export default function Partners() { if (Object.keys(PARTNERS).length) { return ( - - - {Object.keys(PARTNERS).map((partner) => ( - - ))} - - + + {Object.keys(PARTNERS).map((partner) => ( + + ))} + ); } else { return ( - - -
-

- Oh! It looks like I don't have any partners at the moment. -
- Oh well! -

-
-
-
+
); } diff --git a/src/info/pages/identities/pronouns/index.js b/src/info/pages/identities/pronouns/index.js index fe7fc10..e38e739 100644 --- a/src/info/pages/identities/pronouns/index.js +++ b/src/info/pages/identities/pronouns/index.js @@ -1,5 +1,4 @@ -import BasicPage from "../../../components/basic-page-template"; -import WCard from "../../../components/werefox-card"; +import BasicPage from "../../../components/basic-page"; import IDCard from "../../../components/identity-card"; export default function Pronouns() { @@ -8,19 +7,17 @@ export default function Pronouns() { page_title="What are your pronouns?" card_title="Pronouns! Important!" > - - - + ); } diff --git a/src/info/pages/identities/sexuality/index.js b/src/info/pages/identities/sexuality/index.js index 27c7d20..c6eeee1 100644 --- a/src/info/pages/identities/sexuality/index.js +++ b/src/info/pages/identities/sexuality/index.js @@ -1,5 +1,4 @@ -import BasicPage from "../../../components/basic-page-template"; -import WCard from "../../../components/werefox-card"; +import BasicPage from "../../../components/basic-page"; import IDCard from "../../../components/identity-card"; export default function Sexuality() { @@ -8,38 +7,36 @@ export default function Sexuality() { page_title="What's My Sexuality?" card_title="Sexuality Details!" > - - - - - + + + ); } diff --git a/src/info/pages/index.js b/src/info/pages/index.js index 8e0c738..204ca08 100644 --- a/src/info/pages/index.js +++ b/src/info/pages/index.js @@ -1,6 +1,7 @@ -import BasicPage from "../components/basic-page-template"; -import IDButton from "../components/identity-button"; +import BasicPage from "../components/basic-page"; +import IDBlock from "../components/identity-block"; import WCard from "../components/werefox-card"; +import PBlock from "../components/page-block"; export default function Home() { return ( @@ -9,192 +10,28 @@ export default function Home() { page_title="About A Werefox" card_title="Hi! I'm Alexis Werefox!" > - -
-
-

-

Basic Info

-

-
-
- - - - - - - - - -
-
+ + - -
-
-

-

Welcome to my little info site!

-

-
-
-

- I'd describe myself as somewhere between a hot date and a hot - mess. Just a witchy foxxo programmer trying to make it in the - world tbh. -

-

- Feel free to click/tap any of the cute buttons above this to learn - more about my different aspects of personality. -

-

- Down below, I've got some more neat little pages and useful info - you can look at. -

-

- Please do look around and enjoy your stay!~ 💙 -

-
-
+ +

+ I'd describe myself as somewhere between a hot date and a hot mess. + Just a witchy foxxo programmer trying to make it in the world tbh. +

+

+ Feel free to click/tap any of the cute buttons above this to learn + more about my different aspects of personality. +

+

+ Down below, I've got some more neat little pages and useful info you + can look at. +

+

+ Please do look around and enjoy your stay!~ 💙 +

- -
-
-

- Neat Pages! -

-
- - - - - -
+ + ); diff --git a/src/info/pages/projects/index.js b/src/info/pages/projects/index.js index eb083ef..9295b87 100644 --- a/src/info/pages/projects/index.js +++ b/src/info/pages/projects/index.js @@ -1,74 +1,13 @@ -import BasicPage from "../../components/basic-page-template"; -import WCard from "../../components/werefox-card"; +import BasicPage from "../../components/basic-page"; import PBlock from "../../components/project-block"; +import { PROJECTS } from "../../js/variables"; -const CARDS = { - mastodon: { - title: "Mastodon", - url: "https://masto.werefox.dev/about/", - src: "/emoji/mastodon-logo.png", - alt: "The Mastodon logo", - description: `Mastodon is an online, self-hosted social media, and social networking service. - It allows anyone to host their own server node in the network, and its various separately - operated user bases are federated across many different servers.`, - }, - pinafore: { - title: "Pinafore", - url: "https://pina.werefox.dev/", - src: "/emoji/pinafore_logo.svg", - alt: "The Pinafore logo", - description: `An alternative web client for Mastodon, focused on speed and simplicity.`, - }, - halcyon: { - title: "Halcyon", - url: "https://halcyon.werefox.dev/", - src: "/emoji/halcyon_logo.png", - alt: "The Halcyon logo", - description: `Halcyon is standard Twitter like client of Mastodon, And you can use it just - by login to your instance. Let's Toot like a tweet.`, - }, - brutaldon: { - title: "Brutaldon", - url: "https://brutal.werefox.dev/", - src: "/emoji/brutaldon_logo.png", - alt: "The Brutaldon logo", - description: `Brutaldon is a brutalist, Web 1.0 web interface for Mastodon and Pleroma.`, - }, - peertube: { - title: "PeerTube", - url: "https://vid.werefox.dev/", - src: "/emoji/peertube_logo.svg", - alt: "The PeerTube logo", - description: `PeerTube is a free and open-source, decentralized, federated video platform - powered by ActivityPub and WebTorrent, that uses peer-to-peer technology to reduce load on - individual servers when viewing videos.`, - }, - element: { - title: "Element", - url: "https://elem.werefox.dev/", - src: "/emoji/element_logo.svg", - alt: "The Element logo", - description: `Element (previously Riot) is an all-in-one secure chat app for teams, - friends and organisations. Keeps conversations in your control, safe from data-mining - and ads. Talk to everyone through the open global Matrix network, protected by proper - end-to-end encryption. (additionally, I host a Matrix server at matrix.werefox.dev)`, - }, - gitea: { - title: "Gitea", - url: "https://gitea.werefox.dev/", - src: "/emoji/gitea_logo.svg", - alt: "The Gitea logo", - description: `A painless self-hosted Git service. Gitea is a community managed - lightweight code hosting solution written in Go. It is published under the MIT license.`, - }, -}; - -export default function Projects() { +export default function Services() { return ( - - - - + +
+ +
); } diff --git a/src/info/pages/projects/services/index.js b/src/info/pages/projects/services/index.js new file mode 100644 index 0000000..8867714 --- /dev/null +++ b/src/info/pages/projects/services/index.js @@ -0,0 +1,13 @@ +import BasicPage from "../../../components/basic-page"; +import PBlock from "../../../components/project-block"; +import { SERVICES } from "../../../js/variables"; + +export default function Services() { + return ( + +
+ +
+
+ ); +} diff --git a/src/info/pages/support/index.js b/src/info/pages/support/index.js index 8d33c98..9762ad4 100644 --- a/src/info/pages/support/index.js +++ b/src/info/pages/support/index.js @@ -1,4 +1,4 @@ -import BasicPage from "../../components/basic-page-template"; +import BasicPage from "../../components/basic-page"; import WCard from "../../components/werefox-card"; import Link from "next/link"; import Iframe from "react-iframe"; @@ -6,12 +6,11 @@ import Iframe from "react-iframe"; export default function Support() { return ( - +
-

- I would sincerely appreciate if you would throw some financial - support my way!! 💙 -

You could support me through Patreon, Ko-fi, or Liberapay

diff --git a/src/info/pages/testimonials/index.js b/src/info/pages/testimonials/index.js index 8ba6fa4..c2c3b41 100644 --- a/src/info/pages/testimonials/index.js +++ b/src/info/pages/testimonials/index.js @@ -1,6 +1,7 @@ -import BasicPage from "../../components/basic-page-template"; +import BasicPage from "../../components/basic-page"; import WCard from "../../components/werefox-card"; import TCard from "../../components/testimonial-card"; +import { TESTIMONIALS } from "../../js/variables"; import axios from "axios"; // Async functions to grab user avatars server-side @@ -15,7 +16,7 @@ export const getIcon = async ({ json, name }) => ); export const getStaticProps = async () => { - const promises = Object.entries(USERS).map(([name, { json }]) => + const promises = Object.entries(TESTIMONIALS).map(([name, { json }]) => getIcon({ name, json }) ); const iconUrls = await Promise.all(promises); @@ -29,99 +30,24 @@ export const getStaticProps = async () => { }; }; -// This is where you put the testimonial users' info - -const USERS = { - colabunny: { - json: "https://yiff.life/@colabunny.json", - url: "https://yiff.life/@colabunny", - content: '"please stay your jokes are funny and smart"', - }, - ElfLord: { - url: "https://freedom.horse/@ElfLord", - json: "https://freedom.horse/@ElfLord.json", - content: `"Someday I'm gonna visit you in Texas, and when I get there, I'm going to realize you don't live in Texas at all, and I'm in the wrong state"`, - }, - Decimal: { - url: "https://plush.city/@Decimal", - json: "https://plush.city/@Decimal.json", - content: `"I will appreciate the heck out of you any day"`, - }, - skelly: { - url: "https://redroo.ml/@skelly", - json: "https://redroo.ml/@skelly.json", - content: `"this an an official invitation for any one of you to put 'fuck you i dont give testimonials' as a testimonial by me on your profile"`, - }, - Drako_Fenris: { - url: "https://yiff.life/@Drako_Fenris", - json: "https://yiff.life/@Drako_Fenris.json", - content: `"[Alexis' future wife] lives in the ether yet to be revealed. she awaits the day her big tiddie goth gf rides in on her unicorn and rescues her."`, - }, - "00dani": { - url: "https://vulpine.club/@00dani", - json: "https://vulpine.club/@00dani.json", - content: `"*falls in love with you* haha whoopsies 😳"`, - }, - Gumby: { - url: "https://puppy.cafe/@Gumby", - json: "https://puppy.cafe/@Gumby.json", - content: `"im love alexis a lot 💚 🐀"`, - }, - AshBunny: { - url: "https://vulpine.club/@AshBunny", - json: "https://vulpine.club/@AshBunny.json", - content: `"heck. I don't think I can take all of this support."`, - }, - heatherhorns: { - url: "https://plush.city/@heatherhorns", - json: "https://plush.city/@heatherhorns.json", - content: `";~; - - gpsd gosh"`, - }, - MutoShack: { - url: "https://functional.cafe/@MutoShack", - json: "https://functional.cafe/@MutoShack.json", - content: `"yess w'all say nice things! usually "alexis is the good" and "alexis is the gay" - - because it is the truth"`, - }, - immychan: { - url: "https://antabaka.me/@immychan", - json: "https://antabaka.me/@immychan.json", - content: `"Oh damn you're cute 😳"`, - }, - nautilee: { - url: "https://dragon.style/@nautilee", - json: "https://dragon.style/@nautilee.json", - content: `"...how are you so goshdarn cute"`, - }, - lindsays: { - url: "https://hackers.town/@lindsays", - json: "https://hackers.town/@lindsays.json", - content: `"Regarding @shadow8t4 : She's an amazing, sweet, beautiful dork, and a spectacular best friend. also, a butt."`, - }, -}; - export default function Testimonials({ iconUrls }) { return ( - -

- Sometimes, people say some nice things about me. Here are some - examples! -

+ + {Object.keys(TESTIMONIALS).map((user) => ( + + ))} - {Object.keys(USERS).map((user) => ( - - ))}
); } diff --git a/src/info/public/emoji/crt_blue_screen.svg b/src/info/public/emoji/crt_blue_screen.svg new file mode 100644 index 0000000..46ffd46 --- /dev/null +++ b/src/info/public/emoji/crt_blue_screen.svg @@ -0,0 +1 @@ + \ No newline at end of file