More websites, better licenses with TOML, more minute improvements

This commit is contained in:
Bad Manners 2024-08-26 00:16:48 -03:00
parent 5559cea720
commit 92123a305d
26 changed files with 414 additions and 138 deletions

View file

@ -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"],
};

View file

@ -1 +1 @@
See [public/licenses.txt](public/licenses.txt)
See [public/licenses.toml](public/licenses.toml)

41
package-lock.json generated
View file

@ -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",

View file

@ -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"
}
}

97
public/licenses.toml Normal file
View file

@ -0,0 +1,97 @@
# licenses.toml
[copyright]
title = "badmanners.xyz"
description = "Bad Manners's personal website."
date = "20232024"
author = "Bad Manners <me@badmanners.xyz>"
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 <me@badmanners.xyz>"
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",
]

View file

@ -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.

View file

@ -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";

View file

@ -1,6 +1,6 @@
---
import AgeRestrictedScriptInline from "./AgeRestrictedScriptInline.astro";
import IconTriangleExclamation from "./icons/IconTriangleExclamation.astro";
import { IconTriangleExclamation } from "./icons";
---
<div

View file

@ -0,0 +1,15 @@
---
import SVGIcon from "./SVGIcon.astro";
type Props = {
width: string;
height: string;
class?: string;
};
---
<SVGIcon {...Astro.props} viewBox="0 0 512 512">
<path
d="M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"
></path>
</SVGIcon>

View file

@ -0,0 +1,15 @@
---
import SVGIcon from "./SVGIcon.astro";
type Props = {
width: string;
height: string;
class?: string;
};
---
<SVGIcon {...Astro.props} viewBox="0 0 576 512">
<path
d="M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z"
></path>
</SVGIcon>

View file

@ -0,0 +1,15 @@
---
import SVGIcon from "./SVGIcon.astro";
type Props = {
width: string;
height: string;
class?: string;
};
---
<SVGIcon {...Astro.props} viewBox="0 0 640 512">
<path
d="M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z"
></path>
</SVGIcon>

View file

