diff --git a/.prettierrc.mjs b/.prettierrc.mjs index 26b6088..883648c 100644 --- a/.prettierrc.mjs +++ b/.prettierrc.mjs @@ -6,5 +6,5 @@ export default { singleQuote: false, printWidth: 120, bracketSpacing: true, - plugins: ["prettier-plugin-astro", "prettier-plugin-tailwindcss"], + plugins: ["prettier-plugin-astro", "prettier-plugin-tailwindcss", "prettier-plugin-toml"], }; diff --git a/LICENSE.md b/LICENSE.md index 1d4c39d..4a6478c 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1 +1 @@ -See [public/licenses.txt](public/licenses.txt) +See [public/licenses.toml](public/licenses.toml) diff --git a/package-lock.json b/package-lock.json index 51f0636..19612ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "badmanners.xyz", - "version": "2.1.4", + "version": "2.1.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "badmanners.xyz", - "version": "2.1.4", + "version": "2.1.5", "hasInstallScript": true, "dependencies": { "@astrojs/check": "^0.9.2", @@ -24,6 +24,7 @@ "prettier": "^3.3.3", "prettier-plugin-astro": "^0.14.1", "prettier-plugin-tailwindcss": "^0.6.6", + "prettier-plugin-toml": "^2.0.1", "tsx": "^4.17.0" } }, @@ -1762,6 +1763,23 @@ "@types/hast": "^3.0.4" } }, + "node_modules/@taplo/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@taplo/core/-/core-0.1.1.tgz", + "integrity": "sha512-BG/zLGf5wiNXGEVPvUAAX/4ilB3PwDUY2o0MV0y47mZbDZ9ad9UK/cIQsILat3bqbPJsALVbU6k3cskNZ3vAQg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@taplo/lib": { + "version": "0.4.0-alpha.2", + "resolved": "https://registry.npmjs.org/@taplo/lib/-/lib-0.4.0-alpha.2.tgz", + "integrity": "sha512-DV/Re3DPVY+BhBtLZ3dmP4mP6YMLSsgq9qGLXwOV38lvNF/fBlgvQswzlXmzCEefL/3q2eMoefZpOI/+GLuCNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@taplo/core": "^0.1.0" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.10.tgz", @@ -5497,6 +5515,25 @@ } } }, + "node_modules/prettier-plugin-toml": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-toml/-/prettier-plugin-toml-2.0.1.tgz", + "integrity": "sha512-99z1YOkViECHtXQjGIigd3talI/ybUI1zB3yniAwUrlWBXupNXThB1hM6bwSMUEj2/+tomTlMtT98F5t4s8IWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@taplo/lib": "^0.4.0-alpha.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + }, + "peerDependencies": { + "prettier": "^3.0.3" + } + }, "node_modules/prismjs": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", diff --git a/package.json b/package.json index d045e75..f8e6093 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "badmanners.xyz", "type": "module", - "version": "2.1.4", + "version": "2.1.5", "scripts": { "postinstall": "astro sync", "dev": "astro dev", @@ -30,6 +30,7 @@ "prettier": "^3.3.3", "prettier-plugin-astro": "^0.14.1", "prettier-plugin-tailwindcss": "^0.6.6", + "prettier-plugin-toml": "^2.0.1", "tsx": "^4.17.0" } } diff --git a/public/licenses.toml b/public/licenses.toml new file mode 100644 index 0000000..f3e9aa8 --- /dev/null +++ b/public/licenses.toml @@ -0,0 +1,97 @@ +# licenses.toml + +[copyright] +title = "badmanners.xyz" +description = "Bad Manners's personal website." +date = "2023–2024" +author = "Bad Manners " +source = "https://git.badmanners.xyz/badmanners/badmanners.xyz" +license = { name = "MIT", url = "https://opensource.org/license/mit" } +notes = "All rights reserved." + +[copyright.additional] +notes = "The briefcase logo and Sam Brendan are copyrighted and tradermarked by me." + +[[attributions]] +description = "Reference sheet of Sam Brendan, a mimic x maned wolf hybrid." +type = "artwork" +author = { name = "Rimmi", url = "https://linktr.ee/Rimmi1357" } +notes = "Distributed under non-commercial use." + +[[attributions]] +description = "A set of ten stickers featuring my fursona, Sam Brendan." +type = "artwork" +author = { name = "OliveCow", url = "https://olivecow.carrd.co" } +note = "Distributed under non-commercial use." + +[[attributions]] +title = "Jost*" +type = "font" +author = "indestructible type*" +source = "https://indestructibletype.com/Jost.html" +license = { name = "SIL Open Font License v1.1", url = "https://opensource.org/license/ofl-1-1" } + +[[attributions]] +title = "Simple Icons" +description = "Icons for third-party brands." +type = "icons" +source = "https://simpleicons.org" +license = { name = "CC0 1.0 Universal", url = "https://creativecommons.org/publicdomain/zero/1.0/" } +icons = [ + "Bluesky", + "Codeberg", + "Discord", + "Itch.io", + "Keybase", + "Ko-fi", + "GitHub", + "GitLab", + "Google", + "Mastodon", + "Picarto", + "Reddit", + "Signal", + "Steam", + "Telegram", + "Tumblr", + "Twitch", + "Weasyl", + "X", + "YouTube", +] +notes = "All third-party copyrights and trademarks belong to their respective owners." + +[[attributions]] +description = "Edited icons for other websites." +type = "icons" +author = "Bad Manners " +icons = [ + "Cohost", + "Eka's Portal", + "Fur Affinity", + "Inkbunny", + "Itaku", + "Keyoxide", + "Neocities", + "SoFurry", + "SubscribeStar", +] +notes = "All third-party copyrights and trademarks belong to their respective owners." + +[[attributions]] +title = "Font Awesome" +description = "Generic icons." +type = "icons" +source = "https://fontawesome.com" +license = { name = "CC-BY-4.0", url = "https://creativecommons.org/licenses/by/4.0/" } +icons = [ + "arrow-up-right-from-square", + "briefcase", + "comment-dots", + "envelope", + "link", + "moon", + "square-rss", + "sun", + "triangle-exclamation", +] diff --git a/public/licenses.txt b/public/licenses.txt deleted file mode 100644 index 3ca0341..0000000 --- a/public/licenses.txt +++ /dev/null @@ -1,15 +0,0 @@ -The source code of this website is licensed under the MIT License: https://opensource.org/license/mit - -The briefcase logo and Sam Brendan are copyrighted and trademarked by me, Bad Manners. - -All attributed artwork is copyrighted by their respective creators and distributed under non-commercial use. - -The Jost* typeface is copyrighted by indestructible type* and is distributed under the SIL Open Font License v1.1: https://opensource.org/license/ofl-1-1 - -The SVG icons for Bluesky, Codeberg, Discord, Itch.io, Keybase, Ko-fi, GitHub, GitLab, Google, Mastodon, Picarto, Reddit, Signal, Steam, Telegram, Twitch, Weasyl, X, and YouTube were created for the Simple Icons project and are distributed under the Creative Commons Zero v1.0 Universal license: https://creativecommons.org/publicdomain/zero/1.0/ - -The SVG icons for Cohost, Eka's Portal, Fur Affinity, Inkbunny, Itaku, Keyoxide, Neocities, SoFurry, SSH, and SubscribeStar were edited by me (Bad Manners) from their respective logos, for personal use. - -The generic SVG icons were created by Font Awesome and are distributed under CC-BY-4.0: https://creativecommons.org/licenses/by/4.0/ - -All third-party trademarks belong to their respective owners, and I (Bad Manners) am not affiliated with any of them. diff --git a/src/assets/images/index.ts b/src/assets/images/index.ts new file mode 100644 index 0000000..105f5a6 --- /dev/null +++ b/src/assets/images/index.ts @@ -0,0 +1,3 @@ +export { default as ImageSamAllStickers } from "./sam_all_stickers.webp"; +export { default as ImageSamRefsheet } from "./sam_refsheet.webp"; +export { default as ImageSamStickerJuicebox } from "./sam_sticker_juicebox.webp"; diff --git a/src/components/AgeRestrictedModal.astro b/src/components/AgeRestrictedModal.astro index 8267df0..bac730d 100644 --- a/src/components/AgeRestrictedModal.astro +++ b/src/components/AgeRestrictedModal.astro @@ -1,6 +1,6 @@ --- import AgeRestrictedScriptInline from "./AgeRestrictedScriptInline.astro"; -import IconTriangleExclamation from "./icons/IconTriangleExclamation.astro"; +import { IconTriangleExclamation } from "./icons"; ---
+ + diff --git a/src/components/icons/IconHome.astro b/src/components/icons/IconHome.astro new file mode 100644 index 0000000..edd9982 --- /dev/null +++ b/src/components/icons/IconHome.astro @@ -0,0 +1,15 @@ +--- +import SVGIcon from "./SVGIcon.astro"; + +type Props = { + width: string; + height: string; + class?: string; +}; +--- + + + + diff --git a/src/components/icons/IconLink.astro b/src/components/icons/IconLink.astro new file mode 100644 index 0000000..d9f629a --- /dev/null +++ b/src/components/icons/IconLink.astro @@ -0,0 +1,15 @@ +--- +import SVGIcon from "./SVGIcon.astro"; + +type Props = { + width: string; + height: string; + class?: string; +}; +--- + + + + diff --git a/src/components/icons/IconSSH.astro b/src/components/icons/IconSSH.astro index 7a22f8b..283bfef 100644 --- a/src/components/icons/IconSSH.astro +++ b/src/components/icons/IconSSH.astro @@ -10,6 +10,6 @@ type Props = { diff --git a/src/components/icons/IconSSHPixel.astro b/src/components/icons/IconSSHPixel.astro deleted file mode 100644 index deb5cd7..0000000 --- a/src/components/icons/IconSSHPixel.astro +++ /dev/null @@ -1,15 +0,0 @@ ---- -import SVGIcon from "./SVGIcon.astro"; - -type Props = { - width: string; - height: string; - class?: string; -}; ---- - - - - diff --git a/src/components/icons/brands/IconGitHub.astro b/src/components/icons/brands/IconGithub.astro similarity index 100% rename from src/components/icons/brands/IconGitHub.astro rename to src/components/icons/brands/IconGithub.astro diff --git a/src/components/icons/brands/IconGitLab.astro b/src/components/icons/brands/IconGitlab.astro similarity index 100% rename from src/components/icons/brands/IconGitLab.astro rename to src/components/icons/brands/IconGitlab.astro diff --git a/src/components/icons/brands/IconTumblr.astro b/src/components/icons/brands/IconTumblr.astro new file mode 100644 index 0000000..83f9bb0 --- /dev/null +++ b/src/components/icons/brands/IconTumblr.astro @@ -0,0 +1,15 @@ +--- +import SVGIcon from "../SVGIcon.astro"; + +type Props = { + width: string; + height: string; + class?: string; +}; +--- + + + + diff --git a/src/components/icons/brands/index.ts b/src/components/icons/brands/index.ts new file mode 100644 index 0000000..83c667f --- /dev/null +++ b/src/components/icons/brands/index.ts @@ -0,0 +1,29 @@ +export { default as IconBluesky } from "./IconBluesky.astro"; +export { default as IconCodeberg } from "./IconCodeberg.astro"; +export { default as IconCohost } from "./IconCohost.astro"; +export { default as IconDiscord } from "./IconDiscord.astro"; +export { default as IconEkasPortal } from "./IconEkasPortal.astro"; +export { default as IconFurAffinity } from "./IconFurAffinity.astro"; +export { default as IconGithub } from "./IconGithub.astro"; +export { default as IconGitlab } from "./IconGitlab.astro"; +export { default as IconGoogle } from "./IconGoogle.astro"; +export { default as IconInkbunny } from "./IconInkbunny.astro"; +export { default as IconItaku } from "./IconItaku.astro"; +export { default as IconItchIO } from "./IconItchIO.astro"; +export { default as IconKeybase } from "./IconKeybase.astro"; +export { default as IconKeyoxide } from "./IconKeyoxide.astro"; +export { default as IconKofi } from "./IconKofi.astro"; +export { default as IconMastodon } from "./IconMastodon.astro"; +export { default as IconNeocities } from "./IconNeocities.astro"; +export { default as IconPicarto } from "./IconPicarto.astro"; +export { default as IconReddit } from "./IconReddit.astro"; +export { default as IconSignal } from "./IconSignal.astro"; +export { default as IconSoFurry } from "./IconSoFurry.astro"; +export { default as IconSteam } from "./IconSteam.astro"; +export { default as IconSubscribeStar } from "./IconSubscribeStar.astro"; +export { default as IconTelegram } from "./IconTelegram.astro"; +export { default as IconTumblr } from "./IconTumblr.astro"; +export { default as IconTwitch } from "./IconTwitch.astro"; +export { default as IconWeasyl } from "./IconWeasyl.astro"; +export { default as IconX } from "./IconX.astro"; +export { default as IconYouTube } from "./IconYouTube.astro"; diff --git a/src/components/icons/index.ts b/src/components/icons/index.ts new file mode 100644 index 0000000..a1c0743 --- /dev/null +++ b/src/components/icons/index.ts @@ -0,0 +1,11 @@ +export { default as IconArrowUpRightFromSquare } from "./IconArrowUpRightFromSquare.astro"; +export { default as IconBriefcase } from "./IconBriefcase.astro"; +export { default as IconCommentDots } from "./IconCommentDots.astro"; +export { default as IconEnvelope } from "./IconEnvelope.astro"; +export { default as IconLink } from "./IconLink.astro"; +export { default as IconMoon } from "./IconMoon.astro"; +export { default as IconSquareRSS } from "./IconSquareRSS.astro"; +export { default as IconSSH } from "./IconSSH.astro"; +export { default as IconSun } from "./IconSun.astro"; +export { default as IconTriangleExclamation } from "./IconTriangleExclamation.astro"; +export { default as SVGIcon } from "./SVGIcon.astro"; diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro index a472e55..b7e9473 100644 --- a/src/layouts/BaseLayout.astro +++ b/src/layouts/BaseLayout.astro @@ -5,8 +5,7 @@ import "../styles/base.css"; import "../styles/fonts.css"; import DarkModeScript from "../components/DarkModeScript.astro"; import NavHeader from "../components/NavHeader.astro"; -import IconSun from "../components/icons/IconSun.astro"; -import IconMoon from "../components/icons/IconMoon.astro"; +import { IconSun, IconMoon } from "../components/icons"; import AgeRestrictedModal from "../components/AgeRestrictedModal.astro"; type Props = { @@ -74,7 +73,7 @@ const title = pageTitle ? `${pageTitle} | Bad Manners` : "Bad Manners"; > diff --git a/src/pages/[...config].ts b/src/pages/[...config].ts index b944ec4..e58d758 100644 --- a/src/pages/[...config].ts +++ b/src/pages/[...config].ts @@ -21,12 +21,13 @@ RedirectMatch 301 ^/@/(ink[_-]?bunny|ib)\b https://inkbunny.net/BadManners RedirectMatch 301 ^/@/itaku\b https://itaku.ee/profile/badmanners RedirectMatch 301 ^/@/itch\b https://bad-manners.itch.io RedirectMatch 301 ^/@/keybase\b https://keybase.io/badmanners -RedirectMatch 301 ^/@/keyoxide\b https://keyoxide.org/aspe%3Akeyoxide.org%3AUWYBVFCBFXTVUF2U6FS6AYJHLU +RedirectMatch 301 ^/@/keyoxide\b https://keyoxide.org/aspe:keyoxide.org:UWYBVFCBFXTVUF2U6FS6AYJHLU RedirectMatch 301 ^/@/ko[._-]?fi\b https://ko-fi.com/badmanners RedirectMatch 301 ^/@/(mastodon|meow[._-]?social|gulp[._-]?cafe)\b https://meow.social/@BadManners RedirectMatch 301 ^/@/neo[_-]?cities\b https://badmanners.neocities.org RedirectMatch 301 ^/@/picarto\b https://www.picarto.tv/BadManners RedirectMatch 301 ^/@/pillow[_-]?fort\b https://www.pillowfort.social/BadManners +RedirectMatch 301 ^/@/pronouns?\b https://pronouns.cc/@BadManners RedirectMatch 301 ^/@/redd\.?it\b https://www.reddit.com/user/BadManners_ RedirectMatch 301 ^/@/signal\b https://signal.me/#eu/ytt_rk0fFmAB2JAW-x2PbUiJyc_H3kYmfL_Pq4QNh5QIDsiFtjdFHaqFRs1D36tB RedirectMatch 301 ^/@/(so[_-]?furry|sf)\b https://bad-manners.sofurry.com diff --git a/src/pages/about.astro b/src/pages/about.astro index 0a81897..21555f7 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -1,26 +1,31 @@ --- import { Image } from "astro:assets"; import BaseLayout from "../layouts/BaseLayout.astro"; -import IconArrowUpRightFromSquare from "../components/icons/IconArrowUpRightFromSquare.astro"; -import ImageSamStickerJuicebox from "../assets/images/sam_sticker_juicebox.webp"; +import { IconArrowUpRightFromSquare } from "../components/icons"; +import { ImageSamStickerJuicebox } from "../assets/images"; ---

About me

-
+

You can call me Bad Manners, Manners, BM, Bad, Briefcase... many choices to pick from! My pronouns are he/him. The term "bad - manners" comes from gaming, where it's used to refer to acting in a purposefully disrespectful and taunting - manner towards other players, but I also chose this moniker as it has plenty of personal meanings attached to - it. + >... many choices to pick from! My pronouns are he/him or they/them. The term "bad manners" comes from gaming, referencing when someone acts in a purposefully disrespectful and + taunting manner towards other players – and I chose this moniker as it has plenty of personal meanings + attached to it.

-
+

You can also call me Sam, which is my fursona @@ -57,3 +62,20 @@ import ImageSamStickerJuicebox from "../assets/images/sam_sticker_juicebox.webp"

+ + diff --git a/src/pages/feed.xml.ts b/src/pages/feed.xml.ts index 082afc2..e54b30c 100644 --- a/src/pages/feed.xml.ts +++ b/src/pages/feed.xml.ts @@ -8,14 +8,14 @@ export const GET: APIRoute = ({ site }) => { title: "Bad Manners", description: "Bad Manners status updates", site: site!, - items: TOS_FEED.map(({ status, updatedAt }) => ({ + items: TOS_FEED.map(({ status, updatedAt }, i) => ({ title: { CLOSED: "Story commissions are closed.", OPEN: "Story commissions are open!", SEMI_OPEN: "Story commissions are semi-open, and I may accept them less frequently.", PRIVATE: "Story commissions are private; they are only open to select commissioners.", }[status], - link: "https://badmanners.xyz/terms_of_service", + link: i === 0 ? "https://badmanners.xyz/terms_of_service" : undefined, pubDate: subMinutes(dateSet(updatedAt, { hours: 12, minutes: 0, seconds: 0 }), updatedAt.getTimezoneOffset()), })), }); diff --git a/src/pages/index.astro b/src/pages/index.astro index 477a02b..d4fc6c4 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,43 +1,44 @@ --- import BaseLayout from "../layouts/BaseLayout.astro"; -import IconEnvelope from "../components/icons/IconEnvelope.astro"; -import IconBriefcase from "../components/icons/IconBriefcase.astro"; -import IconBluesky from "../components/icons/brands/IconBluesky.astro"; -import IconCodeberg from "../components/icons/brands/IconCodeberg.astro"; -import IconCohost from "../components/icons/brands/IconCohost.astro"; -import IconDiscord from "../components/icons/brands/IconDiscord.astro"; -import IconEkasPortal from "../components/icons/brands/IconEkasPortal.astro"; -import IconFurAffinity from "../components/icons/brands/IconFurAffinity.astro"; -import IconGitHub from "../components/icons/brands/IconGitHub.astro"; -import IconGitLab from "../components/icons/brands/IconGitLab.astro"; -import IconGoogle from "../components/icons/brands/IconGoogle.astro"; -import IconInkbunny from "../components/icons/brands/IconInkbunny.astro"; -import IconItaku from "../components/icons/brands/IconItaku.astro"; -import IconItchIO from "../components/icons/brands/IconItchIO.astro"; -import IconKeybase from "../components/icons/brands/IconKeybase.astro"; -import IconKeyoxide from "../components/icons/brands/IconKeyoxide.astro"; -import IconKofi from "../components/icons/brands/IconKofi.astro"; -import IconMastodon from "../components/icons/brands/IconMastodon.astro"; -import IconNeocities from "../components/icons/brands/IconNeocities.astro"; -import IconPicarto from "../components/icons/brands/IconPicarto.astro"; -import IconReddit from "../components/icons/brands/IconReddit.astro"; -import IconSignal from "../components/icons/brands/IconSignal.astro"; -import IconSoFurry from "../components/icons/brands/IconSoFurry.astro"; -import IconSSH from "../components/icons/IconSSH.astro"; -import IconSteam from "../components/icons/brands/IconSteam.astro"; -import IconSubscribeStar from "../components/icons/brands/IconSubscribeStar.astro"; -import IconTelegram from "../components/icons/brands/IconTelegram.astro"; -import IconTwitch from "../components/icons/brands/IconTwitch.astro"; -import IconWeasyl from "../components/icons/brands/IconWeasyl.astro"; -import IconX from "../components/icons/brands/IconX.astro"; -import IconYouTube from "../components/icons/brands/IconYouTube.astro"; +import { IconEnvelope, IconBriefcase, IconLink, IconCommentDots, IconSSH } from "../components/icons"; +import { + IconBluesky, + IconCodeberg, + IconCohost, + IconDiscord, + IconEkasPortal, + IconFurAffinity, + IconGithub, + IconGitlab, + IconGoogle, + IconInkbunny, + IconItaku, + IconItchIO, + IconKeybase, + IconKeyoxide, + IconKofi, + IconMastodon, + IconNeocities, + IconPicarto, + IconReddit, + IconSignal, + IconSoFurry, + IconSteam, + IconSubscribeStar, + IconTelegram, + IconTumblr, + IconTwitch, + IconWeasyl, + IconX, + IconYouTube, +} from "../components/icons/brands"; ---

@@ -47,42 +48,35 @@ import IconYouTube from "../components/icons/brands/IconYouTube.astro"; -

- I'm a safe vore enthusiast, a furry programmer, and occasionally a writer. -

- { - Astro.site ? ( -
- {Astro.site} - - ) : null - } +

I'm a safe vore enthusiast, a furry, and occasional writer.

{ TOS_COMMISSION_STATUS == "CLOSED" ? ( -

+

Commissions are closed.

) : TOS_COMMISSION_STATUS == "OPEN" ? ( -

+

Commissions are open.

) : TOS_COMMISSION_STATUS == "SEMI_OPEN" ? ( -

+

Commissions are semi-open . I'll be more picky about which commissions to take.

) : TOS_COMMISSION_STATUS == "PRIVATE" ? ( -

+

Commissions are private @@ -54,7 +54,7 @@ import { TOS_COMMISSION_STATUS, TOS_UPDATED_AT } from "../data/tos"; ) : null } -

+

To stay flexible with both the word count and the deadline, I'm taking payments after the commission is done. My rate is US$ 1.50 per 100 words, and the final price is only set when @@ -77,7 +77,7 @@ import { TOS_COMMISSION_STATUS, TOS_UPDATED_AT } from "../data/tos"; words may be requested. In such a case, the final payment will have that amount discounted.

-
+

Commission subjects

  • diff --git a/src/pages/work.astro b/src/pages/work.astro index 5d6cc0e..9ea2d5c 100644 --- a/src/pages/work.astro +++ b/src/pages/work.astro @@ -1,13 +1,14 @@ --- import BaseLayout from "../layouts/BaseLayout.astro"; -import IconArrowUpRightFromSquare from "../components/icons/IconArrowUpRightFromSquare.astro"; -import IconBriefcase from "../components/icons/IconBriefcase.astro"; -import IconEkasPortal from "../components/icons/brands/IconEkasPortal.astro"; -import IconFurAffinity from "../components/icons/brands/IconFurAffinity.astro"; -import IconInkbunny from "../components/icons/brands/IconInkbunny.astro"; -import IconSoFurry from "../components/icons/brands/IconSoFurry.astro"; -import IconSubscribeStar from "../components/icons/brands/IconSubscribeStar.astro"; -import IconWeasyl from "../components/icons/brands/IconWeasyl.astro"; +import { IconArrowUpRightFromSquare, IconBriefcase } from "../components/icons"; +import { + IconEkasPortal, + IconFurAffinity, + IconInkbunny, + IconSoFurry, + IconSubscribeStar, + IconWeasyl, +} from "../components/icons/brands"; import { TOS_COMMISSION_STATUS } from "../data/tos"; import { SUBSCRIBESTAR_ENABLED } from "../data/subscribestar"; @@ -118,7 +119,7 @@ import { SUBSCRIBESTAR_ENABLED } from "../data/subscribestar";
-
+

Story commissions

{ TOS_COMMISSION_STATUS == "CLOSED" ? ( @@ -166,7 +167,7 @@ import { SUBSCRIBESTAR_ENABLED } from "../data/subscribestar"; ) }
-
+

Paid subscriptions and tips

{ SUBSCRIBESTAR_ENABLED ? ( @@ -200,7 +201,7 @@ import { SUBSCRIBESTAR_ENABLED } from "../data/subscribestar"; ) : null }
-
+

Other work

Other than the above, I've done some miscellaneous work. This includes