@ -10,6 +10,6 @@ type Props = {
<SVGIcon {...Astro.props} viewBox="0 0 64 64">
<path
d="m 48.675781,20.294922 v 23.107422 h 4.53125 v -7.814453 c 0,-1.763417 0.253035,-3.11254 0.759766,-4.044922 0.526997,-0.95265 1.470092,-1.427735 2.828125,-1.427735 1.783686,0 2.675781,1.19613 2.675781,3.587891 v 9.699219 H 64 V 32.578125 c 0,-2.128261 -0.548043,-3.668443 -1.642578,-4.621094 -1.074264,-0.97292 -2.512452,-1.460937 -4.316406,-1.460937 -1.013458,0 -1.936542,0.193011 -2.767578,0.578125 -0.831035,0.385113 -1.510111,1.004164 -2.03711,1.855469 h -0.242187 c 0.04055,-0.304038 0.08055,-0.832073 0.121093,-1.582032 0.06081,-0.749958 0.0918,-1.529077 0.0918,-2.339844 v -4.71289 z M 0,24.398438 v 3.558593 L 10.154297,32.667969 0,36.833984 v 3.556641 l 14.746094,-6.505859 v -2.128907 z m 24.019531,2.097656 c -1.986373,0 -3.577558,0.386024 -4.773437,1.15625 -1.195878,0.770226 -1.794922,1.926342 -1.794922,3.466797 0,0.932379 0.162023,1.7115 0.486328,2.339843 0.324308,0.608075 0.821353,1.13611 1.490234,1.582032 0.668883,0.42565 1.520963,0.860721 2.554688,1.30664 1.074263,0.445922 1.864363,0.809985 2.371094,1.09375 0.506726,0.283768 0.830771,0.538758 0.972656,0.761719 0.162161,0.222961 0.244141,0.475998 0.24414,0.759766 0,0.42565 -0.193013,0.769704 -0.578124,1.033203 -0.364846,0.263497 -0.992924,0.394531 -1.884766,0.394531 -0.790494,0 -1.702602,-0.131034 -2.736328,-0.394531 -1.033724,-0.263499 -1.996831,-0.598527 -2.888672,-1.003906 v 3.740234 c 0.831034,0.344576 1.661153,0.588584 2.492187,0.730469 0.831036,0.162157 1.825128,0.242187 2.980469,0.242187 2.35122,0 4.115407,-0.44605 5.291016,-1.33789 1.195878,-0.912113 1.792968,-2.208286 1.792968,-3.890626 0,-0.993186 -0.193013,-1.79427 -0.578124,-2.402343 -0.364846,-0.628345 -0.890926,-1.1454 -1.580079,-1.550781 -0.689148,-0.425653 -1.510241,-0.831684 -2.46289,-1.216797 -0.972918,-0.405382 -1.713977,-0.729427 -2.220703,-0.972657 -0.486461,-0.243228 -0.81953,-0.465278 -1.001954,-0.667968 -0.162157,-0.222961 -0.24414,-0.466969 -0.24414,-0.730469 0,-0.729687 0.670051,-1.09375 2.007812,-1.09375 0.749959,0 1.489061,0.122003 2.21875,0.365234 0.72969,0.222962 1.499784,0.505034 2.310547,0.84961 l 1.369141,-3.251953 C 28.864236,27.338497 27.90113,27.003474 26.96875,26.800781 26.036372,26.598089 25.053257,26.496094 24.019531,26.496094 Z m 15.109375,0 c -1.986375,0 -3.577557,0.386023 -4.773437,1.15625 -1.195879,0.770227 -1.792969,1.926341 -1.792969,3.466797 0,0.93238 0.162022,1.711499 0.486328,2.339843 0.324308,0.608075 0.821352,1.13611 1.490234,1.582032 0.668883,0.425651 1.519009,0.86072 2.552735,1.30664 1.074264,0.445922 1.866316,0.809984 2.373047,1.09375 0.506727,0.283768 0.830771,0.538758 0.972656,0.761719 0.162161,0.222961 0.242188,0.475998 0.242188,0.759766 0,0.425651 -0.19106,0.769704 -0.576172,1.033203 -0.364846,0.263498 -0.994876,0.394531 -1.886719,0.394531 -0.790495,0 -1.702601,-0.131033 -2.736328,-0.394531 -1.033725,-0.263499 -1.994877,-0.598526 -2.886719,-1.003906 v 3.740234 c 0.831035,0.344576 1.661152,0.588584 2.492188,0.730469 0.831035,0.162158 1.825126,0.242187 2.980468,0.242187 2.351222,0 4.113453,-0.446049 5.289063,-1.33789 1.195878,-0.912113 1.794922,-2.208285 1.794922,-3.890626 0,-0.993187 -0.193012,-1.794269 -0.578125,-2.402343 -0.364845,-0.628345 -0.892879,-1.145399 -1.582032,-1.550781 -0.689149,-0.425653 -1.51024,-0.831683 -2.46289,-1.216797 -0.972919,-0.405382 -1.712023,-0.729427 -2.21875,-0.972657 C 37.822133,32.090755 37.48711,31.868707 37.304688,31.666016 37.142529,31.443055 37.0625,31.199047 37.0625,30.935547 c 0,-0.729688 0.668097,-1.09375 2.005859,-1.09375 0.74996,0 1.491014,0.122003 2.220703,0.365234 0.729691,0.222962 1.499783,0.505034 2.310547,0.84961 l 1.367188,-3.251953 C 43.97361,27.338497 43.010506,27.003474 42.078125,26.800781 41.145746,26.598089 40.162633,26.496094 39.128906,26.496094 Z"
d="m 49.570312,19.189453 v 25.011719 h 4.875 v -8.978516 c 0,-0.577155 0.106552,-1.05859 0.320313,-1.443359 0.213761,-0.406146 0.513668,-0.715927 0.898437,-0.929688 0.384771,-0.235137 0.832677,-0.353515 1.345704,-0.353515 0.790916,0 1.347327,0.236757 1.667968,0.707031 0.320642,0.470274 0.480469,1.14311 0.480469,2.019531 v 8.978516 H 64 v -9.683594 c 0,-1.218438 -0.171654,-2.244456 -0.513672,-3.078125 -0.342018,-0.833668 -0.886602,-1.465056 -1.634766,-1.892578 -0.726787,-0.427522 -1.69953,-0.640625 -2.917968,-0.640625 -1.218439,0 -2.212882,0.278206 -2.982422,0.833984 -0.641283,0.470275 -1.142466,1.046434 -1.50586,1.730469 V 19.189453 Z M 0,27.271484 v 4.744141 L 9.4589844,35.863281 0,39.455078 v 4.777344 l 16.353516,-6.861328 v -3.238282 z m 25.650391,1.859375 c -1.068806,0 -2.019848,0.159827 -2.853516,0.480469 -0.812293,0.320642 -1.463427,0.790249 -1.955078,1.410156 -0.470274,0.619908 -0.705078,1.379547 -0.705078,2.277344 0,0.940549 0.203228,1.710062 0.609375,2.308594 0.406146,0.598531 0.919156,1.079966 1.539062,1.443359 0.641284,0.342018 1.31412,0.639971 2.019532,0.896485 0.790916,0.235137 1.410476,0.460067 1.859374,0.673828 0.470275,0.213761 0.801756,0.438691 0.994141,0.673828 0.192385,0.213761 0.289063,0.480139 0.289063,0.800781 0,0.342018 -0.118379,0.620223 -0.353516,0.833985 C 26.858612,41.143449 26.495556,41.25 26.003906,41.25 c -0.342017,0 -0.748475,-0.06315 -1.21875,-0.191406 -0.470274,-0.149633 -1.014858,-0.396264 -1.634765,-0.738282 -0.598532,-0.363394 -1.271368,-0.854701 -2.019532,-1.474609 l -2.021484,3.207031 c 0.662659,0.513027 1.378898,0.982634 2.148437,1.410157 0.76954,0.406146 1.604157,0.727753 2.501954,0.96289 0.919172,0.256514 1.901789,0.384766 2.949218,0.384766 1.774218,0 3.143544,-0.396584 4.105469,-1.1875 0.983301,-0.812292 1.47461,-2.009965 1.474609,-3.591797 0,-0.919173 -0.203228,-1.655159 -0.609374,-2.210938 -0.38477,-0.555778 -0.909607,-1.015511 -1.572266,-1.378906 -0.641283,-0.363393 -1.345694,-0.685001 -2.115234,-0.96289 -0.726788,-0.277889 -1.346349,-0.502819 -1.859376,-0.673828 -0.49165,-0.192386 -0.876407,-0.393661 -1.154296,-0.607422 -0.256513,-0.213761 -0.384766,-0.482093 -0.384766,-0.802735 0,-0.277889 0.106551,-0.502819 0.320312,-0.673828 0.235138,-0.171009 0.576493,-0.255859 1.025391,-0.255859 0.66266,0 1.390725,0.193354 2.181641,0.578125 0.790916,0.363393 1.495327,0.833001 2.115234,1.410156 L 31.96875,31.310547 C 31.391595,30.883025 30.770081,30.508142 30.107422,30.1875 29.466139,29.866858 28.771601,29.610354 28.023438,29.417969 27.29665,29.225584 26.505435,29.130859 25.650391,29.130859 Z m 14.623047,0 c -1.068806,0 -2.021801,0.159827 -2.855469,0.480469 -0.812292,0.320642 -1.463428,0.790249 -1.955078,1.410156 -0.470275,0.619908 -0.705079,1.379547 -0.705079,2.277344 0,0.940549 0.203229,1.710062 0.609376,2.308594 0.406145,0.598531 0.919155,1.079966 1.539062,1.443359 0.641283,0.342018 1.314119,0.639971 2.019531,0.896485 0.790916,0.235137 1.410476,0.460067 1.859375,0.673828 0.470274,0.213761 0.801756,0.438691 0.994141,0.673828 0.192385,0.213761 0.289062,0.480139 0.289062,0.800781 0,0.342018 -0.118377,0.620223 -0.353515,0.833985 C 41.479707,41.143449 41.11665,41.25 40.625,41.25 c -0.342018,0 -0.748476,-0.06315 -1.21875,-0.191406 -0.470274,-0.149633 -1.014858,-0.396264 -1.634766,-0.738282 -0.598531,-0.363394 -1.271367,-0.854701 -2.019531,-1.474609 l -2.019531,3.207031 c 0.66266,0.513027 1.376944,0.982634 2.146484,1.410157 0.76954,0.406146 1.604156,0.727753 2.501953,0.96289 0.919173,0.256514 1.90179,0.384766 2.949219,0.384766 1.774218,0 3.143544,-0.396584 4.105469,-1.1875 0.983301,-0.812292 1.474609,-2.009965 1.474609,-3.591797 0,-0.919173 -0.203228,-1.655159 -0.609375,-2.210938 -0.384769,-0.555778 -0.909605,-1.015511 -1.572265,-1.378906 -0.641284,-0.363393 -1.345695,-0.685001 -2.115235,-0.96289 -0.726788,-0.277889 -1.346348,-0.502819 -1.859375,-0.673828 -0.49165,-0.192386 -0.876407,-0.393661 -1.154297,-0.607422 -0.256513,-0.213761 -0.384765,-0.482093 -0.384765,-0.802735 0,-0.277889 0.106551,-0.502819 0.320312,-0.673828 0.235137,-0.171009 0.576493,-0.255859 1.025391,-0.255859 0.662659,0 1.390724,0.193354 2.181641,0.578125 0.790915,0.363393 1.495326,0.833001 2.115234,1.410156 l 1.732422,-3.142578 c -0.577155,-0.427522 -1.198668,-0.802405 -1.861328,-1.123047 -0.641284,-0.320642 -1.335821,-0.577146 -2.083985,-0.769531 -0.726788,-0.192385 -1.516049,-0.28711 -2.371093,-0.28711 z"
></path>
</SVGIcon>

View file

@ -1,15 +0,0 @@
---
import SVGIcon from "./SVGIcon.astro";
type Props = {
width: string;
height: string;
class?: string;
};
---
<SVGIcon {...Astro.props} viewBox="0 0 64 64">
<path
d="m 19.478516,22.262 v 2.78125 h 8.347656 V 22.262 Z m 8.347656,2.78125 v 2.783203 h 2.783203 V 25.04325 Z m -8.347656,0 h -2.783204 v 5.566406 h 2.783204 z m 0,5.566406 v 2.78125 h 8.347656 v -2.78125 z m 8.347656,2.78125 v 5.566406 h 2.783203 v -5.566406 z m 0,5.566406 h -8.347656 v 2.78125 h 8.347656 z m -8.347656,0 v -2.783203 h -2.783204 v 2.783203 z M 36.173828,22.262 v 2.78125 h 8.347656 V 22.262 Z m 8.347656,2.78125 v 2.783203 h 2.783204 V 25.04325 Z m -8.347656,0 h -2.783203 v 5.566406 h 2.783203 z m 0,5.566406 v 2.78125 h 8.347656 v -2.78125 z m 8.347656,2.78125 v 5.566406 h 2.783204 v -5.566406 z m 0,5.566406 h -8.347656 v 2.78125 h 8.347656 z m -8.347656,0 v -2.783203 h -2.783203 v 2.783203 z M 50.087891,22.262 v 19.476562 h 2.78125 v -8.347656 h 8.347656 v 8.347656 H 64 V 22.262 h -2.783203 v 8.347656 H 52.869141 V 22.262 Z M 0,25.04325 v 2.783203 H 5.5644531 V 25.04325 Z m 5.5644531,2.783203 v 2.783203 h 5.5664059 v -2.783203 z m 5.5664059,2.783203 v 2.78125 h 2.78125 v -2.78125 z m 0,2.78125 H 5.5644531 v 2.783203 H 11.130859 Z M 5.5644531,36.174109 H 0 v 2.783203 h 5.5644531 z"
></path>
</SVGIcon>

View file

@ -0,0 +1,15 @@
---
import SVGIcon from "../SVGIcon.astro";
type Props = {
width: string;
height: string;
class?: string;
};
---
<SVGIcon {...Astro.props} viewBox="0 0 24 24">
<path
d="M14.563 24c-5.093 0-7.031-3.756-7.031-6.411V9.747H5.116V6.648c3.63-1.313 4.512-4.596 4.71-6.469C9.84.051 9.941 0 9.999 0h3.517v6.114h4.801v3.633h-4.82v7.47c.016 1.001.375 2.371 2.207 2.371h.09c.631-.02 1.486-.205 1.936-.419l1.156 3.425c-.436.636-2.4 1.374-4.156 1.404h-.178l.011.002z"
></path>
</SVGIcon>

View file

@ -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";

View file

@ -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";

View file

@ -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";
>
<span class="print:hidden" aria-hidden="true">&nbsp;|&nbsp;</span>
<a
href="/licenses.txt"
href="/licenses.toml"
rel="license"
class="transition-colors hover:text-white hover:underline focus:text-white focus:underline motion-reduce:transition-none dark:hover:text-bm-300 dark:focus:text-bm-300 print:hidden"
>

View file

@ -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

View file

@ -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";
---
<BaseLayout pageTitle="About me">
<meta slot="head-description" property="og:description" content="About Bad Manners." />
<article class="h-card" aria-labelledby="title-about-me">
<h1 id="title-about-me" class="text-2xl sm:text-3xl">About me</h1>
<section id="section-bad-manners">
<section>
<p class="mb-4 mt-5 text-justify indent-6 sm:mb-3 sm:mt-6 sm:px-5 sm:indent-12">
You can call me <b class="p-name font-semibold">Bad Manners</b>, <b class="p-nickname font-semibold">Manners</b
>, <b class="p-nickname font-semibold"><abbr>BM</abbr></b>, <b class="p-nickname font-semibold">Bad</b>, <b
class="p-nickname font-semibold">Briefcase</b
>... many choices to pick from! My pronouns are <span class="p-pronoun font-medium">he/him</span>. 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 <span
class="p-pronoun font-medium underline decoration-current decoration-dotted"
data-tippy-content="he/him/his/his/himself">he/him</span
> or <span
class="p-pronoun font-medium underline decoration-current decoration-dotted"
data-tippy-content="they/them/their/theirs/themself">they/them</span
>. The term "bad manners" comes from gaming, referencing when someone acts in a purposefully disrespectful and
taunting manner towards other players &ndash; and I chose this moniker as it has plenty of personal meanings
attached to it.
</p>
</section>
<section id="section-sam-brendan" class="h-card">
<section class="h-card">
<p class="my-4 text-justify indent-6 sm:mb-3 sm:px-5 sm:indent-12">
You can also call me <b class="p-first-name font-semibold">Sam</b>, which is my <span class="p-category"
>fursona</span
@ -45,7 +50,7 @@ import ImageSamStickerJuicebox from "../assets/images/sam_sticker_juicebox.webp"
A sticker of Sam by
<a
class="h-card u-url text-link transition-colors motion-reduce:transition-none"
href="https://olivecow.carrd.co/"
href="https://olivecow.carrd.co"
rel="nofollow"
target="_blank"
>
@ -57,3 +62,20 @@ import ImageSamStickerJuicebox from "../assets/images/sam_sticker_juicebox.webp"
</section>
</article>
</BaseLayout>
<script>
import { ENABLE_VIEW_TRANSITIONS } from "astro:env/client";
import tippy from "tippy.js";
import "tippy.js/dist/tippy.css";
const initTooltips = () => {
tippy("[data-tippy-content]", {
theme: "bm",
});
};
if (ENABLE_VIEW_TRANSITIONS) {
document.addEventListener("astro:page-load", initTooltips);
} else {
initTooltips();
}
</script>

View file

@ -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()),
})),
});

View file

@ -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";
---
<BaseLayout>
<meta
slot="head-description"
property="og:description"
content="Safe vore enthusiast, mimic hybrid, and occasional writer."
content="Safe vore enthusiast, mimic hybrid furry, and occasional writer."
/>
<article class="h-card" aria-label="Homepage of Bad Manners">
<h1 id="title-home" class="pb-4 text-3xl tracking-tight sm:text-5xl">
@ -47,42 +48,35 @@ import IconYouTube from "../components/icons/brands/IconYouTube.astro";
<img
loading="eager"
src="/logo.webp"
alt="Logo for Bad Manners"
alt="A pixelated metal briefcase over a background with a green gradient."
class="u-logo mx-auto my-4 h-screen max-h-48 rounded-full transition-transform hover:scale-110 motion-reduce:transition-none motion-reduce:hover:scale-100 sm:max-h-72"
/>
<p class="p-note mt-6 sm:px-5 md:px-6">
I'm a safe vore enthusiast, a furry programmer, and occasionally a writer.
</p>
{
Astro.site ? (
<a id="website" href={Astro.site} class="u-url sr-only" aria-label="Permalink">
{Astro.site}
</a>
) : null
}
<p class="p-note mt-6 sm:px-5 md:px-6">I'm a safe vore enthusiast, a furry, and occasional writer.</p>
<ul
id="links"
class="grid grid-cols-3 gap-x-4 gap-y-5 px-4 pt-8 sm:grid-cols-4 sm:px-20 md:px-32"
aria-label="Links"
>
{
Astro.site ? (
<li>
<a
id="e-mail"
class="u-email text-link group block w-full transition-colors motion-reduce:transition-none"
href="mailto:me@badmanners.xyz"
rel="me"
aria-label="me@badmanners.xyz"
data-clipboard="me@badmanners.xyz"
data-noun="E-mail address"
id="permalink"
class="u-url text-link group block w-full transition-colors motion-reduce:transition-none"
href={Astro.site}
aria-label="Permalink"
data-clipboard={Astro.site}
data-noun="URL"
>
<IconEnvelope
<IconLink
height="1.75rem"
width="1.75rem"
class="inline transition-transform group-hover:scale-150 group-focus:scale-150 motion-reduce:transition-none motion-reduce:group-hover:scale-100 motion-reduce:group-focus:scale-100"
/>
<p class="sr-only">E-mail address</p>
</a>
</li>
) : null
}
<li>
<a
id="gallery"
@ -99,6 +93,42 @@ import IconYouTube from "../components/icons/brands/IconYouTube.astro";
/>
</a>
</li>
<li>
<a
id="pronouns"
class="u-url text-link group block w-full transition-colors motion-reduce:transition-none"
href="https://pronouns.cc/@BadManners"
rel="me"
aria-label="Pronouns"
>
<IconCommentDots
height="1.75rem"
width="1.75rem"
class="inline transition-transform group-hover:scale-150 group-focus:scale-150 motion-reduce:transition-none motion-reduce:group-hover:scale-100 motion-reduce:group-focus:scale-100"
/>
<p class="p-nickname sr-only">@BadManners on pronouns.cc</p>
<p class="p-pronoun sr-only">he/him/his/his/himself</p>
<p class="p-pronoun sr-only">they/them/their/theirs/themself</p>
</a>
</li>
<li>
<a
id="e-mail"
class="u-email text-link group block w-full transition-colors motion-reduce:transition-none"
href="mailto:me@badmanners.xyz"
rel="me"
aria-label="E-mail"
data-clipboard="me@badmanners.xyz"
data-noun="E-mail address"
>
<IconEnvelope
height="1.75rem"
width="1.75rem"
class="inline transition-transform group-hover:scale-150 group-focus:scale-150 motion-reduce:transition-none motion-reduce:group-hover:scale-100 motion-reduce:group-focus:scale-100"
/>
<p class="sr-only">E-mail address</p>
</a>
</li>
<li>
<a
id="bluesky"
@ -204,7 +234,7 @@ import IconYouTube from "../components/icons/brands/IconYouTube.astro";
rel="me"
aria-label="GitHub"
>
<IconGitHub
<IconGithub
height="1.75rem"
width="1.75rem"
class="inline transition-transform group-hover:scale-150 group-focus:scale-150 motion-reduce:transition-none motion-reduce:group-hover:scale-100 motion-reduce:group-focus:scale-100"
@ -220,7 +250,7 @@ import IconYouTube from "../components/icons/brands/IconYouTube.astro";
rel="me"
aria-label="GitLab"
>
<IconGitLab
<IconGitlab
height="1.75rem"
width="1.75rem"
class="inline transition-transform group-hover:scale-150 group-focus:scale-150 motion-reduce:transition-none motion-reduce:group-hover:scale-100 motion-reduce:group-focus:scale-100"
@ -234,7 +264,7 @@ import IconYouTube from "../components/icons/brands/IconYouTube.astro";
class="u-email text-link group block w-full transition-colors motion-reduce:transition-none"
href="mailto:badmanners.vore@gmail.com"
rel="me"
aria-label="badmanners.vore@gmail.com"
aria-label="Gmail"
data-clipboard="badmanners.vore@gmail.com"
data-noun="Gmail address"
>
@ -502,6 +532,22 @@ import IconYouTube from "../components/icons/brands/IconYouTube.astro";
<p class="p-nickname sr-only">@bad_manners on Telegram</p>
</a>
</li>
<li>
<a
id="tumblr"
class="u-url text-link group block w-full transition-colors motion-reduce:transition-none"
href="https://www.tumblr.com/badmannersxyz"
rel="me"
aria-label="Tumblr"
>
<IconTumblr
height="1.75rem"
width="1.75rem"
class="inline transition-transform group-hover:scale-150 group-focus:scale-150 motion-reduce:transition-none motion-reduce:group-hover:scale-100 motion-reduce:group-focus:scale-100"
/>
<p class="p-nickname sr-only">badmannersxyz on Tumblr</p>
</a>
</li>
<li>
<a
id="twitch"

View file

@ -1,9 +1,8 @@
---
import { Image } from "astro:assets";
import BaseLayout from "../layouts/BaseLayout.astro";
import IconArrowUpRightFromSquare from "../components/icons/IconArrowUpRightFromSquare.astro";
import ImageSamAllStickers from "../assets/images/sam_all_stickers.webp";
import ImageSamRefsheet from "../assets/images/sam_refsheet.webp";
import { IconArrowUpRightFromSquare } from "../components/icons";
import { ImageSamAllStickers, ImageSamRefsheet } from "../assets/images";
---
<BaseLayout pageTitle="Sam Brendan">
@ -94,7 +93,7 @@ import ImageSamRefsheet from "../assets/images/sam_refsheet.webp";
A set of stickers featuring Sam Brendan, by
<a
class="h-card u-url text-link transition-colors motion-reduce:transition-none"
href="https://olivecow.carrd.co/"
href="https://olivecow.carrd.co"
rel="nofollow"
target="_blank"
>

View file

@ -1,6 +1,6 @@
---
import BaseLayout from "../layouts/BaseLayout.astro";
import IconSquareRSS from "../components/icons/IconSquareRSS.astro";
import { IconSquareRSS } from "../components/icons";
import { TOS_COMMISSION_STATUS, TOS_UPDATED_AT } from "../data/tos";
---
@ -29,23 +29,23 @@ import { TOS_COMMISSION_STATUS, TOS_UPDATED_AT } from "../data/tos";
</div>
{
TOS_COMMISSION_STATUS == "CLOSED" ? (
<p class="mb-4 text-2xl font-medium uppercase sm:mb-8 sm:px-5 md:px-6">
<p id="status" class="mb-4 text-2xl font-medium uppercase sm:mb-8 sm:px-5 md:px-6">
Commissions are
<span class="text-red-600 dark:text-red-500">closed</span>.
</p>
) : TOS_COMMISSION_STATUS == "OPEN" ? (
<p class="mb-4 text-2xl font-medium uppercase sm:mb-8 sm:px-5 md:px-6">
<p id="status" class="mb-4 text-2xl font-medium uppercase sm:mb-8 sm:px-5 md:px-6">
Commissions are <span class="text-bm-500 dark:text-bm-400">open</span>.
</p>
) : TOS_COMMISSION_STATUS == "SEMI_OPEN" ? (
<p class="mb-4 text-2xl font-medium sm:mb-8 sm:px-5 md:px-6">
<p id="status" class="mb-4 text-2xl font-medium sm:mb-8 sm:px-5 md:px-6">
<span class="uppercase">
Commissions are <span class="text-orange-600 dark:text-orange-500">semi-open</span>
</span>
. I'll be more picky about which commissions to take.
</p>
) : TOS_COMMISSION_STATUS == "PRIVATE" ? (
<p class="mb-4 text-2xl font-medium sm:mb-8 sm:px-5 md:px-6">
<p id="status" class="mb-4 text-2xl font-medium sm:mb-8 sm:px-5 md:px-6">
<span class="uppercase">
Commissions are <span class="text-red-600 dark:text-red-500">private</span>
</span>
@ -54,7 +54,7 @@ import { TOS_COMMISSION_STATUS, TOS_UPDATED_AT } from "../data/tos";
) : null
}
</section>
<section>
<section id="terms">
<p class="mb-2 text-justify indent-6 sm:px-5 sm:indent-12 md:px-6">
To stay flexible with both the word count and the deadline, I'm taking payments <em>after</em> the commission is
done. My rate is <b class="font-semibold">US$&nbsp;1.50 per 100 words</b>, and the final price is only set when
@ -77,7 +77,7 @@ import { TOS_COMMISSION_STATUS, TOS_UPDATED_AT } from "../data/tos";
words <em>may</em> be requested. In such a case, the final payment will have that amount discounted.
</p>
</section>
<section aria-labelledby="title-commission-subjects">
<section id="subjects" aria-labelledby="title-commission-subjects">
<h2 id="title-commission-subjects" class="my-4 text-lg sm:my-6 sm:text-2xl">Commission subjects</h2>
<ul class="mb-8 text-justify text-base sm:px-3 sm:text-lg md:px-6">
<li class="mx-6 mb-1 list-disc sm:mx-8">

View file

@ -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";
</li>
</ul>
</section>
<section aria-labelledby="title-story-commissions">
<section id="commissions" aria-labelledby="title-story-commissions">
<h2 id="title-story-commissions" class="my-4 text-lg sm:my-6 sm:text-2xl">Story commissions</h2>
{
TOS_COMMISSION_STATUS == "CLOSED" ? (
@ -166,7 +167,7 @@ import { SUBSCRIBESTAR_ENABLED } from "../data/subscribestar";
)
}
</section>
<section aria-labelledby="title-paid-subscriptions">
<section id="subscribestar" aria-labelledby="title-paid-subscriptions">
<h2 id="title-paid-subscriptions" class="my-4 text-lg sm:my-6 sm:text-2xl">Paid subscriptions and tips</h2>
{
SUBSCRIBESTAR_ENABLED ? (
@ -200,7 +201,7 @@ import { SUBSCRIBESTAR_ENABLED } from "../data/subscribestar";
) : null
}
</section>
<section aria-labelledby="title-other-work">
<section id="other" aria-labelledby="title-other-work">
<h2 id="title-other-work" class="my-4 text-lg sm:my-6 sm:text-2xl">Other work</h2>
<p class="mb-6 mt-3 sm:mb-8 sm:mt-4">
Other than the above, I've done some miscellaneous work. This includes