From 4a2f02930f8447a91aa0c9539c8d7949e6335454 Mon Sep 17 00:00:00 2001 From: Leilukin Date: Sat, 19 Apr 2025 23:05:34 +0800 Subject: [PATCH] Update repository information --- .gitattributes | 2 + .gitignore | 182 + README.md | 22 + bun.lockb | Bin 0 -> 110049 bytes eleventy.config.js | 50 + package.json | 36 + src/.htaccess.njk | 22 + src/404.njk | 4 + src/_bundle/css/comments.css | 139 + src/_bundle/js/comments.js | 528 ++ src/_bundle/js/googleSheetsReaderGizmo.js | 179 + src/_bundle/js/svgIconControl.js | 453 ++ src/_config/collections.js | 12 + src/_config/files.js | 11 + src/_config/filters.js | 32 + src/_config/markdown-it.js | 106 + src/_config/shortcodes.js | 54 + src/_data/robots.js | 32 + src/_data/sitemeta.js | 28 + src/_includes/asummersend/base.njk | 19 + src/_includes/asummersend/content.njk | 7 + src/_includes/asummersend/footer.njk | 6 + src/_includes/asummersend/hero.njk | 46 + src/_includes/asummersend/myplaylist.njk | 31 + src/_includes/asummersend/navbar.njk | 11 + src/_includes/asummersend/shrineinfo.njk | 12 + src/_includes/cassettebeasts/base.njk | 19 + src/_includes/cassettebeasts/content.njk | 7 + src/_includes/cassettebeasts/footer.njk | 6 + src/_includes/cassettebeasts/hero.njk | 40 + src/_includes/cassettebeasts/navbar.njk | 11 + src/_includes/cassettebeasts/shrineinfo.njk | 14 + src/_includes/global/baselayout.njk | 53 + src/_includes/global/content.njk | 115 + src/_includes/global/css-bundle.njk | 14 + src/_includes/global/feeds.njk | 1 + src/_includes/global/fonts.njk | 19 + src/_includes/global/footer.njk | 53 + src/_includes/global/h-card.njk | 7 + src/_includes/global/hero.njk | 46 + src/_includes/global/macros.njk | 26 + src/_includes/global/meta.njk | 12 + src/_includes/global/navbar.njk | 105 + src/_includes/global/pagination-oldnew.njk | 98 + src/_includes/global/shrineinfo.njk | 39 + src/_includes/global/toc.njk | 57 + src/_includes/global/top-btn.njk | 43 + src/_includes/main/archive.njk | 16 + src/_includes/main/base.njk | 5 + src/_includes/main/changelogs-list.njk | 7 + src/_includes/main/changelogs.njk | 62 + src/_includes/main/content-nav.njk | 23 + src/_includes/main/content.njk | 5 + src/_includes/main/footer.njk | 29 + src/_includes/main/hero.njk | 141 + src/_includes/main/links.njk | 48 + src/_includes/main/my-button.njk | 13 + src/_includes/main/navbar.njk | 11 + src/_includes/main/slashpage.njk | 9 + src/_includes/main/statuscafe.njk | 39 + src/_includes/main/support-me.njk | 15 + src/_includes/main/webcliques.njk | 56 + src/_includes/misc/404.njk | 12 + src/_includes/misc/base.njk | 29 + src/_includes/pokemonoras/base.njk | 19 + src/_includes/pokemonoras/content.njk | 7 + src/_includes/pokemonoras/footer.njk | 6 + src/_includes/pokemonoras/hero.njk | 34 + src/_includes/pokemonoras/navbar.njk | 11 + src/_includes/pokemonoras/shrineinfo.njk | 10 + src/_includes/starwarskotor/base.njk | 19 + src/_includes/starwarskotor/content.njk | 7 + src/_includes/starwarskotor/footer.njk | 6 + src/_includes/starwarskotor/hero.njk | 40 + src/_includes/starwarskotor/modlist-info.md | 67 + src/_includes/starwarskotor/navbar.njk | 11 + src/_includes/starwarskotor/shrineinfo.njk | 11 + src/articles/articles.11tydata.js | 13 + src/articles/featured/featured.11tydata.js | 3 + .../kotor2-modder-interview-ars-technica.md | 23 + .../lgbtq-booklet-interview-misi-bawang.md | 40 + .../myarticles/accessible-footnotes.md | 335 ++ ...anti-harry-potter-jk-rowling-masterlist.md | 58 + .../designated-lesbian-syndrome-fandom.md | 26 + .../living-with-retinitis-pigmentosa.md | 26 + .../myarticles/love-letter-to-myself.md | 40 + .../my-dislike-of-shipping-culture.md | 19 + .../myarticles/myarticles.11tydata.js | 3 + .../myarticles/palestine-masterlist.md | 185 + .../32bitcafe-vacation/alexandra-stamp.png | Bin 0 -> 8068 bytes .../32bitcafe-vacation/passport.png | Bin 0 -> 192918 bytes .../32bitcafe-vacation/ribose-riverfish.png | Bin 0 -> 741 bytes src/assets/adoptables/alexandra-diddles.png | Bin 0 -> 956 bytes .../adoptables/kittyfriends/artwork-bat.gif | Bin 0 -> 20331 bytes .../kittyfriends/artwork-pumpkin.gif | Bin 0 -> 21984 bytes .../kittyfriends/artwork-vampire.gif | Bin 0 -> 20817 bytes .../adoptables/kittyfriends/artwork-witch.gif | Bin 0 -> 18159 bytes src/assets/adoptables/kittyfriends/krish.png | Bin 0 -> 1519 bytes .../kittyfriends/leilukin-blackkitty.png | Bin 0 -> 17720 bytes .../kittyfriends/leilukin-purplekitty.png | Bin 0 -> 13959 bytes .../kittyfriends/lina-strawberry-kitty.gif | Bin 0 -> 1881 bytes .../kittyfriends/owl-small-owlcat.gif | Bin 0 -> 6434 bytes .../kittyfriends/rosemary-ghostcat.gif | Bin 0 -> 4076 bytes .../kittyfriends/sakuradreams-Simba.gif | Bin 0 -> 507 bytes .../kittyfriends/solaria-creampuffs.png | Bin 0 -> 878 bytes .../kittyfriends/solaria-garfield.gif | Bin 0 -> 381 bytes src/assets/adoptables/lostletters-moomin.png | Bin 0 -> 3213 bytes src/assets/adoptables/lou-frog.gif | Bin 0 -> 658 bytes src/assets/adoptables/lou-greenkaoani.gif | Bin 0 -> 999 bytes src/assets/adoptables/lou-maneki-neko.png | Bin 0 -> 4388 bytes src/assets/adoptables/lou-tamagotchi.gif | Bin 0 -> 1500 bytes src/assets/adoptables/pantson/00-join.gif | Bin 0 -> 5596 bytes src/assets/adoptables/pantson/anna-kale.png | Bin 0 -> 626 bytes .../adoptables/pantson/anna-not-a-brick.png | Bin 0 -> 652 bytes .../adoptables/pantson/ebony-mosstone.png | Bin 0 -> 1855 bytes .../pantson/ebony-total-eclipse.png | Bin 0 -> 1866 bytes .../pantson/fritzi-magical-tour.png | Bin 0 -> 936 bytes .../adoptables/pantson/fritzi-plastic-ono.png | Bin 0 -> 879 bytes .../adoptables/pantson/fritzi-rubber-soul.png | Bin 0 -> 880 bytes .../pantson/ginnygravity-robins-egg.png | Bin 0 -> 2085 bytes .../pantson/joejenett-chocolato.png | Bin 0 -> 897 bytes .../pantson/leilukin-grape-juice.png | Bin 0 -> 3300 bytes .../adoptables/pantson/lina-morning-mist.png | Bin 0 -> 15028 bytes .../adoptables/pantson/manyface-lizard.png | Bin 0 -> 3259 bytes .../adoptables/pantson/manyface-psyche.png | Bin 0 -> 3260 bytes .../pantson/sakuradreams-lilac-dreams.png | Bin 0 -> 280 bytes .../pantson/sakuradreams-sakura-pink.png | Bin 0 -> 301 bytes .../adoptables/pantson/v-star-sticker.png | Bin 0 -> 663 bytes .../adoptables/pantson/velvet-cherry-red.png | Bin 0 -> 653 bytes .../adoptables/pixelcliques/madebyagirl.png | Bin 0 -> 1228 bytes .../adoptables/pixelcliques/theapple.gif | Bin 0 -> 877 bytes .../salad-magazine/semper-inksnail-black.png | Bin 0 -> 1139 bytes .../semper-inksnail-sparkle.png | Bin 0 -> 2984 bytes .../adoptables/wings-dolphinclassic.gif | Bin 0 -> 1026 bytes src/assets/adoptables/wings-rainbowmoon.png | Bin 0 -> 6633 bytes src/assets/banners/harry-potter-free-site.png | Bin 0 -> 134529 bytes src/assets/buttons/badges/coffee-powered.svg | 1 + src/assets/buttons/badges/fight-fascism.jpg | Bin 0 -> 21726 bytes src/assets/buttons/badges/people-pledge.svg | 7 + src/assets/buttons/badges/valid-atom.png | Bin 0 -> 1114 bytes .../buttons/communities/32-bit-cafe.png | Bin 0 -> 594 bytes .../buttons/communities/saladmagazine.png | Bin 0 -> 3133 bytes .../buttons/directories/accessiblenet.png | Bin 0 -> 1121 bytes .../buttons/directories/bukmarkclub.png | Bin 0 -> 4724 bytes src/assets/buttons/directories/indieseek.png | Bin 0 -> 2417 bytes src/assets/buttons/directories/linklane.png | Bin 0 -> 6386 bytes src/assets/buttons/directories/list-me.png | Bin 0 -> 6200 bytes .../buttons/directories/responsiveweb.png | Bin 0 -> 1405 bytes .../buttons/directories/smoothsailing.png | Bin 0 -> 4956 bytes src/assets/buttons/misc/ko-fi.webp | Bin 0 -> 1766 bytes .../buttons/misc/standwithpalestine.png | Bin 0 -> 2437 bytes src/assets/buttons/pride/9_stripe.png | Bin 0 -> 684 bytes src/assets/buttons/pride/agender.png | Bin 0 -> 243 bytes src/assets/buttons/pride/bigender.png | Bin 0 -> 649 bytes src/assets/buttons/pride/demigirl.png | Bin 0 -> 260 bytes src/assets/buttons/pride/disability.png | Bin 0 -> 1989 bytes src/assets/buttons/pride/greyromantic.png | Bin 0 -> 6752 bytes src/assets/buttons/pride/greysexual.png | Bin 0 -> 6723 bytes src/assets/buttons/pride/lesbian.png | Bin 0 -> 258 bytes src/assets/buttons/pride/nonbinary.png | Bin 0 -> 247 bytes src/assets/buttons/pride/progress.png | Bin 0 -> 438 bytes src/assets/buttons/sites/10kph.png | Bin 0 -> 832 bytes src/assets/buttons/sites/alyaza.gif | Bin 0 -> 2698 bytes src/assets/buttons/sites/autisticasfxxk.gif | Bin 0 -> 3318 bytes src/assets/buttons/sites/ballonlea.png | Bin 0 -> 2385 bytes src/assets/buttons/sites/beepbird.gif | Bin 0 -> 12163 bytes src/assets/buttons/sites/chrisburnell.gif | Bin 0 -> 35929 bytes src/assets/buttons/sites/darylsun.webp | Bin 0 -> 2644 bytes src/assets/buttons/sites/divergentrays.png | Bin 0 -> 7377 bytes src/assets/buttons/sites/dryadglen.png | Bin 0 -> 241 bytes src/assets/buttons/sites/frills.png | Bin 0 -> 781 bytes src/assets/buttons/sites/groundedwren.png | Bin 0 -> 4814 bytes src/assets/buttons/sites/grubdog.png | Bin 0 -> 1974 bytes src/assets/buttons/sites/jasminesjournal.png | Bin 0 -> 3236 bytes src/assets/buttons/sites/jefbecker.png | Bin 0 -> 2711 bytes src/assets/buttons/sites/kalechips.png | Bin 0 -> 8055 bytes src/assets/buttons/sites/lina.gif | Bin 0 -> 8546 bytes src/assets/buttons/sites/lostletters.gif | Bin 0 -> 10515 bytes src/assets/buttons/sites/manyface.png | Bin 0 -> 5710 bytes src/assets/buttons/sites/melvian.png | Bin 0 -> 3077 bytes src/assets/buttons/sites/mycorrhiza.png | Bin 0 -> 3987 bytes src/assets/buttons/sites/pinkvampyr.gif | Bin 0 -> 2967 bytes src/assets/buttons/sites/ribose.png | Bin 0 -> 4184 bytes src/assets/buttons/sites/sakuradreams.gif | Bin 0 -> 875 bytes src/assets/buttons/sites/sanguineroyal.gif | Bin 0 -> 99897 bytes src/assets/buttons/sites/solaria.png | Bin 0 -> 984 bytes src/assets/buttons/sites/starbreaker.avif | Bin 0 -> 1750 bytes src/assets/buttons/sites/symliadoo.png | Bin 0 -> 781 bytes src/assets/buttons/sites/whiona.png | Bin 0 -> 3884 bytes src/assets/buttons/sites/wings.png | Bin 0 -> 8362 bytes src/assets/buttons/sites/xandra.png | Bin 0 -> 1581 bytes .../buttons/webrings/queercoded-left.png | Bin 0 -> 360 bytes .../buttons/webrings/queercoded-right.png | Bin 0 -> 360 bytes src/assets/buttons/webrings/queercoded.png | Bin 0 -> 754 bytes src/assets/cliques/30plusclub.gif | Bin 0 -> 851 bytes src/assets/cliques/OTF.png | Bin 0 -> 3011 bytes src/assets/cliques/breloom.png | Bin 0 -> 4473 bytes src/assets/cliques/caffeineNATION.png | Bin 0 -> 3084 bytes src/assets/cliques/dogperson.png | Bin 0 -> 184 bytes src/assets/cliques/linked.png | Bin 0 -> 303 bytes src/assets/cliques/myjam.png | Bin 0 -> 3035 bytes src/assets/cliques/unexpectedsong.png | Bin 0 -> 2978 bytes .../css/a11y-syntax-highlighting-dark.css | 218 + src/assets/css/asummersend.css | 32 + src/assets/css/cassettebeasts.css | 40 + src/assets/css/components.css | 242 + src/assets/css/content.css | 58 + src/assets/css/general.css | 125 + src/assets/css/global.css | 108 + src/assets/css/misc.css | 158 + src/assets/css/plugins.css | 46 + src/assets/css/pokemonoras.css | 41 + src/assets/css/pridesymbols.css | 225 + src/assets/css/starwarskotor.css | 32 + src/assets/css/tooltips.css | 49 + src/assets/css/utility.css | 68 + src/assets/favicon/apple-touch-icon.png | Bin 0 -> 18772 bytes src/assets/favicon/favicon.ico | Bin 0 -> 289870 bytes src/assets/fonts/fonts.css | 52 + .../intel-one-mono/IntelOneMono-Bold.woff2 | Bin 0 -> 25868 bytes .../IntelOneMono-BoldItalic.woff2 | Bin 0 -> 27388 bytes .../intel-one-mono/IntelOneMono-Italic.woff2 | Bin 0 -> 28428 bytes .../intel-one-mono/IntelOneMono-Medium.woff2 | Bin 0 -> 26208 bytes .../IntelOneMono-MediumItalic.woff2 | Bin 0 -> 28232 bytes .../intel-one-mono/IntelOneMono-Regular.woff2 | Bin 0 -> 26532 bytes .../readex-pro/readex-pro-v22-latin-600.woff2 | Bin 0 -> 15052 bytes .../readex-pro/readex-pro-v22-latin-700.woff2 | Bin 0 -> 14948 bytes .../readex-pro-v22-latin-regular.woff2 | Bin 0 -> 14384 bytes .../32bitcafe-backtoschool.png | Bin 0 -> 1024 bytes .../accessible-footnotes/footnote-sample.avif | Bin 0 -> 20245 bytes .../Bawang-Booklet-Interview-Leilukin-1.avif | Bin 0 -> 83254 bytes .../Bawang-Booklet-Interview-Leilukin-2.avif | Bin 0 -> 70962 bytes .../Bawang-Booklet-Interview-Leilukin-3.avif | Bin 0 -> 51282 bytes .../32bitcafe-partyforone.png | Bin 0 -> 4855 bytes ...My-review-for-A-Summer-s-End-on-Steam.avif | Bin 0 -> 22897 bytes ...tte-beasts-anniversary-mastodon-boost.avif | Bin 0 -> 36486 bytes ...ette-beasts-anniversary-twitter-reply.avif | Bin 0 -> 36113 bytes ...tte-beasts-anniversary-twitter-repost.avif | Bin 0 -> 47906 bytes ...kin-s-hub-cassette-beasts-anniversary.avif | Bin 0 -> 48665 bytes ...leilukin-s-hub-lesbian-visibility-day.avif | Bin 0 -> 13978 bytes .../my-2025-lunar-new-year/bak-baan-1.avif | Bin 0 -> 827461 bytes .../posts/my-2025-qingming/bak-baan-1.avif | Bin 0 -> 661995 bytes .../posts/my-2025-qingming/bak-baan-2.avif | Bin 0 -> 1442151 bytes .../images/posts/my-2025-qingming/cendol.avif | Bin 0 -> 58787 bytes .../my-xiaomi-smart-band-9.avif | Bin 0 -> 60060 bytes ...024-03-06-at-20-49-26-Nexus-Mods-Home.avif | Bin 0 -> 3969 bytes ...24-03-06-at-20-52-27-Nexus-Mods-Users.avif | Bin 0 -> 7994 bytes .../thunderbird-2024-03-06-20-45-36-381.avif | Bin 0 -> 18003 bytes .../pombomb-plushie/2023-10-11-14-25-27.avif | Bin 0 -> 342622 bytes .../pombomb-plushie/2023-10-11-14-28-36.avif | Bin 0 -> 183660 bytes .../pombomb-plushie/2023-10-11-14-29-09.avif | Bin 0 -> 141233 bytes .../pombomb-plushie/2023-10-11-14-30-36.avif | Bin 0 -> 385115 bytes .../Bytten-Studio-on-my-Pombomb-plushie.avif | Bin 0 -> 41571 bytes src/assets/js/copycode.js | 63 + src/assets/js/tooltips.js | 310 ++ .../Leilukins-Hub-blog-layout-2023-09.avif | Bin 0 -> 61808 bytes .../Leilukins-Hub-blog-layout-2024-04.avif | Bin 0 -> 84057 bytes .../Leilukins-Hub-layout-2022-index.avif | Bin 0 -> 20760 bytes .../Leilukins-Hub-layout-2022-page.avif | Bin 0 -> 20959 bytes .../layouts/Leilukins-Hub-layout-2023-01.avif | Bin 0 -> 38628 bytes .../layouts/Leilukins-Hub-layout-2023-06.avif | Bin 0 -> 41329 bytes .../layouts/Leilukins-Hub-layout-2024-04.avif | Bin 0 -> 79575 bytes .../leilukin/Leilukins-Hub-button-200x40.png | Bin 0 -> 5980 bytes .../leilukin/Leilukins-Hub-button-88x31.png | Bin 0 -> 4840 bytes .../Leilukins-Hub-website-banner.avif | Bin 0 -> 9693 bytes src/assets/leilukin/leilukin-bee.avif | Bin 0 -> 10476 bytes .../leilukin/leilukins-hub-meta-img.png | Bin 0 -> 75373 bytes .../projects/art/bee-diamond-hibiscus.avif | Bin 0 -> 33877 bytes .../projects/art/joltik-finds-oran-berry.avif | Bin 0 -> 39821 bytes .../art/life-of-a-bee-with-pride.avif | Bin 0 -> 88345 bytes src/assets/projects/art/pride-hibiscuses.avif | Bin 0 -> 191669 bytes .../Bastila-and-Carth-Romance-Removal.avif | Bin 0 -> 7150 bytes .../kotor1mods/Belaya-Unique-Look.avif | Bin 0 -> 6384 bytes .../Carth-Onasi-and-Male-PC-Romance.avif | Bin 0 -> 3261 bytes ...th-Revan-Texture-for-Star-Forge-Robes.avif | Bin 0 -> 5995 bytes .../kotor1mods/Human-Xor-Restoration.avif | Bin 0 -> 5272 bytes .../kotor1mods/Human-Xor-Unique-Look.avif | Bin 0 -> 5690 bytes .../Jolee-in-Unique-Outfit-Introduction.avif | Bin 0 -> 1908 bytes .../Juhani-Dialogue-Restoration.avif | Bin 0 -> 14452 bytes .../K1-No-Gendered-Dialogue-Male-NPCs.avif | Bin 0 -> 13458 bytes .../K1-Twilek-Female-NPC-Diversity.avif | Bin 0 -> 10552 bytes .../K1-Twilek-Male-NPC-Diversity.avif | Bin 0 -> 11092 bytes .../KotOR-1-Improved-Party-Outfits.avif | Bin 0 -> 19368 bytes .../Leilukins-Juhanis-Outfit-Reskin-Pack.avif | Bin 0 -> 16039 bytes ...ysterious-Box-Music-for-Unknown-World.avif | Bin 0 -> 14498 bytes ...PC-Dialogue-with-Daviks-Slaves-Change.avif | Bin 0 -> 7521 bytes .../Trask-Ulgo-Without-Tutorials.avif | Bin 0 -> 10090 bytes .../kotor2mods/Alternate-Revan-Romances.avif | Bin 0 -> 6137 bytes .../Atton-Rand-and-Male-Exile-Romance.avif | Bin 0 -> 12097 bytes .../Consistent-Bastila-Recognition.avif | Bin 0 -> 15971 bytes .../Dahnis-Flirt-Option-for-Female-PC.avif | Bin 0 -> 6359 bytes .../kotor2mods/Dahnis-Unique-Look.avif | Bin 0 -> 5220 bytes .../Darth-Sion-and-Male-Exile-Mod.avif | Bin 0 -> 5656 bytes .../Exiles-Trial-Overlay-Removal.avif | Bin 0 -> 8954 bytes ...dmaiden-Disciple-Same-Gender-Romances.avif | Bin 0 -> 6677 bytes .../kotor2mods/Juhani-Item-Pack-for-TSL.avif | Bin 0 -> 8052 bytes .../kotor2mods/Leilukins-Kreia-Reskin.avif | Bin 0 -> 8568 bytes .../kotor2mods/Lonna-Vash-Mod-for-TSLRCM.avif | Bin 0 -> 14904 bytes ...-Between-Brianna-and-the-Exile-TSLRCM.avif | Bin 0 -> 5719 bytes .../No-Jealousy-Lock-Handmaiden.avif | Bin 0 -> 3482 bytes .../PartySwap-ExtEnclave-Comp-Patch.avif | Bin 0 -> 10463 bytes src/assets/projects/kotor2mods/PartySwap.avif | Bin 0 -> 9281 bytes .../kotor2mods/Prologue-Item-Recovery.avif | Bin 0 -> 8837 bytes .../Remote-Tells-Influence-Patch.avif | Bin 0 -> 9670 bytes .../TSL-Improved-Party-Outfits.avif | Bin 0 -> 19334 bytes .../TSL-Twilek-Male-NPC-Diversity.avif | Bin 0 -> 6436 bytes .../TSL-Workbnch-Lightsaber-Creation.avif | Bin 0 -> 7389 bytes .../Visas-Marr-and-Female-Exile-Romance.avif | Bin 0 -> 4643 bytes .../kotor2mods/Visas-Visible-Jedi-Robes.avif | Bin 0 -> 10125 bytes .../Mandopop-LGBTQ+-Anthem-Cover.avif | Bin 0 -> 6246 bytes .../playlists/My-Dear-Summer-Lover-cover.avif | Bin 0 -> 39130 bytes .../asummersend/images/ASE_Key_art_intro.avif | Bin 0 -> 17740 bytes .../asummersend/images/ASE_Key_art_main.avif | Bin 0 -> 42963 bytes .../images/asummersend-header-320.avif | Bin 0 -> 18019 bytes .../images/asummersend-header.avif | Bin 0 -> 23027 bytes .../shrines/asummersend/images/favicon.ico | Bin 0 -> 289870 bytes .../screenshots/ASE-Screenshot-01.avif | Bin 0 -> 36493 bytes .../screenshots/ASE-Screenshot-02.avif | Bin 0 -> 58853 bytes .../screenshots/ASE-Screenshot-03.avif | Bin 0 -> 38679 bytes .../screenshots/ASE-Screenshot-04.avif | Bin 0 -> 45628 bytes .../screenshots/ASE-Screenshot-05.avif | Bin 0 -> 45597 bytes .../screenshots/ASE-Screenshot-06.avif | Bin 0 -> 66797 bytes .../screenshots/ASE-Screenshot-07.avif | Bin 0 -> 21334 bytes .../screenshots/ASE-Screenshot-08.avif | Bin 0 -> 63533 bytes .../screenshots/ASE-Screenshot-09.avif | Bin 0 -> 49330 bytes .../gamelog/cb-character-kristine.avif | Bin 0 -> 5054 bytes .../images/CassetteBeasts_keyart_16_9.avif | Bin 0 -> 149563 bytes .../images/cassettebeasts-header-320.avif | Bin 0 -> 41202 bytes .../images/cassettebeasts-header-640.avif | Bin 0 -> 81561 bytes .../cassettebeasts-website-header-bg.avif | Bin 0 -> 63106 bytes ...assettebeasts-website_screenshot_02-1.avif | Bin 0 -> 44880 bytes .../cassettebeasts-website_screenshot_02.avif | Bin 0 -> 79823 bytes .../cassettebeasts-website_screenshot_07.avif | Bin 0 -> 84653 bytes .../shrines/cassettebeasts/images/favicon.ico | Bin 0 -> 289870 bytes ...-2023-10-05-at-14-27-39-Lockstin-on-X.avif | Bin 0 -> 45782 bytes .../pokemonoras/images/Hoenn_ORAS.avif | Bin 0 -> 152607 bytes ...mal_Groudon_and_Primal_Kyogre_artwork.avif | Bin 0 -> 67859 bytes .../shrines/pokemonoras/images/favicon.ico | Bin 0 -> 283982 bytes .../images/pokemonoras-header-320.avif | Bin 0 -> 65287 bytes .../images/pokemonoras-header-640.avif | Bin 0 -> 117752 bytes .../images/pokemonoras-keyart.avif | Bin 0 -> 153564 bytes .../juhani-lesbian-in-game-evidence.avif | Bin 0 -> 21084 bytes .../partyswap-ownership-takeover.avif | Bin 0 -> 7508 bytes .../shrines/starwarskotor/images/favicon.ico | Bin 0 -> 180302 bytes .../images/swkotor-header-320.avif | Bin 0 -> 36190 bytes .../starwarskotor/images/swkotor-header.avif | Bin 0 -> 54357 bytes .../universes/myexile-yunhua-yang.avif | Bin 0 -> 20127 bytes .../universes/myrevan-jiaxuan-cheng.avif | Bin 0 -> 19423 bytes src/blog/posts.njk | 40 + ...3-01-26-new-year-leilukins-hub-redesign.md | 29 + ...2023-01-28-leilukins-hub-now-has-a-blog.md | 18 + ...09-onboard-the-dracula-daily-hype-train.md | 12 + ...-june-2023-leilukins-hub-layout-rewrite.md | 24 + ...thday-after-the-launch-of-leilukins-hub.md | 16 + ...-happy-1st-anniversary-to-leilukins-hub.md | 18 + ...cassette-beasts-pombomb-plushie-arrived.md | 30 + ...rt-for-my-steam-review-of-a-summers-end.md | 30 + ...can-finally-game-on-a-solid-state-drive.md | 16 + ...t-a-bugs-life-video-game-24-years-later.md | 16 + ...emium-membership-on-nexus-mods-for-free.md | 36 + ...24-leilukins-hub-overhaul-with-eleventy.md | 119 + ...ay1-year-anniversary-of-cassette-beasts.md | 40 + ...14-james-somerton-my-video-game-footage.md | 57 + .../2024-05-29-new-guestbook-leilukins-hub.md | 32 + ...omain-name-hosting-change-leilukins-hub.md | 60 + ...2-performance-improvement-leilukins-hub.md | 34 + ...06-21-leilukins-hub-tumbleblog-launched.md | 20 + ...-24-cassette-beasts-fanlisting-approved.md | 21 + ...2024-07-02-fanlisting-collective-launch.md | 57 + ...07-27-hostinger-migration-leilukins-hub.md | 75 + ...-hobbyist-to-professional-web-developer.md | 58 + ...024-10-28-re-social-media-personal-blog.md | 24 + ...-indieweb-carnival-november-2024-impact.md | 45 + ...24-12-16-leaving-my-first-developer-job.md | 37 + .../2024-12-25-leilukins-2024-in-review.md | 59 + ...024-12-26-indian-ocean-tsunami-20-years.md | 14 + .../2024-12-27-my-2024-christmas-season.md | 20 + .../2025-01-07-blog-questions-challenge.md | 69 + .../posts/2025-01-19-attending-42-school.md | 29 + .../2025-02-06-my-2025-lunar-new-year.md | 46 + .../posts/2025-02-09-my-first-smartwatch.md | 16 + ...025-03-06-attended-42-discovery-piscine.md | 30 + .../posts/2025-03-19-ne-zha-2-impressions.md | 22 + .../2025-03-21-purelymail-online-accounts.md | 24 + src/blog/posts/2025-04-01-tdov-eid-al-fitr.md | 24 + src/blog/posts/2025-04-03-i-use-neovim-btw.md | 61 + src/blog/posts/2025-04-06-my-2025-qingming.md | 33 + .../posts/2025-04-13-42-piscine-first-week.md | 20 + src/blog/posts/posts.11tydata.js | 12 + src/changelogs/logs/2022/2022-09-11.md | 5 + src/changelogs/logs/2022/2022-09-12.md | 6 + src/changelogs/logs/2022/2022-09-16.md | 6 + src/changelogs/logs/2022/2022-09-20.md | 10 + src/changelogs/logs/2022/2022-09-25.md | 6 + src/changelogs/logs/2022/2022-09-30.md | 5 + src/changelogs/logs/2022/2022-10-01.md | 5 + src/changelogs/logs/2022/2022-10-03.md | 5 + src/changelogs/logs/2022/2022-10-04.md | 5 + src/changelogs/logs/2022/2022-10-05.md | 7 + src/changelogs/logs/2022/2022-10-06.md | 5 + src/changelogs/logs/2022/2022-10-11.md | 6 + src/changelogs/logs/2022/2022-10-16.md | 5 + src/changelogs/logs/2022/2022-10-17.md | 5 + src/changelogs/logs/2022/2022-10-22.md | 5 + src/changelogs/logs/2022/2022-10-23.md | 5 + src/changelogs/logs/2022/2022-11-09.md | 6 + src/changelogs/logs/2022/2022-11-12.md | 5 + src/changelogs/logs/2022/2022-11-16.md | 5 + src/changelogs/logs/2022/2022-11-22.md | 5 + src/changelogs/logs/2022/2022-11-24.md | 5 + src/changelogs/logs/2022/2022-11-27.md | 5 + src/changelogs/logs/2022/2022-12-08.md | 5 + src/changelogs/logs/2022/2022-12-11.md | 5 + src/changelogs/logs/2022/2022-12-16.md | 5 + src/changelogs/logs/2022/2022-12-19.md | 5 + src/changelogs/logs/2022/2022-12-29.md | 5 + src/changelogs/logs/2022/2022.11tydata.js | 3 + src/changelogs/logs/2023/2023-01-25.md | 6 + src/changelogs/logs/2023/2023-01-26.md | 4 + src/changelogs/logs/2023/2023-01-28.md | 12 + src/changelogs/logs/2023/2023-01-30.md | 5 + src/changelogs/logs/2023/2023-01-31.md | 4 + src/changelogs/logs/2023/2023-02-07.md | 5 + src/changelogs/logs/2023/2023-02-10.md | 6 + src/changelogs/logs/2023/2023-02-16.md | 5 + src/changelogs/logs/2023/2023-02-17.md | 8 + src/changelogs/logs/2023/2023-02-18.md | 9 + src/changelogs/logs/2023/2023-03-02.md | 5 + src/changelogs/logs/2023/2023-03-19.md | 6 + src/changelogs/logs/2023/2023-03-20.md | 5 + src/changelogs/logs/2023/2023-03-22.md | 5 + src/changelogs/logs/2023/2023-03-27.md | 5 + src/changelogs/logs/2023/2023-04-23.md | 6 + src/changelogs/logs/2023/2023-05-05.md | 5 + src/changelogs/logs/2023/2023-05-09.md | 5 + src/changelogs/logs/2023/2023-06-11.md | 6 + src/changelogs/logs/2023/2023-06-15.md | 6 + src/changelogs/logs/2023/2023-06-23.md | 5 + src/changelogs/logs/2023/2023-06-26.md | 5 + src/changelogs/logs/2023/2023-06-27.md | 11 + src/changelogs/logs/2023/2023-06-28.md | 5 + src/changelogs/logs/2023/2023-07-12.md | 6 + src/changelogs/logs/2023/2023-07-25.md | 7 + src/changelogs/logs/2023/2023-07-26.md | 8 + src/changelogs/logs/2023/2023-07-27.md | 10 + src/changelogs/logs/2023/2023-07-28.md | 6 + src/changelogs/logs/2023/2023-08-03.md | 5 + src/changelogs/logs/2023/2023-08-08.md | 6 + src/changelogs/logs/2023/2023-08-10.md | 7 + src/changelogs/logs/2023/2023-08-13.md | 6 + src/changelogs/logs/2023/2023-08-14.md | 5 + src/changelogs/logs/2023/2023-08-15.md | 5 + src/changelogs/logs/2023/2023-08-18.md | 6 + src/changelogs/logs/2023/2023-08-21.md | 5 + src/changelogs/logs/2023/2023-08-26.md | 7 + src/changelogs/logs/2023/2023-08-28.md | 7 + src/changelogs/logs/2023/2023-08-29.md | 8 + src/changelogs/logs/2023/2023-08-30.md | 8 + src/changelogs/logs/2023/2023-09-04.md | 5 + src/changelogs/logs/2023/2023-09-06.md | 5 + src/changelogs/logs/2023/2023-09-07.md | 5 + src/changelogs/logs/2023/2023-09-10.md | 7 + src/changelogs/logs/2023/2023-09-11.md | 8 + src/changelogs/logs/2023/2023-09-13.md | 5 + src/changelogs/logs/2023/2023-09-15.md | 5 + src/changelogs/logs/2023/2023-09-28.md | 5 + src/changelogs/logs/2023/2023-10-03.md | 6 + src/changelogs/logs/2023/2023-10-04.md | 5 + src/changelogs/logs/2023/2023-10-13.md | 5 + src/changelogs/logs/2023/2023-10-18.md | 5 + src/changelogs/logs/2023/2023-10-30.md | 5 + src/changelogs/logs/2023/2023-11-09.md | 5 + src/changelogs/logs/2023/2023-11-19.md | 5 + src/changelogs/logs/2023/2023-11-20.md | 5 + src/changelogs/logs/2023/2023.11tydata.js | 3 + src/changelogs/logs/2024/2024-01-09.md | 5 + src/changelogs/logs/2024/2024-02-07.md | 5 + src/changelogs/logs/2024/2024-02-08.md | 5 + src/changelogs/logs/2024/2024-03-06.md | 5 + src/changelogs/logs/2024/2024-04-05.md | 5 + src/changelogs/logs/2024/2024-04-20.md | 5 + src/changelogs/logs/2024/2024-04-21.md | 5 + src/changelogs/logs/2024/2024-04-27.md | 5 + src/changelogs/logs/2024/2024-04-29.md | 5 + src/changelogs/logs/2024/2024-05-09.md | 7 + src/changelogs/logs/2024/2024-05-14.md | 6 + src/changelogs/logs/2024/2024-05-18.md | 5 + src/changelogs/logs/2024/2024-05-19.md | 5 + src/changelogs/logs/2024/2024-05-20.md | 5 + src/changelogs/logs/2024/2024-05-22.md | 5 + src/changelogs/logs/2024/2024-05-25.md | 7 + src/changelogs/logs/2024/2024-05-26.md | 5 + src/changelogs/logs/2024/2024-05-28.md | 6 + src/changelogs/logs/2024/2024-05-29.md | 5 + src/changelogs/logs/2024/2024-05-31.md | 8 + src/changelogs/logs/2024/2024-06-02.md | 5 + src/changelogs/logs/2024/2024-06-04.md | 7 + src/changelogs/logs/2024/2024-06-06.md | 7 + src/changelogs/logs/2024/2024-06-07.md | 6 + src/changelogs/logs/2024/2024-06-09.md | 10 + src/changelogs/logs/2024/2024-06-11.md | 9 + src/changelogs/logs/2024/2024-06-12.md | 6 + src/changelogs/logs/2024/2024-06-13.md | 7 + src/changelogs/logs/2024/2024-06-19.md | 5 + src/changelogs/logs/2024/2024-06-21.md | 5 + src/changelogs/logs/2024/2024-06-23.md | 5 + src/changelogs/logs/2024/2024-06-24.md | 5 + src/changelogs/logs/2024/2024-06-26.md | 5 + src/changelogs/logs/2024/2024-06-27.md | 5 + src/changelogs/logs/2024/2024-07-02.md | 13 + src/changelogs/logs/2024/2024-07-03.md | 7 + src/changelogs/logs/2024/2024-07-06.md | 5 + src/changelogs/logs/2024/2024-07-13.md | 7 + src/changelogs/logs/2024/2024-07-18.md | 9 + src/changelogs/logs/2024/2024-07-20.md | 5 + src/changelogs/logs/2024/2024-07-21.md | 5 + src/changelogs/logs/2024/2024-07-22.md | 5 + src/changelogs/logs/2024/2024-07-27.md | 8 + src/changelogs/logs/2024/2024-08-02.md | 5 + src/changelogs/logs/2024/2024-08-06.md | 5 + src/changelogs/logs/2024/2024-08-11.md | 7 + src/changelogs/logs/2024/2024-08-18.md | 5 + src/changelogs/logs/2024/2024-09-06.md | 6 + src/changelogs/logs/2024/2024-09-17.md | 5 + src/changelogs/logs/2024/2024-10-28.md | 5 + src/changelogs/logs/2024/2024-11-19.md | 5 + src/changelogs/logs/2024/2024-11-21.md | 5 + src/changelogs/logs/2024/2024-12-01.md | 5 + src/changelogs/logs/2024/2024-12-03.md | 6 + src/changelogs/logs/2024/2024-12-09.md | 6 + src/changelogs/logs/2024/2024-12-10.md | 5 + src/changelogs/logs/2024/2024-12-15.md | 6 + src/changelogs/logs/2024/2024-12-16.md | 5 + src/changelogs/logs/2024/2024-12-25.md | 5 + src/changelogs/logs/2024/2024-12-26.md | 5 + src/changelogs/logs/2024/2024-12-27.md | 6 + src/changelogs/logs/2024/2024-12-30.md | 5 + src/changelogs/logs/2024/2024.11tydata.js | 3 + src/changelogs/logs/2025/2025-01-07.md | 5 + src/changelogs/logs/2025/2025-01-19.md | 5 + src/changelogs/logs/2025/2025-02-06.md | 5 + src/changelogs/logs/2025/2025-02-09.md | 5 + src/changelogs/logs/2025/2025-02-10.md | 5 + src/changelogs/logs/2025/2025-02-12.md | 5 + src/changelogs/logs/2025/2025-02-17.md | 5 + src/changelogs/logs/2025/2025-02-21.md | 7 + src/changelogs/logs/2025/2025-02-23.md | 5 + src/changelogs/logs/2025/2025-03-06.md | 5 + src/changelogs/logs/2025/2025-03-19.md | 6 + src/changelogs/logs/2025/2025-03-21.md | 5 + src/changelogs/logs/2025/2025-03-25.md | 5 + src/changelogs/logs/2025/2025-03-28.md | 5 + src/changelogs/logs/2025/2025-04-01.md | 5 + src/changelogs/logs/2025/2025-04-03.md | 7 + src/changelogs/logs/2025/2025-04-06.md | 5 + src/changelogs/logs/2025/2025-04-13.md | 5 + src/changelogs/logs/2025/2025.11tydata.js | 3 + src/changelogs/logs/logs.11tydata.js | 9 + src/changelogs/pages/2022.njk | 11 + src/changelogs/pages/2023.njk | 11 + src/changelogs/pages/2024.njk | 11 + src/changelogs/pages/2025.njk | 11 + src/changelogs/pages/layouts.md | 74 + src/changelogs/pages/pages.11tydata.js | 11 + src/feed.njk | 41 + src/index.njk | 214 + src/links/linkgroups/articles.md | 60 + src/links/linkgroups/joined.njk | 175 + src/links/linkgroups/linkgroups.11tydata.js | 4 + src/links/linkgroups/resources.md | 47 + src/links/linkgroups/webmastery.md | 56 + src/links/linkgroups/websites.njk | 82 + src/links/pages/mass-effect-le-mod-list.md | 3385 +++++++++++++ src/links/pages/pages.11tydata.js | 12 + src/links/pages/stardew-valley-mod-list.md | 1358 ++++++ src/main | 7 + src/projects/art/art.11tydata.js | 4 + src/projects/code/bellabuffs-phpmailer.md | 30 + src/projects/code/code.11tydata.js | 3 + src/projects/playlists.md | 25 + src/projects/projects.11tydata.js | 11 + .../disability-pride-flag-background.md | 48 + src/projects/snippets/snippets.11tydata.js | 4 + src/projects/videogamemods/kotor1.md | 279 ++ src/projects/videogamemods/kotor2.md | 371 ++ .../videogamemods/videogamemods.11tydata.js | 4 + src/robots.txt.njk | 10 + src/shrines/asummersend.md | 65 + src/shrines/asummersend/gallery.md | 63 + src/shrines/asummersend/playlists.md | 48 + src/shrines/asummersend/trivia.md | 55 + src/shrines/cassettebeasts.md | 111 + src/shrines/cassettebeasts/articles.md | 32 + .../articles/articles.11tydata.js | 12 + ...ssette-beasts-more-than-a-pokemon-clone.md | 221 + .../articles/sunny-minor-role.md | 47 + src/shrines/cassettebeasts/facts.md | 240 + src/shrines/cassettebeasts/featured.md | 59 + src/shrines/cassettebeasts/gamelog.md | 50 + src/shrines/cassettebeasts/resources.md | 42 + src/shrines/pokemonoras.md | 80 + src/shrines/shrines.11tydata.js | 3 + src/shrines/starwarskotor.md | 51 + src/shrines/starwarskotor/articles.md | 34 + .../articles/arren-kae-kreia-theory.md | 21 + .../articles/articles.11tydata.js | 12 + .../articles/faq-same-gender-romance-mods.md | 188 + .../articles/handmaiden-sisters-mother.md | 25 + .../juhani-hostility-towards-canderous.md | 27 + .../articles/juhani-lesbian-evidence.md | 54 + .../articles/keep-juhani-a-lesbian.md | 30 + .../articles/partyswap-management-takeover.md | 48 + .../tslrcm-first-kotor2-playthrough.md | 21 + src/shrines/starwarskotor/guides.md | 33 + .../starwarskotor/guides/guides.11tydata.js | 12 + .../guides/kotor-juhani-romance-guide.md | 221 + .../guides/kotor-redeeming-bastila-guide.md | 94 + .../guides/kotor-sandral-matale-feud-guide.md | 64 + src/shrines/starwarskotor/resources.md | 37 + .../kotor-same-gender-romance-mods.md | 269 ++ .../resources/kotor1-mod-list.md | 4290 +++++++++++++++++ ...r2-female-exile-recruit-handmaiden-mods.md | 41 + .../resources/kotor2-mod-list.md | 3822 +++++++++++++++ .../resources/resources.11tydata.js | 13 + .../resources/tslrcm-m478ep-modules-music.md | 20 + src/shrines/starwarskotor/universes.md | 81 + src/sitemap.xml.njk | 15 + src/slashes/archive/archive.11tydata.js | 8 + src/slashes/archive/archive.njk | 10 + src/slashes/archive/categories.njk | 17 + src/slashes/archive/category.njk | 19 + src/slashes/footerlinks/changelogs.njk | 25 + .../footerlinks/footerlinks.11tydata.js | 4 + src/slashes/footerlinks/sitemap.njk | 47 + src/slashes/footerlinks/uses.md | 113 + src/slashes/navbarlinks/about.md | 80 + src/slashes/navbarlinks/adoptables.njk | 159 + src/slashes/navbarlinks/articles.md | 21 + src/slashes/navbarlinks/blog.njk | 74 + src/slashes/navbarlinks/guestbook.njk | 50 + src/slashes/navbarlinks/links.njk | 8 + .../navbarlinks/navbarlinks.11tydata.js | 3 + src/slashes/navbarlinks/now.md | 26 + src/slashes/navbarlinks/projects.md | 66 + src/slashes/navbarlinks/shrines.njk | 49 + src/slashes/slashes.11tydata.js | 10 + src/slashes/statements/accessibility.md | 43 + src/slashes/statements/colophon.md | 85 + src/slashes/statements/statements.11tydata.js | 11 + 649 files changed, 26571 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 README.md create mode 100644 bun.lockb create mode 100644 eleventy.config.js create mode 100644 package.json create mode 100644 src/.htaccess.njk create mode 100644 src/404.njk create mode 100644 src/_bundle/css/comments.css create mode 100644 src/_bundle/js/comments.js create mode 100644 src/_bundle/js/googleSheetsReaderGizmo.js create mode 100644 src/_bundle/js/svgIconControl.js create mode 100644 src/_config/collections.js create mode 100644 src/_config/files.js create mode 100644 src/_config/filters.js create mode 100644 src/_config/markdown-it.js create mode 100644 src/_config/shortcodes.js create mode 100644 src/_data/robots.js create mode 100644 src/_data/sitemeta.js create mode 100644 src/_includes/asummersend/base.njk create mode 100644 src/_includes/asummersend/content.njk create mode 100644 src/_includes/asummersend/footer.njk create mode 100644 src/_includes/asummersend/hero.njk create mode 100644 src/_includes/asummersend/myplaylist.njk create mode 100644 src/_includes/asummersend/navbar.njk create mode 100644 src/_includes/asummersend/shrineinfo.njk create mode 100644 src/_includes/cassettebeasts/base.njk create mode 100644 src/_includes/cassettebeasts/content.njk create mode 100644 src/_includes/cassettebeasts/footer.njk create mode 100644 src/_includes/cassettebeasts/hero.njk create mode 100644 src/_includes/cassettebeasts/navbar.njk create mode 100644 src/_includes/cassettebeasts/shrineinfo.njk create mode 100644 src/_includes/global/baselayout.njk create mode 100644 src/_includes/global/content.njk create mode 100644 src/_includes/global/css-bundle.njk create mode 100644 src/_includes/global/feeds.njk create mode 100644 src/_includes/global/fonts.njk create mode 100644 src/_includes/global/footer.njk create mode 100644 src/_includes/global/h-card.njk create mode 100644 src/_includes/global/hero.njk create mode 100644 src/_includes/global/macros.njk create mode 100644 src/_includes/global/meta.njk create mode 100644 src/_includes/global/navbar.njk create mode 100644 src/_includes/global/pagination-oldnew.njk create mode 100644 src/_includes/global/shrineinfo.njk create mode 100644 src/_includes/global/toc.njk create mode 100644 src/_includes/global/top-btn.njk create mode 100644 src/_includes/main/archive.njk create mode 100644 src/_includes/main/base.njk create mode 100644 src/_includes/main/changelogs-list.njk create mode 100644 src/_includes/main/changelogs.njk create mode 100644 src/_includes/main/content-nav.njk create mode 100644 src/_includes/main/content.njk create mode 100644 src/_includes/main/footer.njk create mode 100644 src/_includes/main/hero.njk create mode 100644 src/_includes/main/links.njk create mode 100644 src/_includes/main/my-button.njk create mode 100644 src/_includes/main/navbar.njk create mode 100644 src/_includes/main/slashpage.njk create mode 100644 src/_includes/main/statuscafe.njk create mode 100644 src/_includes/main/support-me.njk create mode 100644 src/_includes/main/webcliques.njk create mode 100644 src/_includes/misc/404.njk create mode 100644 src/_includes/misc/base.njk create mode 100644 src/_includes/pokemonoras/base.njk create mode 100644 src/_includes/pokemonoras/content.njk create mode 100644 src/_includes/pokemonoras/footer.njk create mode 100644 src/_includes/pokemonoras/hero.njk create mode 100644 src/_includes/pokemonoras/navbar.njk create mode 100644 src/_includes/pokemonoras/shrineinfo.njk create mode 100644 src/_includes/starwarskotor/base.njk create mode 100644 src/_includes/starwarskotor/content.njk create mode 100644 src/_includes/starwarskotor/footer.njk create mode 100644 src/_includes/starwarskotor/hero.njk create mode 100644 src/_includes/starwarskotor/modlist-info.md create mode 100644 src/_includes/starwarskotor/navbar.njk create mode 100644 src/_includes/starwarskotor/shrineinfo.njk create mode 100644 src/articles/articles.11tydata.js create mode 100644 src/articles/featured/featured.11tydata.js create mode 100644 src/articles/featured/kotor2-modder-interview-ars-technica.md create mode 100644 src/articles/featured/lgbtq-booklet-interview-misi-bawang.md create mode 100644 src/articles/myarticles/accessible-footnotes.md create mode 100644 src/articles/myarticles/anti-harry-potter-jk-rowling-masterlist.md create mode 100644 src/articles/myarticles/designated-lesbian-syndrome-fandom.md create mode 100644 src/articles/myarticles/living-with-retinitis-pigmentosa.md create mode 100644 src/articles/myarticles/love-letter-to-myself.md create mode 100644 src/articles/myarticles/my-dislike-of-shipping-culture.md create mode 100644 src/articles/myarticles/myarticles.11tydata.js create mode 100644 src/articles/myarticles/palestine-masterlist.md create mode 100644 src/assets/adoptables/32bitcafe-vacation/alexandra-stamp.png create mode 100644 src/assets/adoptables/32bitcafe-vacation/passport.png create mode 100644 src/assets/adoptables/32bitcafe-vacation/ribose-riverfish.png create mode 100644 src/assets/adoptables/alexandra-diddles.png create mode 100644 src/assets/adoptables/kittyfriends/artwork-bat.gif create mode 100644 src/assets/adoptables/kittyfriends/artwork-pumpkin.gif create mode 100644 src/assets/adoptables/kittyfriends/artwork-vampire.gif create mode 100644 src/assets/adoptables/kittyfriends/artwork-witch.gif create mode 100644 src/assets/adoptables/kittyfriends/krish.png create mode 100644 src/assets/adoptables/kittyfriends/leilukin-blackkitty.png create mode 100644 src/assets/adoptables/kittyfriends/leilukin-purplekitty.png create mode 100644 src/assets/adoptables/kittyfriends/lina-strawberry-kitty.gif create mode 100644 src/assets/adoptables/kittyfriends/owl-small-owlcat.gif create mode 100644 src/assets/adoptables/kittyfriends/rosemary-ghostcat.gif create mode 100644 src/assets/adoptables/kittyfriends/sakuradreams-Simba.gif create mode 100644 src/assets/adoptables/kittyfriends/solaria-creampuffs.png create mode 100644 src/assets/adoptables/kittyfriends/solaria-garfield.gif create mode 100644 src/assets/adoptables/lostletters-moomin.png create mode 100644 src/assets/adoptables/lou-frog.gif create mode 100644 src/assets/adoptables/lou-greenkaoani.gif create mode 100644 src/assets/adoptables/lou-maneki-neko.png create mode 100644 src/assets/adoptables/lou-tamagotchi.gif create mode 100644 src/assets/adoptables/pantson/00-join.gif create mode 100644 src/assets/adoptables/pantson/anna-kale.png create mode 100644 src/assets/adoptables/pantson/anna-not-a-brick.png create mode 100644 src/assets/adoptables/pantson/ebony-mosstone.png create mode 100644 src/assets/adoptables/pantson/ebony-total-eclipse.png create mode 100644 src/assets/adoptables/pantson/fritzi-magical-tour.png create mode 100644 src/assets/adoptables/pantson/fritzi-plastic-ono.png create mode 100644 src/assets/adoptables/pantson/fritzi-rubber-soul.png create mode 100644 src/assets/adoptables/pantson/ginnygravity-robins-egg.png create mode 100644 src/assets/adoptables/pantson/joejenett-chocolato.png create mode 100644 src/assets/adoptables/pantson/leilukin-grape-juice.png create mode 100644 src/assets/adoptables/pantson/lina-morning-mist.png create mode 100644 src/assets/adoptables/pantson/manyface-lizard.png create mode 100644 src/assets/adoptables/pantson/manyface-psyche.png create mode 100644 src/assets/adoptables/pantson/sakuradreams-lilac-dreams.png create mode 100644 src/assets/adoptables/pantson/sakuradreams-sakura-pink.png create mode 100644 src/assets/adoptables/pantson/v-star-sticker.png create mode 100644 src/assets/adoptables/pantson/velvet-cherry-red.png create mode 100644 src/assets/adoptables/pixelcliques/madebyagirl.png create mode 100644 src/assets/adoptables/pixelcliques/theapple.gif create mode 100644 src/assets/adoptables/salad-magazine/semper-inksnail-black.png create mode 100644 src/assets/adoptables/salad-magazine/semper-inksnail-sparkle.png create mode 100644 src/assets/adoptables/wings-dolphinclassic.gif create mode 100644 src/assets/adoptables/wings-rainbowmoon.png create mode 100644 src/assets/banners/harry-potter-free-site.png create mode 100644 src/assets/buttons/badges/coffee-powered.svg create mode 100644 src/assets/buttons/badges/fight-fascism.jpg create mode 100644 src/assets/buttons/badges/people-pledge.svg create mode 100644 src/assets/buttons/badges/valid-atom.png create mode 100644 src/assets/buttons/communities/32-bit-cafe.png create mode 100644 src/assets/buttons/communities/saladmagazine.png create mode 100644 src/assets/buttons/directories/accessiblenet.png create mode 100644 src/assets/buttons/directories/bukmarkclub.png create mode 100644 src/assets/buttons/directories/indieseek.png create mode 100644 src/assets/buttons/directories/linklane.png create mode 100644 src/assets/buttons/directories/list-me.png create mode 100644 src/assets/buttons/directories/responsiveweb.png create mode 100644 src/assets/buttons/directories/smoothsailing.png create mode 100644 src/assets/buttons/misc/ko-fi.webp create mode 100644 src/assets/buttons/misc/standwithpalestine.png create mode 100644 src/assets/buttons/pride/9_stripe.png create mode 100644 src/assets/buttons/pride/agender.png create mode 100644 src/assets/buttons/pride/bigender.png create mode 100644 src/assets/buttons/pride/demigirl.png create mode 100644 src/assets/buttons/pride/disability.png create mode 100644 src/assets/buttons/pride/greyromantic.png create mode 100644 src/assets/buttons/pride/greysexual.png create mode 100644 src/assets/buttons/pride/lesbian.png create mode 100644 src/assets/buttons/pride/nonbinary.png create mode 100644 src/assets/buttons/pride/progress.png create mode 100644 src/assets/buttons/sites/10kph.png create mode 100644 src/assets/buttons/sites/alyaza.gif create mode 100644 src/assets/buttons/sites/autisticasfxxk.gif create mode 100644 src/assets/buttons/sites/ballonlea.png create mode 100644 src/assets/buttons/sites/beepbird.gif create mode 100644 src/assets/buttons/sites/chrisburnell.gif create mode 100644 src/assets/buttons/sites/darylsun.webp create mode 100644 src/assets/buttons/sites/divergentrays.png create mode 100644 src/assets/buttons/sites/dryadglen.png create mode 100644 src/assets/buttons/sites/frills.png create mode 100644 src/assets/buttons/sites/groundedwren.png create mode 100644 src/assets/buttons/sites/grubdog.png create mode 100644 src/assets/buttons/sites/jasminesjournal.png create mode 100644 src/assets/buttons/sites/jefbecker.png create mode 100644 src/assets/buttons/sites/kalechips.png create mode 100644 src/assets/buttons/sites/lina.gif create mode 100644 src/assets/buttons/sites/lostletters.gif create mode 100644 src/assets/buttons/sites/manyface.png create mode 100644 src/assets/buttons/sites/melvian.png create mode 100644 src/assets/buttons/sites/mycorrhiza.png create mode 100644 src/assets/buttons/sites/pinkvampyr.gif create mode 100644 src/assets/buttons/sites/ribose.png create mode 100644 src/assets/buttons/sites/sakuradreams.gif create mode 100644 src/assets/buttons/sites/sanguineroyal.gif create mode 100644 src/assets/buttons/sites/solaria.png create mode 100644 src/assets/buttons/sites/starbreaker.avif create mode 100644 src/assets/buttons/sites/symliadoo.png create mode 100644 src/assets/buttons/sites/whiona.png create mode 100644 src/assets/buttons/sites/wings.png create mode 100644 src/assets/buttons/sites/xandra.png create mode 100644 src/assets/buttons/webrings/queercoded-left.png create mode 100644 src/assets/buttons/webrings/queercoded-right.png create mode 100644 src/assets/buttons/webrings/queercoded.png create mode 100644 src/assets/cliques/30plusclub.gif create mode 100644 src/assets/cliques/OTF.png create mode 100644 src/assets/cliques/breloom.png create mode 100644 src/assets/cliques/caffeineNATION.png create mode 100644 src/assets/cliques/dogperson.png create mode 100644 src/assets/cliques/linked.png create mode 100644 src/assets/cliques/myjam.png create mode 100644 src/assets/cliques/unexpectedsong.png create mode 100644 src/assets/css/a11y-syntax-highlighting-dark.css create mode 100644 src/assets/css/asummersend.css create mode 100644 src/assets/css/cassettebeasts.css create mode 100644 src/assets/css/components.css create mode 100644 src/assets/css/content.css create mode 100644 src/assets/css/general.css create mode 100644 src/assets/css/global.css create mode 100644 src/assets/css/misc.css create mode 100644 src/assets/css/plugins.css create mode 100644 src/assets/css/pokemonoras.css create mode 100644 src/assets/css/pridesymbols.css create mode 100644 src/assets/css/starwarskotor.css create mode 100644 src/assets/css/tooltips.css create mode 100644 src/assets/css/utility.css create mode 100644 src/assets/favicon/apple-touch-icon.png create mode 100644 src/assets/favicon/favicon.ico create mode 100644 src/assets/fonts/fonts.css create mode 100644 src/assets/fonts/intel-one-mono/IntelOneMono-Bold.woff2 create mode 100644 src/assets/fonts/intel-one-mono/IntelOneMono-BoldItalic.woff2 create mode 100644 src/assets/fonts/intel-one-mono/IntelOneMono-Italic.woff2 create mode 100644 src/assets/fonts/intel-one-mono/IntelOneMono-Medium.woff2 create mode 100644 src/assets/fonts/intel-one-mono/IntelOneMono-MediumItalic.woff2 create mode 100644 src/assets/fonts/intel-one-mono/IntelOneMono-Regular.woff2 create mode 100644 src/assets/fonts/readex-pro/readex-pro-v22-latin-600.woff2 create mode 100644 src/assets/fonts/readex-pro/readex-pro-v22-latin-700.woff2 create mode 100644 src/assets/fonts/readex-pro/readex-pro-v22-latin-regular.woff2 create mode 100644 src/assets/images/articles/accessible-footnotes/32bitcafe-backtoschool.png create mode 100644 src/assets/images/articles/accessible-footnotes/footnote-sample.avif create mode 100644 src/assets/images/articles/lgbtq-booklet-interview-misi-bawang/Bawang-Booklet-Interview-Leilukin-1.avif create mode 100644 src/assets/images/articles/lgbtq-booklet-interview-misi-bawang/Bawang-Booklet-Interview-Leilukin-2.avif create mode 100644 src/assets/images/articles/lgbtq-booklet-interview-misi-bawang/Bawang-Booklet-Interview-Leilukin-3.avif create mode 100644 src/assets/images/articles/love-letter-to-myself/32bitcafe-partyforone.png create mode 100644 src/assets/images/posts/a-summers-end-review/My-review-for-A-Summer-s-End-on-Steam.avif create mode 100644 src/assets/images/posts/lesbian-visibility-day-cassette-beasts-anni/1-year-cassette-beasts-anniversary-mastodon-boost.avif create mode 100644 src/assets/images/posts/lesbian-visibility-day-cassette-beasts-anni/1-year-cassette-beasts-anniversary-twitter-reply.avif create mode 100644 src/assets/images/posts/lesbian-visibility-day-cassette-beasts-anni/1-year-cassette-beasts-anniversary-twitter-repost.avif create mode 100644 src/assets/images/posts/lesbian-visibility-day-cassette-beasts-anni/leilukin-s-hub-cassette-beasts-anniversary.avif create mode 100644 src/assets/images/posts/lesbian-visibility-day-cassette-beasts-anni/leilukin-s-hub-lesbian-visibility-day.avif create mode 100644 src/assets/images/posts/my-2025-lunar-new-year/bak-baan-1.avif create mode 100644 src/assets/images/posts/my-2025-qingming/bak-baan-1.avif create mode 100644 src/assets/images/posts/my-2025-qingming/bak-baan-2.avif create mode 100644 src/assets/images/posts/my-2025-qingming/cendol.avif create mode 100644 src/assets/images/posts/my-first-smartwatch/my-xiaomi-smart-band-9.avif create mode 100644 src/assets/images/posts/nexusmods-lifetime-premium/Screenshot-2024-03-06-at-20-49-26-Nexus-Mods-Home.avif create mode 100644 src/assets/images/posts/nexusmods-lifetime-premium/Screenshot-2024-03-06-at-20-52-27-Nexus-Mods-Users.avif create mode 100644 src/assets/images/posts/nexusmods-lifetime-premium/thunderbird-2024-03-06-20-45-36-381.avif create mode 100644 src/assets/images/posts/pombomb-plushie/2023-10-11-14-25-27.avif create mode 100644 src/assets/images/posts/pombomb-plushie/2023-10-11-14-28-36.avif create mode 100644 src/assets/images/posts/pombomb-plushie/2023-10-11-14-29-09.avif create mode 100644 src/assets/images/posts/pombomb-plushie/2023-10-11-14-30-36.avif create mode 100644 src/assets/images/posts/pombomb-plushie/Bytten-Studio-on-my-Pombomb-plushie.avif create mode 100644 src/assets/js/copycode.js create mode 100644 src/assets/js/tooltips.js create mode 100644 src/assets/layouts/Leilukins-Hub-blog-layout-2023-09.avif create mode 100644 src/assets/layouts/Leilukins-Hub-blog-layout-2024-04.avif create mode 100644 src/assets/layouts/Leilukins-Hub-layout-2022-index.avif create mode 100644 src/assets/layouts/Leilukins-Hub-layout-2022-page.avif create mode 100644 src/assets/layouts/Leilukins-Hub-layout-2023-01.avif create mode 100644 src/assets/layouts/Leilukins-Hub-layout-2023-06.avif create mode 100644 src/assets/layouts/Leilukins-Hub-layout-2024-04.avif create mode 100644 src/assets/leilukin/Leilukins-Hub-button-200x40.png create mode 100644 src/assets/leilukin/Leilukins-Hub-button-88x31.png create mode 100644 src/assets/leilukin/Leilukins-Hub-website-banner.avif create mode 100644 src/assets/leilukin/leilukin-bee.avif create mode 100644 src/assets/leilukin/leilukins-hub-meta-img.png create mode 100644 src/assets/projects/art/bee-diamond-hibiscus.avif create mode 100644 src/assets/projects/art/joltik-finds-oran-berry.avif create mode 100644 src/assets/projects/art/life-of-a-bee-with-pride.avif create mode 100644 src/assets/projects/art/pride-hibiscuses.avif create mode 100644 src/assets/projects/kotor1mods/Bastila-and-Carth-Romance-Removal.avif create mode 100644 src/assets/projects/kotor1mods/Belaya-Unique-Look.avif create mode 100644 src/assets/projects/kotor1mods/Carth-Onasi-and-Male-PC-Romance.avif create mode 100644 src/assets/projects/kotor1mods/Darth-Revan-Texture-for-Star-Forge-Robes.avif create mode 100644 src/assets/projects/kotor1mods/Human-Xor-Restoration.avif create mode 100644 src/assets/projects/kotor1mods/Human-Xor-Unique-Look.avif create mode 100644 src/assets/projects/kotor1mods/Jolee-in-Unique-Outfit-Introduction.avif create mode 100644 src/assets/projects/kotor1mods/Juhani-Dialogue-Restoration.avif create mode 100644 src/assets/projects/kotor1mods/K1-No-Gendered-Dialogue-Male-NPCs.avif create mode 100644 src/assets/projects/kotor1mods/K1-Twilek-Female-NPC-Diversity.avif create mode 100644 src/assets/projects/kotor1mods/K1-Twilek-Male-NPC-Diversity.avif create mode 100644 src/assets/projects/kotor1mods/KotOR-1-Improved-Party-Outfits.avif create mode 100644 src/assets/projects/kotor1mods/Leilukins-Juhanis-Outfit-Reskin-Pack.avif create mode 100644 src/assets/projects/kotor1mods/Mysterious-Box-Music-for-Unknown-World.avif create mode 100644 src/assets/projects/kotor1mods/PC-Dialogue-with-Daviks-Slaves-Change.avif create mode 100644 src/assets/projects/kotor1mods/Trask-Ulgo-Without-Tutorials.avif create mode 100644 src/assets/projects/kotor2mods/Alternate-Revan-Romances.avif create mode 100644 src/assets/projects/kotor2mods/Atton-Rand-and-Male-Exile-Romance.avif create mode 100644 src/assets/projects/kotor2mods/Consistent-Bastila-Recognition.avif create mode 100644 src/assets/projects/kotor2mods/Dahnis-Flirt-Option-for-Female-PC.avif create mode 100644 src/assets/projects/kotor2mods/Dahnis-Unique-Look.avif create mode 100644 src/assets/projects/kotor2mods/Darth-Sion-and-Male-Exile-Mod.avif create mode 100644 src/assets/projects/kotor2mods/Exiles-Trial-Overlay-Removal.avif create mode 100644 src/assets/projects/kotor2mods/Handmaiden-Disciple-Same-Gender-Romances.avif create mode 100644 src/assets/projects/kotor2mods/Juhani-Item-Pack-for-TSL.avif create mode 100644 src/assets/projects/kotor2mods/Leilukins-Kreia-Reskin.avif create mode 100644 src/assets/projects/kotor2mods/Lonna-Vash-Mod-for-TSLRCM.avif create mode 100644 src/assets/projects/kotor2mods/Love-Between-Brianna-and-the-Exile-TSLRCM.avif create mode 100644 src/assets/projects/kotor2mods/No-Jealousy-Lock-Handmaiden.avif create mode 100644 src/assets/projects/kotor2mods/PartySwap-ExtEnclave-Comp-Patch.avif create mode 100644 src/assets/projects/kotor2mods/PartySwap.avif create mode 100644 src/assets/projects/kotor2mods/Prologue-Item-Recovery.avif create mode 100644 src/assets/projects/kotor2mods/Remote-Tells-Influence-Patch.avif create mode 100644 src/assets/projects/kotor2mods/TSL-Improved-Party-Outfits.avif create mode 100644 src/assets/projects/kotor2mods/TSL-Twilek-Male-NPC-Diversity.avif create mode 100644 src/assets/projects/kotor2mods/TSL-Workbnch-Lightsaber-Creation.avif create mode 100644 src/assets/projects/kotor2mods/Visas-Marr-and-Female-Exile-Romance.avif create mode 100644 src/assets/projects/kotor2mods/Visas-Visible-Jedi-Robes.avif create mode 100644 src/assets/projects/playlists/Mandopop-LGBTQ+-Anthem-Cover.avif create mode 100644 src/assets/projects/playlists/My-Dear-Summer-Lover-cover.avif create mode 100644 src/assets/shrines/asummersend/images/ASE_Key_art_intro.avif create mode 100644 src/assets/shrines/asummersend/images/ASE_Key_art_main.avif create mode 100644 src/assets/shrines/asummersend/images/asummersend-header-320.avif create mode 100644 src/assets/shrines/asummersend/images/asummersend-header.avif create mode 100644 src/assets/shrines/asummersend/images/favicon.ico create mode 100644 src/assets/shrines/asummersend/screenshots/ASE-Screenshot-01.avif create mode 100644 src/assets/shrines/asummersend/screenshots/ASE-Screenshot-02.avif create mode 100644 src/assets/shrines/asummersend/screenshots/ASE-Screenshot-03.avif create mode 100644 src/assets/shrines/asummersend/screenshots/ASE-Screenshot-04.avif create mode 100644 src/assets/shrines/asummersend/screenshots/ASE-Screenshot-05.avif create mode 100644 src/assets/shrines/asummersend/screenshots/ASE-Screenshot-06.avif create mode 100644 src/assets/shrines/asummersend/screenshots/ASE-Screenshot-07.avif create mode 100644 src/assets/shrines/asummersend/screenshots/ASE-Screenshot-08.avif create mode 100644 src/assets/shrines/asummersend/screenshots/ASE-Screenshot-09.avif create mode 100644 src/assets/shrines/cassettebeasts/gamelog/cb-character-kristine.avif create mode 100644 src/assets/shrines/cassettebeasts/images/CassetteBeasts_keyart_16_9.avif create mode 100644 src/assets/shrines/cassettebeasts/images/cassettebeasts-header-320.avif create mode 100644 src/assets/shrines/cassettebeasts/images/cassettebeasts-header-640.avif create mode 100644 src/assets/shrines/cassettebeasts/images/cassettebeasts-website-header-bg.avif create mode 100644 src/assets/shrines/cassettebeasts/images/cassettebeasts-website_screenshot_02-1.avif create mode 100644 src/assets/shrines/cassettebeasts/images/cassettebeasts-website_screenshot_02.avif create mode 100644 src/assets/shrines/cassettebeasts/images/cassettebeasts-website_screenshot_07.avif create mode 100644 src/assets/shrines/cassettebeasts/images/favicon.ico create mode 100644 src/assets/shrines/cassettebeasts/socmed/Screenshot-2023-10-05-at-14-27-39-Lockstin-on-X.avif create mode 100644 src/assets/shrines/pokemonoras/images/Hoenn_ORAS.avif create mode 100644 src/assets/shrines/pokemonoras/images/Primal_Groudon_and_Primal_Kyogre_artwork.avif create mode 100644 src/assets/shrines/pokemonoras/images/favicon.ico create mode 100644 src/assets/shrines/pokemonoras/images/pokemonoras-header-320.avif create mode 100644 src/assets/shrines/pokemonoras/images/pokemonoras-header-640.avif create mode 100644 src/assets/shrines/pokemonoras/images/pokemonoras-keyart.avif create mode 100644 src/assets/shrines/starwarskotor/articles/juhani-lesbian-in-game-evidence.avif create mode 100644 src/assets/shrines/starwarskotor/articles/partyswap-ownership-takeover.avif create mode 100644 src/assets/shrines/starwarskotor/images/favicon.ico create mode 100644 src/assets/shrines/starwarskotor/images/swkotor-header-320.avif create mode 100644 src/assets/shrines/starwarskotor/images/swkotor-header.avif create mode 100644 src/assets/shrines/starwarskotor/universes/myexile-yunhua-yang.avif create mode 100644 src/assets/shrines/starwarskotor/universes/myrevan-jiaxuan-cheng.avif create mode 100644 src/blog/posts.njk create mode 100644 src/blog/posts/2023-01-26-new-year-leilukins-hub-redesign.md create mode 100644 src/blog/posts/2023-01-28-leilukins-hub-now-has-a-blog.md create mode 100644 src/blog/posts/2023-05-09-onboard-the-dracula-daily-hype-train.md create mode 100644 src/blog/posts/2023-06-23-june-2023-leilukins-hub-layout-rewrite.md create mode 100644 src/blog/posts/2023-07-28-my-first-birthday-after-the-launch-of-leilukins-hub.md create mode 100644 src/blog/posts/2023-09-11-happy-1st-anniversary-to-leilukins-hub.md create mode 100644 src/blog/posts/2023-10-13-my-cassette-beasts-pombomb-plushie-arrived.md create mode 100644 src/blog/posts/2023-10-30-support-for-my-steam-review-of-a-summers-end.md create mode 100644 src/blog/posts/2023-11-19-i-can-finally-game-on-a-solid-state-drive.md create mode 100644 src/blog/posts/2023-11-20-finally-beat-a-bugs-life-video-game-24-years-later.md create mode 100644 src/blog/posts/2024-03-06-i-received-a-lifetime-premium-membership-on-nexus-mods-for-free.md create mode 100644 src/blog/posts/2024-04-21-april-2024-leilukins-hub-overhaul-with-eleventy.md create mode 100644 src/blog/posts/2024-04-27-lesbian-visibility-day1-year-anniversary-of-cassette-beasts.md create mode 100644 src/blog/posts/2024-05-14-james-somerton-my-video-game-footage.md create mode 100644 src/blog/posts/2024-05-29-new-guestbook-leilukins-hub.md create mode 100644 src/blog/posts/2024-05-31-domain-name-hosting-change-leilukins-hub.md create mode 100644 src/blog/posts/2024-06-12-performance-improvement-leilukins-hub.md create mode 100644 src/blog/posts/2024-06-21-leilukins-hub-tumbleblog-launched.md create mode 100644 src/blog/posts/2024-06-24-cassette-beasts-fanlisting-approved.md create mode 100644 src/blog/posts/2024-07-02-fanlisting-collective-launch.md create mode 100644 src/blog/posts/2024-07-27-hostinger-migration-leilukins-hub.md create mode 100644 src/blog/posts/2024-08-18-from-hobbyist-to-professional-web-developer.md create mode 100644 src/blog/posts/2024-10-28-re-social-media-personal-blog.md create mode 100644 src/blog/posts/2024-12-01-indieweb-carnival-november-2024-impact.md create mode 100644 src/blog/posts/2024-12-16-leaving-my-first-developer-job.md create mode 100644 src/blog/posts/2024-12-25-leilukins-2024-in-review.md create mode 100644 src/blog/posts/2024-12-26-indian-ocean-tsunami-20-years.md create mode 100644 src/blog/posts/2024-12-27-my-2024-christmas-season.md create mode 100644 src/blog/posts/2025-01-07-blog-questions-challenge.md create mode 100644 src/blog/posts/2025-01-19-attending-42-school.md create mode 100644 src/blog/posts/2025-02-06-my-2025-lunar-new-year.md create mode 100644 src/blog/posts/2025-02-09-my-first-smartwatch.md create mode 100644 src/blog/posts/2025-03-06-attended-42-discovery-piscine.md create mode 100644 src/blog/posts/2025-03-19-ne-zha-2-impressions.md create mode 100644 src/blog/posts/2025-03-21-purelymail-online-accounts.md create mode 100644 src/blog/posts/2025-04-01-tdov-eid-al-fitr.md create mode 100644 src/blog/posts/2025-04-03-i-use-neovim-btw.md create mode 100644 src/blog/posts/2025-04-06-my-2025-qingming.md create mode 100644 src/blog/posts/2025-04-13-42-piscine-first-week.md create mode 100644 src/blog/posts/posts.11tydata.js create mode 100644 src/changelogs/logs/2022/2022-09-11.md create mode 100644 src/changelogs/logs/2022/2022-09-12.md create mode 100644 src/changelogs/logs/2022/2022-09-16.md create mode 100644 src/changelogs/logs/2022/2022-09-20.md create mode 100644 src/changelogs/logs/2022/2022-09-25.md create mode 100644 src/changelogs/logs/2022/2022-09-30.md create mode 100644 src/changelogs/logs/2022/2022-10-01.md create mode 100644 src/changelogs/logs/2022/2022-10-03.md create mode 100644 src/changelogs/logs/2022/2022-10-04.md create mode 100644 src/changelogs/logs/2022/2022-10-05.md create mode 100644 src/changelogs/logs/2022/2022-10-06.md create mode 100644 src/changelogs/logs/2022/2022-10-11.md create mode 100644 src/changelogs/logs/2022/2022-10-16.md create mode 100644 src/changelogs/logs/2022/2022-10-17.md create mode 100644 src/changelogs/logs/2022/2022-10-22.md create mode 100644 src/changelogs/logs/2022/2022-10-23.md create mode 100644 src/changelogs/logs/2022/2022-11-09.md create mode 100644 src/changelogs/logs/2022/2022-11-12.md create mode 100644 src/changelogs/logs/2022/2022-11-16.md create mode 100644 src/changelogs/logs/2022/2022-11-22.md create mode 100644 src/changelogs/logs/2022/2022-11-24.md create mode 100644 src/changelogs/logs/2022/2022-11-27.md create mode 100644 src/changelogs/logs/2022/2022-12-08.md create mode 100644 src/changelogs/logs/2022/2022-12-11.md create mode 100644 src/changelogs/logs/2022/2022-12-16.md create mode 100644 src/changelogs/logs/2022/2022-12-19.md create mode 100644 src/changelogs/logs/2022/2022-12-29.md create mode 100644 src/changelogs/logs/2022/2022.11tydata.js create mode 100644 src/changelogs/logs/2023/2023-01-25.md create mode 100644 src/changelogs/logs/2023/2023-01-26.md create mode 100644 src/changelogs/logs/2023/2023-01-28.md create mode 100644 src/changelogs/logs/2023/2023-01-30.md create mode 100644 src/changelogs/logs/2023/2023-01-31.md create mode 100644 src/changelogs/logs/2023/2023-02-07.md create mode 100644 src/changelogs/logs/2023/2023-02-10.md create mode 100644 src/changelogs/logs/2023/2023-02-16.md create mode 100644 src/changelogs/logs/2023/2023-02-17.md create mode 100644 src/changelogs/logs/2023/2023-02-18.md create mode 100644 src/changelogs/logs/2023/2023-03-02.md create mode 100644 src/changelogs/logs/2023/2023-03-19.md create mode 100644 src/changelogs/logs/2023/2023-03-20.md create mode 100644 src/changelogs/logs/2023/2023-03-22.md create mode 100644 src/changelogs/logs/2023/2023-03-27.md create mode 100644 src/changelogs/logs/2023/2023-04-23.md create mode 100644 src/changelogs/logs/2023/2023-05-05.md create mode 100644 src/changelogs/logs/2023/2023-05-09.md create mode 100644 src/changelogs/logs/2023/2023-06-11.md create mode 100644 src/changelogs/logs/2023/2023-06-15.md create mode 100644 src/changelogs/logs/2023/2023-06-23.md create mode 100644 src/changelogs/logs/2023/2023-06-26.md create mode 100644 src/changelogs/logs/2023/2023-06-27.md create mode 100644 src/changelogs/logs/2023/2023-06-28.md create mode 100644 src/changelogs/logs/2023/2023-07-12.md create mode 100644 src/changelogs/logs/2023/2023-07-25.md create mode 100644 src/changelogs/logs/2023/2023-07-26.md create mode 100644 src/changelogs/logs/2023/2023-07-27.md create mode 100644 src/changelogs/logs/2023/2023-07-28.md create mode 100644 src/changelogs/logs/2023/2023-08-03.md create mode 100644 src/changelogs/logs/2023/2023-08-08.md create mode 100644 src/changelogs/logs/2023/2023-08-10.md create mode 100644 src/changelogs/logs/2023/2023-08-13.md create mode 100644 src/changelogs/logs/2023/2023-08-14.md create mode 100644 src/changelogs/logs/2023/2023-08-15.md create mode 100644 src/changelogs/logs/2023/2023-08-18.md create mode 100644 src/changelogs/logs/2023/2023-08-21.md create mode 100644 src/changelogs/logs/2023/2023-08-26.md create mode 100644 src/changelogs/logs/2023/2023-08-28.md create mode 100644 src/changelogs/logs/2023/2023-08-29.md create mode 100644 src/changelogs/logs/2023/2023-08-30.md create mode 100644 src/changelogs/logs/2023/2023-09-04.md create mode 100644 src/changelogs/logs/2023/2023-09-06.md create mode 100644 src/changelogs/logs/2023/2023-09-07.md create mode 100644 src/changelogs/logs/2023/2023-09-10.md create mode 100644 src/changelogs/logs/2023/2023-09-11.md create mode 100644 src/changelogs/logs/2023/2023-09-13.md create mode 100644 src/changelogs/logs/2023/2023-09-15.md create mode 100644 src/changelogs/logs/2023/2023-09-28.md create mode 100644 src/changelogs/logs/2023/2023-10-03.md create mode 100644 src/changelogs/logs/2023/2023-10-04.md create mode 100644 src/changelogs/logs/2023/2023-10-13.md create mode 100644 src/changelogs/logs/2023/2023-10-18.md create mode 100644 src/changelogs/logs/2023/2023-10-30.md create mode 100644 src/changelogs/logs/2023/2023-11-09.md create mode 100644 src/changelogs/logs/2023/2023-11-19.md create mode 100644 src/changelogs/logs/2023/2023-11-20.md create mode 100644 src/changelogs/logs/2023/2023.11tydata.js create mode 100644 src/changelogs/logs/2024/2024-01-09.md create mode 100644 src/changelogs/logs/2024/2024-02-07.md create mode 100644 src/changelogs/logs/2024/2024-02-08.md create mode 100644 src/changelogs/logs/2024/2024-03-06.md create mode 100644 src/changelogs/logs/2024/2024-04-05.md create mode 100644 src/changelogs/logs/2024/2024-04-20.md create mode 100644 src/changelogs/logs/2024/2024-04-21.md create mode 100644 src/changelogs/logs/2024/2024-04-27.md create mode 100644 src/changelogs/logs/2024/2024-04-29.md create mode 100644 src/changelogs/logs/2024/2024-05-09.md create mode 100644 src/changelogs/logs/2024/2024-05-14.md create mode 100644 src/changelogs/logs/2024/2024-05-18.md create mode 100644 src/changelogs/logs/2024/2024-05-19.md create mode 100644 src/changelogs/logs/2024/2024-05-20.md create mode 100644 src/changelogs/logs/2024/2024-05-22.md create mode 100644 src/changelogs/logs/2024/2024-05-25.md create mode 100644 src/changelogs/logs/2024/2024-05-26.md create mode 100644 src/changelogs/logs/2024/2024-05-28.md create mode 100644 src/changelogs/logs/2024/2024-05-29.md create mode 100644 src/changelogs/logs/2024/2024-05-31.md create mode 100644 src/changelogs/logs/2024/2024-06-02.md create mode 100644 src/changelogs/logs/2024/2024-06-04.md create mode 100644 src/changelogs/logs/2024/2024-06-06.md create mode 100644 src/changelogs/logs/2024/2024-06-07.md create mode 100644 src/changelogs/logs/2024/2024-06-09.md create mode 100644 src/changelogs/logs/2024/2024-06-11.md create mode 100644 src/changelogs/logs/2024/2024-06-12.md create mode 100644 src/changelogs/logs/2024/2024-06-13.md create mode 100644 src/changelogs/logs/2024/2024-06-19.md create mode 100644 src/changelogs/logs/2024/2024-06-21.md create mode 100644 src/changelogs/logs/2024/2024-06-23.md create mode 100644 src/changelogs/logs/2024/2024-06-24.md create mode 100644 src/changelogs/logs/2024/2024-06-26.md create mode 100644 src/changelogs/logs/2024/2024-06-27.md create mode 100644 src/changelogs/logs/2024/2024-07-02.md create mode 100644 src/changelogs/logs/2024/2024-07-03.md create mode 100644 src/changelogs/logs/2024/2024-07-06.md create mode 100644 src/changelogs/logs/2024/2024-07-13.md create mode 100644 src/changelogs/logs/2024/2024-07-18.md create mode 100644 src/changelogs/logs/2024/2024-07-20.md create mode 100644 src/changelogs/logs/2024/2024-07-21.md create mode 100644 src/changelogs/logs/2024/2024-07-22.md create mode 100644 src/changelogs/logs/2024/2024-07-27.md create mode 100644 src/changelogs/logs/2024/2024-08-02.md create mode 100644 src/changelogs/logs/2024/2024-08-06.md create mode 100644 src/changelogs/logs/2024/2024-08-11.md create mode 100644 src/changelogs/logs/2024/2024-08-18.md create mode 100644 src/changelogs/logs/2024/2024-09-06.md create mode 100644 src/changelogs/logs/2024/2024-09-17.md create mode 100644 src/changelogs/logs/2024/2024-10-28.md create mode 100644 src/changelogs/logs/2024/2024-11-19.md create mode 100644 src/changelogs/logs/2024/2024-11-21.md create mode 100644 src/changelogs/logs/2024/2024-12-01.md create mode 100644 src/changelogs/logs/2024/2024-12-03.md create mode 100644 src/changelogs/logs/2024/2024-12-09.md create mode 100644 src/changelogs/logs/2024/2024-12-10.md create mode 100644 src/changelogs/logs/2024/2024-12-15.md create mode 100644 src/changelogs/logs/2024/2024-12-16.md create mode 100644 src/changelogs/logs/2024/2024-12-25.md create mode 100644 src/changelogs/logs/2024/2024-12-26.md create mode 100644 src/changelogs/logs/2024/2024-12-27.md create mode 100644 src/changelogs/logs/2024/2024-12-30.md create mode 100644 src/changelogs/logs/2024/2024.11tydata.js create mode 100644 src/changelogs/logs/2025/2025-01-07.md create mode 100644 src/changelogs/logs/2025/2025-01-19.md create mode 100644 src/changelogs/logs/2025/2025-02-06.md create mode 100644 src/changelogs/logs/2025/2025-02-09.md create mode 100644 src/changelogs/logs/2025/2025-02-10.md create mode 100644 src/changelogs/logs/2025/2025-02-12.md create mode 100644 src/changelogs/logs/2025/2025-02-17.md create mode 100644 src/changelogs/logs/2025/2025-02-21.md create mode 100644 src/changelogs/logs/2025/2025-02-23.md create mode 100644 src/changelogs/logs/2025/2025-03-06.md create mode 100644 src/changelogs/logs/2025/2025-03-19.md create mode 100644 src/changelogs/logs/2025/2025-03-21.md create mode 100644 src/changelogs/logs/2025/2025-03-25.md create mode 100644 src/changelogs/logs/2025/2025-03-28.md create mode 100644 src/changelogs/logs/2025/2025-04-01.md create mode 100644 src/changelogs/logs/2025/2025-04-03.md create mode 100644 src/changelogs/logs/2025/2025-04-06.md create mode 100644 src/changelogs/logs/2025/2025-04-13.md create mode 100644 src/changelogs/logs/2025/2025.11tydata.js create mode 100644 src/changelogs/logs/logs.11tydata.js create mode 100644 src/changelogs/pages/2022.njk create mode 100644 src/changelogs/pages/2023.njk create mode 100644 src/changelogs/pages/2024.njk create mode 100644 src/changelogs/pages/2025.njk create mode 100644 src/changelogs/pages/layouts.md create mode 100644 src/changelogs/pages/pages.11tydata.js create mode 100644 src/feed.njk create mode 100644 src/index.njk create mode 100644 src/links/linkgroups/articles.md create mode 100644 src/links/linkgroups/joined.njk create mode 100644 src/links/linkgroups/linkgroups.11tydata.js create mode 100644 src/links/linkgroups/resources.md create mode 100644 src/links/linkgroups/webmastery.md create mode 100644 src/links/linkgroups/websites.njk create mode 100644 src/links/pages/mass-effect-le-mod-list.md create mode 100644 src/links/pages/pages.11tydata.js create mode 100644 src/links/pages/stardew-valley-mod-list.md create mode 100644 src/main create mode 100644 src/projects/art/art.11tydata.js create mode 100644 src/projects/code/bellabuffs-phpmailer.md create mode 100644 src/projects/code/code.11tydata.js create mode 100644 src/projects/playlists.md create mode 100644 src/projects/projects.11tydata.js create mode 100644 src/projects/snippets/disability-pride-flag-background.md create mode 100644 src/projects/snippets/snippets.11tydata.js create mode 100644 src/projects/videogamemods/kotor1.md create mode 100644 src/projects/videogamemods/kotor2.md create mode 100644 src/projects/videogamemods/videogamemods.11tydata.js create mode 100644 src/robots.txt.njk create mode 100644 src/shrines/asummersend.md create mode 100644 src/shrines/asummersend/gallery.md create mode 100644 src/shrines/asummersend/playlists.md create mode 100644 src/shrines/asummersend/trivia.md create mode 100644 src/shrines/cassettebeasts.md create mode 100644 src/shrines/cassettebeasts/articles.md create mode 100644 src/shrines/cassettebeasts/articles/articles.11tydata.js create mode 100644 src/shrines/cassettebeasts/articles/cassette-beasts-more-than-a-pokemon-clone.md create mode 100644 src/shrines/cassettebeasts/articles/sunny-minor-role.md create mode 100644 src/shrines/cassettebeasts/facts.md create mode 100644 src/shrines/cassettebeasts/featured.md create mode 100644 src/shrines/cassettebeasts/gamelog.md create mode 100644 src/shrines/cassettebeasts/resources.md create mode 100644 src/shrines/pokemonoras.md create mode 100644 src/shrines/shrines.11tydata.js create mode 100644 src/shrines/starwarskotor.md create mode 100644 src/shrines/starwarskotor/articles.md create mode 100644 src/shrines/starwarskotor/articles/arren-kae-kreia-theory.md create mode 100644 src/shrines/starwarskotor/articles/articles.11tydata.js create mode 100644 src/shrines/starwarskotor/articles/faq-same-gender-romance-mods.md create mode 100644 src/shrines/starwarskotor/articles/handmaiden-sisters-mother.md create mode 100644 src/shrines/starwarskotor/articles/juhani-hostility-towards-canderous.md create mode 100644 src/shrines/starwarskotor/articles/juhani-lesbian-evidence.md create mode 100644 src/shrines/starwarskotor/articles/keep-juhani-a-lesbian.md create mode 100644 src/shrines/starwarskotor/articles/partyswap-management-takeover.md create mode 100644 src/shrines/starwarskotor/articles/tslrcm-first-kotor2-playthrough.md create mode 100644 src/shrines/starwarskotor/guides.md create mode 100644 src/shrines/starwarskotor/guides/guides.11tydata.js create mode 100644 src/shrines/starwarskotor/guides/kotor-juhani-romance-guide.md create mode 100644 src/shrines/starwarskotor/guides/kotor-redeeming-bastila-guide.md create mode 100644 src/shrines/starwarskotor/guides/kotor-sandral-matale-feud-guide.md create mode 100644 src/shrines/starwarskotor/resources.md create mode 100644 src/shrines/starwarskotor/resources/kotor-same-gender-romance-mods.md create mode 100644 src/shrines/starwarskotor/resources/kotor1-mod-list.md create mode 100644 src/shrines/starwarskotor/resources/kotor2-female-exile-recruit-handmaiden-mods.md create mode 100644 src/shrines/starwarskotor/resources/kotor2-mod-list.md create mode 100644 src/shrines/starwarskotor/resources/resources.11tydata.js create mode 100644 src/shrines/starwarskotor/resources/tslrcm-m478ep-modules-music.md create mode 100644 src/shrines/starwarskotor/universes.md create mode 100644 src/sitemap.xml.njk create mode 100644 src/slashes/archive/archive.11tydata.js create mode 100644 src/slashes/archive/archive.njk create mode 100644 src/slashes/archive/categories.njk create mode 100644 src/slashes/archive/category.njk create mode 100644 src/slashes/footerlinks/changelogs.njk create mode 100644 src/slashes/footerlinks/footerlinks.11tydata.js create mode 100644 src/slashes/footerlinks/sitemap.njk create mode 100644 src/slashes/footerlinks/uses.md create mode 100644 src/slashes/navbarlinks/about.md create mode 100644 src/slashes/navbarlinks/adoptables.njk create mode 100644 src/slashes/navbarlinks/articles.md create mode 100644 src/slashes/navbarlinks/blog.njk create mode 100644 src/slashes/navbarlinks/guestbook.njk create mode 100644 src/slashes/navbarlinks/links.njk create mode 100644 src/slashes/navbarlinks/navbarlinks.11tydata.js create mode 100644 src/slashes/navbarlinks/now.md create mode 100644 src/slashes/navbarlinks/projects.md create mode 100644 src/slashes/navbarlinks/shrines.njk create mode 100644 src/slashes/slashes.11tydata.js create mode 100644 src/slashes/statements/accessibility.md create mode 100644 src/slashes/statements/colophon.md create mode 100644 src/slashes/statements/statements.11tydata.js diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..dfe07704 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..a0eb4e35 --- /dev/null +++ b/.gitignore @@ -0,0 +1,182 @@ +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Working files for my website + +__Source/ + +# Eleventy site output folder + +_site/ + +# Logs + +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Caches + +.cache + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 00000000..6fdca4d9 --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# Leilukin's Hub + +Source code of my hobby website, [Leilukin's Hub](https://leilukin.com/). Built with [Eleventy](https://www.11ty.dev/) and hosted on [Hostinger](https://www.hostinger.my/). + +More technical information can be found on my site's [colophon page](https://leilukin.com/colophon). + +## Run Locally +Recommended JavaScript runtime: [Bun](https://bun.sh). + +1. Clone this repository locally + ``` + git clone https://git.32bit.cafe/Leilukin/leilukin-site.git + ``` +1. Install dependencies + ``` + bun install + ``` +1. Run the project + ``` + bun run start + ``` +1. Open http://localhost:8080/ in your browser diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..c2b028e56e67796224231d7606b6a0e52872f2cf GIT binary patch literal 110049 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

$U1YL0jK@~yL$Z?(0z>6s-R&H16fXj0`>-ZVXn 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�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 GzkdMlh|r(_ literal 0 HcmV?d00001 diff --git a/eleventy.config.js b/eleventy.config.js new file mode 100644 index 00000000..092656af --- /dev/null +++ b/eleventy.config.js @@ -0,0 +1,50 @@ +// Plugins +import { InputPathToUrlTransformPlugin } from "@11ty/eleventy"; +import pluginRss from "@11ty/eleventy-plugin-rss"; +import pluginEleventyNavigation from "@11ty/eleventy-navigation"; +import pluginSyntaxHighlight from "@11ty/eleventy-plugin-syntaxhighlight"; +import pluginEmbedEverything from "eleventy-plugin-embed-everything"; +import pluginWordcount from "eleventy-plugin-wordcount-extended"; +import pluginTOC from "@uncenter/eleventy-plugin-toc"; + +// Custom Configurations +import markdownItConfig from "./src/_config/markdown-it.js"; +import filesConfig from "./src/_config/files.js"; +import collectionsConfig from "./src/_config/collections.js"; +import filtersConfig from "./src/_config/filters.js"; +import shortCodesConfig from "./src/_config/shortcodes.js"; + +export default function(eleventyConfig) { + // Plugins + eleventyConfig.addPlugin(InputPathToUrlTransformPlugin); + eleventyConfig.addPlugin(pluginRss); + eleventyConfig.addPlugin(pluginEleventyNavigation); + eleventyConfig.addPlugin(pluginSyntaxHighlight, { preAttributes: { tabindex: 0 } }); + eleventyConfig.addPlugin(pluginEmbedEverything, { add: ['soundcloud'] }); + eleventyConfig.addPlugin(pluginWordcount); + eleventyConfig.addPlugin(pluginTOC, { + tags: ['h2', 'h3', 'h4', 'h5', 'h6'], + wrapper: function (toc) { + return `

`; + }, + }); + + // Custom Configurations + eleventyConfig.addPlugin(markdownItConfig); + eleventyConfig.addPlugin(filesConfig); + eleventyConfig.addPlugin(collectionsConfig); + eleventyConfig.addPlugin(filtersConfig); + eleventyConfig.addPlugin(shortCodesConfig); + + // Eleventy bundle plugin + eleventyConfig.addBundle("css"); + eleventyConfig.addBundle("js", { toFileDirectory: "assets/js" }); + + return { + markdownTemplateEngine: "njk", + htmlTemplateEngine: "njk", + dir: { + input: "src" + } + }; +}; \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 00000000..f050fbb6 --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "leilukin-site", + "description": "Leilukin's personal and hobby website.", + "author": "Leilukin", + "repository": { + "type": "git", + "url": "https://git.32bit.cafe/Leilukin/leilukin-site" + }, + "scripts": { + "start": "bunx @11ty/eleventy --serve --quiet", + "build": "bunx @11ty/eleventy" + }, + "type": "module", + "devDependencies": { + "@types/bun": "^1.2.5" + }, + "dependencies": { + "@11ty/eleventy": "^3.0.0", + "@11ty/eleventy-fetch": "^5.0.2", + "@11ty/eleventy-navigation": "^1.0.1", + "@11ty/eleventy-plugin-rss": "^2.0.3", + "@11ty/eleventy-plugin-syntaxhighlight": "^5.0.0", + "@uncenter/eleventy-plugin-toc": "^1.0.3", + "@zachleat/details-utils": "^2.0.2", + "eleventy-plugin-embed-everything": "^1.20.0", + "eleventy-plugin-wordcount-extended": "^0.2.1", + "install": "^0.13.0", + "markdown-it-anchor": "^9.2.0", + "markdown-it-attribution": "^0.1.4", + "markdown-it-attrs": "^4.3.1", + "markdown-it-bracketed-spans": "^1.0.1", + "markdown-it-deflist": "^3.0.0", + "markdown-it-footnote": "^4.0.0", + "slugify": "^1.6.6" + } +} diff --git a/src/.htaccess.njk b/src/.htaccess.njk new file mode 100644 index 00000000..03e71cc0 --- /dev/null +++ b/src/.htaccess.njk @@ -0,0 +1,22 @@ +--- +permalink: "{{ page.filePathStem }}" +eleventyExcludeFromCollections: true +eleventyAllowMissingExtension: true +--- +ErrorDocument 404 /404.html + + +Header set Cache-Control "max-age=31536000, public" + + +Header set Cache-Control "no-cache, public" + + +RewriteEngine on + +# Redirect obfuscated email links to mailto link +RewriteRule ^.*{{ sitemeta.siteAuthor.emailDecoyUrl }}.*$ "mailto:{{ sitemeta.siteAuthor.email }}" [R=301,L] + +# Block bad bots +RewriteCond %{HTTP_USER_AGENT} ({{ robots.htaccess }}) [NC] +RewriteRule .* https://nocommercialuse.org/ [L] \ No newline at end of file diff --git a/src/404.njk b/src/404.njk new file mode 100644 index 00000000..156dc432 --- /dev/null +++ b/src/404.njk @@ -0,0 +1,4 @@ +--- +layout: misc/404 +permalink: "{{ page.filePathStem }}.html" +--- diff --git a/src/_bundle/css/comments.css b/src/_bundle/css/comments.css new file mode 100644 index 00000000..d4468983 --- /dev/null +++ b/src/_bundle/css/comments.css @@ -0,0 +1,139 @@ +/** +* Author: Vera Konigin +* Site: https://groundedwren.neocities.org +* Contact: vera@groundedwren.com +* +* File Description: Styles for the guestbook control +* CSS variables come from https://groundedwren.neocities.org/styles/gwBoilerPlatePersonalization.css +*/ +:root { --icon-color: var(--clr-body-txt); } + +.comment-form { + display: grid; + border: 0.1rem solid var(--clr-body-txt); + padding: 1em; + margin: 2em 0; +} + +.comment-form, +.input-horizontal-wrapper { gap: 1em; } + +.comment-form-title { + text-align: center; + margin-bottom: 0 !important; +} + +.comment-form input, +.comment-form textarea { + color: var(--clr-body-txt); + background-color: var(--clr-quote-bg); +} + +.input-horizontal-wrapper { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(100%/1, max(16rem, 100%/3)), 1fr)); +} + +.input-vertical, +.comment-box-container { + display: grid; + gap: 0.3em; +} + +.input-vertical input:focus, +.comment-box-container textarea:focus { outline: 0.15em solid var(--clr-link); } + +.comment-box-container textarea { resize: vertical; } + +.inline-banner { + padding: 0.5em; + word-break: break-word; + display: flex; + align-items: center; + justify-content: center; + gap: 0.5em; + background-color: var(--clr-quote-bg); +} + +.inline-banner.warning { background-color: #9e0f00; } + +.inline-banner.warning a { color: unset; } + +.form-footer, +.comment-footer { + display: flex; + gap: 0.5em; +} + +.form-footer { justify-content: flex-end; } + +.form-footer input, +.comment-footer button, +.show-comment { + border: none; + background: var(--clr-link-btn-bg); + color: var(--clr-link-btn-txt); + padding: 0.3em 0.6em; + border-radius: 0.2em; +} + +.comment-footer button, +.show-comment { font-size: initial; } + +gw-comment-card:not(.collapsed) .show-comment { display: none; } +gw-comment-card.collapsed .comment-article > *:not(.comment-header) { display: none !important; } +gw-comment-card.collapsed .show-comment { display: block; } +gw-comment-card.collapsed .comment-header-right time { display: none; } + +.comments-container { + display: flex; + flex-direction: column; + align-items: stretch; + max-width: 100%; + gap: 1.5em; +} + +.comment-article { + padding: 0.3em 0; + display: flex; + flex-direction: column; +} + +.comment-article blockquote { + max-width: unset !important; + overflow-wrap: break-word; + margin: 0.5em 0; +} + +.comment-article > button { max-width: fit-content; } + +.comment-header { + display: grid; + grid-template-columns: 0fr auto 1fr; + gap: 0.4em; + align-items: baseline; +} + +.comment-article .comment-article { + margin-left: 2em; + margin-top: 0.5em; + padding-right: 0; +} + +.comment-id, .comment-header-right > time { + font-size: 0.85em; + font-style: italic; + word-break: keep-all; +} + +.comment-header-right { + display: flex; + flex-direction: row; + justify-content: flex-end; +} + +.commenter-name { + font-size: 1.1em; + font-weight: 700; + overflow-wrap: break-word; +} diff --git a/src/_bundle/js/comments.js b/src/_bundle/js/comments.js new file mode 100644 index 00000000..d6d28593 --- /dev/null +++ b/src/_bundle/js/comments.js @@ -0,0 +1,528 @@ +/** + * @file Comments control + * @author Vera Konigin vera@groundedwren.com + * https://groundedwren.neocities.org + */ + +window.GW = window.GW || {}; +(function Controls(ns) { + ns.CommentForm = class CommentForm extends HTMLElement { + //#region staticProperties + static instanceCount = 0; + static instanceMap = {}; + //#endregion + + //#region instance properties + instanceId; + isInitialized; + titleText; + discordURL; + encodedPath; + fallbackEmail; + + //#region element properties + formEl; + titleEl; + bannerEl; + + dispNameInpt; + emailInpt; + websiteInpt; + respToInpt; + commentInpt; + + resetBtn; + submitBtn; + //#endregion + //#endregion + + constructor() { + super(); + this.instanceId = CommentForm.instanceCount++; + CommentForm.instanceMap[this.instanceId] = this; + } + + get idKey() { + return `gw-comment-form-${this.instanceId}`; + } + + connectedCallback() { + if (this.isInitialized) { return; } + + this.titleText = this.getAttribute("titleText") || "Add a Comment"; + this.discordURL = this.getAttribute("discordURL"); + this.encodedPath = this.getAttribute("encodedPath"); + this.fallbackEmail = this.getAttribute("fallbackEmail"); + + this.renderContent(); + this.registerHandlers(); + + this.isInitialized = true; + } + + renderContent() { + //Markup + this.innerHTML = ` +
+

${this.titleText}

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+ + Comments are manually approved +
+ +
+ `; + + //element properties + this.formEl = document.getElementById(`${this.idKey}-form`); + this.titleEl = document.getElementById(`${this.idKey}-title`); + this.bannerEl = document.getElementById(`${this.idKey}-banner`); + + this.dispNameInpt = document.getElementById(`${this.idKey}-dispName`); + this.emailInpt = document.getElementById(`${this.idKey}-email`); + this.websiteInpt = document.getElementById(`${this.idKey}-website`); + this.respToInpt = document.getElementById(`${this.idKey}-respTo`); + this.commentInpt = document.getElementById(`${this.idKey}-comment`); + + this.resetBtn = document.getElementById(`${this.idKey}-reset`); + this.submitBtn = document.getElementById(`${this.idKey}-submit`); + + //default values + this.dispNameInpt.value = localStorage.getItem("comment-name") || ""; + this.emailInpt.value = localStorage.getItem("comment-email") || ""; + this.websiteInpt.value = localStorage.getItem("comment-website") || ""; + } + + //#region Handlers + registerHandlers() { + this.formEl.onsubmit = this.onSubmit; + } + + onSubmit = (event) => { + event.preventDefault(); + + const contentObj = { + name: this.dispNameInpt.value, + email: this.emailInpt.value, + website: this.websiteInpt.value, + responseTo: this.respToInpt.value, + comment: ( + this.commentInpt.value || "" + ).replaceAll("\n", "
").replaceAll("(", "\\("), + timestamp: new Date().toUTCString(), + }; + const contentAry = []; + for (let contentKey in contentObj) { + contentAry.push(`${contentKey}=${contentObj[contentKey]}`); + } + + const request = new XMLHttpRequest(); + request.open( + "POST", + this.discordURL || atob("aHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGkvd2ViaG9va3Mv" + this.encodedPath), + true + ); + request.setRequestHeader("Content-Type", "application/json"); + + request.onreadystatechange = () => { + if (request.readyState !== XMLHttpRequest.DONE) { return; } + if (Math.floor(request.status / 100) !== 2) { + console.log(request.responseText); + this.bannerEl.classList.add("warning"); + this.bannerEl.innerHTML = + ` + + + That didn't work. + ${this.fallbackEmail + ? `Click here to send as an email instead.` + : "" + } + + `; + } + else { + alert("Your comment has been submitted!"); + } + }; + + request.send(JSON.stringify({ + embeds: [{ + fields: Object.keys(contentObj).map(key => { return { name: key, value: contentObj[key] }}) + }] + })); + + localStorage.setItem("comment-name", contentObj.name); + localStorage.setItem("comment-email", contentObj.email); + localStorage.setItem("comment-website", contentObj.website); + + this.formEl.reset(); + this.dispNameInpt.value = contentObj.name; + this.emailInpt.value = contentObj.email; + this.websiteInpt.value = contentObj.website; + }; + //#endregion + }; + customElements.define("gw-comment-form", ns.CommentForm); + + ns.CommentList = class CommentList extends HTMLElement { + //#region staticProperties + static instanceCount = 0; + static instanceMap = {}; + static Data = []; + //#endregion + + //#region instance properties + instanceId; + isInitialized; + gSpreadsheetId; + gSheetId; + isNewestFirst; + gwCommentFormId; + + //#region element properties + //#endregion + //#endregion + + constructor() { + super(); + this.instanceId = CommentList.instanceCount++; + CommentList.instanceMap[this.instanceId] = this; + CommentList.Data[this.instanceId] = {}; + } + + get idKey() { + return `gw-comment-list-${this.instanceId}`; + } + + connectedCallback() { + if (this.isInitialized) { return; } + + this.gSpreadsheetId = this.getAttribute("gSpreadsheetId"); + this.gSheetId = this.getAttribute("gSheetId"); + this.isNewestFirst = this.getAttribute("isNewestFirst"); + this.gwCommentFormId = this.getAttribute("gwCommentFormId"); + + this.loadAndRender(); + + this.isInitialized = true; + } + + async loadAndRender() { + this.innerHTML = ` +
+ + Comments loading.... +
+ ` + + const sheetReader = new GW.Gizmos.GoogleSheetsReader(this.gSpreadsheetId, this.gSheetId); + await sheetReader.loadData(); + this.innerHTML = ""; + + const allComments = sheetReader.rowData; + if (this.isNewestFirst) { + allComments.reverse(); + } + + this.renderContent(); + this.registerHandlers(); + + const allCommentsIndex = {}; + const topLevelCommentIdxs = []; + const childCommentIdxs = []; + for (let i = 0; i < allComments.length; i++) { + const comment = allComments[i]; + allCommentsIndex[comment.ID] = i; + if (!comment.ResponseTo) { + topLevelCommentIdxs.push(i); + } + else { + childCommentIdxs.push(i); + } + } + childCommentIdxs.forEach(childIdx => { + const replyId = allComments[childIdx].ResponseTo; + const respondeeComment = allComments[allCommentsIndex[replyId]]; + + respondeeComment.ChildIdxs = respondeeComment.ChildIdxs || []; + respondeeComment.ChildIdxs.push(childIdx); + }); + + let commentsToBuild = []; + topLevelCommentIdxs.forEach( + topCommentIdx => commentsToBuild.push({ + parent: this.containerEl, + comment: allComments[topCommentIdx] + }) + ); + + while (commentsToBuild.length > 0) { + let { parent, comment } = commentsToBuild.shift(); + if (!comment.Timestamp) { + continue; + } + + CommentList.Data[this.instanceId][comment.ID] = comment; + + parent.insertAdjacentHTML("beforeend", ` + + `); + + const commentEl = document.getElementById(`${this.idKey}-cmt-${comment.ID}`); + (comment.ChildIdxs || []).forEach( + childIdx => commentsToBuild.push({ + parent: commentEl.articleEl, + comment: allComments[childIdx] + }) + ); + } + } + + renderContent() { + //Markup + this.innerHTML = ` +
+
+ `; + + //element properties + this.containerEl = document.getElementById(`${this.idKey}-container`); + } + + //#region Handlers + registerHandlers() { + } + //#endregion + }; + customElements.define("gw-comment-list", ns.CommentList); + + ns.CommentCard = class CommentCard extends HTMLElement { + //#region staticProperties + static instanceCount = 0; + static instanceMap = {}; + //#endregion + + //#region instance properties + instanceId; + isInitialized; + + commentId; + gwCommentFormId; + + replyToId; + numChildren; + commenterName; + datetime; + websiteURL; + commentText; + + //#region element properties + articleEl; + replyBtn; + //#endregion + //#endregion + + constructor() { + super(); + this.instanceId = CommentCard.instanceCount++; + CommentCard.instanceMap[this.instanceId] = this; + } + + get idKey() { + return `gw-comment-card-${this.instanceId}`; + } + + //#region HTMLElement implementation + connectedCallback() { + if (this.isInitialized) { return; } + + this.commentId = this.getAttribute("commentId"); + this.gwCommentFormId = this.getAttribute("gwCommentFormId"); + + const commentData = ns.CommentList.Data[this.getAttribute("listInstance")][this.commentId]; + + this.replyToId = commentData.ResponseTo; + this.numChildren = (commentData.ChildIdxs || []).length; + this.commenterName = commentData["Display Name"]; + this.datetime = commentData.Timestamp; + this.websiteURL = commentData.Website; + this.commentText = this.parseCommentText(commentData.Comment); + + this.renderContent(); + this.registerHandlers(); + + this.isInitialized = true; + } + //#endregion + + renderContent() { + let headerText = this.replyToId + ? `Comment #${this.commentId} replying to #${this.replyToId}` + : `Top level comment #${this.commentId}`; + headerText += ` with ${this.numChildren} direct ${this.numChildren == 1 ? "reply" : "replies"}`; + + const displayTimestamp = this.datetime.toLocaleString( + undefined, + { dateStyle: "short", timeStyle: "short" } + ); + + const commenterNameEl = this.websiteURL + ? `${this.commenterName}` + : `${this.commenterName}`; + + //Markup + this.innerHTML = ` +
+
+ + ${commenterNameEl} +
+ + +
+
+
${this.commentText}
+ +
+ `; + + //element properties + this.articleEl = document.getElementById(`${this.idKey}-article`); + this.timestamp = document.getElementById(`${this.idKey}-timestamp`); + this.replyBtn = document.getElementById(`${this.idKey}-reply`); + this.hideBtn = document.getElementById(`${this.idKey}-hide`); + this.showBtn = document.getElementById(`${this.idKey}-show`); + } + + //#region Handlers + registerHandlers() { + this.replyBtn.onclick = this.onReply; + this.hideBtn.onclick = this.onHide; + this.showBtn.onclick = this.onShow; + } + + onReply = () => { + const gwCommentForm = document.getElementById(this.gwCommentFormId); + const respToInpt = gwCommentForm.respToInpt; + if (!respToInpt) { + alert("Comment form not found"); + return; + } + + respToInpt.value = this.commentId; + respToInpt.focus(); + }; + + onHide = () => { + this.classList.add("collapsed"); + this.showBtn.focus(); + }; + + onShow = () => { + this.classList.remove("collapsed"); + this.timestamp.focus(); + }; + //#endregion + + parseCommentText(commentString) { + let commentText = ""; + let linkObj = {}; + + for(let i = 0; i < commentString.length; i++){ + let char = commentString.charAt(i); + switch (char) { + case '[': + linkObj = {tStart: i}; + break; + case ']': + if(linkObj.tStart !== undefined && linkObj.tStart !== i-1) { + linkObj.tEnd = i; + } + else { linkObj = {}; } + break; + case '(': + if(linkObj.tEnd !== undefined && linkObj.tEnd === i-1) { + linkObj.lStart = i; + } + else { linkObj = {}; } + break; + case ')': + if(linkObj.lStart !== undefined && linkObj.lStart !== i-1) { + linkObj.lEnd = i; + } + else { linkObj = {}; } + break; + } + if(linkObj.lEnd !== undefined) { + const linkText = commentString.substring(linkObj.tStart + 1, linkObj.tEnd); + const linkURL = commentString.substring(linkObj.lStart + 1, linkObj.lEnd); + commentText = commentText.substring(0, commentText.length - (i - linkObj.tStart)); + commentText += `${linkText}`; + linkObj = {}; + } + else { + commentText += char; + } + } + return commentText; + } + }; + customElements.define("gw-comment-card", ns.CommentCard); +}) (window.GW.Controls = window.GW.Controls || {}); \ No newline at end of file diff --git a/src/_bundle/js/googleSheetsReaderGizmo.js b/src/_bundle/js/googleSheetsReaderGizmo.js new file mode 100644 index 00000000..769f0a1a --- /dev/null +++ b/src/_bundle/js/googleSheetsReaderGizmo.js @@ -0,0 +1,179 @@ +/** + * Author: Vera Konigin + * Site: https://groundedwren.neocities.org + * Contact: vera@groundedwren.com + * + * File Description: Gizmo for reading from Google Sheets. + * Neocities editor users will see a lot of linter errors in this file, but none of them are real errors. The linter just doesn't understand some modern JS. +*/ + +/** + * By default, any JavaScript code written is defined in the global namespace, which means it's accessible directly under the "window" element. + * If you have a lot of scripts, this can lead to clutter and naming collisions (what if two different scripts use a variable called "i"? They can inadvertently mess each other up). + * To get around this, we define the registerNamespace function in the global namespace, which just confines all the code in the function passed to it to a property under window. + * That property is represented as the "path" parameter. It is passed to the function for ease of access. +*/ +function registerNamespace(path, nsFunc) +{ + var ancestors = path.split("."); + + var ns = window; + for(var i = 0; i < ancestors.length; i++) + { + ns[ancestors[i]] = ns[ancestors[i]] || {}; + ns = ns[ancestors[i]]; + } + nsFunc(ns); +} + +registerNamespace("GW.Gizmos", function(ns) { + /** + * A class to read from one page in a google sheet document + */ + ns.GoogleSheetsReader = class GoogleSheetsReader + { + //setResponse is intended for React - it's how google responds to our GET. Fortunately valid JSON is inside this call, so we can just parse it out. + static #RESPONSE_PREFIX = "setResponse("; + static #RESPONSE_SUFFIX = ");"; + + //Here we can define any custom types based on column label. "Timestamp" is intended for ISO 8601 format date/time strings. + static #CUSTOM_LABEL_TYPES = { + "Timestamp": "timestamp" + }; + + spreadsheetId; //The ID of the spreadsheet. This is the part just after /d/ in the docs.google.com URL + sheetName; //The name of the particular sheet we're after + + #sheetURL; //Composed request URL + + loadPromise = null; //A promise created when loading begins and which resolves when data has finished loading. + tableJSON = null; //Raw JS Object version of the returned JSON. + rowData = null; //Parsed row data + colData = null; //A shortcut to the the column data in tableJSON + colIndex = null; //An index from column label to its metadata, plus array position + + /** + * Constructs a GoogleSheetsReader object + * spreadsheetId is the part of the docs.google.com URL just after /d/ + * sheetName is the name of the particular page + */ + constructor(spreadsheetId, sheetName) + { + this.spreadsheetId = spreadsheetId; + this.sheetName = sheetName; + this.#sheetURL = `https://docs.google.com/spreadsheets/d/${spreadsheetId}/gviz/tq?sheet=${sheetName}`; + } + + /** + * Loads and parses sheet data via HTTP GET + * Returns null on success, and an error string on failure. + */ + async loadData() + { + this.loadPromise = this.#loadData(); + return this.loadPromise; + } + + async #loadData() + { + this.tableJSON = null; + this.rowData = null; + this.colData = null; + this.colIndex = null; + + const response = await fetch(this.#sheetURL); + if (response.ok) + { + return response.text().then((unparsedData) => + { + //This is parsing out the valid JSON from the React method they gave us + const targetData = unparsedData.split( + GoogleSheetsReader.#RESPONSE_PREFIX + )[1].split( + GoogleSheetsReader.#RESPONSE_SUFFIX + )[0]; + + this.tableJSON = GoogleSheetsReader.#applyCustomLabelTypes(JSON.parse(targetData).table); + this.rowData = GoogleSheetsReader.#parseAllRows(this.tableJSON); + this.colIndex = GoogleSheetsReader.#indexColumns(this.tableJSON); + this.colData = this.tableJSON.cols; + + return null; + }); + } + else + { + return response.statusText || response.status; + } + } + + /** + * Overrides any google-returned column data types with custom ones based on label + */ + static #applyCustomLabelTypes(tableJSON) + { + tableJSON.cols.forEach(col => { + if(this.#CUSTOM_LABEL_TYPES[col.label]) + { + col.type = this.#CUSTOM_LABEL_TYPES[col.label] + }; + }); + return tableJSON; + } + + static #parseAllRows(tableJSON) + { + const rowDataArray = []; + for(let i = 0; i < tableJSON.rows.length; i++) + { + rowDataArray.push(this.#parseRow(i, tableJSON)); + } + return rowDataArray; + } + + static #parseRow(rowIdx, tableJSON) + { + const rowData = {}; + const cells = tableJSON.rows[rowIdx].c; + + for(let i = 0; i < cells.length; i++) + { + rowData[tableJSON.cols[i].label] = this.#parseCellType(cells[i], tableJSON.cols[i].type); + } + return rowData; + } + + /** + * Parses a cell based on its type. Further custom types will need their own parsing added here. + */ + static #parseCellType(cellData, cellType) + { + switch (cellType) + { + case "string": + return cellData ? cellData.v : cellData; + case "number": + return cellData ? cellData.v : cellData; + case "datetime": + case "date": + return (cellData && cellData.v) ? eval("new " + cellData.v) : null; + case "timestamp": + const cellTimestamp = new Date(cellData ? cellData.v : ""); + return isNaN(cellTimestamp) ? null : cellTimestamp; + default: + return cellData; + } + } + + static #indexColumns(tableJSON) + { + const colIndex = {}; + for(let i = 0; i < tableJSON.cols.length; i++) + { + const colData = tableJSON.cols[i]; + colIndex[colData.label] = {...colData, index: i}; + } + return colIndex; + } + }; +}); \ No newline at end of file diff --git a/src/_bundle/js/svgIconControl.js b/src/_bundle/js/svgIconControl.js new file mode 100644 index 00000000..69d513fa --- /dev/null +++ b/src/_bundle/js/svgIconControl.js @@ -0,0 +1,453 @@ +/** + * Author: Vera Konigin + * Site: https://groundedwren.neocities.org + * Contact: vera@groundedwren.com + * + * File Description: A web component to site SVG icons easily +*/ + +/** + * By default, any JavaScript code written is defined in the global namespace, which means it's accessible directly under the "window" element. + * If you have a lot of scripts, this can lead to clutter and naming collisions (what if two different scripts use a variable called "i"? They can inadvertently mess each other up). + * To get around this, we define the registerNamespace function in the global namespace, which just confines all the code in the function passed to it to a property under window. + * That property is represented as the "path" parameter. It is passed to the function for ease of access. +*/ +function registerNamespace(path, nsFunc) +{ + var ancestors = path.split("."); + + var ns = window; + for(var i = 0; i < ancestors.length; i++) + { + ns[ancestors[i]] = ns[ancestors[i]] || {}; + ns = ns[ancestors[i]]; + } + nsFunc(ns); +} + +registerNamespace("GW.Controls.SVGLib", function(ns) { + const XML_NAMESPACE = "http://www.w3.org/2000/svg"; + + /** + * https://www.w3.org/TR/SVG/eltindex.html + */ + ns.ElementTypes = { + svg: "svg", //viewBox, preserveAspectRatio, zoomAndPan, transform - https://www.w3.org/TR/SVG/struct.html#SVGElement + circle: "circle", //cx, cy, r - https://www.w3.org/TR/SVG/shapes.html#CircleElement + linearGradient: "linearGradient", //x1, y1, x2, y2, gradientUnits, gradientTransform, spreadMethod, href - https://www.w3.org/TR/SVG/pservers.html#LinearGradientElement + stop: "stop", //offset, stop-color https://www.w3.org/TR/SVG/pservers.html#StopElement + defs: "defs", //https://www.w3.org/TR/SVG/struct.html#DefsElement + rect: "rect", //x, y, width, height, rx, ry - https://www.w3.org/TR/SVG/shapes.html#RectElement + text: "text", //x, y, dominant-baseline, text-anchor, fill - https://www.w3.org/TR/SVG/text.html#TextElement + a: "a", //href, target - https://developer.mozilla.org/en-US/docs/Web/SVG/Element/a + path: "path", //d, pathLength - https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path + title: "title", // - https://developer.mozilla.org/en-US/docs/Web/SVG/Element/title + desc: "desc", // - https://developer.mozilla.org/en-US/docs/Web/SVG/Element/desc + foreignObject: "foreignObject", // - https://developer.mozilla.org/en-US/docs/Web/SVG/Element/foreignObject + }; + + /** + * Shortcut to create an SVG element and append it to a parent + * @param parent the parent element + * ... see ns.createElement + */ + function createChildElement(parent, elementType, attributes, innerHTML) + { + var childEl = createElement(elementType, attributes, innerHTML); + parent.appendChild(childEl); + return childEl; + } + ns.createChildElement = createChildElement; + + /** + * Creates an SVG element to spec + * @param elementType type of SVG element (see ns.ElementTypes) + * @param attributes object of attributes and values + * @param innerHTML inner HTML + */ + function createElement(elementType, attributes, innerHTML) + { + var el = document.createElementNS(XML_NAMESPACE, elementType); + Object.keys(attributes || {}).forEach((attr) => el.setAttributeNS(null, attr, attributes[attr])); + el.innerHTML = innerHTML || null; + return el; + } + ns.createElement = createElement; + + //#region Icons + const ICON_CITATION = ""; + const ICON_CLASS = "icon"; + + /** + * Icon SVG path definitions + */ + ns.Icons = { + "circle-info": { + title: "info", + viewBox: "0 0 512 512", + d: "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z" + }, + "play": { + title: "play", + viewBox: "0 0 384 512", + d: "M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z" + }, + "backward-step": { + title: "backward step", + viewBox: "0 0 320 512", + d: "M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241V96c0-17.7-14.3-32-32-32S0 78.3 0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V271l11.5 9.6 192 160z" + }, + "forward-step": { + title: "forward step", + viewBox: "0 0 320 512", + d: "M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241V96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V271l-11.5 9.6-192 160z" + }, + "pause": { + title: "pause", + viewBox: "0 0 320 512", + d: "M48 64C21.5 64 0 85.5 0 112V400c0 26.5 21.5 48 48 48H80c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zm192 0c-26.5 0-48 21.5-48 48V400c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H240z" + }, + "triangle-exclamation": { + title: "warning", + viewBox: "0 0 512 512", + d: "M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z" + }, + "laptop-code": { + title: "coding", + viewBox: "0 0 640 512", + d: "M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z" + }, + "guitar": { + title: "guitar", + viewBox: "0 0 512 512", + d: "M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z" + }, + "pen-fancy": { + title: "pen", + viewBox: "0 0 512 512", + d: "M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.4 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z" + }, + "glasses": { + title: "glasses", + viewBox: "0 0 576 512", + d: "M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1 .1 0 0 0 0 0s0 0-6.3 12.7h0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7h40.6c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7h0c-6.3-12.7-6.3-12.7-6.3-12.7l0 0 0 0 .1 0 .2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7v6.7V352v16c0 61.9-50.1 112-112 112H419.7c-59.4 0-108.5-46.4-111.8-105.8L306.6 352H269.4l-1.2 22.2C264.9 433.6 215.8 480 156.3 480H112C50.1 480 0 429.9 0 368V352 310.7 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4V368c0 26.5 21.5 48 48 48h44.3c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368V325.4c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3H464c26.5 0 48-21.5 48-48z" + }, + "clock": { + title: "glasses", + viewBox: "0 0 512 512", + d: "M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z" + }, + "envelope": { + title: "envelope", + viewBox: "0 0 512 512", + d: "M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z" + }, + "discord": { + title: "discord", + viewBox: "0 0 640 512", + d: "M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z" + }, + "plus": { + title: "plus", + viewBox: "0 0 448 512", + d: "M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z" + }, + "circle-check": { + title: "done", + viewBox: "0 0 512 512", + d: "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z" + }, + "delete-left": { + title: "delete", + viewBox: "0 0 576 512", + d: "M576 128c0-35.3-28.7-64-64-64H205.3c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7H512c35.3 0 64-28.7 64-64V128zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z" + }, + "link": { + title: "link", + viewBox: "0 0 640 512", + 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" + }, + "xmark": { + title: "close", + viewBox: "0 0 384 512", + d: "M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z" + }, + "trash": { + title: "trash", + viewBox: "0 0 448 512", + d: "M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z" + }, + "thumbtack": { + title: "trash", + viewBox: "0 0 384 512", + d: "M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z" + }, + "pen-to-square": { + title: "edit", + viewBox: "0 0 512 512", + d: "M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z" + }, + "book": { + title: "book", + viewBox: "0 0 448 512", + d: "M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z" + }, + "gamepad": { + title: "game", + viewBox: "0 0 640 512", + d: "M192 64C86 64 0 150 0 256S86 448 192 448H448c106 0 192-86 192-192s-86-192-192-192H192zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V200z" + }, + "hammer": { + title: "game", + viewBox: "0 0 576 512", + d: "M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6V105.5L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0h18.1c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z" + }, + "location-dot": { + title: "location", + viewBox: "0 0 384 512", + d: "M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z" + }, + "box-open": { + title: "box", + viewBox: "0 0 640 512", + d: "M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z" + }, + "calendar": { + title: "box", + viewBox: "0 0 448 512", + d: "M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z" + }, + "people-group": { + title: "people", + viewBox: "0 0 640 512", + d: "M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3V245.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V389.2C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112h32c24 0 46.2 7.5 64.4 20.3zM448 416V394.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176h32c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2V416c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3V261.7c-10 11.3-16 26.1-16 42.3zm144-42.3v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2V448c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V405.2c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112h32c61.9 0 112 50.1 112 112z" + }, + "comments": { + title: "comments", + viewBox: "0 0 640 512", + d: "M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z" + }, + "clipboard-check": { + title: "clipboard", + viewBox: "0 0 384 512", + d: "M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z" + }, + "user": { + title: "clipboard", + viewBox: "0 0 448 512", + d: "M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z" + }, + "door-open": { + title: "open door", + viewBox: "0 0 576 512", + d: "M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 288h32V480 32zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128h96V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512V128c0-35.3-28.7-64-64-64H352v64z" + }, + "scroll": { + title: "scroll", + viewBox: "0 0 576 512", + d: "M0 80v48c0 17.7 14.3 32 32 32H48 96V80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48V384c0 35.3 28.7 64 64 64s64-28.7 64-64v-5.3c0-32.4 26.3-58.7 58.7-58.7H480V128c0-53-43-96-96-96H112zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16H314.7c-14.7 0-26.7 11.9-26.7 26.7V384c0 53-43 96-96 96H368h96z" + }, + "star": { + title: "star", + viewBox: "0 0 576 512", + d: "M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z" + }, + "boxes-stacked": { + title: "stacked boxes", + viewBox: "0 0 576 512", + d: "M248 0H208c-26.5 0-48 21.5-48 48V160c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V48c0-26.5-21.5-48-48-48H328V80c0 8.8-7.2 16-16 16H264c-8.8 0-16-7.2-16-16V0zM64 256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H184v80c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V256H64zM352 512H512c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H472v80c0 8.8-7.2 16-16 16H408c-8.8 0-16-7.2-16-16V256H352c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2V464c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z" + }, + "person-running": { + title: "person running", + viewBox: "0 0 448 512", + d: "M320 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM125.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L137.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L238 299l30.9-82.4 5.1 12.3C289 264.7 323.9 288 362.7 288H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H362.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L57.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM91.2 352H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h69.6c19 0 36.2-11.2 43.9-28.5L157 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L91.2 352z" + }, + "handshake": { + title: "handshake", + viewBox: "0 0 640 512", + d: "M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48H48c-26.5 0-48 21.5-48 48V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z" + }, + "reply": { + title: "reply", + viewBox: "0 0 512 512", + d: "M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z" + }, + "d20": { + title: "d20", + viewBox: "0 0 512 512", + d: "M48.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L201.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L47.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM16 171.7V295.3c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L40.2 158C29.6 151.6 16 159.3 16 171.7zM310.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L322.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM496 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4V171.7zm-49.3 246L286.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9v52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM233.2 512c3.7 0 6.8-3 6.8-6.8V452.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM41.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L30.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L402.9 238.1c-6.5-10-21.4-9.6-27.3 .8L290.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9H183.1c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM174.4 176H337.6c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2h-3.2c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z" + }, + "screwdriver-wrench": { + title: "settings", + viewBox: "0 0 512 512", + d: "M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4h54.1l109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109V104c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7H352c-8.8 0-16-7.2-16-16V102.6c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z" + }, + "dumbbell": { + title: "dumbbell", + viewBox: "0 0 640 512", + d: "M96 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V224v64V448c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V384H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H96V64zm448 0v64h32c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32v64c0 17.7-14.3 32-32 32H544v64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V288 224 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32zM416 224v64H224V224H416z" + }, + "chevron-down": { + title: "chevron down", + viewBox: "0 0 512 512", + d: "M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z" + }, + "chevron-up": { + title: "chevron up", + viewBox: "0 0 512 512", + d: "M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z" + }, + "chevron-left": { + title: "chevron left", + viewBox: "0 0 320 512", + d: "M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z" + }, + "chevron-right": { + title: "chevron right", + viewBox: "0 0 320 512", + d: "M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z" + }, + }; + + ns.createIcon = function createIcon(iconDef, title, desc, classes, style) + { + var iconEl = createElement( + ns.ElementTypes.svg, + { + "viewBox": iconDef.viewBox, + "class": `${ICON_CLASS} ${classes}`, + "role": "img", + "style": style || "" + }, + ICON_CITATION + ); + + iconEl.insertAdjacentHTML("afterbegin", + `` + ); + + createChildElement( + iconEl, + ns.ElementTypes.title, + {}, + title || iconDef.title + ); + if (desc) + { + createChildElement( + iconEl, + ns.ElementTypes.desc, + {}, + desc + ); + } + + createChildElement( + iconEl, + ns.ElementTypes.path, + { + "d": iconDef.d + } + ); + + return iconEl; + }; + //#endregion +}); + +registerNamespace("GW.Controls", function(ns) { + ns.IconEl = class IconEl extends HTMLElement + { + //#region staticProperties + static observedAttributes = []; + static instanceCount = 0; + static instanceMap = {}; + //#endregion + + //#region instance properties + instanceId; + iconObj; + titleText; + isInitialized; + + //#region element properties + //#endregion + //#endregion + + constructor() + { + super(); + this.instanceId = IconEl.instanceCount++; + IconEl.instanceMap[this.instanceId] = this; + } + + get idKey() + { + return `gw-icon-${this.instanceId}`; + } + + //#region HTMLElement implementation + connectedCallback() + { + if (this.isInitialized) { return; } + + this.iconObj = ns.SVGLib.Icons[this.getAttribute("iconKey")]; + + this.titleText = this.getAttribute("title"); + if (this.hasAttribute("titleId")) + { + const titleEl = document.getElementById(this.getAttribute("titleId")); + this.titleText = titleEl.innerText; + titleEl.remove(); + } + + this.iconDescription = this.getAttribute("description"); + this.iconClasses = this.getAttribute("iconClasses"); + this.iconStyle = this.getAttribute("iconStyle"); + + this.renderContent(); + this.isInitialized = true; + } + //#endregion + + renderContent() + { + if (!this.iconObj) + { + debugger; + return; + } + + //Markup + this.insertAdjacentHTML("beforebegin", + `` + ); + this.appendChild( + ns.SVGLib.createIcon( + this.iconObj, + this.titleText, + this.iconDescription, + this.iconClasses, + this.iconStyle, + ) + ); + + //element properties + } + }; + customElements.define("gw-icon", ns.IconEl); +}); \ No newline at end of file diff --git a/src/_config/collections.js b/src/_config/collections.js new file mode 100644 index 00000000..502fbf5a --- /dev/null +++ b/src/_config/collections.js @@ -0,0 +1,12 @@ +export default function(eleventyConfig) { + // Add content categories to a collection + eleventyConfig.addCollection("categories", function(collectionApi) { + let categories = new Set(); + let contents = collectionApi.getFilteredByTag('contents'); + contents.forEach(p => { + let cats = p.data.categories; + cats.forEach(c => categories.add(c)); + }); + return Array.from(categories).sort(); + }); +} \ No newline at end of file diff --git a/src/_config/files.js b/src/_config/files.js new file mode 100644 index 00000000..d452a9bf --- /dev/null +++ b/src/_config/files.js @@ -0,0 +1,11 @@ +// Passthrough File Copy +export default function(eleventyConfig) { + eleventyConfig.addPassthroughCopy("./src/assets/"); + eleventyConfig.addWatchTarget("./src/assets/"); + eleventyConfig.addWatchTarget("./src/_bundle/"); + eleventyConfig.addPassthroughCopy({ + "./src/assets/favicon/favicon.ico": "/favicon.ico", + "./src/assets/favicon/apple-touch-icon.png": "/apple-touch-icon.png", + "node_modules/@zachleat/details-utils/details-utils.js": "assets/js/details-utils.js", + }); +} diff --git a/src/_config/filters.js b/src/_config/filters.js new file mode 100644 index 00000000..d39765bf --- /dev/null +++ b/src/_config/filters.js @@ -0,0 +1,32 @@ +import { DateTime } from "luxon"; + +export default function(eleventyConfig) { + // Filter: Filter contents by category + eleventyConfig.addFilter("filterByCategory", function(contents, cat) { + cat = cat.toLowerCase(); + let result = contents.filter(item => { + let cats = item.data.categories.map(c => c.toLowerCase()); + return cats.includes(cat); + }); + return result; + }); + + // Filter: Format dates + eleventyConfig.addFilter("formatDate", (date) => { + const dateFormat = "d LLLL yyyy"; + if (typeof date === "object") { + return DateTime.fromJSDate(date).toFormat(dateFormat); + } + return DateTime.fromISO(date, { setZone: true }).toFormat(dateFormat); + }); + + // Filter: Limit number of items displayed + eleventyConfig.addFilter("itemLimit", function(array, maximum) { + return array.slice(0, maximum); + }); + + // Filter: Thousands separator + eleventyConfig.addFilter("thousands", function(num) { + return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + }); +} \ No newline at end of file diff --git a/src/_config/markdown-it.js b/src/_config/markdown-it.js new file mode 100644 index 00000000..61a78b0a --- /dev/null +++ b/src/_config/markdown-it.js @@ -0,0 +1,106 @@ +// markdown-it plugins +import markdownIt from "markdown-it"; +import markdownItAnchor from "markdown-it-anchor"; +import markdownItAttribution from "markdown-it-attribution"; +import markdownItAttrs from "markdown-it-attrs"; +import markdownItBracketedSpans from 'markdown-it-bracketed-spans'; +import markdownItDefList from "markdown-it-deflist"; +import markdownItFootnote from "markdown-it-footnote"; + +// Configure slug filter +import slugify from "slugify"; + +// Enable exporting markdown-it library to another module +export let markdownLibrary; + +export default function(eleventyConfig) { + // Configure markdown-it-anchor plugins + eleventyConfig.setLibrary('md', markdownIt().use(markdownItAnchor)) + const linkAfterHeader = markdownItAnchor.permalink.linkAfterHeader({ + class: "heading-anchor", + symbol: "", + style: "aria-labelledby", + }); + const markdownItAnchorOptions = { + level: [2, 3, 4, 5], + slugify: (str) => + slugify(str, { + lower: true, + strict: true, + remove: /["]/g, + }), + tabIndex: false, + permalink(slug, opts, state, idx) { + state.tokens.splice(idx, 0, + Object.assign(new state.Token("div_open", "div", 1), { + // Add class "header-wrapper [h1 or h2 or h3]" + attrs: [["class", `heading-wrapper ${state.tokens[idx].tag}`]], + block: true, + }) + ); + + state.tokens.splice(idx + 4, 0, + Object.assign(new state.Token("div_close", "div", -1), { + block: true, + }) + ); + + linkAfterHeader(slug, opts, state, idx + 1); + }, + }; + + /* Markdown Overrides */ + markdownLibrary = markdownIt({ + html: true, + linkify: true, + }) + .use(markdownItAnchor, markdownItAnchorOptions) + .use(markdownItAttribution) + .use(markdownItAttrs) + .use(markdownItBracketedSpans) + .use(markdownItDefList) + .use(markdownItFootnote); + + // Configure linkify + markdownLibrary.linkify.set({ fuzzyLink: false }); + + // Configure markdown-it-footnote + markdownLibrary.renderer.rules.footnote_block_open = () => ( + '
\n' + + '
\n' + + `
+

Footnotes

+ +
\n` + + '
    \n' + ); + + markdownLibrary.renderer.rules.footnote_anchor = (tokens, idx, options, env, slf) => { + let id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf); + + if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`; + + /* ↩ with escape code to prevent display as Apple Emoji on iOS */ + return ` +

    + + + Back to reference ${id} + +

    + `; + }; + + const renderRules = { + footnote_caption: ['[', '[Note '] + }; + Object.keys(renderRules).map(rule => { + let defaultRender = markdownLibrary.renderer.rules[rule]; + markdownLibrary.renderer.rules[rule] = (tokens, idx, options, env, self) => { + return defaultRender(tokens, idx, options, env, self).replace(...renderRules[rule]); + } + }); + + /* This is the part that tells 11ty to swap to our custom config */ + eleventyConfig.setLibrary("md", markdownLibrary); +} \ No newline at end of file diff --git a/src/_config/shortcodes.js b/src/_config/shortcodes.js new file mode 100644 index 00000000..7e94141d --- /dev/null +++ b/src/_config/shortcodes.js @@ -0,0 +1,54 @@ +import slugify from "slugify"; +import { markdownLibrary } from "./markdown-it.js"; + +export default function(eleventyConfig) { + // Shortcode: tag + eleventyConfig.addShortcode('cite', (str) => `${str}`); + + // Shortcode: Manual heading anchor + eleventyConfig.addPairedShortcode('headingAnchor', (title, hLevel, id=slugify(title)) => { + return `
    + ${title} + +
    `; + }); + + // Shortcode: Custom container + eleventyConfig.addPairedShortcode('container', (children, el, className) => { + const classMarkup = className ? ` class="${className}"` : ""; + const content = markdownLibrary.render(children); + return `<${el}${classMarkup}>${content}`; + }); + + // Shortcode: Image figure and figcaption + eleventyConfig.addPairedShortcode('imgFigure', ( + caption, img, alt=caption, className, enableLazyLoading=true + ) => { + const classMarkup = className ? ` class="${className}"` : ""; + const figcaption = markdownLibrary.renderInline(caption); + return ` + ${alt} +
    ${figcaption}
    + `; + }); + + // Shortcode: Content disclosure + eleventyConfig.addPairedShortcode('disclosure', (content, summary) => { + const summaryMarkup = markdownLibrary.renderInline(summary); + const contentMarkup = markdownLibrary.render(content); + return `
    + ${summaryMarkup} +
    ${contentMarkup}
    +
    `; + }); + + // Shortcode: Content warning disclosure + eleventyConfig.addPairedShortcode('contentWarning', (content, warning) => { + const warningMarkup = markdownLibrary.renderInline(warning); + const contentMarkup = markdownLibrary.render(content); + return `
    + Content Warning: ${warningMarkup} +
    ${contentMarkup}
    +
    `; + }); +} \ No newline at end of file diff --git a/src/_data/robots.js b/src/_data/robots.js new file mode 100644 index 00000000..da695e77 --- /dev/null +++ b/src/_data/robots.js @@ -0,0 +1,32 @@ +/* + Modified from Robb Knight's script: + https://rknight.me/blog/blocking-bots-with-nginx/ +*/ + +import EleventyFetch from "@11ty/eleventy-fetch"; + +export default async function () { + const url = "https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/main/robots.txt"; + let txt = await EleventyFetch(url, { + duration: "1w", + type: "text", + }); + + const botExceptions = ["Applebot", "CCBot"]; + const botExceptionsFullStr = botExceptions.map(bot => "User-agent: " + bot) + + txt = txt + .split("\n") + .filter((line) => !botExceptionsFullStr.includes(line)) + .join("\n"); + + const bots = txt + .split("\n") + .filter((line) => line.startsWith("User-agent:")) + .map((line) => line.split(":")[1].trim().replace(/\s/gi, ".*")); + + return { + txt: txt, + htaccess: bots.join('|'), + }; +} \ No newline at end of file diff --git a/src/_data/sitemeta.js b/src/_data/sitemeta.js new file mode 100644 index 00000000..1c4c5d6e --- /dev/null +++ b/src/_data/sitemeta.js @@ -0,0 +1,28 @@ +export const siteName = "Leilukin's Hub"; +export const siteDomain = "leilukin.com"; +export const siteUrl = "https://" + siteDomain || "http://localhost:8080"; +export const siteAuthor = { + name: "Leilukin", + email: "contact@leilukin.com", + emailEncoded: '', + emailDecoyUrl: "emailme/", + url: siteUrl + "/about" +}; +export const siteLanguage = "en"; +export const siteLocale = "en_MY"; +export const siteDescription = siteAuthor.name + "'s personal website."; +export const fediverseHandle = "@Leilukin@dragonscave.space"; +export const feedPath = "/feed.xml"; +export const feedUrl = siteUrl + feedPath; +export const subsites = [ + { + siteName: "Tumbleblog", + subDomain: `tumbleblog.${siteDomain}`, + siteUrl() { return "https://" + this.subDomain; } + }, + { + siteName: `Beehive - ${siteAuthor.name}'s Fanlisitng Collective`, + subDomain: `fan.${siteDomain}`, + siteUrl() { return "https://" + this.subDomain; } + }, +]; \ No newline at end of file diff --git a/src/_includes/asummersend/base.njk b/src/_includes/asummersend/base.njk new file mode 100644 index 00000000..34b35bf6 --- /dev/null +++ b/src/_includes/asummersend/base.njk @@ -0,0 +1,19 @@ +{%- css %}{% include "src/assets/css/asummersend.css" %}{%- endcss %} + +{% extends "global/baselayout.njk" %} + +{% block metaTitle %} + +{% endblock %} + +{% block pageTitle %} +{{ title + " | " if title }}A Summer’s End — Hong Kong 1986 Shrine | {{ sitemeta.siteName | safe }} +{% endblock %} + +{% block favicon %} + +{% endblock %} + +{% block hero %}{% include "asummersend/hero.njk" %}{% endblock %} +{% block navbar %}{% include "asummersend/navbar.njk" %}{% endblock %} +{% block footer %}{% include "asummersend/footer.njk" %}{% endblock %} diff --git a/src/_includes/asummersend/content.njk b/src/_includes/asummersend/content.njk new file mode 100644 index 00000000..f77c6358 --- /dev/null +++ b/src/_includes/asummersend/content.njk @@ -0,0 +1,7 @@ +--- +layout: asummersend/base +--- + +{% extends "global/content.njk" %} + +{% block shrineInfo %}{% include "asummersend/shrineinfo.njk" %}{% endblock %} \ No newline at end of file diff --git a/src/_includes/asummersend/footer.njk b/src/_includes/asummersend/footer.njk new file mode 100644 index 00000000..b7c2c785 --- /dev/null +++ b/src/_includes/asummersend/footer.njk @@ -0,0 +1,6 @@ +{% extends "global/footer.njk" %} + +{% block footerContent %} +

    Made with ♥ by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 16 February 2023

    +{% endblock %} + diff --git a/src/_includes/asummersend/hero.njk b/src/_includes/asummersend/hero.njk new file mode 100644 index 00000000..e8c9af7b --- /dev/null +++ b/src/_includes/asummersend/hero.njk @@ -0,0 +1,46 @@ +{% extends "global/hero.njk" %} + +{% block heroImg %} + + + Banner of A Summer’s End — Hong Kong 1986 Shrine + +{% endblock %} + +{% block eventScript %} +const todayEvent = getTodayEvent(); + +if (todayEvent) { + heroTopBarEl.classList.remove('hidden'); + heroTopBarEl.innerHTML = todayEvent; +} + +function getTodayEvent() { + const date = new Date(); + const month = date.getMonth() + 1; + const day = date.getDate(); + const year = date.getFullYear(); + + const aseReleaseDate = new Date("2020-04-23").getFullYear(); + const aseAnniversary = year - aseReleaseDate; + + if (month === 2 && day === 16) + return ` + Today is Michelle Cheung's birthday. Happy Birthday Michelle! + `; + else if (month === 4 && day === 23) + return ` + Today is the ${aseAnniversary}-year anniversary of the release of {% cite "A Summer’s End — Hong Kong 1986" %}! + `; + else if (month === 8 && day === 9) + return ` + Today is Cecelia Cortes' birthday. Happy Birthday Cecelia! + `; + else if (month === 12 && day === 28) + return ` + Today is Sam Wong's birthday. Happy Birthday Sam! + `; + else + return null; +} +{% endblock %} diff --git a/src/_includes/asummersend/myplaylist.njk b/src/_includes/asummersend/myplaylist.njk new file mode 100644 index 00000000..a7e1f06c --- /dev/null +++ b/src/_includes/asummersend/myplaylist.njk @@ -0,0 +1,31 @@ +{% macro myASEPlaylist(intro) %} +{% imgFigure "/assets/projects/playlists/My-Dear-Summer-Lover-cover.avif", "Cover image of A Summer’s End fanmix 'My Dear Summer Lover: A Sam x Michelle Fanmix'" %} +[Image description: Sam and Michelle from A Summer’s End almost kisses, with a play symbol and text on the top left corner, and the text "My Dear Summer Lover: A Sam x Michelle Fanmix" in a digital style font in front.] +{% endimgFigure %} + +{{ intro }} [{% cite "A Summer’s End — Hong Kong 1986" %}](https://www.asummersend.com/home), dedicated to Sam and Michelle’s love story. + +This mix contains mostly Cantonese and English songs, with one Mandarin song. Majority of these songs were performed by Hong Kong artists and released in the 80s, because A Summer’s End took place in Hong Kong and in the 80s. + +I have carefully selected and arranged these tracks, so the lyrics would reflect Sam and Michelle’s relationship development throughout {% cite "A Summer’s End" %}. Therefore, the content of this mix could be considered spoilers if you have not played the visual novel. + +Since Oracle and Bone has cited Anita Mui as a major inspiration for them and this visual novel, I have also included multiple songs performed by Anita Mui in this mix. Because A Summer’s End is a lesbian story, when I was choosing which songs to include in this mix, I also prioritize songs that were performed by women artists. + +Tracklist: +1. [輕輕嘆]{lang="zh"} (Sigh Softly) — Deanie Ip +2. [愛我便說愛我吧]{lang="zh"} (Just Say You Love Me) — Anita Mui +3. [夏日戀人]{lang="zh"} (Summer Lover) — Anita Mui +4. [星空下的戀人]{lang="zh"} (Lovers Under the Stars) — Shirley Kwan +5. I Want Your Love — CHIC +6. [激情]{lang="zh"} (Passion) — Sandy Lam +7. When Will I See You Again — Teresa Carpio +8. [愛你、想你]{lang="zh"} (Love You, Miss You) — Anita Mui +9. Within You’ll Remain — Julia Hsu +10. I Want to Know What Love Is — Tina Arena +11. Touch — Anita Mui +12. [親密愛人]{lang="zh"} (Intimate Lover) — Anita Mui + +[Listen on Spotify](https://open.spotify.com/playlist/3SIV7VjSKhspYwugVIQjug){.link-btn} + + +{% endmacro %} \ No newline at end of file diff --git a/src/_includes/asummersend/navbar.njk b/src/_includes/asummersend/navbar.njk new file mode 100644 index 00000000..8c547b66 --- /dev/null +++ b/src/_includes/asummersend/navbar.njk @@ -0,0 +1,11 @@ +{% extends "global/navbar.njk" %} +{% set shrineHomeUrl = "/shrines/asummersend/" %} + +{% block navbarLinks %} +{% set navPages = collections.all | eleventyNavigation("A Summer’s End Shrine") %} +{%- for entry in navPages %} +
  1. + {{ entry.title }} +
  2. +{%- endfor %} +{% endblock %} diff --git a/src/_includes/asummersend/shrineinfo.njk b/src/_includes/asummersend/shrineinfo.njk new file mode 100644 index 00000000..0bea6ca6 --- /dev/null +++ b/src/_includes/asummersend/shrineinfo.njk @@ -0,0 +1,12 @@ +{% extends "global/shrineinfo.njk" %} + +{% block shrineAbout %} +

    Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {% cite "A Summer’s End — Hong Kong 1986" %}, an indie visual novel developed by Oracle and Bone. Set in 1980s Hong Kong, it tells of a love story between two women.

    +{% endblock %} + +{% block shrineLinks %} +
  3. Official Website +
  4. +
  5. Steam
  6. +
  7. itch.io
  8. +{% endblock %} diff --git a/src/_includes/cassettebeasts/base.njk b/src/_includes/cassettebeasts/base.njk new file mode 100644 index 00000000..a81a2649 --- /dev/null +++ b/src/_includes/cassettebeasts/base.njk @@ -0,0 +1,19 @@ +{%- css %}{% include "src/assets/css/cassettebeasts.css" %}{%- endcss %} + +{% extends "global/baselayout.njk" %} + +{% block metaTitle %} + +{% endblock %} + +{% block pageTitle %} +{{ title + " | " if title }}Cassette Beasts Shrine | {{ sitemeta.siteName | safe }} +{% endblock %} + +{% block favicon %} + +{% endblock %} + +{% block hero %}{% include "cassettebeasts/hero.njk" %}{% endblock %} +{% block navbar %}{% include "cassettebeasts/navbar.njk" %}{% endblock %} +{% block footer %}{% include "cassettebeasts/footer.njk" %}{% endblock %} diff --git a/src/_includes/cassettebeasts/content.njk b/src/_includes/cassettebeasts/content.njk new file mode 100644 index 00000000..e7674e69 --- /dev/null +++ b/src/_includes/cassettebeasts/content.njk @@ -0,0 +1,7 @@ +--- +layout: cassettebeasts/base +--- + +{% extends "global/content.njk" %} + +{% block shrineInfo %}{% include "cassettebeasts/shrineinfo.njk" %}{% endblock %} \ No newline at end of file diff --git a/src/_includes/cassettebeasts/footer.njk b/src/_includes/cassettebeasts/footer.njk new file mode 100644 index 00000000..2bfc9183 --- /dev/null +++ b/src/_includes/cassettebeasts/footer.njk @@ -0,0 +1,6 @@ +{% extends "global/footer.njk" %} + +{% block footerContent %} +

    Made with ♥ by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 3 August 2023

    +{% endblock %} + diff --git a/src/_includes/cassettebeasts/hero.njk b/src/_includes/cassettebeasts/hero.njk new file mode 100644 index 00000000..9068ea7e --- /dev/null +++ b/src/_includes/cassettebeasts/hero.njk @@ -0,0 +1,40 @@ +{% extends "global/hero.njk" %} + +{% block heroImg %} + + + Banner of Cassette Beasts Shrine + +{% endblock %} + +{% block eventScript %} +const todayEvent = getTodayEvent(); + +if (todayEvent) { + heroTopBarEl.classList.remove('hidden'); + heroTopBarEl.innerHTML = todayEvent; +} + +function getTodayEvent() { + const date = new Date(); + const month = date.getMonth() + 1; + const day = date.getDate(); + const year = date.getFullYear(); + + const cbReleaseDate = new Date("2023-04-26").getFullYear(); + const pierReleaseDate = new Date("2023-10-04").getFullYear(); + const cbAnniversary = year - cbReleaseDate; + const pierAnniversary = year - pierReleaseDate; + + if (month === 4 && day === 26) + return ` + Today is the ${cbAnniversary}-year anniversary of the release of {% cite "Cassette Beasts" %}! + `; + else if (month === 10 && day === 4) + return ` + Today is the ${pierAnniversary}-year anniversary of the release of Pier of the Unknown, the first DLC expansion of {% cite "Cassette Beasts" %}! + `; + else + return null; +} +{% endblock %} diff --git a/src/_includes/cassettebeasts/navbar.njk b/src/_includes/cassettebeasts/navbar.njk new file mode 100644 index 00000000..bd36dcc4 --- /dev/null +++ b/src/_includes/cassettebeasts/navbar.njk @@ -0,0 +1,11 @@ +{% extends "global/navbar.njk" %} +{% set shrineHomeUrl = "/shrines/cassettebeasts/" %} + +{% block navbarLinks %} +{% set navPages = collections.all | eleventyNavigation("Cassette Beasts Shrine") %} +{%- for entry in navPages %} +
  9. + {{ entry.title }} +
  10. +{%- endfor %} +{% endblock %} diff --git a/src/_includes/cassettebeasts/shrineinfo.njk b/src/_includes/cassettebeasts/shrineinfo.njk new file mode 100644 index 00000000..1c755f8b --- /dev/null +++ b/src/_includes/cassettebeasts/shrineinfo.njk @@ -0,0 +1,14 @@ +{% extends "global/shrineinfo.njk" %} + +{% block shrineAbout %} +

    Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {% cite "Cassette Beasts" %}, an indie monster collecting turn-based open-world role-playing video game developed by Bytten Studio and published by Raw Fury.

    +{% endblock %} + +{% block shrineLinks %} +
  11. Official Website +
  12. +
  13. Official Wiki
  14. +
  15. Steam
  16. +
  17. Bytten Studio
  18. +
  19. Cassette Beasts fanlisting
  20. +{% endblock %} diff --git a/src/_includes/global/baselayout.njk b/src/_includes/global/baselayout.njk new file mode 100644 index 00000000..cfc704e6 --- /dev/null +++ b/src/_includes/global/baselayout.njk @@ -0,0 +1,53 @@ + + + + + + + {# Open Graph Meta #} + {% block metaTitle %} + + {% endblock %} + {% include "global/meta.njk" %} + {# Feeds #} + {% include "global/feeds.njk" %} + {# Fonts #} + {% include "global/fonts.njk" %} + {# CSS #} + {% include "global/css-bundle.njk" %} + {% if hasTooltips %} + + {% endif %} + + {# Favicon #} + {% block favicon %}{% endblock %} + {# Verifications #} + + + + {# JavaScript #} + + {% if toc %} + + {% endif %} + {% if hasCodeBlock %} + + {% endif %} + {% if hasTooltips %} + + {% endif %} + + + {% block pageTitle %}{{ title + " | " if title }}{{ sitemeta.siteName | safe }}{% endblock %} + + + + + {% block hero %}{% include "global/hero.njk" %}{% endblock %} + {% block navbar %}{% include "global/navbar.njk" %}{% endblock %} +
    + {{ content | safe }} +
    + {% block footer %}{% include "global/footer.njk" %}{% endblock %} + + diff --git a/src/_includes/global/content.njk b/src/_includes/global/content.njk new file mode 100644 index 00000000..01e25c04 --- /dev/null +++ b/src/_includes/global/content.njk @@ -0,0 +1,115 @@ +
    + {% if isArticle or hasBreadcrumbs %} + + {% endif %} + +

    {{ articleTitle or pageTitle or title }}

    + + {% if isArticle %} + + {% else %} + {% if desc %} +

    {{ desc }}

    + {% endif %} + {% endif %} +
    + + + {% if toc %} + {% include "global/toc.njk" %} + {% endif %} + + {% set contentEl = "article" if isArticle or articleElement else "div" %} + + <{{contentEl}} class="content{{' content--divided' if isContentDivided }}"> + {{ content | safe }} + + {% if tags and tags.includes("posts") %} + {%- if collections.posts.length > 1 %} + + {%- endif %} + {% endif %} + + + {% if + tags and tags.includes("articles") + or tags and tags.includes("posts") + or page.url === "/articles/" + or tags and tags.includes("blog pages") + %} + {% include "main/content-nav.njk" %} + {% endif %} + + {% block shrineInfo %}{% endblock %} + + +{%- css %} +.breadcrumbs { + margin-bottom: 0.7em; + display: flex; + gap: 0.5em; + flex-wrap: wrap; + justify-content: center; +} + +.blog__post--pagination { + padding-top: 1em; + margin-block-start: 2.5em; + border-top: 0.1em solid var(--clr-title-border); +} + +.blog__post--nextprev { + list-style-type: ""; + padding: 0; + margin: 0; + display: grid; + gap: 0.7em; + grid-template-columns: repeat(2, 1fr); + grid-template-areas: 'prev next'; +} + +.blog__post--prev { grid-area: prev; } +.blog__post--next { grid-area: next; } +{% endcss %} diff --git a/src/_includes/global/css-bundle.njk b/src/_includes/global/css-bundle.njk new file mode 100644 index 00000000..b5cd78ac --- /dev/null +++ b/src/_includes/global/css-bundle.njk @@ -0,0 +1,14 @@ +{% set cssFiles = [ + "global", + "a11y-syntax-highlighting-dark", + "general", + "content", + "plugins", + "components", + "pridesymbols", + "utility" +] %} + +{%- for file in cssFiles -%} + +{%- endfor -%} \ No newline at end of file diff --git a/src/_includes/global/feeds.njk b/src/_includes/global/feeds.njk new file mode 100644 index 00000000..66a1aa98 --- /dev/null +++ b/src/_includes/global/feeds.njk @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_includes/global/fonts.njk b/src/_includes/global/fonts.njk new file mode 100644 index 00000000..b6b0d138 --- /dev/null +++ b/src/_includes/global/fonts.njk @@ -0,0 +1,19 @@ + + + + diff --git a/src/_includes/global/footer.njk b/src/_includes/global/footer.njk new file mode 100644 index 00000000..a150eeb1 --- /dev/null +++ b/src/_includes/global/footer.njk @@ -0,0 +1,53 @@ + + +{%- css %} +:root { --footer-gap: 0.5em; } + +.footer { + margin-top: auto; + width: 100%; + background: var(--clr-main-footer-bg); + padding: 1.5rem 1rem clamp(1.5rem, calc(100% - 1.5rem), 3.5rem); + text-align: center; + display: grid; + gap: var(--footer-gap); +} + +.footer__links, +.footer__shrines { + display: flex; + flex-wrap: wrap; + justify-content: center; + column-gap: var(--footer-gap); +} + +.footer__links { justify-self: center; } +.footer__shrines { align-self: center; } +{% endcss %} diff --git a/src/_includes/global/h-card.njk b/src/_includes/global/h-card.njk new file mode 100644 index 00000000..4544b3ed --- /dev/null +++ b/src/_includes/global/h-card.njk @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/src/_includes/global/hero.njk b/src/_includes/global/hero.njk new file mode 100644 index 00000000..7971887e --- /dev/null +++ b/src/_includes/global/hero.njk @@ -0,0 +1,46 @@ +
    + +
    + {% block heroImg %} + {{ heroImg }} + {% endblock %} +
    +
    + +{%- css %} +.hero { + width: 100%; + background-color: var(--clr-hero-bg); + display: flex; + flex-direction: column; + justify-content: center; + text-align: center; +} + +.hero__top-bar { + background: var(--clr-navbar-bg); + width: 100%; + padding: 0.5em 0.7em; +} + +.hero__img { + display: grid; + place-content: center; +} + +.hero img { + object-fit: contain; + overflow: hidden; + max-height: 16rem; +} +{% endcss %} + +{%- js %} +const hero = document.querySelector(".hero"); +const heroTopBarEl = document.querySelector(".hero__top-bar"); +const headerImgEl = document.querySelector(".hero__img"); + +{% block eventScript %} +{{ eventScript }} +{% endblock %} +{% endjs %} diff --git a/src/_includes/global/macros.njk b/src/_includes/global/macros.njk new file mode 100644 index 00000000..c8c26fd6 --- /dev/null +++ b/src/_includes/global/macros.njk @@ -0,0 +1,26 @@ +{%- macro articleList(tag) -%} + +{%- endmacro -%} + +{%- macro modEntry(params) -%} +{% headingAnchor 3 %}{{ params.title }}{% endheadingAnchor %} +
    + Banner of {{ params.title }} mod +

    {{ params.desc | safe }}

    +

    Download the mod:

    +
    + {%- for download in params.downloads -%} + {{ download.site }} + {%- endfor -%} +
    +
    +{%- endmacro -%} diff --git a/src/_includes/global/meta.njk b/src/_includes/global/meta.njk new file mode 100644 index 00000000..939ee95d --- /dev/null +++ b/src/_includes/global/meta.njk @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/_includes/global/navbar.njk b/src/_includes/global/navbar.njk new file mode 100644 index 00000000..817fbd6d --- /dev/null +++ b/src/_includes/global/navbar.njk @@ -0,0 +1,105 @@ +{% set navLinksEl %} + {%- if tags and tags.includes("shrine pages") %} +
  21. + Shrine Home +
  22. + {%- endif -%} + {% block navbarLinks %}{% endblock %} + {%- if tags and tags.includes("shrine pages") %} +
  23. Shrine Directory
  24. +
  25. Main Site
  26. + {%- endif -%} +{% endset %} + + + + +{%- css %} +.navbar { + background: var(--clr-navbar-bg); + width: 100%; + z-index: 998; + position: sticky; + top: 0; + padding: 0.6em; +} + +.navbar__menu { + list-style-type: ""; + margin: 0; + padding: 0; + display: flex; + gap: 1em; + flex-wrap: wrap; + text-align: center; +} + +.navbar__menu a { + color: var(--clr-navbar-link); + text-decoration: none; + font-weight: 700; + display: inline-block; +} + +.navbar__menu a:hover { color: var(--clr-link-hover); } +.navbar__menu a:focus { outline-offset: 0.2em; } + +.navbar__links { + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; + gap: 0.5em; +} + +.navbar__toggle { + background-color: inherit; + color: var(--clr-navbar-link); + border: none; + padding: 0; + font-size: 1.25rem; + font-weight: 700; + display: none; + align-items: center; + gap: 0.3em; +} + +.navbar__toggle svg { fill: currentColor; } + +.navbar__toggle:focus, +.navbar__menu a:focus { outline-offset: 0.1em; } +.navbar__toggle:focus, +.navbar__menu a:focus { outline: 0.15em solid var(--clr-navbar-link); } + +.navbar__popover { + background: var(--clr-navbar-bg); + border: 0.15em solid var(--clr-navbar-link); + padding: 1.5em; + max-width: 85%; +} + +.navbar__popover::backdrop { + background-color: black; + opacity: 0.5; +} + +@supports selector([popover]) { + .navbar__toggle { display: flex; } + .navbar__links { display: none; } +} + +/* Tablet screen size */ +@media only screen and (min-width: 43.75rem) { + .navbar { padding: 1em 0.6em; } + .navbar__toggle, .navbar__popover { display: none; } + .navbar__links { display: flex; } +} +{% endcss %} diff --git a/src/_includes/global/pagination-oldnew.njk b/src/_includes/global/pagination-oldnew.njk new file mode 100644 index 00000000..14a6cfdd --- /dev/null +++ b/src/_includes/global/pagination-oldnew.njk @@ -0,0 +1,98 @@ +{% set firstLabel %} + +Newest{% endset %} + +{% set prevLabel %} + +Newer{% endset %} + +{% set nextLabel %}Older + +{% endset %} + +{% set lastLabel %}Oldest + +{% endset %} + + + +{%- css %} +.pagination__wrapper { + display: grid; + place-content: center; + margin-top: 3em; +} + +.pagination { + list-style-type: ""; + padding: 0; + margin: 0; + display: flex; + gap: 0.5em; + flex-wrap: wrap; + justify-content: center; +} + +.pagination li { + text-align: center; + padding: 0.3em 0.7em; + color: var(--clr-title-border); + background-color: var(--clr-code-bg); +} + +.pagination li:has(a) { background-color: var(--clr-title-border); } +.pagination li:has(a):hover { background-color: var(--clr-link-hover); } + +.pagination li:has(a):focus-within { + outline: 0.2em solid var(--clr-title-border); + outline-offset: 0.15em; +} + +.pagination li a { + color: var(--clr-link-btn-hover); + text-decoration: none; +} + +.pagination li a:focus { outline: none; } +{% endcss %} diff --git a/src/_includes/global/shrineinfo.njk b/src/_includes/global/shrineinfo.njk new file mode 100644 index 00000000..c6fc0c93 --- /dev/null +++ b/src/_includes/global/shrineinfo.njk @@ -0,0 +1,39 @@ + + +{%- css %} +.right-sidebar { + background-color: var(--clr-content-bg); + font-size: clamp(0.9rem, 0.9rem + 3vw, 1rem); +} + +.shrine__info { + padding: 1rem; + max-height: var(--ht-sticky-sidebar); + overflow-x: auto; +} + +.shrine__info h2 { + font-size: clamp(1.5rem, 1rem + 3vw, 1.7rem); + margin-bottom: 0.2em; +} + +.shrine__info h3 { + font-size: clamp(1.3rem, 1rem + 3vw, 1.5rem); + margin-top: 1em; +} + +.shrine__info ul { margin-top: 0.5em; } +{% endcss %} diff --git a/src/_includes/global/toc.njk b/src/_includes/global/toc.njk new file mode 100644 index 00000000..1e53d10a --- /dev/null +++ b/src/_includes/global/toc.njk @@ -0,0 +1,57 @@ + + +{%- css %} +.toc__wrapper { + max-height: var(--ht-sticky-sidebar); + overflow-x: auto; + background-color: var(--clr-content-bg); + padding: 1rem 1.3rem; +} + +.toc__heading { + font-size: 1.3rem; + font-weight: 700; + color: var(--clr-sub-heading); +} + +.toc__wrapper[open] > .toc__heading { + margin-bottom: 0.5em; +} + +.toc ol, .toc ol ol { + display: grid; + gap: 0.3em; +} + +.toc ol { + border-top: 0.1em solid var(--clr-title-border); + padding-left: 1.3em; + padding-top: 1em; +} + +.toc ol ol { + border-top: none; + list-style-type: disc; + padding-left: 1em; + padding-top: 0.3em; +} + +.toc ol a { + font-size: 1.1rem; + padding-left: 0.3em; +} + +.toc ol ol a { + padding: 0; + font-size: 1rem; +} +{% endcss %} diff --git a/src/_includes/global/top-btn.njk b/src/_includes/global/top-btn.njk new file mode 100644 index 00000000..6a50d2b2 --- /dev/null +++ b/src/_includes/global/top-btn.njk @@ -0,0 +1,43 @@ + + + Back to Top + + +{%- css %} +.top-btn, +.top-btn:hover { + color: var(--clr-top-btn-txt); + text-decoration: none; + font-weight: 700; +} + +.top-btn { + position: fixed; + bottom: 0.5rem; + right: 0.5rem; + z-index: 999; + + background-color: var(--clr-top-btn-bg); + display: flex; + align-items: center; + border-radius: 50em; + padding: 0.3em 0.5em; + gap: 0.2em; +} + +.top-btn:focus { + outline: 0.25em solid var(--clr-top-btn-bg); + outline-offset: 0.15em; +} + +.top-btn__arrow { + display: inline-block; + width: 1em; + aspect-ratio: 1 / 1; + stroke-width: 0; + stroke: currentColor; + fill: currentColor; +} +{% endcss %} diff --git a/src/_includes/main/archive.njk b/src/_includes/main/archive.njk new file mode 100644 index 00000000..1c07d8bd --- /dev/null +++ b/src/_includes/main/archive.njk @@ -0,0 +1,16 @@ + \ No newline at end of file diff --git a/src/_includes/main/base.njk b/src/_includes/main/base.njk new file mode 100644 index 00000000..0a6100f9 --- /dev/null +++ b/src/_includes/main/base.njk @@ -0,0 +1,5 @@ +{% extends "global/baselayout.njk" %} + +{% block hero %}{% include "main/hero.njk" %}{% endblock %} +{% block navbar %}{% include "main/navbar.njk" %}{% endblock %} +{% block footer %}{% include "main/footer.njk" %}{% endblock %} \ No newline at end of file diff --git a/src/_includes/main/changelogs-list.njk b/src/_includes/main/changelogs-list.njk new file mode 100644 index 00000000..e10d7277 --- /dev/null +++ b/src/_includes/main/changelogs-list.njk @@ -0,0 +1,7 @@ +{% for log in changelogList | reverse %} +{% headingAnchor 2, log.fileSlug %} +{{ log.date | formatDate }} +{% endheadingAnchor %} + +{{ log.content | safe }} +{%- endfor %} diff --git a/src/_includes/main/changelogs.njk b/src/_includes/main/changelogs.njk new file mode 100644 index 00000000..3e4da0f7 --- /dev/null +++ b/src/_includes/main/changelogs.njk @@ -0,0 +1,62 @@ +--- +layout: main/content +articleElement: true +--- + +{% set currentUrl %}{{ page.url }}{% endset %} + + + +

    To get notified of the updates on this website, you can subscribe to its RSS feed, which contains new articles, blog posts and website changelogs.

    + +{{ content | safe }} + +{%- css %} +.changelog__nav, +.changelog__nav--links { + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; +} + +.changelog__nav { + flex-direction: column; + gap: 0.2em; + align-self: center; + font-weight: 700; + gap: 0.5em; +} + +.changelog__nav--links li { + text-align: center; + align-self: center; +} + +.changelog__nav--links [aria-current="page"] { + text-decoration: none; + color: var(--clr-bold-txt); +} + +@media (min-width: 640px) { + .changelog__nav { + flex-direction: row; + gap: 1em; + } +} +{% endcss %} diff --git a/src/_includes/main/content-nav.njk b/src/_includes/main/content-nav.njk new file mode 100644 index 00000000..2823d4ed --- /dev/null +++ b/src/_includes/main/content-nav.njk @@ -0,0 +1,23 @@ + + +{%- css %} +.content__nav { + padding: 1.2em clamp(1em, 5%, 1.5em); + background-color: var(--clr-content-bg); +} + +.content__nav--title { font-size: 1.7rem; } +{% endcss %} diff --git a/src/_includes/main/content.njk b/src/_includes/main/content.njk new file mode 100644 index 00000000..79e86d45 --- /dev/null +++ b/src/_includes/main/content.njk @@ -0,0 +1,5 @@ +--- +layout: main/base +--- + +{% extends "global/content.njk" %} \ No newline at end of file diff --git a/src/_includes/main/footer.njk b/src/_includes/main/footer.njk new file mode 100644 index 00000000..735b4118 --- /dev/null +++ b/src/_includes/main/footer.njk @@ -0,0 +1,29 @@ +{% extends "global/footer.njk" %} + +{% block footerContent %} +

    Footer Navigation:

    +{% set currentUrl %}{{ page.url }}{% endset %} + +

    Made with ♥ by {{ sitemeta.siteAuthor.name }} since 11 September 2022

    +{% endblock %} + diff --git a/src/_includes/main/hero.njk b/src/_includes/main/hero.njk new file mode 100644 index 00000000..b1161e05 --- /dev/null +++ b/src/_includes/main/hero.njk @@ -0,0 +1,141 @@ +{% extends "global/hero.njk" %} + +{% block heroImg %} +Banner of Leilukin's Hub +{% endblock %} + +{% set heroDropShadow %} +drop-shadow(0.1rem 0.1rem 0.2rem black) +drop-shadow(0.1rem 0.1rem 0.2rem rgba(30, 30, 30, 0.8)) +{% endset%} +{%- css %}.hero img { filter: {{ heroDropShadow }}; }{% endcss %} + +{% block eventScript %} +const todayEvent = getTodayEvent(); + +if (todayEvent) { + heroTopBarEl.classList.remove('hidden'); + heroTopBarEl.innerHTML = todayEvent.blurb; + + if (todayEvent.class) { + headerImgEl.classList.add(todayEvent.class); + } +} + +function getTodayEvent() { + const date = new Date(); + const month = date.getMonth() + 1; + const day = date.getDate(); + const year = date.getFullYear(); + const weekOfMonth = Math.ceil(day / 7); + + const leilukinsHubLaunchDate = new Date("2022-09-11").getFullYear(); + const siteAnniversary = year - leilukinsHubLaunchDate; + + if (month === 3 && day === 1) + return { + blurb: `Today is Zero Discrimination Day`, + class: "flag-progress-intersex", + }; + else if (month === 3 && day === 8) + return { + blurb: `Today is International Women's Day`, + class: "symbol-venus", + }; + else if (month === 3 && day === 31) + return { + blurb: `Today is Trans Day of Visibility`, + class: "flag-trans", + }; + else if (month === 4 && day === 6) + return { + blurb: `Today is International Asexuality Day`, + class: "flag-ace", + }; + else if (month === 4 && day === 26) + return { + blurb: `Today is Lesbian Visibility Day`, + class: "flag-lesbian", + }; + else if (month === 4 && weekOfMonth === 4) + return { + blurb: `This week is Lesbian Visibility Week`, + class: "flag-lesbian", + }; + else if (month === 5 && day === 17) + return { + blurb: `Today is International Day Against Homophobia, Biphobia and Transphobia`, + class: "flag-progress", + }; + else if (month === 5 && day === 19) + return { + blurb: `Today is Agender Pride Day`, + class: "flag-agender", + }; + else if (month === 5 && day === 25) + return { + blurb: `Today is Pansexual and Panromantic Awareness and Visibility Day`, + class: "flag-pan", + }; + else if (month === 6) + return { + blurb: `Happy Pride Month!`, + class: "flag-progress-intersex", + }; + else if (month === 7 && day === 14) + return { + blurb: `Today is Non-Binary People's Day`, + class: "flag-non-binary", + }; + else if (month === 7 && day === 28) + return { + blurb: `Today is Leilukin's Birthday` + }; + else if (month === 7) + return{ + blurb: `Happy Disability Pride Month!`, + class: "flag-disability" + } + else if (month === 8 && day === 25) + return { + blurb: `Today is Aromantic Spectrum Visibility Day`, + class: "flag-aro", + }; + else if (month === 9 && day === 11) + return { + blurb: `Today is the ${siteAnniversary}-year anniversary of the launch of {{ sitemeta.siteName }}` + }; + else if (month === 9 && day === 23) + return { + blurb: `Today is Bi Visibility Day`, + class: "flag-bi", + }; + else if (month === 10 && day === 8) + return { + blurb: `Today is International Lesbian Day`, + class: "flag-lesbian", + }; + else if (month === 10 && day === 11) + return { + blurb: `Today is National Coming Out Day`, + class: "flag-rainbow", + }; + else if (month === 10 && day === 17) + return { + blurb: `Today is the start of Genderfluid Visibility Week`, + class: "flag-genderfluid", + }; + else if (month === 10 && day === 26) + return { + blurb: `Today is Intersex Awareness Day`, + class: "flag-intersex", + }; + else if (month === 11 && day === 13) + return { + blurb: `Today is the start of Transgender Awareness Week`, + class: "flag-trans", + }; + else + return null; +} +{% endblock %} diff --git a/src/_includes/main/links.njk b/src/_includes/main/links.njk new file mode 100644 index 00000000..79c8f6cb --- /dev/null +++ b/src/_includes/main/links.njk @@ -0,0 +1,48 @@ +--- +layout: main/content.njk +articleElement: true +isContentDivided: true +--- +{% set linkGroups = collections["link groups"] %} + +
    +

    Link to My Website

    + {% include "main/my-button.njk" %} +
    + +
    +

    Links by Category

    + +

    Use the following tabs to view my link collection by category.

    + +
    + +
    + {% for group in linkGroups %} +
    + {% headingAnchor 2 %}{{ group.data.title }}{% endheadingAnchor %} + + {% if group.data.toc %} +
    +

    Table of Contents

    + {{ group.content | toc | safe }} +
    + {% endif %} + + {{ group.content | safe }} + + {% if group.data.updated %} +

    (This {{ group.data.title }} list was last updated on )

    + {% endif %} + + Back to tabs +
    + {%- endfor %} +
    diff --git a/src/_includes/main/my-button.njk b/src/_includes/main/my-button.njk new file mode 100644 index 00000000..c6a27631 --- /dev/null +++ b/src/_includes/main/my-button.njk @@ -0,0 +1,13 @@ +

    You can link to my website using my site button. I strongly recommend you to upload my site button to your own website instead of hotlinking the button.

    + +
    + Leilukin's Hub website button with 88×31 pixel size + Leilukin's Hub website button with 200×40 pixel size +
    + +{%- css %} +.my-btn { + align-items: center; + margin-top: 1em; +} +{% endcss %} \ No newline at end of file diff --git a/src/_includes/main/navbar.njk b/src/_includes/main/navbar.njk new file mode 100644 index 00000000..c47459e9 --- /dev/null +++ b/src/_includes/main/navbar.njk @@ -0,0 +1,11 @@ +{% extends "global/navbar.njk" %} + +{% block navbarLinks %} +{% set currentUrl %}{{ page.url }}{% endset %} +{% set navPages = collections["navbar links"] | eleventyNavigation %} +{%- for entry in navPages %} +
  27. + {{ entry.title }} +
  28. +{%- endfor %} +{% endblock %} diff --git a/src/_includes/main/slashpage.njk b/src/_includes/main/slashpage.njk new file mode 100644 index 00000000..2bb2fe5d --- /dev/null +++ b/src/_includes/main/slashpage.njk @@ -0,0 +1,9 @@ +--- +layout: main/content +--- + +{{ content | safe }} + +{% if updated %} +

    (This {{ keyword if keyword else "page" }} was last updated on )

    +{% endif %} diff --git a/src/_includes/main/statuscafe.njk b/src/_includes/main/statuscafe.njk new file mode 100644 index 00000000..94f15aef --- /dev/null +++ b/src/_includes/main/statuscafe.njk @@ -0,0 +1,39 @@ +
    +

    My Lastest Status Update

    +
    +
    + +
    + +

    View my statuses on status.cafe

    +
    + +{%- css %}#statuscafe-content { margin-bottom: 0.5em; }{% endcss %} + +{%- js %} +const statusCafeContent = document.getElementById("statuscafe-content"); +statusCafeContent.innerHTML = ` +

    Fetching data from status.cafe...

    +`; + +const fetchStatusCafe = async () => { + try { + const res = await fetch('https://status.cafe/users/leilukin/status.json'); + const data = await res.json(); + + if (!data.content.length) { + document.getElementById("statuscafe-content").innerHTML = "No status yet." + return; + } + + document.getElementById("statuscafe-userinfo").innerHTML = data.face + ' ' + data.timeAgo; + statusCafeContent.innerHTML = data.content; + } catch (error) { + console.error(error); + document.getElementById("statuscafe-content").textContent = `[ERROR] ${error}`; + } +}; +fetchStatusCafe(); +{% endjs %} diff --git a/src/_includes/main/support-me.njk b/src/_includes/main/support-me.njk new file mode 100644 index 00000000..231409fd --- /dev/null +++ b/src/_includes/main/support-me.njk @@ -0,0 +1,15 @@ +

    If you enjoy my work, you can support me on Ko-Fi.

    +
    + + Buy Me a Coffee at ko-fi.com +
    + +{%- css %} +.support-me { + display: flex; + flex-wrap: wrap; + gap: 1em; + align-items: center; + margin-top: 0.7em; +} +{% endcss %} diff --git a/src/_includes/main/webcliques.njk b/src/_includes/main/webcliques.njk new file mode 100644 index 00000000..a2953a70 --- /dev/null +++ b/src/_includes/main/webcliques.njk @@ -0,0 +1,56 @@ +{%- css %}.color-bg { padding: 0.125em 0.3em; }{% endcss %} + +{%- macro webCliqueImg(file, width, height, alt="") -%} +{{ alt }} +{%- endmacro -%} + + + +

    Pixel cliques I joined can be found on my Adoptables page.

    diff --git a/src/_includes/misc/404.njk b/src/_includes/misc/404.njk new file mode 100644 index 00000000..493fdc8b --- /dev/null +++ b/src/_includes/misc/404.njk @@ -0,0 +1,12 @@ +--- +layout: misc/base +title: "404: Page Not Found" +h1: "404: Page Not Found" +eleventyExcludeFromCollections: true +--- + +

    Oops! Either the page you are looking for does not exist, or it has been moved to a diffrent part of this site.

    + +
    + 🏠 Back to Home +
    \ No newline at end of file diff --git a/src/_includes/misc/base.njk b/src/_includes/misc/base.njk new file mode 100644 index 00000000..468c6de5 --- /dev/null +++ b/src/_includes/misc/base.njk @@ -0,0 +1,29 @@ + + + + + + + + {# Open Graph meta #} + + {% include "global/meta.njk" %} + + {# Feeds #} + {% include "global/feeds.njk" %} + + {# Style #} + {% include "global/fonts.njk" %} + + + {% if title %} {{ title }} | {% endif %} {{ sitemeta.siteName }} + + +
    + {{ sitemeta.siteName }} website banner +

    {{ h1 }}

    + + {{ content | safe }} +
    + + diff --git a/src/_includes/pokemonoras/base.njk b/src/_includes/pokemonoras/base.njk new file mode 100644 index 00000000..e53c5261 --- /dev/null +++ b/src/_includes/pokemonoras/base.njk @@ -0,0 +1,19 @@ +{%- css %}{% include "src/assets/css/pokemonoras.css" %}{%- endcss %} + +{% extends "global/baselayout.njk" %} + +{% block metaTitle %} + +{% endblock %} + +{% block pageTitle %} +{{ title + " | " if title }}Pokémon Omega Ruby and Alpha Sapphire Shrine | {{ sitemeta.siteName | safe }} +{% endblock %} + +{% block favicon %} + +{% endblock %} + +{% block hero %}{% include "pokemonoras/hero.njk" %}{% endblock %} +{% block navbar %}{% include "pokemonoras/navbar.njk" %}{% endblock %} +{% block footer %}{% include "pokemonoras/footer.njk" %}{% endblock %} diff --git a/src/_includes/pokemonoras/content.njk b/src/_includes/pokemonoras/content.njk new file mode 100644 index 00000000..913a7c50 --- /dev/null +++ b/src/_includes/pokemonoras/content.njk @@ -0,0 +1,7 @@ +--- +layout: pokemonoras/base +--- + +{% extends "global/content.njk" %} + +{% block shrineInfo %}{% include "pokemonoras/shrineinfo.njk" %}{% endblock %} \ No newline at end of file diff --git a/src/_includes/pokemonoras/footer.njk b/src/_includes/pokemonoras/footer.njk new file mode 100644 index 00000000..9254a355 --- /dev/null +++ b/src/_includes/pokemonoras/footer.njk @@ -0,0 +1,6 @@ +{% extends "global/footer.njk" %} + +{% block footerContent %} +

    Made with ♥ by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 21 November 2024

    +{% endblock %} + diff --git a/src/_includes/pokemonoras/hero.njk b/src/_includes/pokemonoras/hero.njk new file mode 100644 index 00000000..82e06ca8 --- /dev/null +++ b/src/_includes/pokemonoras/hero.njk @@ -0,0 +1,34 @@ +{% extends "global/hero.njk" %} + +{% block heroImg %} + + + Banner of Pokémon Omega Ruby and Alpha Sapphire Shrine + +{% endblock %} + +{% block eventScript %} +const todayEvent = getTodayEvent(); + +if (todayEvent) { + heroTopBarEl.classList.remove('hidden'); + heroTopBarEl.innerHTML = todayEvent; +} + +function getTodayEvent() { + const date = new Date(); + const month = date.getMonth() + 1; + const day = date.getDate(); + const year = date.getFullYear(); + + const orasReleaseDate = new Date("2014-11-21").getFullYear(); + const orasAnniversary = year - orasReleaseDate; + + if (month === 11 && day === 21) + return ` + Today is the ${orasAnniversary}-year anniversary of the release of Pokémon Omega Ruby" and Alpha Sapphire! + `; + else + return null; +} +{% endblock %} diff --git a/src/_includes/pokemonoras/navbar.njk b/src/_includes/pokemonoras/navbar.njk new file mode 100644 index 00000000..2392998d --- /dev/null +++ b/src/_includes/pokemonoras/navbar.njk @@ -0,0 +1,11 @@ +{% extends "global/navbar.njk" %} +{% set shrineHomeUrl = "/shrines/pokemonoras/" %} + +{% block navbarLinks %} +{% set navPages = collections.all | eleventyNavigation("ORAS Shrine") %} +{%- for entry in navPages %} +
  29. + {{ entry.title }} +
  30. +{%- endfor %} +{% endblock %} diff --git a/src/_includes/pokemonoras/shrineinfo.njk b/src/_includes/pokemonoras/shrineinfo.njk new file mode 100644 index 00000000..4ae40c0a --- /dev/null +++ b/src/_includes/pokemonoras/shrineinfo.njk @@ -0,0 +1,10 @@ +{% extends "global/shrineinfo.njk" %} + +{% block shrineAbout %} +

    Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {% cite "Pokémon Omega Ruby and Alpha Sapphire" %}, remakes of the 2002 Game Boy Advance role-playing video games {% cite "Pokémon Ruby" %} and {% cite "Pokémon Sapphire" %}. The games are part of the sixth generation of the {% cite "Pokémon" %} main series of video games, developed by Game Freak and published by The Pokémon Company and Nintendo for the Nintendo 3DS.

    +{% endblock %} + +{% block shrineLinks %} +
  31. Bulbapedia
  32. +
  33. Pokémon Ruby, Sapphire, Omega Ruby and Alpha Sapphire fanlisting
  34. +{% endblock %} diff --git a/src/_includes/starwarskotor/base.njk b/src/_includes/starwarskotor/base.njk new file mode 100644 index 00000000..8045ec4a --- /dev/null +++ b/src/_includes/starwarskotor/base.njk @@ -0,0 +1,19 @@ +{%- css %}{% include "src/assets/css/starwarskotor.css" %}{%- endcss %} + +{% extends "global/baselayout.njk" %} + +{% block metaTitle %} + +{% endblock %} + +{% block pageTitle %} +{{ title + " | " if title }}Star Wars: Knights of the Old Republic Shrine | {{ sitemeta.siteName | safe }} +{% endblock %} + +{% block favicon %} + +{% endblock %} + +{% block hero %}{% include "starwarskotor/hero.njk" %}{% endblock %} +{% block navbar %}{% include "starwarskotor/navbar.njk" %}{% endblock %} +{% block footer %}{% include "starwarskotor/footer.njk" %}{% endblock %} diff --git a/src/_includes/starwarskotor/content.njk b/src/_includes/starwarskotor/content.njk new file mode 100644 index 00000000..d502e4c4 --- /dev/null +++ b/src/_includes/starwarskotor/content.njk @@ -0,0 +1,7 @@ +--- +layout: starwarskotor/base +--- + +{% extends "global/content.njk" %} + +{% block shrineInfo %}{% include "starwarskotor/shrineinfo.njk" %}{% endblock %} \ No newline at end of file diff --git a/src/_includes/starwarskotor/footer.njk b/src/_includes/starwarskotor/footer.njk new file mode 100644 index 00000000..6cf5e10b --- /dev/null +++ b/src/_includes/starwarskotor/footer.njk @@ -0,0 +1,6 @@ +{% extends "global/footer.njk" %} + +{% block footerContent %} +

    Made with ♥ and the Force by {{ sitemeta.siteAuthor.name }} • Shrine Launched: 17 February 2023

    +{% endblock %} + diff --git a/src/_includes/starwarskotor/hero.njk b/src/_includes/starwarskotor/hero.njk new file mode 100644 index 00000000..4f0f50f6 --- /dev/null +++ b/src/_includes/starwarskotor/hero.njk @@ -0,0 +1,40 @@ +{% extends "global/hero.njk" %} + +{% block heroImg %} + + + anner of Star Wars: Knights of the Old Republic Shrine + +{% endblock %} + +{% block eventScript %} +const todayEvent = getTodayEvent(); + +if (todayEvent) { + heroTopBarEl.classList.remove('hidden'); + heroTopBarEl.innerHTML = todayEvent; +} + +function getTodayEvent() { + const date = new Date(); + const month = date.getMonth() + 1; + const day = date.getDate(); + const year = date.getFullYear(); + + const kotor1ReleaseDate = new Date("2003-07-15").getFullYear(); + const kotor2ReleaseDate = new Date("2004-12-06").getFullYear(); + const kotor1Anniversary = year - kotor1ReleaseDate; + const kotor2Anniversary = year - kotor2ReleaseDate; + + if (month === 7 && day === 15) + return ` + Today is the ${kotor1Anniversary}-year anniversary of the release of Star Wars: Knihgts of the Old Republic + `; + else if (month === 12 && day === 6) + return ` + Today is the ${kotor2Anniversary}-year anniversary of the release of Star Wars: Knights of the Old Republic II — The Sith Lords + `; + else + return null; +} +{% endblock %} diff --git a/src/_includes/starwarskotor/modlist-info.md b/src/_includes/starwarskotor/modlist-info.md new file mode 100644 index 00000000..238e763e --- /dev/null +++ b/src/_includes/starwarskotor/modlist-info.md @@ -0,0 +1,67 @@ +{% set kotor2FullTitle %}{{ " II: The Sith Lords" if page.url.includes("kotor2") else ""}}{% endset %} +{% set kotor2ShortTitle %}{{ " 2" if page.url.includes("kotor2") else ""}}{% endset %} + +{% container "article", "content__section" %} +## Spoiler Warning + +WARNING: The full list of my mod build contains spoilers for Star Wars: Knights of the Old Republic{{ kotor2FullTitle }}! + +My mod build is not designed for new KotOR{{ kotor2ShortTitle }} players, so I will not censor any information that contains spoilers for the game. In general, I do not recommend using mods in your very first playthrough of any video game, so you can judge and choose which mods you want to use after finishing the game for the first time. The only exceptions are the [KotOR 1 Community Patch](https://deadlystream.com/files/file/1258-kotor-1-community-patch/) for {% cite "KotOR 1" %} and [The Sith Lords Restored Content Mod](https://deadlystream.com/files/file/578-tsl-restored-content-mod/) for KotOR{{ kotor2ShortTitle }}, which are absolutely essential mods that even if you want to use them in your first playthrough, you definitely have my support. + +If you are going to play KotOR{{ kotor2ShortTitle }} for the first time, and you do not mind using mods, I would suggest checking out the Spoiler-Free version of [KotOR Community Portal’s KotOR mod builds](https://kotor.neocities.org/modding/) instead. +{% endcontainer %} + +{% container "article", "content__section" %} +## Mod Categories + +The mods I included in my mod build are divided into the following categories, which clarifies the types of changes the mod makes: + +Added Content +: Added content is an entirely fan-made new content that is not intended in the vanilla game. + +Appearance Change +: Appearance change is not inherently graphics improvement, but rather a modification to the default appearance of a character, item, location, interface, etc. + +Bugfix +: As the name implies, this type of mod fixes bugs with the vanilla game. + +Graphics Improvement +: This type of mod improves the graphics in the vanilla game in some way, by retexturing and/or remodeling a character, item, location, etc. Usually these mods come with high-resolution textures. + +Immersion +: These mods are not inherently bugfixes, but changes done to improve the internal consistency of the game’s content. + +Mechanics Change +: This type of mod makes changes to the game’s system which directly impacts the way you play the game, varying from changing the camera angle of a location to altering the core stats of a class. + +Modified Content +: Modified content is not inherently new content, but rather alterations to the vanilla game’s content because the vanilla content has some shortcomings. The changes made by this kind of mod were never intended to be in the vanilla game. + +Patch +: A patch is a simple mod that changes the function of another mod, either by fixing bugs, resolving mod conflicts or altering content made by another mod. + +Restored Content +: This type of mod restores content that has been cut from the vanilla game. + +Sound Change +: As the name implies, these mods make changes to the sound in the vanilla game. The sound could be music or ambient audios. +{% endcontainer %} + +{% container "article", "content__section" %} +## Mod Tiers + +The tiers for each mod included in my mod build are not necessarily a judgement on the quality of the mods themselves. In my mod builds, mod tiers are ranked on a scale of 1-4, based on how important the individual mods are for my experience with the {% cite "KotOR" %} games. + +Tier 1 - Essential +: This tier indicates mods that I cannot play the {% cite "KotOR" %} games without. Usually this is because I find those mods make very crucial changes to the game, typically by fixing things that bother me the most in the vanilla game. Similarly, mods of the Patch category that belong to this tier make critical changes to other mods. I consider excluding Tier 1 mods will negatively affect my experience with the {% cite "KotOR" %} games. + +Tier 2 - Very Important +: This tier indicates mods that vastly improve my experience with the game. Mods belong to this tier are the bread and butter of my mod build. That said, unlike Tier 1 mods, excluding Tier 2 mods from my playthrough does not actively make my {% cite "KotOR" %} experience worse either. + +Tier 3 - Somewhat Important +: This tier indicates mods that make changes that are in smaller scope or more subjective compared to Tier 1 and Tier 2 mods. Usually this is because the changes made by Tier 3 mods are less noticeable or more of a matter of personal taste. + +Tier 4 - Optional +: This tier indicates mods that make even smaller or more subjective changes than Tier 3 mods, to the point that using these mods is optional. I include Tier 4 mods in my build for the purpose of maximizing my immersion, or because I use these mods for customization purposes for my characters. +{.deflist-1col} +{% endcontainer %} \ No newline at end of file diff --git a/src/_includes/starwarskotor/navbar.njk b/src/_includes/starwarskotor/navbar.njk new file mode 100644 index 00000000..83928c31 --- /dev/null +++ b/src/_includes/starwarskotor/navbar.njk @@ -0,0 +1,11 @@ +{% extends "global/navbar.njk" %} +{% set shrineHomeUrl = "/shrines/starwarskotor/" %} + +{% block navbarLinks %} +{% set navPages = collections.all | eleventyNavigation("KotOR Shrine") %} +{%- for entry in navPages %} +
  35. + {{ entry.title }} +
  36. +{%- endfor %} +{% endblock %} diff --git a/src/_includes/starwarskotor/shrineinfo.njk b/src/_includes/starwarskotor/shrineinfo.njk new file mode 100644 index 00000000..5edeadc5 --- /dev/null +++ b/src/_includes/starwarskotor/shrineinfo.njk @@ -0,0 +1,11 @@ +{% extends "global/shrineinfo.njk" %} + +{% block shrineAbout %} +

    Welcome to {{ sitemeta.siteAuthor.name }}'s shrine for {% cite "Star Wars: Knights of the Old Republic" %}, a series of role-playing video games set in the {% cite "Star Wars" %} universe, taking place almost 4,000 years before the events of the Skywalker film saga.

    +{% endblock %} + +{% block shrineLinks %} +
  37. KOTOR Community Portal
  38. +
  39. Star Wars: KotOR fanlisting
  40. +
  41. Star Wars: KotOR II fanlisting
  42. +{% endblock %} diff --git a/src/articles/articles.11tydata.js b/src/articles/articles.11tydata.js new file mode 100644 index 00000000..7dfcddea --- /dev/null +++ b/src/articles/articles.11tydata.js @@ -0,0 +1,13 @@ +export default { + tags: ["articles", "contents", "feed items"], + layout: "main/content", + permalink: "/articles/{{ page.fileSlug }}/", + isArticle: true, + eleventyComputed: { + title: (data) => `${data.articleTitle} | Articles`, + eleventyNavigation: { + key: (data) => data.articleTitle, + parent: "Articles" + } + } +} \ No newline at end of file diff --git a/src/articles/featured/featured.11tydata.js b/src/articles/featured/featured.11tydata.js new file mode 100644 index 00000000..e55943de --- /dev/null +++ b/src/articles/featured/featured.11tydata.js @@ -0,0 +1,3 @@ +export default { + tags: "featured articles" +} \ No newline at end of file diff --git a/src/articles/featured/kotor2-modder-interview-ars-technica.md b/src/articles/featured/kotor2-modder-interview-ars-technica.md new file mode 100644 index 00000000..5d203949 --- /dev/null +++ b/src/articles/featured/kotor2-modder-interview-ars-technica.md @@ -0,0 +1,23 @@ +--- +articleTitle: The modders who spent 15 years fixing Knights of the Old Republic 2 @ Ars Technica +date: 2022-09-11 +desc: Ars Technica's article on the KotOR 2's modding community to celebrate the game's 15th anniversary. I was interviewed for my same-gender romance mods for KotOR 2. +categories: ["my interviews", "star wars kotor 2", "video game mods"] +--- + +On 6 December 2019, to celebrate the 15th anniversary of {% cite "Star Wars: Knights of the Old Republic 2" %}, Ars Technica has published [an article about the modding community of KotOR 2](https://arstechnica.com/gaming/2019/12/the-modders-that-spent-15-years-fixing-knights-of-the-old-republic-2/). I was interviewed by the author of this article, Austin Taylor, for my same-gender romance mods for {% cite "KotOR 2" %}. + +> ### Romance? Yes, Please +> +> [Unlike the first KOTOR](https://starwars.fandom.com/wiki/Juhani), there are no same-gender romance options in Obsidian’s sequel. Leilukin, a modder on the Nexus Forums, has focused much of her modding work since 2016 on [fixing that oversight.](https://www.nexusmods.com/kotor2/videogamemods/927) +> +> “As much as I love KOTOR2, I have always been frustrated by the fact that the romance content with the companions and certain NPCs… are all heterosexual,” she said. +> +> Some of these fixes are relatively simple. In vanilla KOTOR2, for instance, only male characters can recruit The Handmaiden upon leaving Telos, while female characters are the only ones who can recruit The Disciple during the main quest on Dantooine. By default, Leiluken’s mod simply flips that gender check, so only male characters can recruit the Disciple and only females can recruit The Handmaiden. +> +> But Leiluken’s mod goes further than that. The most challenging part, she said, was finding every reference to the Exile’s gender throughout the game spoken by gender-specific party members, then “add\[ing\] extra dialogue that replaces the pronouns and splic\[ing\] voiceover files myself.” +> +> To recruit both The Handmaiden and The Disciple at the same time, players can install the [PartySwap mod by DarthTyren](https://deadlystream.com/files/file/544-partyswap/). That mod was initially lacking the same-gender romance dialogue from Leiluken’s mod. But Leiluken has since added a compatibility installation option, letting the two mods now work together and fully opening up the same-gender romance options of your dreams. + +Read the full article on Ars Technica here: +[The modders who spent 15 years fixing Knights of the Old Republic 2](https://arstechnica.com/gaming/2019/12/the-modders-that-spent-15-years-fixing-knights-of-the-old-republic-2/) \ No newline at end of file diff --git a/src/articles/featured/lgbtq-booklet-interview-misi-bawang.md b/src/articles/featured/lgbtq-booklet-interview-misi-bawang.md new file mode 100644 index 00000000..9ddea4da --- /dev/null +++ b/src/articles/featured/lgbtq-booklet-interview-misi-bawang.md @@ -0,0 +1,40 @@ +--- +articleTitle: "Floating in a Sky Full of Pride: LGBTQ+ Booklet Artist Interview from MISI:Bawang" +date: 2022-09-11 +desc: My submission for MISI:Bawang's booklet about LGBTQ+ Malaysians was accepted and published. Here is MISI:Bawang's interview with me regarding my work and my queer identity. +categories: ["my interviews", "lgbtq+", "malaysia", "a summer's end"] +--- + +

    (This article is also available on my art blog on Tumblr)

    + +[Floating in a Sky Full of Pride](https://bawangqueerbooklet.msolidariti.org/), the LGBTQ+ booklet of [MISI:Bawang](https://misibawang.msolidariti.org/), a Malaysian digital booklet project, has been released on Valentine’s Day 2022. Since my submitted art piece, Life of a Bee with Pride, has been selected to be included in the booklet, I had received the honour of being interviewed by MISI:Bawang to share my personal experience with my LGBTQ+ identity, favourite queer art/media, and a ✨ special message to the Malaysian LGBTQ+ community. 🏳‍🌈 + +![First slide of MISI:Bawang's interview with me for their LGBTQ+ booklet](/assets/images/articles/lgbtq-booklet-interview-misi-bawang/Bawang-Booklet-Interview-Leilukin-1.avif) + +![Second slide of MISI:Bawang's interview with me for their LGBTQ+ booklet](/assets/images/articles/lgbtq-booklet-interview-misi-bawang/Bawang-Booklet-Interview-Leilukin-2.avif) + +![Third slide of MISI:Bawang's interview with me for their LGBTQ+ booklet](/assets/images/articles/lgbtq-booklet-interview-misi-bawang/Bawang-Booklet-Interview-Leilukin-3.avif) + +MISI:Bawang has shared their interview with me and other Malaysian LGBTQ+ artists and authors who submitted their work to the booklet on Twitter and Instagram. Here are the [Twitter thread](https://twitter.com/misi_bawang/status/1470247663471763464) and [Instagram post](https://www.instagram.com/p/CXSlIbsJXsM/) that include my interview. + +Text version of my interview below: + +## **“What was your experience discovering your LGBTQ+ identity?”** + +> The first clear signs of my attraction to women I was aware of started from my secondary school days. However, due to lack of knowledge and awareness of same-gender attraction and identities, I brushed it off as a teenage phase. +> +> However, that changed as I started becoming active on Tumblr since I was 19. At first, I joined Tumblr to connect with people who share my interest in Star Wars and BioWare games. This led me to get to know LGBTQ+ from different parts of the world, which is especially helped by the fact that BioWare games are known for LGBTQ+ representation, therefore LGBTQ+ people are visible in BioWare player communities. This started my journey of questioning my sexuality and gender. +> +> As I continue to stay on Tumblr, my engagement with LGBTQ+ people on Tumblr had gone beyond shared interest in entertainment media. Through Tumblr, I discovered many LGBTQ+ resources that helped me figure out my identity. As a result, at the age of 22, I eventually realised that I am a non-binary lesbian. + +## **“Are there any LGBTQ+ related art (books, films, etc) that gives you comfort, inspiration, and strength? If so, tell us about them!”** + +> A Summer’s End - Hong Kong 1986 is the LGBTQ+ art that gives me comfort, inspiration and strength the most. It is an indie visual novel developed by the Asian Canadian studio Oracle and Bone. The story is about a lesbian romance that takes place in Hong Kong in the year of 1986. +> +> A Summer’s End is the LGBTQ+ art I relate to most because it strongly resonates with my identity as a Cantonese-speaking Chinese lesbian who has grown up with Hong Kong media. I relate to both the protagonists, Michelle and Sam, as their characters represent different parts of my life as a Chinese lesbian. I also relate to the story’s theme of hoping for the future of our homeland despite the political uncertainties. + +## **“Do you have a message to LGBTQ+ community living in Malaysia?”** + +> First and foremost, you are not alone. LGBTQ+ Malaysians have a community that continues to survive despite the hardship we have to face due to society’s bigotry and misunderstanding of LGBTQ+ people and identities. +> +> I hope the LGBTQ+ community in Malaysia will continue to grow and thrive, and more LGBTQ+ Malaysians who are still questioning and feeling lonely could be reached out. Let us work towards a future where we could live freely. \ No newline at end of file diff --git a/src/articles/myarticles/accessible-footnotes.md b/src/articles/myarticles/accessible-footnotes.md new file mode 100644 index 00000000..7becde19 --- /dev/null +++ b/src/articles/myarticles/accessible-footnotes.md @@ -0,0 +1,335 @@ +--- +articleTitle: How I (Tried to) Implement Accessible Footnotes +date: 2024-08-06T00:04:00+0800 +updated: 2024-12-03T23:51:27+0800 +desc: "How I implement accessible footnotes, at least to the best of my ability. Written for 32-Bit Cafe's Community Code Jam #5." +categories: ["32-bit cafe", "accessibility", "html", "css", "eleventy", "markdown-it"] +toc: true +hasCodeBlock: true +--- + +[![32-Bit Cafe "Back to School" Code Jam button](/assets/images/articles/accessible-footnotes/32bitcafe-backtoschool.png)](https://32bit.cafe/~xandra/events/codejam5/){.inline-img} +{.center-text} + +(32-Bit Cafe "Back to School" button made by [Loren](https://ribo.zone/)){.center-text} + +[32-Bit Cafe](https://32bit.cafe/) is holding its fifth community code jam, titled ["Back to School"](https://32bit.cafe/~xandra/events/codejam5/), from 4 to 17 August 2024. I have been looking forward to participating in 32-Bit Cafe's community code jam for the first time, so I am excited. This motivates me to finally write a how-to article I have been meaning to do for a while: how to implement accessible footnotes on Leilukin's Hub, or at least, I tried to do so to the best of my abilities. + +On [32-Bit Cafe's Discourse forum](https://discourse.32bit.cafe/), I made a [post on 28 June 2024](https://discourse.32bit.cafe/t/handling-citations-and-or-footnotes/1061/2?u=leilukin) in response to [solaria](https://solaria.neocities.org/)'s thread ["Handling Citations and/or Footnotes"](https://discourse.32bit.cafe/t/handling-citations-and-or-footnotes/1061) to share my methods of adding footnotes on my website. Now, I am writing an extended version of that post of mine in the form of this article, so I could share what I learned about web page footnotes on my website as well. + +(Note: This article assumes a foundational familiarity with HTML and CSS) + +## About Footnotes + +Plagiarism.org [defines footnotes](https://www.plagiarism.org/article/what-are-footnotes) as notes placed at the bottom of a page, and what footnotes do is to cite references or comment on a designated part of the text above it. + +My use case of footnotes is citing sources of information, particularly citing the same source multiple times on the same page when information from the same source is spread across my page. As of this writing, my website pages that use footnotes include the [trivia page of my {% cite "A Summer’s End — Hong Kong 1986" %} shrine 1](/shrines/asummersend/trivia/) and the [facts page of my {% cite "Cassette Beasts" %} shrine](/shrines/cassettebeasts/facts/). You are free to look at the HTML and CSS for reference. + +Footnotes are used both on print and on the web. However, maintaining footnotes on the web can be tedious, especially if you want to update a web page to add or remove them, since you will need to change the number references of existing footnotes. + +## Attempted to Use CSS Counters + +When I was searching for how to implement accessible footnotes, I discovered [Kitty Giraudel](https://kittygiraudel.com/)'s article, ["Accessible Footnotes with CSS"](https://www.sitepoint.com/accessible-footnotes-css/) which teaches the method of using the combination of HTML [`aria-describedby`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby) attribute and [CSS counters](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_counter_styles/Using_CSS_counters) to add numbered references, to reduce the hassle of manually re-numbering all existing footnotes in case you want to update or reorder the references. + +Her article also teaches adding a highlight background colour when heading to a footnote from a reference, as well as providing back links to head back to a reference from a footnote, by using the combination of the backlink Unicode icon (↩) and the HTML `aria-label` attribute with a value of “Back to content”. The uses of ARIA labels make footnotes more screen reader-friendly. + +Furthermore, Kitty created the [eleventy-plugin-footnotes plugin](https://github.com/KittyGiraudel/eleventy-plugin-footnotes) for the static site generator [Eleventy](https://www.11ty.dev/), and wrote a blog post about it, ["Footnotes in 11ty"](https://kittygiraudel.com/2020/12/02/footnotes-in-11ty/). Since I already had begun to [use Eleventy to build my website](/blog/posts/2024-04-21-april-2024-leilukins-hub-overhaul-with-eleventy), I tried Kitty's plugin. + +Unfortunately, a known limitation of using CSS counter method to generate footnotes is [not being able to reference the same footnote multiple times](https://github.com/KittyGiraudel/eleventy-plugin-footnotes/issues/83). As I want to be able to reference the same footnote more than once when I am citing sources on my shrine pages, I had to give up the plugin and look for an alternative. + +## Starting with markdown-it-footnote Plugin's Default Footnote Markup + +Kitty Giraudel's blog post about creating footnotes in Eleventy mentioned [markdown-it-footnote](https://github.com/markdown-it/markdown-it-footnote), the footnotes plugin for [markdown-it](https://github.com/markdown-it/markdown-it) Markdown parser, which is integrated in Eleventy by default to convert Markdown to HTML. Kitty commented on the accessibility shortcomings of markdown-it-footnote in the blog post: + +> [...]it’s not super accessible (let alone by default), even considering all the customisation options. That’s because the footnote references end up being numbers (e.g. [1]) which are meaningless when listed or tabbed through because devoid of their surrounding context. + +That said, since the plugin is customisable, I still wanted to give it a shot to see if I could make configurations to improve its accessibility, so I installed markdown-it-footnote and looked into the plugin's default HTML markup output. + +Here is a sample of what the HTML markup output of markdown-it-footnote looks like: + +```html +

    This is a paragraph with the first footnote reference. [1]

    + +

    Here is the second paragraph with the second footnote reference. [2]

    + +

    This the third paragraph, but with a foootnote reference that points to the first footnote. [1:1]

    + +
    +
    +   
      +       
    1. First footnote ↩︎ ↩︎
    2. +       
    3. Second footnote ↩︎
    4. +   
    +
    +``` + +This is what this HTML markup will look like on a live web page: + +![Web page footnotes sample screenshot](/assets/images/articles/accessible-footnotes/footnote-sample.avif) + +What this HTML markup does: +- Adding a footnote reference as a superscript by using the [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup) tag with numbers as the content. +- Using a `
    ` horizontal line element to separate the main body of the page and the footnote section; +- Using the `
      ` tag to render the footnotes as a numbered list; +- Each footnote list item has an `id` attribute +- If a footnote is referenced more than once, the additional footnote references are labelled with colons. + +(Note: the class names were added by markdown-it-footnote, but if you do not use it, you can rename the class name to whatever you want, and even if you use markdown-it-footnote, you can still change the class names if you want to go deep into it) + +Next step is trying to improve this HTML markup by making it accessible. + +## Make markdown-it-footnote's Markup More Accessible + +### Clarify Footnote Reference Labels + +As pointed out by Kitty Giraudel, labelling the footnote reference as mere numbers like [1] is an accessibility shortcoming, because these reference links become meaningless when being focused on by tabbing through the links, as these reference links would be devoid of context. + +What I did to tackle this was changing the reference labels by adding a word "Footnote" to clarify that these links are for footnotes. For example, [1] becomes [Footnote #1], so when screen readers focus on a footnote reference link, it will be read out as "Footnote number one link". +```html + + [1] + +``` + +Optionally, if you want your footnote labels to still display only numbers on screen, you can use a CSS class to [visually hide](https://www.a11yproject.com/posts/how-to-hide-content/) the extra characters in the footnote label. This `.visually-hidden` utility class is a useful tool in your arsenal for accessible web design, as it is often used to hide a content that you do not mean to show on screen, but you still want it to be read by assistive technology. + +```css +.visually-hidden { +    clip: rect(0 0 0 0); +    clip-path: inset(50%); +    height: 1px; +    overflow: hidden; +    position: absolute; +    white-space: nowrap; +    width: 1px; +} +``` + +To make my footnote reference labels display only a number on screen, I use a `span` tag with `visually-hidden` as the value of the `class` attribute to wrap around "Footnote #", so on screen, [Footnote #1] is changed to [1]. + +```html + + + [Footnote #1] + + +``` + +### Add ARIA Label to Footnote Back Links + +Next step is adding an ARIA label to the footnote backlinks, by adding an `aria-label` attribute with "Back to reference #[Insert reference number]" as its value. For example: + +```html +↩︎ +``` + +When a footnote back link is focused on via tabbing, screen readers will read it out as "Back to reference number one link". + +### Add Heading to Footnote Section + +To make it clear that the section is for footnotes, I add a HTML heading before the list of footnotes, such as: +```html +

      Footnotes

      +``` + +## Final HTML Markup for Accessible Footnotes + +Here is my final HTML markup sample to create accessible footnotes: + +```html +

      This is a paragraph with the first footnote reference. [Footnote #1]

      + +

      Here is the second paragraph with the second footnote reference. [Footnote #2]

      + +

      This the third paragraph, but with a foootnote reference that points to the first footnote. [Footnote #1:1]

      + +
      +
      +

      Footnotes

      +   
        +       
      1. +         First footnote +         ↩︎ +         ↩︎ +    
      2. +       
      3. +         Second footnote +         ↩︎ +    
      4. +   
      +
      +``` + +As for the CSS, in addition to using the `.visually-hidden` utility class, I refer to Kitty Giraudel's ["Accessible Footnotes with CSS"](https://www.sitepoint.com/accessible-footnotes-css/) article to style the highlight background color when heading to a footnote from a reference. + +## Configure markdown-it-footnote in Eleventy's Configuration File + +(If you do not use Eleventy, you may skip this section) + +My final step was to configure the markdown-it-footnote plugin, by editing Eleventy's configuration file (I named mine `eleventy.config.js`), so the plugin would render my accessible footnote HTML markup. + +```js +// markdown-it plugins +const markdownIt = require("markdown-it"); +const markdownItFootnote = require("markdown-it-footnote"); +let markdownLibrary; + +module.exports = function (eleventyConfig) { + /* Markdown Overrides */ + markdownLibrary = markdownIt({ + html: true, + }).use(markdownItFootnote); + + // Configure markdown-it-footnote + markdownLibrary.renderer.rules.footnote_block_open = () => ( + '
      \n' + + '
      \n' + + `

      Footnotes

      \n` + ); + + markdownLibrary.renderer.rules.footnote_anchor = (tokens, idx, options, env, slf) => { + let id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf); + + if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`; + + /* ↩ with escape code to prevent display as Apple Emoji on iOS */ + return ` \u21a9\uFE0E`; + }; + + const renderRules = { + footnote_caption: ['[', '[Footnote #'], + }; + Object.keys(renderRules).map(rule => { + let defaultRender = markdownLibrary.renderer.rules[rule]; + markdownLibrary.renderer.rules[rule] = (tokens, idx, options, env, self) => { + return defaultRender(tokens, idx, options, env, self).replace(...renderRules[rule]); + } + }); + + /* This is the part that tells 11ty to swap to our custom config */ + eleventyConfig.setLibrary("md", markdownLibrary); +} +``` + +If you are a fellow Eleventy user, feel free to borrow my markdown-it-footnote configurations in your own. Make sure you install markdown-it-footnote first by keying in the installation command in the terminal: + +```powershell +npm install markdown-it-footnote --save +``` + +## Bonus: Alternatives to Footnotes + +As you likely have realised, footnotes are really tricky to implement on web pages, so you may be wondering: is there any alternative to footnotes? + +For extra comments and tangents, by favourite approach is using HTML's details disclosure element with the `
      ` tag, with a [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/summary) element and a sibling element wrapping the content displayed when the disclosure is expanded. + +I have been using the disclosure element for additional comments or information on this website, like in my blog post, ["My Cassette Beasts Fanlisting Application has been Approved"](/blog/posts/2024-06-24-cassette-beasts-fanlisting-approved/). As for the styling, initially I indented the content inside the disclosure to differentiate the disclosure content from the rest of the content of the page, but recently I switched to adding borders to the content after being inspired by [Starbreaker](https://starbreaker.org/)'s website, who also has a post about footnotes, ["Footnotes: No Fun to Create, Either"](https://starbreaker.org/blog/tech/footnotes-no-fun-to-create-either/index.html). + +{% disclosure "More ways to use `
      ` and `` elements" %} +`
      ` and `` have become among my favourite HTML elements due to how useful they are. In addition to extra comments and info, Leilukin's Hub has also used the elements for the following purposes: +- Table of contents, like the one this very article has +- Hiding spoilers, like in my {% cite "Cassette Beasts" %} shrine article, ["How Cassette Beasts is Much More than a Pokémon Clone"](/shrines/cassettebeasts/articles/cassette-beasts-more-than-a-pokemon-clone/) +- Content warnings, like in my [{% cite "A Summer’s End — Hong Kong 1986" %} shrine's gallery page](/shrines/asummersend/gallery/), with its styling being inspired by another Kitty Giraudel's blog post, ["A content warning component"](https://kittygiraudel.com/2022/09/04/a-content-warning-component/) +{% enddisclosure %} + +As for citing sources, the simplest way would be naming and linking to the source in the main text of your page, though it does mean you may end up repeating the title of the source if you want to attribute to it more than once on your page. This was once the approach of my shrine pages, though I found the pages looked rather cluttered, so I eventually chose to use markdown-it-footnote alongside Eleventy. + +## Wrapping Up + +Creating and maintaining footnotes on web pages is tricky, so I hope my article about accessible footnotes is helpful if you want to create them. + +I am still not completely certain if my method is the best, although I tried to the best of my abilities, so I am interested in hearing feedback for my way of implementing accessible footnotes. + +## Update 3 December 2024: Enlarge Link Target Area + +On 3 December 2024, [~hedy](https://home.hedy.dev/) emailed me talking about this article, offering additional tips for improving footnotes. She also recommended me to check out [Seirdy](https://seirdy.one/)'s blog as a reference for formatting footnotes. + +I found ~hedy's suggestions good, so I made further improvements to my footnotes, by enlarging the target area of links. To achieve this, I changed the reference labels and footnote backlinks by using visible longer link text instead of ARIA labels. + +Specifically, for reference labels, I now use "[Note 1]" instead of just a number like "[1]", while for footnote backlinks, I use "↩︎ Back to reference 1" instead of just a ↩︎ symbol. + +In addition, I wrap each footnote backlink in a paragraph element (`

      `), to place each backlink per line to improve footnotes' readability. + +Larger link target area is even better because mobile device users would find it easier to tap on the reference links and the footnote backlinks, and sighted visitors on desktop are also benefited because they can see the purpose of these links on plain slight. + +### Updated HTML Markup + +Here is an example of how the final HTML markup would look like with larger link target area: + +```html +

      This is a paragraph with the first footnote reference. [Note 1]

      + +

      Here is the second paragraph with the second footnote reference. [Note 2]

      + +

      This the third paragraph, but with a foootnote reference that points to the first footnote. [Note 1:1]

      + +
      +
      +

      Footnotes

      +   
        +       
      1. +         First footnote +        

        ↩︎ Back to reference 1

        +        

        ↩︎ Back to reference 1:1

        +    
      2. +       
      3. +         Second footnote +        

        ↩︎ Back to reference 2

        +    
      4. +   
      +
      +``` + +### Updated markdown-it-footnotes Configuration + +Here is the code of the configuration for the markdown-it-footnotes plugin: + +```js +// markdown-it plugins +const markdownIt = require("markdown-it"); +const markdownItFootnote = require("markdown-it-footnote"); +let markdownLibrary; + +module.exports = function (eleventyConfig) { + /* Markdown Overrides */ + markdownLibrary = markdownIt({ + html: true, + }).use(markdownItFootnote); + + // Configure markdown-it-footnote + markdownLibrary.renderer.rules.footnote_block_open = () => ( + '
      \n' + + '
      \n' + + `

      Footnotes

      \n` + ); + + markdownLibrary.renderer.rules.footnote_anchor = (tokens, idx, options, env, slf) => { + let id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf); + + if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`; + + /* ↩ with escape code to prevent display as Apple Emoji on iOS */ + return ` +

      + + + Back to reference ${id} + +

      + `; + }; + + const renderRules = { + footnote_caption: ['[', '[Note '], + }; + Object.keys(renderRules).map(rule => { + let defaultRender = markdownLibrary.renderer.rules[rule]; + markdownLibrary.renderer.rules[rule] = (tokens, idx, options, env, self) => { + return defaultRender(tokens, idx, options, env, self).replace(...renderRules[rule]); + } + }); + + /* This is the part that tells 11ty to swap to our custom config */ + eleventyConfig.setLibrary("md", markdownLibrary); +} +``` \ No newline at end of file diff --git a/src/articles/myarticles/anti-harry-potter-jk-rowling-masterlist.md b/src/articles/myarticles/anti-harry-potter-jk-rowling-masterlist.md new file mode 100644 index 00000000..6655a160 --- /dev/null +++ b/src/articles/myarticles/anti-harry-potter-jk-rowling-masterlist.md @@ -0,0 +1,58 @@ +--- +articleTitle: Anti-Harry Potter and Anti-J. K. Rowling Masterlist +date: 2023-03-19 +updated: 2025-03-05T07:43:53+0800 +desc: My masterlist of criticisms of the Harry Potter series and J. K. Rowling. +categories: ["harry potter", "jk rowling"] +toc: true +--- + +{% imgFigure "/assets/banners/harry-potter-free-site.png", "An anime girl crossing arms with a sidelong look and a Harry Potter-free message" %} +This site is Harry Potter free. Lookin [sic] for it? Leave. +{% endimgFigure %} + +(Credit to Tumblr user [comradesaucegay](https://comradesaucegay.tumblr.com/post/621403039459426304) ([archived](https://web.archive.org/web/20241122135107/https://comradesaucegay.tumblr.com/post/621403039459426304/grumpsaesthetics-you-know-those-old-hentai-free)) for this Harry Potter-free website banner){.center-text} + +Like many Millennials, I grew up with the {% cite "Harry Potter" %} series and was a major fan of the series. I had read the original 7 books and watched their film adaptations. The series was a passion of mine during my early- to mid-teen years. While the {% cite "Harry Potter" %} novels were far from the first books I read, they were the first fantasy novels I read, and the series’ concept of a magical world set in a contemporary setting fascinated teenage me. + +However, even during my {% cite "Harry Potter" %} fixation years, there were things from the series that bothered me, from the idea of house elves being a slave race that naturally love being slaves, to Snape’s unconvincing “redemption” arc. As I got older and became more aware of social issues, I started to notice more problems with the series. In addition, reading more books has also made me realise that even on a technical writing level, the {% cite "Harry Potter" %} series was mediocre at best. As a result, I had stopped becoming a {% cite "Harry Potter" %} fan even before J. K. Rowling’s anti-trans sentiments got mainstream attention. + +Unfortunately, many adults with nostalgia goggles still refuse to let go of {% cite "Harry Potter" %}, and they believe {% cite "Harry Potter" %} can be separated or “reclaimed” by J. K. Rowling, despite how much Rowling’s worldview and prejudice are inextricably linked to her writing. + +Therefore, I am compiling this masterlist by curating various materials that are critical of the {% cite "Harry Potter" %} series and J. K. Rowling. Items are ordered in chronological order. This is far from a comprehensive list of all the pieces that criticise {% cite "Harry Potter" %} and Rowling; this list is my curated list of ones that I have read, watched or listened to, and I personally endorse. + +## Articles + +* [Harry Potter and the Universal Declaration of Human Rights](https://alinautrata.medium.com/all-the-things-that-are-fucked-up-about-harry-potter-58267e1bf3ee) by Alina Utrata (28 October 2016) +* [Addressing The Claims In JK Rowling’s Justification For Transphobia](https://katymontgomerie.medium.com/addressing-the-claims-in-jk-rowlings-justification-for-transphobia-7b6f761e8f8f) by Katy Montgomerie (16 June 2020) +* [The Antisemitism of ‘Harry Potter’ Returns in ‘Hogwarts Legacy’](https://www.themarysue.com/is-hogwarts-legacy-anti-semitic-hogwarts-legacy-anti-semitic-allegations-explained/) by Jack Doyle (8 February 2023) +* [Hogwarts Legacy wants to make everyone happy, but Harry Potter gets in the way](https://www.polygon.com/reviews/23603142/hogwarts-legacy-review-harry-potter-jk-rowling-transphobic-ps5-pc-xbox) by by Gita Jackson (17 February 2023) +* [Is J.K. Rowling transphobic? Let’s let her speak for herself.](https://www.vox.com/culture/23622610/jk-rowling-transphobic-statements-timeline-history-controversy) by Aja Romano (3 March 2023) +* [Talking Shit About Harry Potter](https://starbreaker.org/blog/entertainment/talking-shit-about-harry-potter/index.html) by Matthew Graybosch (19 June 2024) + + This post was in fact prompted by this very masterlist and our email exchange about the topic.{.item-list__indent} + +## Videos + +* [Harry Potter is GARBAGE, and Here's Why](https://www.youtube.com/watch?v=wPwWb9z3XSY) by satenmadpun (25 August 2020) +* [We need to talk about Dudley Dursley- Harry Potter and Fatphobia](https://www.youtube.com/watch?v=4AziZgoi3q0) by Ok2BeFat (30 May 2021) +* [Harry Potter](https://www.youtube.com/watch?v=-1iaJWSwUZs) by Shaun (4 March 2022) +* [JK Rowling's New Friends](https://www.youtube.com/watch?v=Ou_xvXJJk7k) by Shaun (14 October 2022) +* [Is Harry Potter Bad?](https://www.youtube.com/watch?v=U3dE0sYZqvI) by hoots (30 December 2022) +* [The Consumerist Dystopia of Harry Potter](https://www.youtube.com/watch?v=UBftW7FzOVI) by verilybitchie (21 January 2023) +* [Explaining JK Rowling’s Transphobia](https://www.youtube.com/watch?v=_GBUArD51KY) by Jessie Gender (27 January 2023) +* [Hogwarts Legacy and the Politics of Potter](https://www.youtube.com/watch?v=K1mHwn6eUUk) by Wisecrack (11 February 2023) +* [Hogwarts: A Legacy Of Hate (The Jimquisition)](https://www.youtube.com/watch?v=uNKyQVsgKLg) by James Stephanie Sterling (13 February 2023) +* [The ALLEGED Witch Trials of J.K. Rowling (What The Megan Phelps Podcast Won't Tell You)](https://www.youtube.com/watch?v=9ncYTEY7aVk) by Caelan Conrad (18 March 2023) +* [The Harry Potter Villains Were Trans?](https://www.youtube.com/watch?v=7xJF4XYarzI) by Brigitte Empire (3 April 2023) +* [Maybe The Wizard Game Just Wasn't Very Good (The Jimquisition)](https://www.youtube.com/watch?v=2pggtSI_95A) by James Stephanie Sterling (20 November 2023) +* [J.K. Rowling & Holocaust Denial](https://www.youtube.com/watch?v=whJJGqVtkEk) by Caelan Conrad (16 March 2024) +* [Did J.K. Rowling STEAL Harry Potter (Rip-off? Plagiarism?!)](https://www.youtube.com/watch?v=Cmx_YSPcujE) by Caelan Conrad (3 June 2024) +* [Harry Potter is Also Ableist](https://www.youtube.com/watch?v=oYgFHBXyVE4) by Ember Green (9 December 2024) +* [J. K. Rowling: The Real Story](https://www.youtube.com/watch?v=NeFUqCrmPC0) by Caelan Conrad (4 March 2025) + +## Podcasts + +* [The Shrieking Shack](https://soundcloud.com/shriekingshack), hosted by Xeecee and Liz + + A book reading podcast that originally started out as a {% cite "Harry Potter" %} reread podcast made by and for lapsed fans that goes through every chapter of the {% cite "Harry Potter" %} books and their film adaptations and analyses the writing and politics of the series and J. K. Rowling.{.item-list__indent} \ No newline at end of file diff --git a/src/articles/myarticles/designated-lesbian-syndrome-fandom.md b/src/articles/myarticles/designated-lesbian-syndrome-fandom.md new file mode 100644 index 00000000..fb599ae7 --- /dev/null +++ b/src/articles/myarticles/designated-lesbian-syndrome-fandom.md @@ -0,0 +1,26 @@ +--- +articleTitle: Designated Lesbian Syndrome in Fandom +date: 2023-08-18 +desc: On fandom's tokenisation of lesbians, and how I hate it as a lesbian myself. +categories: ["fandom culture"] +--- + +Over the years of interacting with and observing fandom, I have come to [dislike fandom and shipping culture](../my-dislike-of-shipping-culture) for many reasons. One major reason I want to talk about here is the "Designated Lesbian Syndrome" phenomenon. + +I first encountered this term from [Tumblr user desolationlesbian's post](https://desolationlesbian.tumblr.com/post/662432767484870656/designated-lesbian-syndrome-n-when-fans-of-a): + +> Designated Lesbian Syndrome (n.): When fans of a piece of media pick two female characters and pair them together as the token F/F ship and put them in everything, but do not bother to engage with their dynamic in any way more substantive than having them hold hands in the background. Everyone agrees it’s a good ship and it has nothing but their full support, yet this never materializes into real effort or content creation. +> +> Most common with works that have little-to-no narratively important women, but in rare cases can even happen to major and complex characters who are then reduced to token background lesbians as everyone hones in on the boys. + +The example I am most familiar with is the fandom of Grand Admiral Thrawn and the Chiss from {% cite "Star Wars" %} — specifically, some shippers of Thrawn/Eli Vanto, also known as Thranto, pair Ar'alani and Karyn Faro as their token "pair-the-spares" femslash ship. However, while Thranto shippers have create fan content about the Ar'alani/Karyn Faro ship, they do not do it with even a fraction of the interest and enthusiasm as they do Thranto. This is evident in the difference between the amount of fan works these two pairings have received on Archive On Our Own (AO3): as of this writing, the [Thrawn | Mitth'raw'nuruodo/Eli Vanto](https://archiveofourown.org/tags/Thrawn%20%7C%20Mitth'raw'nuruodo*s*Eli%20Vanto/works) tag contains 1,358 works, while the [Ar'alani/Karyn Faro](https://archiveofourown.org/tags/Ar'alani*s*Karyn%20Faro/works) tag contains 34 works only. It is also worth noting that if you use the tag page's filter function, you will notice that out of these 34 Ar'alani/Faro works, 23 of them are also tagged with Thrawn/Eli Vanto, proving the significant overlap between Thranto and Ar'alani/Faro shippers. + +Part of the Designated Lesbian Syndrome also involves shippers headcanonning the female characters who could be considered "threats" to their favourite ship that involved male characters as lesbians. It does not matter if the female characters are actually romantically involved with the male characters' in the source material or not. Thrawn never has a canon love interest in both Legends and the Disney continuities, but the fact that Ar'alani and Faro are close to Thrawn as his long-time friend and protégée respectively is enough to make them the go-to candidates for lesbian headcanons from shippers who ship Thrawn with anyone else. Lesbian Ar'alani and Faro headcanons are most common among Thrawn/Eli shippers, but I had seen at least one Thrawn/Governor Pryce (a pairing that I cannot stand at all) shipper literally headcanons Ar'alani as a lesbian so Pryce does not need to worry about Ar'alani fighting with Pryce over Thrawn. + +Ar'alani and Karyn Faro are unfortunately perfect examples of the above post by desolationlesbian of major female characters who are reduced to token background lesbians by shippers. As a huge fan of both Ar'alani and Faro as characters, I find it immensely frustrating, to the extent that the Thrawn shipping fandom has utterly turned me off on both Thranto and Ar'alani/Faro ships. + +As a lesbian myself, I loathe the Designated Lesbian Syndrome with a passion, because this phenomenon is literally tokenism, specifically tokenisation of lesbians. As a consequence, I have reached the point where when it comes to fandoms with big Male/Male (M/M) ships that are not canon, I only trust lesbian headcanons from fellow lesbians. Yes, this means I do not trust lesbian Ar'alani and Karyn Faro headcanons from people who are not lesbians. + +I really hate that it comes to this because as a lesbian, in theory I am in favour of lesbian headcanons for female characters who are cishet-coded or who do not have a canon sexuality. Unfortunately, lesbian headcanons have been used as a progressive way to get female characters out of the way of Male/Male ships (and occasionally Male/Female ships as well, though this phenomenon is more common in fandoms of M/M ships), not because these shippers actually care about lesbians and the female characters. + +These shippers rarely put as much energy in talking about or creating fan content for the female characters they headcanon as lesbians as they do the male characters from their ships. These shippers can pretend they care about lesbians all they want, but my lesbian ass can see through their performative bullshit, and recognise their lesbian headcanons are nothing more than tokenism. diff --git a/src/articles/myarticles/living-with-retinitis-pigmentosa.md b/src/articles/myarticles/living-with-retinitis-pigmentosa.md new file mode 100644 index 00000000..fd55824c --- /dev/null +++ b/src/articles/myarticles/living-with-retinitis-pigmentosa.md @@ -0,0 +1,26 @@ +--- +articleTitle: Living with Retinitis Pigmentosa +date: 2024-12-15T13:14:07+0800 +desc: I talk about being visually impaired, particularly with a genetic eye disease that causes gradual vision loss and currently has no cure. +categories: ["personal life", "disability", "retinitis pigmentosa"] +--- + +On 30 November 2024, I was diagnosed with retinitis pigmentosa (RP) after seeing an eye doctor. + +My feelings after learning that I have this genetic eye disease that causes gradual vision loss and currently has no cure was more relieved than upset, because I was relieved that to have finally understood the reason behind a lot of the difficulties in my daily life as I grew older, in addition to my autism. + +Furthermore, my parents and I already suspected that I have inherited an eye condition that causes visual impairment after learning that some of my relatives on my father's side are starting to have eyesight problems. Therefore, I have accepted the possibility that I might have some incurable eye condition even before my official RP diagnosis. I had relied on glasses throughout most of my life due to having myopia and astigmatism, so I was already not new to vision conditions. + +In retrospect, my RP symptoms started to manifest to the point of impacting my daily life in my early 20s. I started to bump into things more often when I walk. My eyes got more sensitive to bright light, including sunlight, to the extent that I found it difficult to see things under sunlight and thus needing sunglasses. My subconscious began to get afraid of falling, causing me to get much more cautious when I walk, especially when walking on steps and crossing over drains, especially in places I was not familiar with. I also had a hard time seeing things not directly in front of me without turning my head. + +For a while, my parents and I thought this was because of my autism, as it makes me find it difficult to multitask, including paying attention to all my surroundings at once outside, and me spending too much time sitting in front of a computer, especially since my jobs have all involved a large amount of computer usage, and thus getting less physical exercise. However, now that I was diagnosed with RP, things finally clicked into place: turns out, my peripheral vision had started to get weaker, and my eyes became more sensitive to bright light, including sunlight. In addition, my eye doctor discovered that I am having a mild cataract as a complication of RP. + +Since there is currently no cure for RP, the best I can do is to take care of my remaining vision as much as I can, mainly by continuing to wear sunglasses every time I go out in daytime to protect my eyes from sunlight. I am also adjusting my habits of using digital devices, by making the font sizes of my devices larger to make things more comfortable for me to read and trying to take regular breaks from digital screens. + +Being diagnosed with a genetic eye disease that can cause vision loss also made me glad that I have started to learn to use screen readers. Even before my diagnosis, I have been using screen readers such as NVDA on Windows and TalkBack on Android to test website accessibility, including my own websites. It is a good idea to prepare myself for the possibility of losing enough vision to the degree of needing low vision aid and assistive technologies. In fact, since I was diagnosed with RP through a dilated eye exam, I was unable to see things clearly for about 12 hours after receiving the eye drop that dilated my eyes, so for the immediate couple of hours after seeing my eye doctor, I needed to activate TalkBack to be able to read things on my Android phone. Furthermore, I am also planning on learning braille. + +I do not write this article to ask for pity. I have accepted that I am visually impaired and autistic, and my disabilities are a huge part of who I am, as much as being a non-binary lesbian on the asexual and aromantic spectrum. Instead, I am sharing my story to let other people who have similar conditions that they are not alone, and we are worthy. + +I coded a [responsive Disability Pride flag in CSS](/projects/snippets/disability-pride-flag-background) during the Disability Pride Month in July (which is also my birth month) 2024, so it would be fitting to conclude this article with this Pride flag I coded. + + \ No newline at end of file diff --git a/src/articles/myarticles/love-letter-to-myself.md b/src/articles/myarticles/love-letter-to-myself.md new file mode 100644 index 00000000..052cf16c --- /dev/null +++ b/src/articles/myarticles/love-letter-to-myself.md @@ -0,0 +1,40 @@ +--- +articleTitle: A Love Letter to Myself +date: 2025-02-10T20:31:26+0800 +desc: I decided to take the opportunity of 32-Bit Cafe's 2025 Valentine's Day code jam to write a love letter to myself. +categories: ["personal life"] +--- + +[![I am my own Valentine! - 32-Bit Cafe "Party for One" Code Jam button](/assets/images/articles/love-letter-to-myself/32bitcafe-partyforone.png)](https://32bit.cafe/vday25/){.inline-img} +{.center-text} + +[32-Bit Cafe](https://32bit.cafe/) is hosting a code jam for Valentine's Day 2025, titled ["Party for One"](https://32bit.cafe/vday25/), as the theme is making a digital Valentine's Day gift dedicated to yourself. After much consideration, I decided to take this opportunity to write a love letter to myself, as a Valentine's Day gift to myself and a reminder of my self-worth. + +--- + +Dear Leilukin, + +You and I go way back to the beginning of your life, and we have stuck with each other through thick and thin. There is so much I want to tell you, and I hope by writing this letter, you will appreciate how much I cherish, admire and respect you. + +You have come a long way since your childhood and adolescence. You have grown from an insecure child with low self-esteem after enduring years of bullying at school, desperate for external validation and other people's approval, to an adult who takes pride in who they are and does not care about what others think of them. Therefore, it is unsurprising that you said that while adulthood certainly has its challenges, you do not miss being a child or teenager, and you actually enjoy being an adult. + +I know very well that your self-confidence did not come easy, and it did not happen overnight either. After being traumatised by years-long abuse from a secondary school bully and later a personal betrayal from someone who sided with said bully, whom you thought was your friend, you went on to struggled with trust issues and lack of faith in yourself throughout your early adulthood, even though you never met those people who hurt you the most again, until you attended therapy when you were approaching your late 20s. With your therapist's help, you learned that life is like a train, with the people you have met in your life as your passengers, and after the people who hurt you and vandalised your train left, you can choose to redecorate your train and welcome new people in your life who would treat you better. Learning this metaphor was what finally made you learn that it is not worth letting the people who hurt you to continue to define your life. + +I am proud of you for figuring out you are a queer, autistic, non-binary lesbian on the asexual and aromantic spectrum as an adult, despite the lack of queer and autistic resources and media representation when you grew up. It is fortunate that you encountered online queer and autistic communities and resources that helped you figure yourself out, but at the end of the day, it was you who decided to take active steps in understanding yourself better, so you know how to live your life better, and to not be afraid to be different. When you were a kid, fellow students in school had bullied you for being a socially awkward and friendless "weird" kid, but normality is a social construct, so your worth as a person is not determined by how "normal" you are perceived by others. You are unique, and your uniqueness is worth celebrating. You do not need to rely on someone else for your happiness, either. + +The self-worth you spent years in building up has also given you the strength to accept your [retinitis pigmentosa diagnosis](living-with-retinitis-pigmentosa.md), as you understand that the possibility of losing sight is not the end of the world. Queer and disability pride in the face of a cisheternormative and ableist society is an act of rebellion. Being a non-binary lesbian who refuses to conform to traditional gender roles is also a defiance to a patriarchy. + +Learning to look after your well-being and to set boundaries are crucial for a happy and fulfilling life, so I applaud you for making decisions out of consideration for your well-being, including: + +- Going to therapy to improve your mental health; +- Leaving an openly anti-gay church to join a queer-affirming one; +- Switching your career path to web development, a field you actually feel confident and interested in doing, after being burned out from graphic design as a profession; +- Seeing an eye doctor to get diagnosed with your eye problems; +- [Quitting your first web developer job](/blog/posts/2024-12-16-leaving-my-first-developer-job) when it is clear that your web developer skills were not valued by your employers enough, and the job will likely make you more miserable in the long run if you stayed. + +Furthermore, I admire your spirit of treating learning as a lifelong process, and understanding the importance of thinking for yourself, by keeping yourself curious and not being afraid of learning new things, while remaining true to yourself, by standing firm with your convictions to be kind and striving to be authentic. + +Together we will live the best life we can possibly have. No matter what happens, I will always love you. + +Love,
      +Me \ No newline at end of file diff --git a/src/articles/myarticles/my-dislike-of-shipping-culture.md b/src/articles/myarticles/my-dislike-of-shipping-culture.md new file mode 100644 index 00000000..0bfc9c57 --- /dev/null +++ b/src/articles/myarticles/my-dislike-of-shipping-culture.md @@ -0,0 +1,19 @@ +--- +articleTitle: My Disinterest in Shipping and Dislike of Shipping Culture +date: 2023-08-14 +desc: About my lack of interest in shipping and dislike of shipping culture in fandom, and why. +categories: ["fandom culture"] +--- + +*(Note: The original version of this writing was posted on my Tumblr blog on 3 May 2021)* +{.center-text} + +I feel that the older I get, the less interested I am in shipping in general, and the less I can understand grown adults in late 20s or older who build their personality around shipping and cannot engage with any fiction without shipping something (before I remade my Tumblr account in 2015, I used to follow a 30-something-year-old fandom blogger who was literally like this). + +I have also come to actually dislike shipping culture, especially the mindset of engaging with media primarily through a shipping lens at the expense of the characterisation, non-romantic relationships, themes, and general content of a piece of media. Throughout my years of experience with various fandoms, I have witnessed so many incredible characters and non-romantic relationships get ignored or underappreciated by the fandom because they’re not part of a popular ship. On the other hand, there are also many amazing characters get mischaracterised to make a fanon ship work, or get reduced to a handful of tropes as shippers Flanderise them in their shipping fan works. + +Do not even get me started on the shippers who will complain about not being able to enjoy a piece of media just because “there’s no couple to ship”. For example, I’ve literally seen people on Tumblr make such complaints about the film {% cite "Parasite" %}, as if a profound piece of art that brutally critiques the class system does not matter if it does not provide any shipping material. It’s honestly very infuriating to see shippers like these are so willing to ignore art with meaningful story, characters and themes just because it lacks shipping fodder for them to project fanon onto. + +Speaking of fanon, I really hate it when shippers, particularly shippers of popular non-canon pairings, expect anyone who is a fan of the same piece of media or any of the characters involved in the pairing to care about ships and treat the popular fanon ships as canon. These shippers also tend to act like their fanon and headcanons are universal, using languages like “the fandom has decided–” and “everyone has agreed that–”. And these shippers wonder why others who do not engage with that piece of media for shipping get sick and tired of shipping taking over discussions about said piece of media. + +If you are so invested in shipping to the point that you are willing to disregard a piece of media just because you cannot find anything to ship, or you treat it as a personal attack when people talk about being sick and tired of shipping culture as well as how shipping dominates discussions about a piece of media, maybe you need to consider taking a step back from shipping and learning to take your shipping goggles off when you interact with a piece of media. \ No newline at end of file diff --git a/src/articles/myarticles/myarticles.11tydata.js b/src/articles/myarticles/myarticles.11tydata.js new file mode 100644 index 00000000..513f9624 --- /dev/null +++ b/src/articles/myarticles/myarticles.11tydata.js @@ -0,0 +1,3 @@ +export default { + tags: "my articles" +} \ No newline at end of file diff --git a/src/articles/myarticles/palestine-masterlist.md b/src/articles/myarticles/palestine-masterlist.md new file mode 100644 index 00000000..1e231e20 --- /dev/null +++ b/src/articles/myarticles/palestine-masterlist.md @@ -0,0 +1,185 @@ +--- +articleTitle: Palestine Masterlist +date: 2024-06-19T22:19:00+0800 +updated: 2024-12-11T23:46:44+0800 +desc: My masterlist of resources related to Palestine. +categories: ["palestine"] +toc: true +--- + +![Stand with Palestine](/assets/buttons/misc/standwithpalestine.png) + +(Credit to [rosemary](https://hillhouse.neocities.org/journal/notes/palestine) for the Stand with Palestine button) + +From the river to the sea, Palestine will be free. + +Here, I am compiling a list of resources related to Palestine. This list is not comprehensive by any means, but I still want to do my part in using my platform to support an important cause. + +## Educate Yourself + +* [Decolonize Palestine](https://decolonizepalestine.com/) +* [The Palestine Academy](https://www.thepalestineacademy.com/) +* Haymarket's [Free Ebooks for a Free Palestine](https://www.haymarketbooks.org/blogs/495-free-ebooks-for-a-free-palestine) +* [Palestine, Today: Explore how Palestine has been transformed since the Nakba](https://today.visualizingpalestine.org/) +* [Palestine Open Maps](https://palopenmaps.org/) +* [Palestine Remembered](https://www.palestineremembered.com/) + +## Articles + +* [What is the Ethical Way to Climb Out of Hell?](https://medium.com/@thegriefwitch/what-is-the-ethical-way-to-climb-out-of-hell-8ed51bdc327b) by The Grief Witch (17 October 2023) +* [What Does It Mean to Be Palestinian Now?](https://www.thenation.com/article/world/what-does-it-mean-to-be-palestinian-now/) by The Nation (25 January 2024) + +## Petitions + +* [An Open Letter from Palestinian Christians to Western Church Leaders and Theologians](https://www.change.org/p/an-open-letter-from-palestinian-christians-to-western-church-leaders-and-theologians) + +## Donations and Charities + +* [Daily click to help Palestine on arab.org](https://arab.org/click-to-help/palestine/) +* [Palestine Children's Relief Fund](https://www.pcrf.net/) +* [eSims for Gaza](https://gazaesims.com/) +* [Crips for eSims for Gaza](https://chuffed.org/project/crips-for-esims-for-gaza) +* [Gaza Soup Kitchen](https://gazasoupkitchen.org/) +* [Gaza Funds](https://gazafunds.com) +* [Operation Olive Branch](https://docs.google.com/spreadsheets/d/1vtMLLOzuc6GpkFySyVtKQOY2j-Vvg0UsChMCFst_WLA/htmlview) +* [Operation Poppy Flower](https://www.operationpoppyflower.com/) +* [Strawberry Seed Collective](https://linktr.ee/strawberryseedcollective) +* [Project Watermelon](https://linktr.ee/projectwatermelon) +* [Bees And Watermelons](https://linktr.ee/beesandwatermelons) +* [The ButterflyEffect Project](https://docs.google.com/spreadsheets/u/0/d/e/2PACX-1vTKQYInYewFiGUX4afdHK-rANJDT4dgOC4IV6elKYNvYI2HvOTf_6IsTqt5m2KXcr_pGxcqR8AvsAJi/pubhtml) +* [el-shab-hussein and nabulsi's Vetted Gaza Evacuation Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0) +* [GazaVetters](https://www.tumblr.com/gazavetters) ([Gaza Vetters spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0)) +* [Ottawa4Palestine](https://linktr.ee/ottawa4palestine)'s [Gaza Evacuation Relief Fund](https://docs.google.com/spreadsheets/d/1FC1fK-3r-w3wPi2AdYho5_0j148QC6wkFIMdJA5kX4c/edit?gid=0#gid=0) +* [GoFund(water)Me(lons)](https://docs.google.com/spreadsheets/d/1o_kH9RnGmKOXmEcMUBTWcMhgdTKIequ__xiPym7RGtE/edit?gid=0#gid=0) +* [Helping the People of Gaza - Mutual Aid Fund](https://www.gofundme.com/f/helping-the-people-of-gaza-mutual-aid-fund) +* [Care for Gaza](https://x.com/careforgaza) +* [Direct Aid for Gaza](https://x.com/GazaDirectAid) +* [Life For Gaza](https://gaza-city.ensany.com/campaign/6737?lang=en) +* [Taawon](https://www.taawon.org/en/content/gaza-needs-us-now) +* [World Food Programme (WFP)](https://www.wfp.org/emergencies/palestine-emergency) +* [Medical Aid for Palestinians](https://www.map.org.uk/) +* [Help Dr. Ibrahem to treat the pateints homeless people](https://www.gofundme.com/f/urgent-help-dribrahem-to-treat-the-pateints-homeless-people) +* [Support for Tents in Gaza](https://www.gofundme.com/f/support-for-marginalized-refugees-in-jordan) +* [Gaza Municipality's water project](https://gaza-city.ensany.com/campaign/6737?lang=EN) + +## Boycotts + +* [BDS Movement](https://bdsmovement.net/) +* [No Tech For Apartheid](https://www.notechforapartheid.com/) +* Attention to website owners: [Boycott Wix](https://boycottwix.org/) — The BDS movement has [listed Wix as an organic boycott target](https://bdsmovement.net/Act-Now-Against-These-Companies-Profiting-From-Genocide), meaning the BDS movement did not initiate this grassroots boycott campaign, but supports it due to the boycotted brand's complicity in Israel's genocide and apartheid against Palestinians. + +## Spotlight Crowdfunding Campaigns + +There are Palestinians who have reached out to me on Tumblr to ask for help with sharing their fundraising campaigns, so I am using my platform to share them. These campaigns have been verified by other Palestinians and trusted sources (including ones who are on Tumblr), so I encourage you to help to donate and share at the best of your abilities. + +* [Help...Save a Pregnant Mother's Life and Support Her Family](https://www.gofundme.com/f/ne9gzx-help-them-to-survive) (verified by [nabulsi](https://www.tumblr.com/nabulsi/751944563232587777) and shared by [90-ghost](https://www.tumblr.com/90-ghost/752304563682476032)) +* [Help Sahar and Her Family to Evacuate Gaza](https://www.gofundme.com/f/help-sahar-and-her-family-to-evacuate-gaza) (verified by [el-shab-hussein](https://www.tumblr.com/el-shab-hussein/749777880017502208/another-fundraiser-i-trust)) +* [Help Us Escape Gaza: A Mother's Plea for Safety](https://www.gofundme.com/f/help-us-escape-gaza-a-mothers-plea-for-safety) (#182 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A186)) +* [From War to Education: Abdelrahman Resilient Journey](https://www.gofundme.com/f/from-war-to-education-abdelrahmans-resilient-journey) (verified by [nabulsi](https://www.tumblr.com/nabulsi/753544070688915456) and shared by [90-ghost](https://www.tumblr.com/90-ghost/753258782216404992)) +* [Please Help Tahani save her children and husband](https://www.gofundme.com/f/i-have-nothing-left-my-home-and-workplace-have-be) (verified by [el-shab-hussein](https://www.tumblr.com/el-shab-hussein/748756401076207616/list-of-fundraisers-for-direct-contacts-from)) +* [Please help Shamaly family SURVIVE Gaza & start a new life!](https://www.gofundme.com/f/please-help-shamaly-family-start-a-new-life) (verified by [nabulsi](https://www.tumblr.com/nabulsi/753715707609530368)) +* [Help us reunite with our kids who are stuck in Gaza](https://www.gofundme.com/f/reunite-us-with-our-beloved-4-kids-stuck-in-gaza) (shared by [90-ghost](https://www.tumblr.com/90-ghost/754096091530723328/donate-to-help-us-reunite-with-our-kids-who-are)) +* [Urgent ! Save kids life .](https://www.gofundme.com/f/help-alaa-family-to-survive-the-war-in-gaza) (shared by [90-ghost](https://www.tumblr.com/90-ghost/751443466082484224)) +* [Trapped Family in Gaza Appeals for Help to Survive](https://www.gofundme.com/f/wyuehr-trapped-family-in-gaza-appeals-for-help-to-survive) (#174 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A178); also shared by [fairuzfan](https://www.tumblr.com/fairuzfan/752928036559749120) and [90-ghost](https://www.tumblr.com/90-ghost/752026987709825024)) +* [Help Ahmed family to travel to a save place](https://www.gofundme.com/f/help-ahmed-family-to-travel) (veridied by [nabulsi](https://www.tumblr.com/nabulsi/752576616277868544/hello-how-are-you-my-name-is-ahmed-im-from)) +* [Help my family escape Gaza](https://www.gofundme.com/f/byt93-help-my-family-escape-gaza) (#231 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A235)) +* [Hope for Gaza: Support Ashraf's Family Rebuild Their Lives](https://www.gofundme.com/f/hope-for-gaza-support-ashrafs-family-rebuild-their-lives) (verified by [90-ghost](https://www.tumblr.com/90-ghost/754535164856664064/legit-fundraiser)) +* [A Father's Plea: Help Save My Family](https://www.gofundme.com/f/btuqqt-save-my-familys-life) (verified by [el-shab-hussein](https://www.tumblr.com/el-shab-hussein/754087744556449792/vetted-family-fundraiser-masterpost-3)) +* [Help Moamen Majed rebuild his life after the war](https://www.gofundme.com/f/help-moamen-majed-rebuild-his-life-after-the-war) (verified by [90-ghost](https://www.tumblr.com/90-ghost/755355718664830976/moamenmajed-gaza-are-they-a-vetted-fundraiser)) +* [Save Gaza: A Brighter Future for Aya and Her Family](https://www.gofundme.com/f/save-gaza-a-brighter-future-for-aya-and-her-family) (shared by [90-ghost](https://www.tumblr.com/90-ghost/754992024939347968)) +* [EMERGENCY: help my relatives evacuate to safety](https://www.gofundme.com/f/emergency-help-my-relatives-evacuate-to-safety) (#137 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A141); also shared by [90-ghost](https://www.tumblr.com/90-ghost/756556584649424896)) +* [Help Palestine and Family Survive the Gaza Crisis](https://www.gofundme.com/f/help-palestine-and-family-survive-the-gaza-crisis) (shared by [90-ghost](https://www.tumblr.com/90-ghost/756556732829974528)) +* [Support Safaa's Quest To Get Her Family To Safety](https://www.gofundme.com/f/support-safaas-quest-to-get-her-family-to-safety) (shared by [90-ghost](https://www.tumblr.com/90-ghost/756556669674274816)) +* [Help Doaa Rebuild Her Sewing Business](https://www.gofundme.com/f/help-doaa-rebuild-her-sewing-business) (shared by [90-ghost](https://www.tumblr.com/90-ghost/756556522290626560)) +* [Help the Munna Tashmali Family Rebuild Their Home and Future](https://www.gofundme.com/f/help-the-munna-tashmali-family-rebuild-their-home-and-future) (verified by [nabulsi](https://www.tumblr.com/nabulsi/754393532315353089/donate-to-help-the-munna-tashmali-family-rebuild)) +* [Help Gaza Family Evacuate to Safety](https://www.gofundme.com/f/helping-gaza-family-to-get-out) (shared by [90-ghost](https://www.tumblr.com/90-ghost/756899215473606656)) + * [Help me save my children from death in the Gaza war](https://www.gofundme.com/f/help-me-save-my-children-from-death-in-the-gaza-war) ([verified by association](https://www.tumblr.com/ana-bananya/759290042834386944/dina-is-mahmoud-1995s-sister-confirmed-here); this fundraising campaign belongs to the sister of Mahmoud Alkhaldi, whose campaign is linked just above) +* [Help us for the sake of God](https://www.gofundme.com/f/help-us-for-the-sake-of-god) (verified by [90-ghost](https://www.tumblr.com/90-ghost/755446251161632768/faites-un-don-%C3%A0-help-us-for-the-sake-of-god)) +* [we need help](https://www.gofundme.com/f/bfth82-we-need-help) (shared by [90-ghost](https://www.tumblr.com/90-ghost/756901702912868352)) +* [Help little children of Gaza stay safe and alive!](https://www.gofundme.com/f/help-our-families-evacuate-gaza-before-too-late) (verified by [nabulsi](https://www.tumblr.com/nabulsi/751214090403430400/donate-to-help-little-children-stay-safe-and)) +* [Support Fatima's Family in Gaza After Heartbreaking Tragedy](https://www.gofundme.com/f/support-fatimas-family-in-gaza-after-heartbreaking-tragedy) (shared by [90-ghost](https://www.tumblr.com/90-ghost/756556061504307200)) +* [Get my relatives out of Gaza](https://www.gofundme.com/f/3b6yr-get-my-relatives-out-of-gaza) (verified by [90-ghost](https://www.tumblr.com/90-ghost/757079385198215168/legit-fundraiser)) +* [Help Shaima's family reunite in Egypt](https://www.gofundme.com/f/help-shymaas-family-reunite-in-egypt) (#141 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A145)) +* [Save the life of an innocent child](https://www.gofundme.com/f/save-the-life-of-an-innocent-child) (shared by [90-ghost](https://www.tumblr.com/90-ghost/755122452856700928) and listed as #406 in [The ButterflyEffect Project's Verified Campaigns](https://docs.google.com/spreadsheets/d/e/2PACX-1vTKQYInYewFiGUX4afdHK-rANJDT4dgOC4IV6elKYNvYI2HvOTf_6IsTqt5m2KXcr_pGxcqR8AvsAJi/pubhtml?urp=gmail_link&gxid=-8203366#)) +* [Save Ibrahim and his children](https://www.gofundme.com/f/save-ibrahim-and-his-children) (verified by [90-ghost](https://www.tumblr.com/90-ghost/757288769795850240/legit-fundraiser)) +* [Help Shahd in Gaza!](https://www.gofundme.com/f/help-shahd-in-gaza) (#224 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A228)) +* [Save Dr. Farhat's family from genocide in Gaza](https://www.gofundme.com/f/saving-dr-farhats-family-towards-hope) (#248 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A252)) +* [Assist in evacuating my family from the war in Gaza.](https://www.gofundme.com/f/Help-Mohammed-alhabil-Family) (#166 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A170)) + * [Family relief and survival from massacres](https://www.gofundme.com/f/family-relief-and-survival-from-massacres) ([verified by association](https://www.tumblr.com/a-shade-of-blue/761542408474345472); this fundraiser belongs to a niece of Muhammad Al-Habil, whose fundraiser is linked just above) + * [Help me and my family escape to safety](https://www.gofundme.com/f/help-me-and-my-family-escape-to-safety) ([verified by association](https://www.tumblr.com/a-shade-of-blue/762595796863647744/only-330-raised-of-50000-goal-last-donation); this fundraiser belongs to a nephew of Muhammad Al-Habil, whose fundraiser is linked just above) +* [Emergency: Help Evacuate My Family From GAZA WAR](https://www.gofundme.com/f/help-save-the-lives-of-my-family-in-gaza) (#26 in [Operation Olive Branch spreadsheet's masterlist tab](https://docs.google.com/spreadsheets/d/1vtMLLOzuc6GpkFySyVtKQOY2j-Vvg0UsChMCFst_WLA/edit?gid=1061843896#gid=1061843896&fvid=647479800); also listed in [Project Watermelon Donation Links spreadsheet's Donate to Families in Gaza tab](https://docs.google.com/spreadsheets/d/16XhzsCbsRV-cMAzRA8gTNxaYt_FAbf6nq3ZNGP4Q9U8/edit?gid=1452518893#gid=1452518893), under the family name Haya Nahed Alshawish) +* [Urgent Help Needed to Evacuate My Family from Gaza](https://www.gofundme.com/f/e6vc7g-urgent-help-needed-to-evacuate-my-family-from-gaza) (shared by [90-ghost](https://www.tumblr.com/90-ghost/756556255005491200)) +* [Help Nour and his family escape from the war in Gaza](https://www.gofundme.com/f/donate-to-help-nour-and-his-family-escape-the-war-in-gaza) (verified by [roadimusprime](https://www.tumblr.com/roadimusprime/757885015014227968/and-at-the-time-that-i-am-writing-this-our) who helped setting up this fundraiser) +* [Help Musab and his family,my pets survive this war in Gaza.](https://www.gofundme.com/f/help-musab-and-his-family-survive-this-war-in-gaza-they-nee) (Musab's story was shared by [90-ghost](https://www.tumblr.com/90-ghost/755436620006686720), but this new fundraiser [needed to be created for Musab due to a scam](https://www.tumblr.com/musababed/757808283298004993)) +* [Hope and Safety for Amal and Her Children in Gaza](https://www.gofundme.com/f/hope-and-safety-for-amal-and-her-children-in-gaza) (shared by [90-ghost](https://www.tumblr.com/90-ghost/755297146774978560)) +* [Please Save What's Left of My Family](https://www.gofundme.com/f/donate-to-restore-the-lives-of-the-balousha-family) (verified by [90-ghost](https://www.tumblr.com/90-ghost/757288369570152448/legit-fundraiser)) +* [Save Mohamed and his elderly parents from genocide](https://www.gofundme.com/f/save-mohamed-and-his-elderly-parents-from-genocide?attribution_id=sl:7b8ea3b1-7192-4e6d-ac64-285c74c9c372) (verified by [90-ghost](https://www.tumblr.com/90-ghost/755378263140024320/legit-fundraiser)) +* [Support Gaza Family's Journey to Recovery](https://www.gofundme.com/f/fzgga8-support-gaza-familys-journey-to-recovery) (shared by [90-ghost](https://www.tumblr.com/90-ghost/757170837598126080)) +* [Help us build new hope for me and my family](https://www.gofundme.com/f/help-us-build-new-hope-for-me-and-my-family) (shared by [90-ghost](https://www.tumblr.com/90-ghost/754544734691786752) and [northgazaupdates](https://www.tumblr.com/northgazaupdates/754969078935044096)) +* [Helping the Helles family achieve a better future](https://www.gofundme.com/f/helping-the-helles-family-achieve-a-better-future) (verified by [90-ghost](https://www.tumblr.com/90-ghost/757170722766454784/legit-fundraiser)) +* [Help save my family to survive the genocide in Gaza](https://www.gofundme.com/f/Stand-With-AlBalawi-Family) (verified by [90-ghost](https://www.tumblr.com/90-ghost/754486025365209088/legit-fundraiser)) +* [Helping my family rebuild our home](https://www.gofundme.com/f/dr66mz-helping-my-family-rebuild-our-home) (#198 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A202)) +* [Help Mohamed's children escape from the Gaza war to Safety](https://www.gofundme.com/f/please-help-this-family-get-out-of-the-gaza-war) (shared by [90-ghost](https://www.tumblr.com/90-ghost/755749578786127872)) +* [Death chases my family in Gaza; help me save them](https://www.gofundme.com/f/death-chases-my-family-in-gaza-help-me-save-them) (#151 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A155)) +* [Help My Family Evacuate to Safety](https://www.gofundme.com/f/gtuw5-help-my-family-evacuate-to-safety) (verified by association; this fundraiser was [shared by their friend Mohi](https://www.tumblr.com/dlxxv-vetted-donations/758442260915421184), whose [fundraiser](https://www.gofundme.com/f/support-mohis-fight-for-survival-in-gaza) was shared by [90-ghost](https://www.tumblr.com/90-ghost/757063664601858048)) +* [Help Youssef Provide Medicine and Shelter](https://www.gofundme.com/f/help-youssef-provide-medicine-and-shelter) (#255 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A259); row 132 in [Bees and Watermelons](https://linktr.ee/beesandwatermelons)' [priority campaigns spreadsheet](https://docs.google.com/spreadsheets/d/1J-1KNHXmvY098fuCDWiOIm1fcphAgkXA8nnWqOSXouw/edit?gid=283092143#gid=283092143&range=B132)) +* [Save Malak's Dreams and Family from Gaza](https://www.gofundme.com/f/save-malaks-dreams-and-family-from-gaza) (verified by [90-ghost](https://www.tumblr.com/90-ghost/756023439469477889/legit-fundraiser)) +* [Help Alaa family from this hard war](https://www.gofundme.com/f/sp46z-help-my-family-to-travel-to-a-safe-place) (#99 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?pli=1&gid=0#gid=0&range=A103)) +* [Help Ahmed Jehad and his newborn survive!](https://www.gofundme.com/f/ahmed-jehad-and-his-newborn-need-to-survive) (Row 171 in [Bees and Watermelons](https://linktr.ee/beesandwatermelons)' [priority campaigns spreadsheet](https://docs.google.com/spreadsheets/d/1J-1KNHXmvY098fuCDWiOIm1fcphAgkXA8nnWqOSXouw/edit?gid=283092143#gid=283092143&range=B171)) +* [Help Evacuate My Family from Gaza to Safety](https://www.gofundme.com/f/reconstruction-of-a-destroyed-house) (#125 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A129)) +* [Help my family survive and start a new life](https://www.gofundme.com/f/help-baby-omar-and-his-family-survive) (shared by [90-ghost](https://www.tumblr.com/90-ghost/758166499964878848)) +* [Evacuate Yousef and his family from Gaza](https://www.gofundme.com/f/evacuate-yousef-and-his-family-from-gaza) (#246 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A250)) +* [Help Nour and her Family Achieve a Better Future](https://www.gofundme.com/f/save-nour-and-her-family-from-war-help-them-escape) (shared by [90-ghost](https://www.tumblr.com/90-ghost/756899183536078848)) +* [Support Aseeel Fight for Life and Family in Gaza](https://www.gofundme.com/f/support-aseels-fight-for-life-and-family-in-gaza) (verified by [90-ghost](https://www.tumblr.com/90-ghost/757064652185337856/legit)) +* [Support & Help My Family From Gaza Strip](https://www.gofundme.com/f/help-the-family-of-misk-sohaib-get-out-to-safety) (shared by [90-ghost](https://www.tumblr.com/90-ghost/757065363567640576)) +* [Help Oday And Family Evacuate Gaza , Rebuild Lives](https://www.gofundme.com/f/help-oday-and-family-evacuate-gaza-rebuild-lives) (#261 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A265)) +* [Help heba and his family to survive their life](https://www.gofundme.com/f/help-heba-and-his-family-to-survive-their-life) (shared by [90-ghost](https://www.tumblr.com/90-ghost/757185259555127296)) +* [Defend my brother's family from genocide in gaza](https://www.gofundme.com/f/help-poor-injyred-in-gaza) (shared by [90-ghost](https://www.tumblr.com/90-ghost/758172410029719552)) +* [Support Asil Fight for Life and Family in Gaza](https://www.gofundme.com/f/support-aseels-fight-for-life-and-family-in-gaza) (verified by [90-ghost](https://www.tumblr.com/90-ghost/757743956823048192/dont-forget-to-help-asel)) +* [Support Family escape from rafah to save place](https://www.gofundme.com/f/help-ayahs-family-escape-gaza-crisis) (verified by association; this fundraiser was [shared by their friend Mohi](https://www.tumblr.com/ana-bananya/758258451537395712/this-campaign-belongs-to-a-friend-of-mohiy-gaza), whose [fundraiser](https://www.gofundme.com/f/support-mohis-fight-for-survival-in-gaza) was shared by [90-ghost](https://www.tumblr.com/90-ghost/757063664601858048)) +* [Bara El Shaer Family Survival Fund](https://www.gofundme.com/f/el-shaer-family-survival-fund) (Baraa has an [Instagram account](https://www.instagram.com/bara_belal038/) that has been used for years, and this fundraiser has also been shared by another Instagram user, [river2cgza](https://www.instagram.com/river2cgza/), along with other verified fundraisers) +* [Help Safaa secure her children‘s lives after war](https://www.gofundme.com/f/help-safaa-secure-her-familys-life-after-war) (#135 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A139)) +* [Desperate plea: Help my family evacuate Gaza war!](https://www.gofundme.com/f/karamsaid) (#109 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A113)) +* [Help us build new hope for me and my family](https://www.gofundme.com/f/a6mv2z-help-us-build-new-hope-for-me-and-my-family) ([verified by association](https://www.tumblr.com/a-shade-of-blue/759269512056029184/donate-to-help-us-build-new-hope-for-me-and-my); Hassan is a nephew of Mohammed Alhabeel, whose fundraiser is lited as #166 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A170). Note that this is not the same fundraiser as the above that shared the same title) +* [Help Dr. Shahad and Farah complete their education](https://www.gofundme.com/f/help-dr-shahad-and-farah) (shared by [90-ghost](https://www.tumblr.com/90-ghost/756898822254395392) and vetted by association; Farah is [Nesma's sister](https://www.tumblr.com/nesmamomen/755734008155996160/only-5-seconds-of-your-time), and Nesma's fundraiser has been vetted by [el-shab-hussein](https://www.tumblr.com/el-shab-hussein/749848198102827008/hello-good-sir-ive-been-supporting-a-family-but) and shared by [nabulsi](https://www.tumblr.com/nabulsi/752822250810605568)) +* [Amira's Story: Between Hope and Resilience - A Call for Soli](https://www.gofundme.com/f/amiras-story-between-hope-and-resilience-a-call-for-soli) (verified by [nabulsi](https://www.tumblr.com/nabulsi/752577548412731392/donate-to-amiras-story-between-hope-and)) +* [Help Save Ahmed Family From Gaza](https://www.gofundme.com/f/help-save-ahmed-family-from-gaza) ([verified by association](https://www.tumblr.com/a-shade-of-blue/759268417249361920); Ahmed is the brother of Mohammed Alhabeel, whose fundraiser is lited as #166 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A170).) +* [From Rubble to Success: Helping Osama Rebuild His Dream](https://www.gofundme.com/f/Helping-Osama-Rebuild-His-Dream) (shared by [90-ghost](https://www.tumblr.com/90-ghost/760346545235329024)) + * [Support a Family's Journey to Safety and Peace](https://www.gofundme.com/f/support-a-family-journey-to-safety-and-peace) ([verified by association](https://www.tumblr.com/c-u-c-koo-4-40k/763044851084296192/everyone-this-is-a-friend-of-osama-basil-sh); this fundraiser belongs to a friend of Osama, whose fundraiser is linked just above. Also shared by [90-ghost](https://www.tumblr.com/90-ghost/763057383436107776)) +* [Please help my family in Gaza](https://www.gofundme.com/f/q37qd5-please-help-my-family-in-gaza) (shared by [90-ghost](https://www.tumblr.com/90-ghost/760328893428367360)) +* [Help Eslam Save Her Family](https://www.gofundme.com/f/help-eslam-save-her-family) (row 175 in [Bees and Watermelons](https://linktr.ee/beesandwatermelons)' [priority campaigns spreadsheet](https://docs.google.com/spreadsheets/d/1J-1KNHXmvY098fuCDWiOIm1fcphAgkXA8nnWqOSXouw/edit?gid=283092143#gid=283092143&range=D175)) + * [Helping my family to evacuate from Gaza](https://www.gofundme.com/f/kr85g-safe-my-family) (verified by [gaza-evacuation-funds](https://www.tumblr.com/gaza-evacuation-funds/760224788809695232/todays-vetted-fundraisers); also [verified by association](https://www.tumblr.com/dlxxv-vetted-donations/759148525328220160/this-campaign-is-vetted-by-association-through); Ayaa Mahmoud, the person this fundraiser belongs to, is the sister-in-law of Eslam, another Palestinian whose fundraiser is linked just above) + * [Helping Lama & Mohammed to evacuate from Gaza](https://www.gofundme.com/f/helping-lama-mohammed-to-evacuate-from-gaza) ([verified by association](https://www.tumblr.com/dlxxv-vetted-donations/759976289261305856/lama-is-indeed-vetted-by-association-through); Lama's husband is an acquaintance of Ayaa Mahmoud, whose fundraiser is linked just above) +* [Help Abood From the War](https://www.gofundme.com/f/help-abboud-from-the-war) ([verified by association](https://www.tumblr.com/dlxxv-vetted-donations/758342969132728320); this fundraiser belongs to the brother of Mohi, whose [fundraiser](https://www.gofundme.com/f/support-mohis-fight-for-survival-in-gaza) was shared by [90-ghost](https://www.tumblr.com/90-ghost/757063664601858048)) +* [Save My Family from the War Nightmare in Gaza](https://www.gofundme.com/f/abgwv-help-us) (shared by [northgazaupdates](https://www.tumblr.com/northgazaupdates/756089494338420736)) +* [Help Salem Family From Gaza](https://www.gofundme.com/f/help-salem-family-from-gaza) (verified by [90-ghost](https://www.tumblr.com/90-ghost/757065439413174272/legit)) +* [Please save me, my family and my future from the brutal war](https://www.gofundme.com/f/help-me-to-complete-my-education-in-gaza) (verified by [90-ghost](https://www.tumblr.com/90-ghost/755122761409642496/legit-fundraiser)) +* [Help Nour and his family escape from the war in Gaza](https://www.gofundme.com/f/donate-to-help-nour-and-his-family-escape-the-war-in-gaza) (shared by [90-ghost](https://www.tumblr.com/90-ghost/760377411969875968)) +* [Help Muhammad and his family live a better life](https://www.gofundme.com/f/znu6m-help-muhammad-and-his-family-live-a-better-life) (verified by [90-ghost](https://www.tumblr.com/90-ghost/760285761067253760/legit-fundraiser)) +* [Donate to Ahmed's Journey to Safety and Education](https://www.gofundme.com/f/donate-to-ahmeds-journey-to-safety-and-education) (shared by [90-ghost](https://www.tumblr.com/90-ghost/758711734896918528)) +* [Support Amal's Family in War-Torn Gaza Escape to Egypt](https://www.gofundme.com/f/support-amals-family-in-wartorn-gaza-escape-to-egypt) ([verified by association](https://www.tumblr.com/acepumpkinpatrick/761630225423646720); this fundraiser belongs to the brother of [Asmaa](https://www.tumblr.com/asmaamajed2/761630455342776320), whose [fundraiser](https://www.gofundme.com/f/8wewmz-help-asmaa-to-continue-school-outside-of-gaza) has been shared by [90-ghost](https://www.tumblr.com/90-ghost/758170896860151808)) +* [Help Us Escape the Ravages of War: Emergency Evacuation Fund](https://www.gofundme.com/f/help-us-escape-the-ravages-of-war-emergency-evacuation-fund) (#212 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A216)) +* [Help Nevin alserr family escape the war](https://www.gofundme.com/f/support-niveen-familys-journey-to-safety) (#314 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A318)) +* [Help Displaced Family in Gaza](https://www.gofundme.com/f/gga9a-help-displaced-families-in-gaza) (shared by [Salaah Bilaal](https://www.tumblr.com/bilal-salah0/759280967486767104/please-share-the-post), whose fundraiser is #132 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A136)) +* [Your help is the only hope to save Abdallah & his family from genocide](https://gogetfunding.com/your-help-is-the-only-hope-to-save-abdallah-his-family-from-genocide/) (#315 in [el-shab-hussein and nabulsi’s Vetted Gaza Fundraiser List](https://docs.google.com/spreadsheets/d/1yYkNp5U3ANwILl2MknJi9G7ArY4uVTEEQ1CVfzR8Ioo/edit?gid=0#gid=0&range=A319)) +* [Rising from the Ashes: Ghada’s Journey of Hope and Resilien](https://www.gofundme.com/f/rising-from-the-ashes-ghadas-journey-of-hope-and-resilien) (#6 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A11)) +* [Urgent,Help us Recover our Home, Education,Work and FAMILY](https://www.gofundme.com/f/urgent-help-us-recover-our-home-education-and-work) (shared by [gaza-evacuation-funds](https://www.tumblr.com/gaza-evacuation-funds/762875245776502784/donate-to-urgenthelp-us-recover-our-home)) +* [Ahmed's Autism Journey: a Path of Hope and Healing](https://www.paypal.com/donate?campaign_id=EJ892Z3JYTPYS) ([vetted by association](https://www.tumblr.com/a-shade-of-blue/762812657802838016/vetted-by-association-as-you-can-see-above-this); this campaign was [promoted by Nesma Ahmed](https://www.tumblr.com/nesmamomen/762057439135842304), whose [fundraiser](https://www.gofundme.com/f/help-nesmas-and-her-family-evacuate) had been vetted by [el-shab-hussein](https://www.tumblr.com/el-shab-hussein/749848198102827008/hello-good-sir-ive-been-supporting-a-family-but)) +* [Help my family survive and start a new life](https://www.gofundme.com/f/urgent-help-needed-a-journey-from-gaza-to-safety) (#75 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A80). Note that this is not the same fundraiser as the above that shared the same title) +* [Help Anas & Ahmed rebuild their future in Gaza](https://www.gofundme.com/f/Help-Anas-and-Ahmed-in-Gaza) (verified by [90-ghost](https://www.tumblr.com/90-ghost/762445389624492032/legit) and listed as #83 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A88)) +* [Help Mahmoud's Family Overcome War Tragedy](https://www.gofundme.com/f/help-mahmouds-family-overcome-war-tragedy) (verified by [90-ghost](https://www.tumblr.com/90-ghost/755121680324657152/legit-fundraiser)) +* [Help me get food water and medicine for my little kids !!](https://www.gofundme.com/f/r8kj4-help-me-get-food-water-and-medicine-for-my-little-kids) ([verified by Salaah Bilaal](https://www.tumblr.com/mohammedayyads-blog/760010459463254016/donate-to-help-me-get-food-water-and-medicine-for)) +* [Emergency Appeal: Help Save My Children's](https://www.gofundme.com/f/emergency-appeal-help-save-my-childrens) (#187 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A192)) +* [Help me get my family out of Gaza. Their lives have become v](https://www.gofundme.com/f/help-me-get-my-family-out-of-gaza-their-lives-have-become-v) (#192 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A197)) +* [Save the family of Salman Hellis from the Gaza Strip](https://www.gofundme.com/f/save-the-family-of-salman-hellis-from-the-gaza-strip) (verified by [90-ghost](https://www.tumblr.com/90-ghost/761647879548993536)) +* [Support Khawla's Family in Gaza Crisis](https://www.gofundme.com/f/support-khawlas-family-in-gaza-crisis) ([verified by association](https://www.tumblr.com/ana-bananya/761532739985047552/donate-to-support-khawlas-family-in-gaza-crisis); this fundraiser belongs to the sister of Mohi, whose [fundraiser](https://www.gofundme.com/f/support-mohis-fight-for-survival-in-gaza) was shared by [90-ghost](https://www.tumblr.com/90-ghost/757063664601858048)) +* [Help Ahlam Rebuild Her Life and Dreams](https://www.gofundme.com/f/help-ahlam-rebuild-her-life-and-dreams) (#73 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A78)) +* [Help Zaen and Yehya to get out of Gaza](https://www.gofundme.com/f/help-zaen-and-yehya-to-get-out-of-gaza) (#127 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A132)) +* [Help this family to get out of Gaza](https://www.gofundme.com/f/help-this-family-to-get-out-of-gaza) (#111 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A116)) +* [Help me to evacuate from this crazy war in Gaza](https://www.gofundme.com/f/m6hdrt-support-ahmad-to-complete-his-education) (#119 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A124)) +* [Help Ahmed Continue His Education and Support His Family](https://www.gofundme.com/f/help-ahmed-continue-his-education-and-support-his-family) (#303 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A308)) +* [Support Ibrahim’s Fight For Survival](https://www.gofundme.com/f/support-ibrahims-fight-for-survival) (#220 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A225)) +* [Please help us with travel and treatment for urgent need](https://www.gofundme.com/f/please-help-us-with-travel-and-treatment-for-urgent-need) (#99 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A104)) +* [Donate to help Mona's famil to evacuate from Gaza](https://www.gofundme.com/f/donate-to-help-monas-famil-to-evacuate-from-gaza) (#253 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A258)) +* [Help me evacuate my family to safety and peace.](https://www.gofundme.com/f/help-me-evacuate-my-family-to-safety-and-peace) (#284 in [GazaVetters](https://www.tumblr.com/gazavetters)' [spreadsheet](https://docs.google.com/spreadsheets/d/1YGgkXoyam7tnbXb-vqWsHFs3Puyf_xYeXY2dPrZQY1M/edit?gid=0#gid=0&range=A289)) +* [Help my family](https://www.gofundme.com/f/3td2x-help-my-family) (shared by [90-ghost](https://www.tumblr.com/90-ghost/768134181180129280)) \ No newline at end of file diff --git a/src/assets/adoptables/32bitcafe-vacation/alexandra-stamp.png b/src/assets/adoptables/32bitcafe-vacation/alexandra-stamp.png new file mode 100644 index 0000000000000000000000000000000000000000..8f514238c4aff016d64ccf1bede80f18d6d26532 GIT binary patch literal 8068 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Ðz$7_*%aaJ0K_W>a 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 \ No newline at end of file diff --git a/src/links/linkgroups/linkgroups.11tydata.js b/src/links/linkgroups/linkgroups.11tydata.js new file mode 100644 index 00000000..c10ee977 --- /dev/null +++ b/src/links/linkgroups/linkgroups.11tydata.js @@ -0,0 +1,4 @@ +export default { + tags: ["link groups"], + permalink: false +} \ No newline at end of file diff --git a/src/links/linkgroups/resources.md b/src/links/linkgroups/resources.md new file mode 100644 index 00000000..3bc8bd39 --- /dev/null +++ b/src/links/linkgroups/resources.md @@ -0,0 +1,47 @@ +--- +title: Resources +date: 2024-08-02 +updated: 2025-02-24T08:50:56+0800 +toc: true +--- + +### Archives +* [The Anarchist Library](https://theanarchistlibrary.org/) +* [Internet Archive](https://archive.org/) +* [archive.today](https://archive.is/) + +### Bypass Paywalls +* [Paywall Reader](https://paywallreader.com/) +* [Bypass Paywall Clean](https://github.com/bpc-clone/bpc_updates) browser extension + +### Download Tools +* [cobalt](https://cobalt.tools/) — Download videos and audio from various platforms. + +### Gaming +* [3DS Hacks Guide](https://3ds.hacks.guide/) +* [Fuck off EA App](https://github.com/p0358/Fuck_off_EA_App) + +#### Video Game Mods +These are lists of video game mods I use for my own playthroughs. + + +### Images +* [Squoosh](https://squoosh.app/) — Privacy-friendly image compressor. + +### Privacy +* [Privacy Guides](https://www.privacyguides.org/) +* [WinScript](https://winscript.cc/) — Open-source tool to help you build custom scripts for Windows 10 and 11 for debloating, privacy, performance and more. + +### Software and Website Alternatives +* [AlternativeTo](https://alternativeto.net/) — Crowdsourced software recommendations. +* [Indie Wiki Buddy](https://getindie.wiki/) — Browser extension to discover indie wiki alternatives to Fandom.com wikis, and redirect Fandom.com wikis to a Breezewiki front end. + +### Web + +* [Unplatform](https://unplatform.fromthesuperhighway.com/) by ajazz — Interactive guidebook, online library, and recommendations database for escaping social media and joining the indie web. \ No newline at end of file diff --git a/src/links/linkgroups/webmastery.md b/src/links/linkgroups/webmastery.md new file mode 100644 index 00000000..2b395cd1 --- /dev/null +++ b/src/links/linkgroups/webmastery.md @@ -0,0 +1,56 @@ +--- +title: Webmastery +date: 2024-07-01 +updated: 2025-03-27T09:15:36+0800 +toc: true +--- + +### Webmastery Tutorials + +* [HTML for People](https://htmlforpeople.com/) by Blake Watson +* [Make Your Own Website](https://web.pixelshannon.com/make/) by Shannon Kay +* [Creating Your Own Website](https://32bit.cafe/cyowebsite/) by 32-Bit Cafe +* [Interacting with Other Websites](https://32bit.cafe/interactingontheweb/) by 32-Bit Cafe +* [How to build your own RSS Feed](https://caffeineandlasers.neocities.org/blogs/rss) by Cameron Jones +* [Roll your own RSS feed](https://thedabbler.patatas.ca/pages/roll_your_own_rss.html) by patatas + +### Webmastery Guides + +* [Reducing HTML Redundancy](https://owlsroost.xyz/articles/2023-12-23-reducing-html-redundancy.html) by Owl +* [How to Make Your Site Mobile-Friendly](https://owlsroost.xyz/articles/2024-06-24-how-to-make-your-site-mobile-friendly.html) by Owl +* [How to Favicon: Three files that fit most needs](https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs) by Irina Nazarova + +### Webmastery Resources + +* [Resources List for the Personal Web](https://discourse.32bit.cafe/t/resources-list-for-the-personal-web/49) by 32-Bit Cafe — I have also contributed to this list +* [Can I use...](https://caniuse.com/) — Check browser compatibility for web features +* [SVGOMG](https://jakearchibald.github.io/svgomg/) — SVG optimiser +* [URL-encoder for SVG](https://yoksel.github.io/url-encoder/) + +### Ideas for Your Website + +* [Ideas for Your Personal Website](https://32bit.cafe/websiteideas/) by 32-Bit Cafe +* [Slash Pages](https://slashpages.net/) +- [Bekah's Blog Idea Generator](https://www.thefrugalgamer.net/programming/blogPrompts/) + +### Web Accessibility + +* [The Access Manifesto](https://joeclark.org/book/sashay/serialization/AccessManifesto.html) by Joe Clark — Worth noting that this was originally written in 2002 +* [You Should Care About Accessibility](https://owlsroost.xyz/articles/2023-08-20-you-should-care-about-accessibility.html) by Owl +* [A Field Guide to Web Accessibility](https://theultimatemotherfuckingwebsite.com/) by Valery +* [Resources for Beginners to Learn About Web Accessibility and Web Design](https://www.tumblr.com/foxpunk/700063063948312576/hey-you-yeah-you-with-the-cool-neocities) curated by foxpunk +* [5 ways to make your neocities site more accessible](https://sleepydev.neocities.org/posts/5%20Ways%20to%20make%20your%20Neocities%20site%20more%20accessible) by Sleepy dev +* [Three Common Accessibility Problems and How to Fix Them](https://solaria.neocities.org/beginnersaccessibility) by Solaria +* [What I've Learned About Web Accessibility as a Dyslexic, Sighted, Mouse User](https://solaria.neocities.org/accessibility) by Solaria +* [Screen reader testing: how to test your website's accessibility](https://www.siteimprove.com/glossary/screen-reader-testing/) by Siteimprove + +### Eleventy +Resources for learning to use the static site generator [Eleventy](https://www.11ty.dev/), which is also used for building {{ sitemeta.siteName }}. + +* [The 11ty Bundle](https://11tybundle.dev/) — Collection of Eleventy resources +* [My Neocities workflow: using Eleventy and the CLI to speed up development](https://whiona.weblog.lol/2023/10/my-neocities-workflow:-using-eleventy-and-the-cli-to-speed-up-development) by Whiona — Written for Neocities users +* [Strawberry Starter](https://strawberrystarter.neocities.org/) by Kate Bagenzo — An Eleventy blog template aimed at website beginners that can be uploaded automatically to Neocities +* [Migrating to Eleventy](https://renkotsuban.com/posts/2023-11-15-Migrating-to-Eleventy.html) by Renkon — A beginner-friendly guide to get started with Eleventy +* [How I teach Eleventy from scratch](https://hamatti.org/posts/how-i-teach-eleventy-from-scratch/) by Juha-Matti Santala +* [Getting set up in Eleventy](https://cloudcannon.com/tutorials/eleventy-beginner-tutorial/) by Mike Neumegen +* [Learn Eleventy](https://learn-eleventy.pages.dev/) by uncenter \ No newline at end of file diff --git a/src/links/linkgroups/websites.njk b/src/links/linkgroups/websites.njk new file mode 100644 index 00000000..8ab92a55 --- /dev/null +++ b/src/links/linkgroups/websites.njk @@ -0,0 +1,82 @@ +--- +title: Websites +date: 2023-01-28 +toc: true +--- + +{%- macro siteButton(url, file, alt, tooltip=alt, width=88, height=31) -%} +
    1. + + {{ alt }} + +
    2. +{%- endmacro -%} + +{% headingAnchor 3 %}Personal Sites I Enjoy{% endheadingAnchor %} + +

      Websites with Buttons

      +
        + {{ siteButton("https://karuma.me/", "sites/10kph.png", "10kph") }} + {{ siteButton("https://alyaza.neocities.org/", "sites/alyaza.gif", "alyaza's birzeblog") }} + {{ siteButton("https://www.autisticasfxxk.com/", "sites/autisticasfxxk.gif", "Autistic As Fxxk") }} + {{ siteButton("https://ballonlea.net/", "sites/ballonlea.png", "Ballonlea") }} + {{ siteButton("https://www.beepbird.net/", "sites/beepbird.gif", "Beep Bird") }} + {{ siteButton("https://chrisburnell.com/", "sites/chrisburnell.gif", "Chris Burnell") }} + {{ siteButton("https://blog.darylsun.page/", "sites/darylsun.webp", "Daryl Sun's Journal") }} + {{ siteButton("https://divergentrays.com/", "sites/divergentrays.png", "Divergent Rays") }} + {{ siteButton("https://cyberneticdryad.neocities.org/", "sites/dryadglen.png", "Dryad Glen") }} + {{ siteButton("https://frills.dev/", "sites/frills.png", "Frills") }} + {{ siteButton("https://your-local-grubdog.neocities.org/", "sites/grubdog.png", "Grubdog") }} + {{ siteButton("https://groundedwren.com/", "sites/groundedwren.png", "Grounded Wren") }} + {{ siteButton("https://jasm1nii.xyz/", "sites/jasminesjournal.png", "jasmine's journal") }} + {{ siteButton("https://jefbecker.com/", "sites/jefbecker.png", "JEFBECKER") }} + {{ siteButton("https://kalechips.net/", "sites/kalechips.png", "Kalechips") }} + {{ siteButton("https://amalinalai.github.io/precipice/", "sites/lina.gif", "lina's home") }} + {{ siteButton("https://lostletters.neocities.org/", "sites/lostletters.gif", "Lost Letters") }} + {{ siteButton("https://manyface.neocities.org/", "sites/manyface.png", "manyface world") }} + {{ siteButton("https://melvian.net/", "sites/melvian.png", "Melvian.net") }} + {{ siteButton("https://mycorrhiza.space/", "sites/mycorrhiza.png", "Mycorrhiza's Space") }} + {{ siteButton("https://pinkvampyr.leprd.space/", "sites/pinkvampyr.gif", "Pinkvampyr") }} + {{ siteButton("https://ribo.zone/", "sites/ribose.png", "Ribose") }} + {{ siteButton("https://sakuradreams.neocities.org/", "sites/sakuradreams.gif", "Sakura Dreams") }} + {{ siteButton("https://sanguineroyal.com/", "sites/sanguineroyal.gif", "Sanguine Royal") }} + {{ siteButton("https://solaria.neocities.org/", "sites/solaria.png", "Solaria's Webspace") }} + {{ siteButton("https://starbreaker.org/", "sites/starbreaker.avif", "🤘 starbreaker.org 🤘") }} + {{ siteButton("https://symliadoo.com/", "sites/symliadoo.png", "sym's living room 🍨") }} + {{ siteButton("https://whiona.me/", "sites/whiona.png", "Whiona") }} + {{ siteButton("https://wings.nu/", "sites/wings.png", "Wings.NU") }} + {{ siteButton("https://xandra.cc/", "sites/xandra.png", "Museum of Alexandra") }} +
      +

      Websites without Buttons

      + + +{% headingAnchor 3 %}Web Directories{% endheadingAnchor %} +

      Directories with Site Buttons

      +
        + {{ siteButton("https://pinkvampyr.leprd.space/accessiblenet/", "directories/accessiblenet.png", "Accessibility Net Directory") }} + {{ siteButton("https://bukmark.club/", "directories/bukmarkclub.png", "BUKMARK.CLUB") }} + {{ siteButton("https://indieseek.xyz/", "directories/indieseek.png", "Indieseek.xyz Indie Web Directory") }} + {{ siteButton("https://linklane.net/", "directories/linklane.png", "Link Lane") }} + {{ siteButton("https://list-me.com/", "directories/list-me.png", "List-Me.com") }} + {{ siteButton("https://kalechips.net/responsive/", "directories/responsiveweb.png", "Responsive Web Directory") }} + {{ siteButton("https://smoothsailing.asclaria.org/", "directories/smoothsailing.png", "Smooth Sailing Listings") }} +
      +

      Directories without Site Buttons

      + + +{% headingAnchor 3 %}Communities{% endheadingAnchor %} +
        + {{ siteButton("https://32bit.cafe/", "communities/32-bit-cafe.png", "32-Bit Cafe") }} + {{ siteButton("https://zine.kalechips.net/index", "communities/saladmagazine.png", "Salad Magazine") }} +
      diff --git a/src/links/pages/mass-effect-le-mod-list.md b/src/links/pages/mass-effect-le-mod-list.md new file mode 100644 index 00000000..a6bd5b51 --- /dev/null +++ b/src/links/pages/mass-effect-le-mod-list.md @@ -0,0 +1,3385 @@ +--- +articleTitle: Leilukin's Mass Effect Legendary Edition Mod Build +desc: A list of Mass Effect Legendary Edition mods I use. +tags: ["contents", "mod lists"] +categories: ["mass effect", "video game mods"] +updated: 2025-02-23T17:14:33+0800 +isContentDivided: true +toc: true +--- + +{% container "article", "content__section" %} +Welcome to Leilukin’s {% cite "Mass Effect Legendary Edition" %} Mod Build! + +Here I’m compiling a list of all the modifications, or mods in short, that I use for {% cite "Mass Effect Legendary Edition" %}, remaster of the {% cite "Mass Effect" %} trilogy, a series of space opera role-playing video games developed by BioWare, for the best experience with the game. This document is made for my reference and to share with others. + +The format of this mod list is inspired by [KOTOR Community Portal's mod lists](https://kotor.neocities.org/modding/). + +(This mod list was last updated on ) +{% endcontainer %} + +{% container "article", "content__section" %} +## Important Notes + +In order to prevent mod conflicts as much as possible, installation order matters if you are using a lot of mods. Therefore, the full list of my mod build below has been arranged in the proper installation order to make all these mods compatible. If you are interested in following my mod build, you should install the mods in the order you are presented with them. + +It is important to note that **you cannot use mods for the original edition of the {% cite "Mass Effect" %} trilogy in the Legendary Edition, and vice versa**. Therefore, since the release of the Legendary Edition, mod authors need to either port or recreate the original trilogy mods, so they can be used for the Legendary Edition. +{% endcontainer %} + +{% container "article", "content__section" %} +## Mod Categories + +The mods I included in my mod build are divided into the following categories, which clarifies the types of changes the mod makes: + +Appearance Change +: Appearance change is not inherently graphics improvement, but rather a modification to the default appearance of a character, item, location, interface, etc. + +Bugfix +: As the name implies, this type of mod fixes bugs with the vanilla game. + +Framework +: These do not do anything noticeable in the game on their own after being installed, but some mods make use of them and require them to work. + +Graphics Improvement +: This type of mod improves the graphics in the vanilla game in some way, by retexturing and/or remodeling a character, item, location, etc. These mods usually come with high-resolution textures. + +Immersion +: These mods are not inherently bugfixes, but changes done to improve the internal consistency of the game’s content. + +Interface Change +: This type of mod makes changes to the game’s interface. + +Mechanics Change +: This type of mod makes changes to the game’s system which directly impacts the way you play the game, varying from changing the camera angle of a location to altering the core stats of a class. + +Modified Content +: Modified content is not inherently new content, but rather alterations to the vanilla game’s content because the vanilla content has some shortcomings. The changes made by this kind of mod were never intended to be in the vanilla game. + +Player Customisation +: This type of mod makes changes to customization options for the player character, by improving the vanilla customization options or adding new options, including face, hairstyle and outfits. + +Restored Content +: This type of mod restores content that has been cut from the vanilla game. In the case of Mass Effect Legendary Edition, some of the mods of this kind restores content that was present in the original edition, but is absent in the Legendary Edition. + +Sound Change +: As the name implies, these mods make changes to the sound in the vanilla game. The sound could be music or ambient audio. +{% endcontainer %} + +{% container "article", "content__section" %} +## {% cite "Mass Effect Legendary Edition" %} Modding Tools + +* [ME3Tweaks Mod Manager](https://me3tweaks.com/modmanager/): This mod manager can be used for both the original edition and the Legendary Edition of the Mass Effect trilogy. +* [Mass Effect Legendary Edition Character Code Translator](https://answers.ea.com/t5/Mass-Effect-Legendary-Edition/Import-your-Shepard-from-the-original-trilogy/td-p/10340553): This app allows you to convert your Shepard’s face code from the original edition of {% cite "Mass Effect 2" %} and {% cite "3" %} into the Legendary Edition. The Legendary Edition adds new options to the character creator, so you cannot just directly copy and paste the face code from the original edition and expect your Shepard to look the same in LE. [[(Download Mass Effect Legendary Edition Character Code Translator from Google Drive)](https://drive.google.com/drive/u/0/folders/1ixMj8Eyvfu6DVczMgSIR826xPO1GfMym)] +* [Trilogy Save Editor](https://www.nexusmods.com/masseffectlegendaryedition/mods/20): A save editor for the {% cite "Mass Effect" %} trilogy. If you are using any custom hair mods, using a save editor is required. +{% endcontainer %} + +{% container "article", "content__section" %} +## {% cite "Mass Effect 1" %} Legendary Edition Mods + +### Installed with ME3Tweaks Mod Manager + +#### LE1 Community Patch + +Mod Name +: [LE1 Community Patch](https://www.nexusmods.com/masseffectlegendaryedition/mods/23) + +Mod Author +: LE1 Community Patch Team + +Category +: Bugfix + +--- + +#### Myriad Pro Begone (LE1) + +Mod Name +: [Myriad Pro Begone](https://www.nexusmods.com/masseffectlegendaryedition/mods/1070) + +Mod Author +: Audemus + +Category +: Interface Change + +--- + +#### Vignette Remover (LE1) + +Mod Name +: [Vignette Remover](https://www.nexusmods.com/masseffectlegendaryedition/mods/428) + +Mod Author +: Mgamerz + +Category +: Graphics Improvement + +--- + +#### MELLO + +Mod Name +: [MELLO (Mass Effect 1 Legendary Lighting Overhaul)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1500) + +Mod Author +: Catachrism + +Category +: Graphics Improvement + +--- + +#### Appearance Modification Menu LE1 + +Mod Name +: [Appearance Modification Menu LE1](https://www.nexusmods.com/masseffectlegendaryedition/mods/2513) + +Mod Author +: DropTheSquid + +Category +: Player Customization & Appearance Changes + +--- + +#### Vanilla-like Femshep Hairstyles + +Mod Name +: [Vanilla-like Femshep Hairstyles (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1047) + +Mod Author +: spiderbabes + +Category +: Player Customization + +--- + +#### Halcyon Hairpack + +Mod Name +: [Halcyon Hairpack (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1497) + +Mod Author +: Mellin and Audemus + +Category +: Player Customization + +--- + +#### Proper Convo-Cutscene Skipper (LE1) + +Mod Name +: [Proper Convo-Cutscene Skipper (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1681) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +--- + +#### Flycam Keybinds (LE1) + +Mod Name +: [Flycam Keybinds (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1836) + +Mod Author +: Vegz + +Category +: Restored Content + +--- + +#### XP Rescale (LE1) + +Mod Name +: [XP Rescale (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/369) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +Installation Note +: I install the Default version. + +--- + +#### No Inventory Limit + +Mod Name +: [No Inventory Limit](https://www.nexusmods.com/masseffectlegendaryedition/mods/1391) + +Mod Author +: Herobrine24 + +Category +: Mechanics Change + +--- + +#### Instant Item Conversion + +Mod Name +: [Instant Item Conversion](https://www.nexusmods.com/masseffectlegendaryedition/mods/1523) + +Mod Author +: Herobrine24 + +Category +: Interface Change + +--- + +#### LE1 Definitive Audio Overhaul + +Mod Name +: [LE1 Definitive Audio Overhaul](https://www.nexusmods.com/masseffectlegendaryedition/mods/1560) + +Mod Author +: Devinite + +Category +: Sound Change + +--- + +#### Unlimited Sprint and Boost Duration + +Mod Name +: [Unlimited Sprint and Boost Duration](https://www.nexusmods.com/masseffectlegendaryedition/mods/337) + +Mod Author +: Sapphire/Nypheena + +Category +: Mechanics Change + +Installation Note +: Download and install Unlimited Sprint and Mako Boost LE1. + +--- + +#### Remove Screen Shake (LE1) + +Mod Name +: [Remove Screen Shake (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/110) + +Mod Author +: HenBagle + +Category +: Interface Change + +--- + +#### Quick Loot (LE1) + +Mod Name +: [Quick Loot (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1026) + +Mod Author +: rondeeno + +Category +: Mechanics Change + +--- + +#### Replenish Grenades LE1 + +Mod Name +: [Replenish Grenades LE1](https://www.nexusmods.com/masseffectlegendaryedition/mods/532) + +Mod Author +: HenBagle + +Category +: Added Content + +--- + +#### Skip Minigames (LE1) + +Mod Name +: [Skip Minigames (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/360) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +--- + +#### Paragade Persuasion (LE1) + +Mod Name +: [Paragade Persuasion (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1673) + +Mod Author +: rondeeno + +Category +: Mechanics Change + +--- + +#### Same-Gender Romances for LE1 + +Mod Name +: [Same-Gender Romances for LE1](https://www.nexusmods.com/masseffectlegendaryedition/mods/564) + +Mod Author +: rondeeno + +Category +: Modified Content & Restored Content + +Installation Note +: I also install the following components: +: * NPCs Flirt Regardless of Gender +: * Same-Gender LI Activates Beacon + +--- + +#### Saren Stages + +Mod Name +: [Saren Stages LE1](https://www.nexusmods.com/masseffectlegendaryedition/mods/666) + +Mod Author +: Catachrism + +Category +: Appearance Change & Immersion + +Installation Note +: I install the Noveria armor. + +--- + +#### Faster Airlock (LE1) + +Mod Name +: [Faster Airlock (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/753) + +Mod Author +: rondeeno + +Category +: Mechanics Change + +--- + +#### Normandy Rapid Transit (LE1) + +Mod Name +: [Normandy Rapid Transit (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/755) + +Mod Author +: rondeeno + +Category +: Mechanics Change + +--- + +#### Improved Wards Skybox (LE1) + +Mod Name +: [Improved Wards Skybox (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1176) + +Mod Author +: Audemus + +Category +: Appearance Change + +--- + +#### Morlan's Iconic Armor Store + +Mod Name +: [Morlan's Iconic Armor Store (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/684) + +Mod Author +: Kinkojiro + +Category +: Added Content + +--- + +#### Iconic Fashion Party (LE1) + +Mod Name +: [Iconic Fashion Party (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/745) + +Mod Author +: 55tumbl + +Category +: Appearance Change + +--- + +#### Casual Hubs for LE1 + +Mod Name +: [Casual Hubs for LE1](https://www.nexusmods.com/masseffectlegendaryedition/mods/574) + +Mod Author +: rondeeno + +Category +: Appearance Change + +--- + +#### Black Market License (LE1) + +Mod Name +: [Black Market License (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/661) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +--- + +#### Elements of Comparative Weaponry (LE1) + +Mod Name +: [Elements of Comparative Weaponry (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/639) + +Mod Author +: 55tumbl + +Category +: Interface Change + +--- + +#### Advanced Weapon Models for LE1 + +Mod Name +: [Advanced Weapon Models for LE1](https://www.nexusmods.com/masseffectlegendaryedition/mods/853) + +Mod Author +: Knighthawk + +Category +: Appearance Change + +--- + +#### LE1 Streamlined Weapon Loadouts + +Mod Name +: [LE1 Streamlined Weapon Loadouts](https://www.nexusmods.com/masseffectlegendaryedition/mods/870) + +Mod Author +: Knighthawk + +Category +: Mechanics Change + +--- + +#### Mission Timings (LE1) + +Mod Name +: [Mission Timings (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/754) + +Mod Author +: rondeeno + +Category +: Immersion + +--- + +#### Galaxy Map Trackers (LE1) + +Mod Name +: [Galaxy Map Trackers (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/426) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +Required Mod +: Private Message Terminal (LE1). + +--- + +#### Private Message Terminal (LE1) + +Mod Name +: [Private Message Terminal (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1525) + +Mod Author +: 55tumbl + +Category +: Appearance Change & Framework + +--- + +#### A Little Help From My Friends (LE1) + +Mod Name +: [A Little Help From My Friends (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1526) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +--- + +#### Eclectic Emails (LE1) + +Mod Name +: [Eclectic Emails (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1563) + +Mod Author +: TDA792 + +Category +: Mechanics Change + +--- + +#### Charted Worlds (LE1) + +Mod Name +: [Charted Worlds (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/524) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +--- + +#### Unique Moons + +Mod Name +: [Unique Moons](https://www.nexusmods.com/masseffectlegendaryedition/mods/1735) + +Mod Author +: SDeden + +Category +: Graphics Improvement + +Download Note +: I also download Galaxy Map Pictures. Install it after installing all the DLC mods I want to use via ME3Tweak Mod Manager. + +--- + +#### N7 MAKO (LE1) + +Mod Name +: [N7 MAKO (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/309) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +Installation Note +: I install the Tourist option. + +--- + +#### Mako Squadmate Banter + +Mod Name +: [Mako Squadmate Banter](https://www.nexusmods.com/masseffectlegendaryedition/mods/1310) + +Mod Author +: HenBagle + +Category +: Immersion + +Required Mod +: [LE1 Sideloader Framework](https://www.nexusmods.com/masseffectlegendaryedition/mods/1309) + +--- + +#### No Sexual Harassment (LE1) + +Mod Name +: [No Sexual Harassment (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/682) + +Mod Author +: rondeeno + +Category +: Restored Content & Modified Content + +Installation Note +: I install the following options: +: * No Sexist Dialogue +: * No Unwanted Touching + +--- + +#### Liara Consistency Mod (ME1LE) + +Mod Name +: [Liara Consistency Mod (ME1LE)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1183) + +Mod Author +: Khaar Machinima + +Category +: Appearance Change & Immersion + +Installation Note +: I install the LE3 face version. + +--- + +#### Alliance Uniform Consistency + +Mod Name +: [Alliance Uniform Consistency](https://www.nexusmods.com/masseffectlegendaryedition/mods/799) + +Mod Author +: Mistyvail + +Category +: Appearance Change & Immersion + +Download Note +: I also download Alliance Uniform Consistency (LE Launcher). + +--- + +#### Ashley Heavy Phoneix Armor Consistency + +Mod Name +: [Ashley Heavy Phoneix Armor Consistency](https://www.nexusmods.com/masseffectlegendaryedition/mods/1874) + +Mod Author +: UTILITY PAWN + +Category +: Immersion + +--- + +#### Wrex Heavy Mercenary Armor Consistency + +Mod Name +: [Wrex Heavy Mercenary Armor Consistency](https://www.nexusmods.com/masseffectlegendaryedition/mods/1876) + +Mod Author +: UTILITY PAWN + +Category +: Immersion + +--- + +#### New Casuals for Femshep LE1 + +Mod Name +: [New Casuals for Femshep LE1](https://www.nexusmods.com/masseffectlegendaryedition/mods/804) + +Mod Author +: rngdshep + +Category +: Appearance Change + +--- + +#### Ported Casuals for Male Shepard + +Mod Name +: [Ported Casuals for Male Shepard](https://www.nexusmods.com/masseffectlegendaryedition/mods/1071) + +Mod Author +: MentalHygiene + +Category +: Appearance Change + +--- + +#### ME3 Alliance Armor for LE1 + +Mod Name +: [ME3 Alliance Armor for LE1](https://www.nexusmods.com/masseffectlegendaryedition/mods/838) + +Mod Author +: Knighthawk + +Category +: Appearance Change & Immersion + +--- + +#### Eden Prime Red Sky Restored + +Mod Name +: [Eden Prime Red Sky Restored](https://www.nexusmods.com/masseffectlegendaryedition/mods/1367) + +Mod Author +: Vegz + +Category +: Appearance Change & Restored Content + +--- + +#### Easier Feros Persuasion Check + +Mod Name +: [Easier Feros Persuasion Check (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1261) + +Mod Author +: phoenixsoul13 + +Category +: Modified Content + +--- + +#### Mira Please Be Quiet + +Mod Name +: [Mira Please Be Quiet (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/734) + +Mod Author +: phoenixsoul13 + +Category +: Modified Content + +--- + +#### Dr. Heart Experiments + +Mod Name +: [Dr. Heart Experiments](https://www.nexusmods.com/masseffectlegendaryedition/mods/597) + +Mod Author +: Khaar Machinima + +Category +: Appearance Change & Immersion + +--- + +#### Virmire Savior Mod (LE1) + +Mod Name +: [Virmire Savior Mod (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1212) + +Mod Author +: Vegz + +Category +: Restored Content & Modified Content + +--- + +#### LE1 Diversification Project + +Mod Name +: [LE1 Diversification Project](https://www.nexusmods.com/masseffectlegendaryedition/mods/1172) + +Mod Author +: Audemus + +Category +: Appearance Change & Immersion + +Required Mods: LE1 Community Patch, Halcyon Hairpack (LE1), Advanced Weapon Models for LE1 + +--- + +#### Immersive Normandy Transmissions (LE1) + +Mod Name +: [Immersive Normandy Transmissions (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1728) + +Mod Author +: Audemus + +Category +: Immersion + +--- + +#### New Outfit for Matriarch Benezia + +Mod Name +: [New Outfit for Matriarch Benezia](https://www.nexusmods.com/masseffectlegendaryedition/mods/2255) + +Mod Author +: bejewledhanban + +Category +: Appearance Change + +--- + +#### Keepers Finders + +Mod Name +: [Keepers Finders (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1043) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +--- + +#### Hot Labs Restored + +Mod Name +: [Hot Labs Restored (LE1)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1708) + +Mod Author +: Vegz + +Category +: Restored Content + +--- + +#### Punch Charles Saracino + +Mod Name +: [Punch Charles Saracino](https://www.nexusmods.com/masseffectlegendaryedition/mods/1524) + +Mod Author +: beccatoria and Z794 + +Category +: Modified Content + +--- + +#### Anderson Alliance Uniform Consistency + +Mod Name +: [Anderson Alliance Uniform Consistency](https://www.nexusmods.com/masseffectlegendaryedition/mods/1955) + +Mod Author +: Utility Pawn + +Category +: Immersion + +--- + +#### Less Intense Vigil + +Mod Name +: [Less Intense Vigil](https://www.nexusmods.com/masseffectlegendaryedition/mods/822) + +Mod Author +: HenBagle + +Category +: Appearance Change + +--- + +#### Actual Effort Required + +Mod Name +: [Actual Effort Required (to save the Council)](https://www.nexusmods.com/masseffectlegendaryedition/mods/2027) + +Mod Author +: InvoicingEmu + +Category +: Immersion + +Installation Note +: I install the Easy option + +--- + +#### ALOV (LE1) + +Mod Name +: [A Lot Of Videos (ALOV)](https://www.nexusmods.com/masseffectlegendaryedition/mods/3) + +Mod Author +: Audemus and ALOV Team + +Category +: Graphics Improvement + +Installation Note +: “ALOV for ME1”. + +--- + +### Installed with Mass Effect Modder (MEM) + +#### Wraith Eyes (LE1) + +Mod Name +: [Wraith Eyes](https://www.nexusmods.com/masseffectlegendaryedition/mods/1085) + +Mod Author +: mulderitsme + +Category +: Graphics Improvement + +Installation Note +: Install Wraith Eyes LE1. + +--- + +#### Fix for Lighter Middle Part of Lipsticks for LE1 + +Mod Name +: [Fix for Lighter Middle Part of Lipsticks for LE1](https://www.nexusmods.com/masseffectlegendaryedition/mods/281) + +Mod Author +: MorningAngel + +Category +: Graphics Improvement + +--- + +#### Unique Moons (LE1) + +Mod Name +: [Unique Moons](https://www.nexusmods.com/masseffectlegendaryedition/mods/1735) + +Mod Author +: SDeden + +Category +: Graphics Improvement + +Download Note +: I also download and install Galaxy Map Pictures with Mass Effect Modder. + +--- + +#### Paramours (LE1) + +Mod Name +: [Paramours](https://www.nexusmods.com/masseffectlegendaryedition/mods/1132) **(WARNING: This link is Not Safe For Work)** + +Mod Author +: Anzella + +Category +: Graphics Improvement + +Download Note +: Download (LE1) Paramours. + +Installation Note +: I install (LE1) LCM LE3 Liara Nipples.mem and (LE1) 'Ashley' Nipples.mem. + +--- +{% endcontainer %} + +{% container "article", "content__section" %} +## {% cite "Mass Effect 2" %} Legendary Edition Mods + +### Installed with ME3Tweaks Mod Manager + +#### Unofficial LE2 Patch + +Mod Name +: [Unofficial LE2 Patch](https://www.nexusmods.com/masseffectlegendaryedition/mods/8) + +Mod Author +: Team Pyjak + +Category +: Bugfix + +IMPORTANT NOTE +: This unofficial patch is mandatory if you want to use multiple mods for Mass Effect 2 Legendary Edition, as this patch is required for those mods to work. + +--- + +#### Vignette Remover (LE2) + +Mod Name +: [Vignette Remover](https://www.nexusmods.com/masseffectlegendaryedition/mods/428) + +Mod Author +: Mgamerz + +Category +: Graphics Improvement + +--- + +#### Myriad Pro Begone (LE2) + +Mod Name +: [Myriad Pro Begone](https://www.nexusmods.com/masseffectlegendaryedition/mods/1070) + +Mod Author +: Audemus + +Category +: Interface Change + +--- + +#### Vanilla-like Femshep Hairstyles (LE2) + +Mod Name +: [Vanilla-like Femshep Hairstyles (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1048) + +Mod Author +: spiderbabes + +Category +: Player Customization + +--- + +#### No Shared Power Cooldowns (LE2) + +Mod Name +: [No Shared Power Cooldowns](https://www.nexusmods.com/masseffectlegendaryedition/mods/1699) + +Mod Author +: DropTheSquid + +Category +: Mechanics Change + +--- + +#### Proper Convo-Cutscene Skipper (LE2) + +Mod Name +: [Proper Convo-Cutscene Skipper (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1682) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +--- + +#### Shorter Notifications (LE2) + +Mod Name +: [Shorter Notifications (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/390) + +Mod Author +: 55tumbl + +Category +: Interface Change + +--- + +#### LE2 Mission Results Screen Fix + +Mod Name +: [LE2 Mission Results Screen Fix](https://www.nexusmods.com/masseffectlegendaryedition/mods/896) + +Mod Author +: Mgamerz + +Category +: Interface Change + +--- + +#### Paragade Persuasion (LE2) + +Mod Name +: [Paragade Persuasion (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1673) + +Mod Author +: rondeeno + +Category +: Mechanics Change + +--- + +#### LE2 Prologue Framework + +Mod Name +: [LE2 Prologue Framework](https://www.nexusmods.com/masseffectlegendaryedition/mods/2138) + +Mod Author +: beccatoria + +Category +: Framework + +--- + +#### Unlimited Sprint and Boost Duration (LE2) + +Mod Name +: [Unlimited Sprint and Boost Duration](https://www.nexusmods.com/masseffectlegendaryedition/mods/337) + +Mod Author +: Sapphire/Nypheena + +Category +: Mechanics Change + +Installation Note +: Download and install Unlimited Sprint LE2. + +--- + +#### Remove Storm Screen Shake for LE2 + +Mod Name +: [Remove Storm Screen Shake for LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/329) + +Mod Author +: Mgamerz + +Category +: Interface Change + +--- + +#### Skip Minigames for LE2 + +Mod Name +: [Skip Minigames for LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/304) + +Mod Author +: Mgamerz + +Category +: Mechanics Change + +Installation Note +: I install the Classic option. + +--- + +#### Stop Auto-Equipping Weapons + +Mod Name +: [Stop Auto-Equipping Weapons](https://www.nexusmods.com/masseffectlegendaryedition/mods/1432) + +Mod Author +: Mistyvail + +Category +: Interface Change + +Installation Note +: I install the Choose Loadout option. + +--- + +#### Faster Normandy (LE2) + +Mod Name +: [Faster Normandy (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1151) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +--- + +#### Zero Probe All Resources (LE2) + +Mod Name +: [Zero Probe All Resources (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1152) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +--- + +#### Honest Fuel Depot + +Mod Name +: [Honest Fuel Depot](https://www.nexusmods.com/masseffectlegendaryedition/mods/1655) + +Mod Author +: Leszek90 + +Category +: Mechanics Change + +--- + +#### Reformatted Emails + +Mod Name +: [Reformatted Emails](https://www.nexusmods.com/masseffectlegendaryedition/mods/1304) + +Mod Author +: LLinden + +Category +: Immersion + +--- + +#### Combined Ammo Mod (LE2) + +Mod Name +: [Combined Ammo Mod (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1817) + +Mod Author +: RepugnantPear + +Category +: Mechanics Change + +Required Mod +: [LE2 Improved Functionality](https://www.nexusmods.com/masseffectlegendaryedition/mods/1458) + +Installation Note +: I install all the options. + +--- + +#### EGM Fix Weapons in Cutscenes LE2 + +Mod Name +: [EGM Fix Weapons in Cutscenes LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/422?tab=files) + +Mod Author +: Kinkojiro + +Category +: Bugfix + +--- + +#### Full Weapon Recovery + +Mod Name +: [Full Weapon Recovery](https://www.nexusmods.com/masseffectlegendaryedition/mods/1503) + +Mod Author +: Herobrine24 + +Category +: Mechanics Change + +--- + +#### Easy Armor Stats (LE2) + +Mod Name +: [Easy Armor Stats (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/25) + +Mod Author +: Herobrine24 + +Category +: Added Content + +--- + +#### Casual Hubs for LE2 + +Mod Name +: [Casual Hubs for LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/1025) + +Mod Author +: rondeeno + +Category +: Appearance Change + +Installation Note +: I also install the following options: +: * Prison Uniform for Jack +: * Default Alternate Appearance Pack Outfit for Jack +: * Default Alternate Appearance Pack Armor for Miranda + +--- + +#### Expanded Armor Colors (LE2) + +Mod Name +: [Expanded Armor Colors (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1700) + +Mod Author +: Khaar Machinima + +Category +: Player Customization + +--- + +#### Expanded Shepard Armory (LE2) + +Mod Name +: [Expanded Shepard Armory (ME2LE)](https://www.nexusmods.com/masseffectlegendaryedition/mods/5) + +Mod Author +: Khaar Machinima & ThaliaGraces + +Category +: Appearance Change & Player Customization + +--- + +#### Expanded Squadmate Armory LE2 + +Mod Name +: [Expanded Squadmate Armory (ESA Addon) LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/1846) + +Mod Author +: Khaar Machinima & stasismind + +Category +: Appearance Change + +Required Mod +: [Expanded Shepard Armory (ME2LE)](https://www.nexusmods.com/masseffectlegendaryedition/mods/5) + +--- + +#### Anderson and Hackett Consistency + +Mod Name +: [Anderson and Hackett Consistency Mod (ME2LE)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1063) + +Mod Author +: Khaar Machinima + +Category +: Appearance Change & Immersion + +--- + +#### Cerberus and Alliance Uniform Consistency + +Mod Name +: [Cerberus and Alliance Uniform Consistency (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1021) + +Mod Author +: Audemus + +Category +: Appearance Change & Immersion + +Download Note +: I download and install both the files for LE2 and the LE launcher. + +--- + +#### Leather Jacket for Femshep LE2 + +Mod Name +: [Leather Jacket for Femshep LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/565) + +Mod Author +: rngdshep + +Category +: Player Customization + +--- + +#### The Illusive Woman LE2 + +Mod Name +: [The Illusive Woman (or a Suit for Femshep) LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/835) + +Mod Author +: rngdshep + +Category +: Player Customization + +--- + +#### Turtlenecks for Male Shepard (LE2) + +Mod Name +: [Turtlenecks for Male Shepard (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1658) + +Mod Author +: clericofshadows + +Category +: Player Customization + +--- + +#### Coats and Jackets for Male Shepard (LE2) + +Mod Name +: [Coats and Jackets for Male Shepard (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1669) + +Mod Author +: clericofshadows + +Category +: Player Customization + +--- + +#### Morning's Outfits for Femshep LE2 PT3 + +Mod Name +: [Morning's Outfits for Femshep LE2 PT3](https://www.nexusmods.com/masseffectlegendaryedition/mods/1653) + +Mod Author +: MorningAngel + +Category +: Player Customization + +Download Note +: I also download Texture mod options for the outfits. + +--- + +#### EGM Weapons in Cutscenes (LE2) + +Mod Name +: [EGM Weapons in Cutscenes (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/2059) + +Mod Author +: Kinkojiro + +Category +: Immersion + +--- + +#### EGM Armors for LE2 + +Mod Name +: [EGM Armors for LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/187) + +Mod Author +: Kinkojiro + +Category +: Player Customization + +--- + +#### Clear Mnemonic Visor (LE2) + +Mod Name +: [Clear Mnemonic Visor (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1757) + +Mod Author +: CDRFredryck + +Category +: Added Content & Player Customization + +--- + +#### Miranda Lawson's Armory (LE2) + +Mod Name +: [Miranda Lawson's Armory (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1988) + +Mod Author +: clericofshadows + +Category +: Added Content + +--- + +#### Jacob Taylor's Armory (LE2) + +Mod Name +: [Jacob Taylor's Armory (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/2342) + +Mod Author +: clericofshadows + +Category +: Added Content + +--- + +#### Original Trilogy Lighting Restoration (LE2) + +Mod Name +: [Original Trilogy Lighting Restoration (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1729) + +Mod Author +: Vegz + +Category +: Graphics Improvement + +--- + +#### Box Of Tweaks (LE2) + +Mod Name +: [Box Of Tweaks (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1572) + +Mod Author +: munchyfly + +Category +: Added Content, Modified Content & Immersion + +Installation Note +: I install the following components from Box of Tweaks: +: * Geth Pulse Rifle for All +: * Harvester: No Camera Shake +: * Firewalker: No Generator Camera Shake + +--- + +#### Assorted Bed Sheets (LE2) + +Mod Name +: [Assorted Bed Sheets (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1288) + +Mod Author +: munchyfly + +Category +: Appearance Change + +--- + +#### Pinnacle Station Apartment (LE2) + +Mod Name +: [Pinnacle Station Apartment (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1558) + +Mod Author +: vegz + +Category +: Added Content + +--- + +#### Kelly Chambers and Dr. Kenson Remastered Original Hair + +Mod Name +: [Kelly Chambers and Dr. Kenson Remastered Original Hair](https://www.nexusmods.com/masseffectlegendaryedition/mods/1644) + +Mod Author +: \_MaZ_TeR\_ + +Category +: Appearance Change + +--- + +#### Oriana looks like Miranda's Twin (LE2) + +Mod Name +: [Oriana looks like Miranda's Twin (ME2LE)](https://www.nexusmods.com/masseffectlegendaryedition/mods/413) + +Mod Author +: Khaar Machinima + +Category +: Appearance Change & Immersion + +--- + +#### Let Me Stay + +Mod Name +: [Let Me Stay (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1872) + +Mod Author +: Khaar Machinima + +Category +: Interface Change + +--- + +#### M-44 Battle Tank + +Mod Name +: [M-44 Battle Tank (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1316) + +Mod Author +: RepugnantPear + +Category +: Mechanics Change + +--- + +#### Hugo Gernsback Consistency + +Mod Name +: [Hugo Gernsback Consistency Mod](https://www.nexusmods.com/masseffectlegendaryedition/mods/1352) + +Mod Author +: RepugnantPear & Mistyvail + +Category +: Modified Content + +--- + +#### Apollo Spacesuit Restoration + +Mod Name +: [Apollo Spacesuit Restoration](https://www.nexusmods.com/masseffectlegendaryedition/mods/1712) + +Mod Author +: Khaar Machinima + +Category +: Restored Content + +--- + +#### 2175 Aeia Lighting Restored + +Mod Name +: [2175 Aeia Lighting Restored](https://www.nexusmods.com/masseffectlegendaryedition/mods/1729) + +Mod Author +: Vegz + +Category +: Restored Content + +--- + +#### Daddy Issues + +Mod Name +: [Daddy Issues](https://www.nexusmods.com/masseffectlegendaryedition/mods/1534) + +Mod Author +: Jenya66 + +Category +: Appearance Change & Immersion + +--- + +#### Instant Shadow Broker Rewards + +Mod Name +: [Instant Shadow Broker Rewards](https://www.nexusmods.com/masseffectlegendaryedition/mods/1180) + +Mod Author +: BtEtta + +Category +: Modified Content + +--- + +#### Virmire Savior Mod (LE2) + +Mod Name +: [Virmire Savior Mod (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1587) + +Mod Author +: Vegz + +Category +: Modified Content + +--- + +#### Platonic Post Horizon Emails + +Mod Name +: [Platonic Post Horizon Emails](https://www.nexusmods.com/masseffectlegendaryedition/mods/2083) + +Mod Author +: beckabooo + +Category +: Added Content + +--- + +#### Early Recruitment + +Mod Name +: [Early Recruitment (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/384) + +Mod Author +: beccatoria + +Category +: Modified Content + +--- + +#### Trigger Buttons (LE2) + +Mod Name +: [Trigger Buttons (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/383) + +Mod Author +: beccatoria + +Category +: Modified Content + +--- + +#### DLC Timings Mod (LE2) + +Mod Name +: [DLC Timings Mod (ME2LE)](https://www.nexusmods.com/masseffectlegendaryedition/mods/382) + +Mod Author +: Khaar Machinima + +Category +: Immersion + +--- + +#### No N7 Armor in Liara's Apartment + +Mod Name +: [No N7 Armor in Liara's Apartment](https://www.nexusmods.com/masseffectlegendaryedition/mods/1456) + +Mod Author +: InvoicingEmu + +Category +: Modified Content + +--- + +#### More Gay Romances (LE2) + +Mod Name +: [More Gay Romances](https://www.nexusmods.com/masseffectlegendaryedition/mods/489) + +Mod Author +: Mentlegen + +Category +: Modified Content + +--- + +#### No Sexual Harassment (LE2) + +Mod Name +: [No Sexual Harassment (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/682) + +Mod Author +: rondeeno + +Category +: Restored Content & Modified Content + +Installation Note +: I install the following options: +: * No Meln +: * No Donnelly Comments +: * No Sexist Dialogue + +--- + +#### Same-Gender Romances for LE2 + +Mod Name +: [Same-Gender Romances for LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/1115) + +Mod Author +: rondeeno + +Category +: Restored Content & Modified Content + +Installation Note +: I also install the NPC Flirts Regardless of Gender component, but I do so only for the Gianna Parasini flirt. I remove `BioD_OmgHub_500DenVIP_LOC_INT.pcc` and `BioD_OmgHub_221GarrusAcq_LOC_INT.pcc` from the mod folder after installing so the Blue Sun Merc and Meln will not sexually harass my FemShep, something I installed the No Sexual Harassment mod to avoid. + +--- + +#### Renegade Not Ableist (LE2) + +Mod Name +: [Renegade Not Ableist (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1263) + +Mod Author +: phoenixsoul13 + +Category +: Modified Content + +--- + +#### Kasumi Restored Memories (LE2) + +Mod Name +: [Kasumi - Restored Memories (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/2158) + +Mod Author +: mangobyte + +Category +: Restored Content + +--- + +#### Jacob Respects Thane and Tali + +Mod Name +: [Jacob Respects Thane and Tali](https://www.nexusmods.com/masseffectlegendaryedition/mods/1035) + +Mod Author +: Herobrine24 + +Category +: Modified Content + +--- + +#### Samara Camera Restoration + +Mod Name +: [Samara Camera Restoration](https://www.nexusmods.com/masseffectlegendaryedition/mods/1262) + +Mod Author +: beccatoria + +Category +: Restored Content + +--- + +#### F.I.S.H. Mod (LE2) + +Mod Name +: [F.I.S.H. Mod (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1134) + +Mod Author +: beccatoria + +Category +: Modified Content + +--- + +#### Optional Flirting Mod (LE2) + +Mod Name +: [Optional Flirting Mod (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/839) + +Mod Author +: phoenixsoul13 + +Category +: Modified Content + +--- + +#### Extended Romance Scenes + +Mod Name +: [Extended Romance Scenes](https://www.nexusmods.com/masseffectlegendaryedition/mods/1198) + +Mod Author +: Scottina123 + +Category +: Added Content + +--- + +#### Miranda Romance Mini Dress (LE2) + +Mod Name +: [Miranda Romance Mini Dress (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1244) + +Mod Author +: RepugnantPear + +Category +: Appearance Change + +--- + +#### Dossiers Reworked + +Mod Name +: [Dossiers Reworked](https://www.nexusmods.com/masseffectlegendaryedition/mods/1755) + +Mod Author +: SierraI07 + +Category +: Modified Content + +--- + +#### Samara Shadow Broker Dossiers Restored + +Mod Name +: [Samara Cut Shadow Broker Dossiers Restored](https://www.nexusmods.com/masseffectlegendaryedition/mods/1782) + +Mod Author +: Khaar Machinima + +Category +: Restored Content + +--- + +#### Liara Consistency Mod (LE2) + +Mod Name +: [Liara Consistency Mod (ME2LE)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1062) + +Mod Author +: Khaar Machinima + +Category +: Appearance Change & Immersion + +Installation Note +: I install the LE3 face version. + +--- + +#### Samara's New Armor (LE2) + +Mod Name +: [Samara's New Armor (MELE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/702) + +Mod Author +: Zeb + +Category +: Appearance Change + +Download Note +: I also download Samara's New Armor UI (MELE2). Install it with Mass Effect Modder after installing all the DLC mods I want to use. + +--- + +#### Justicar Samara's Armory (LE2) + +Mod Name +: [Justicar Samara's Armory (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/2080) + +Mod Author +: clericofshadows + +Category +: Added Content + +--- + +#### Practical Bodies for Shepard's Armors (LE2) + +Mod Name +: [Practical Bodies for Shepard's Armors (MELE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1553) + +Mod Author +: DeepSky27 + +Category +: Appearance Change + +--- + +#### No Headgear for Squadmates (LE2) + +Mod Name +: [(ME2LE) No Headgear for Squadmates](https://www.nexusmods.com/masseffectlegendaryedition/mods/377) + +Mod Author +: ThaliaGraces + +Category +: Appearance Change + +Installation Note +: I also download Squad Select Textures, then I install it after installing all the DLC mods I want to use via ME3Tweak Mod Manager. + +--- + +#### Miranda Hair Replacer (LE2) + +Mod Name +: [Miranda Hair Replacer](https://www.nexusmods.com/masseffectlegendaryedition/mods/680) + +Mod Author +: BubbleButton + +Category +: Appearance Change + +Required Mod +: LE2 Prologue Framework + +Installation Note +: I install the following options in order: +: 1. Miranda + LE2 Patch +: 2. Miranda + Hubs +: 3. Miranda + LE2 patch no visor + +--- + +#### Fate of Executor Pallin LE2 + +Mod Name +: [Fate of Executor Pallin LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/2087) + +Mod Author +: Khaar Machinima + +Category +: Immersion + +--- + +#### ALOV (LE2) + +Mod Name +: [A Lot Of Videos (ALOV)](https://www.nexusmods.com/masseffectlegendaryedition/mods/3) + +Mod Author +: Audemus and ALOV Team + +Category +: Graphics Improvement + +Installation Note +: “ALOV for ME2”. + +--- + +#### Immersive Citizens LE2 + +Mod Name +: [Immersive Citizens LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/1680) + +Mod Author +: Daxvapik + +Category +: Immersion + +--- + +### Installed with Mass Effect Modder (MEM) + +#### Wraith Eyes (LE2) + +Mod Name +: [Wraith Eyes](https://www.nexusmods.com/masseffectlegendaryedition/mods/1085) + +Mod Author +: mulderitsme + +Category +: Graphics Improvement + +Installation Note +: Install Wraith Eyes LE2 and Default Renegade Scars LE2. + +--- + +#### Fix for Lighter Middle Part of Lipsticks for LE2 + +Mod Name +: [Fix for Lighter Middle Part of Lipsticks for LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/281) + +Mod Author +: MorningAngel + +Category +: Graphics Improvement + +--- + +#### Cleaner Visor (LE2) + +Mod Name +: [Cleaner Visor](https://www.nexusmods.com/masseffectlegendaryedition/mods/744) + +Mod Author +: PorkinMemes + +Category +: Appearance Change + +Installation Note +: Install the VisorLE2.mem file + +--- + +#### Miranda Officer Outfit + +Mod Name +: [JeanLuc761's Miranda Officer Outfit](https://www.nexusmods.com/masseffectlegendaryedition/mods/1020) + +Mod Author +: JeanLuc761; ported by Rocketcat15 + +Category +: Appearance Change + +Installation Note +: I do not install the `JL761_style_Miranda_Romance.mem` file, since I used Miranda Romance Mini Dress to replace her outfit during her romance scene. + +--- + +#### Jack's Closet + +Mod Name +: [Jack's Closet by femshepping](https://www.nexusmods.com/masseffectlegendaryedition/mods/1564) + +Mod Author +: femshepping + +Category +: Appearance Change + +Installation Note +: I install Twisted Knit. + +--- + +#### Blue Scars for Garrus (LE2) + +Mod Name +: [Blue Scars for Garrus (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1030) + +Mod Author +: Emma Vakarian-Theirin + +Category +: Appearance Change & Graphics Improvement + +--- + +#### Morning's Combat Outfits for Kasumi LE2 + +Mod Name +: [Morning's Combat Outfits for Kasumi LE2](https://www.nexusmods.com/masseffectlegendaryedition/mods/2167) + +Mod Author +: MorningAngel + +Category +: Appearance Change + +--- + +#### Liara's Proper Doctorate + +Mod Name +: [Liara's Proper Doctorate](https://www.nexusmods.com/masseffectlegendaryedition/mods/1557) + +Mod Author +: FroodyMishky + +Category +: Immersion + +--- + +#### Goodbye Lens Flares (LE2) + +Mod Name +: [Goodbye Lens Flares (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1133) + +Mod Author +: Wisegal + +Category +: Appearance Change + +--- + +#### Samara's New Armor (LE2) + +Mod Name +: [Samara's New Armor (MELE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/702) + +Mod Author +: Zeb + +Category +: Appearance Change + +Installation Note +: I install Samara's New Armor UI (MELE2) with Mass Effect Modder after installing all the DLC mods I want to use via ME3Tweak Mod Manager. + +--- + +#### Paramours (LE2) + +Mod Name +: [Paramours](https://www.nexusmods.com/masseffectlegendaryedition/mods/1132) **(WARNING: This link is Not Safe For Work)** + +Mod Author +: Anzella + +Category +: Graphics Improvement + +Download Note +: Download (LE2) Paramours. + +Installation Note +: I install (LE2) LCM ERS LE3 Liara Nipples.mem and (LE2) 'Ashley' Nipples.mem. + +--- +{% endcontainer %} + +{% container "article", "content__section" %} +## {% cite "Mass Effect 3" %} Legendary Edition Mods + +### Installed with ME3Tweaks Mod Manager + +#### LE3 Community Patch + +Mod Name +: [LE3 Community Patch](https://www.nexusmods.com/masseffectlegendaryedition/mods/13) + +Mod Author +: LE3 Community Patch Team + +Category +: Bugfix & Framework + +IMPORTANT NOTE +: This Community Framework and Patch is practically mandatory if you want to use multiple mods for {% cite "Mass Effect 3" %} Legendary Edition, as this framework and patch is required for those mods to work. + +--- + +#### Myriad Pro Begone (LE3) + +Mod Name +: [Myriad Pro Begone](https://www.nexusmods.com/masseffectlegendaryedition/mods/1070) + +Mod Author +: Audemus + +Category +: Interface Change + +--- + +#### Vignette Remover (LE3) + +Mod Name +: [Vignette Remover](https://www.nexusmods.com/masseffectlegendaryedition/mods/428) + +Mod Author +: Mgamerz + +Category +: Graphics Improvement + +--- + +#### Vanilla-like Femshep Hairstyles (LE3) + +Mod Name +: [Vanilla-like Femshep Hairstyles (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1049) + +Mod Author +: spiderbabes + +Category +: Player Customization + +--- + +#### Shorter Hairstyles for Femshep (MELE3) + +Mod Name +: [Shorter Hairstyles for Femshep (MELE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1480) + +Mod Author +: deepsky27 + +Category +: Player Customization + +--- + +#### Shorter Hairstyles for Femshep II (LE3) + +Mod Name +: [Shorter Hairstyles for Femshep II (MELE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1540) + +Mod Author +: deepsky27 + +Category +: Player Customization + +--- + +#### Appearance Modification Menu LE3 + +Mod Name +: [Appearance Modification Menu LE3](https://www.nexusmods.com/masseffectlegendaryedition/mods/694) + +Mod Author +: DropTheSquid + +Category +: Interface Change & Player Customization + +--- + +#### No Shared Power Cooldowns (LE3) + +Mod Name +: [No Shared Power Cooldowns](https://www.nexusmods.com/masseffectlegendaryedition/mods/1699) + +Mod Author +: DropTheSquid + +Category +: Mechanics Change + +--- + +#### Proper Convo-Cutscene Skipper (LE3) + +Mod Name +: [Proper Convo-Cutscene Skipper (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1683) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +--- + +#### LE3 Opening Remaster + +Mod Name +: [LE3 Opening Remaster](https://www.nexusmods.com/masseffectlegendaryedition/mods/19) + +Mod Author +: Mellin and Audemus + +Category +: Graphics Improvement + +--- + +#### Expanded Galaxy Mod (LE) + +Mod Name +: [Expanded Galaxy Mod (LE)](https://www.nexusmods.com/masseffectlegendaryedition/mods/422) + +Mod Author +: Kinkojiro + +Category +: Added Content, Immersion, Restored Content & Bugfix + +Installation Note +: I also select the following components during installation: +: * Extra: GasBags on Eden Prime + +--- + +#### EGM Armors for LE3 + +Mod Name +: [EGM Armors for LE3](https://www.nexusmods.com/masseffectlegendaryedition/mods/187) + +Mod Author +: Kinkojiro + +Category +: Player Customization + +--- + +#### Journal Enhanced (LE3) + +Mod Name +: [Journal Enhanced (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1508) + +Mod Author +: 55tumbl + +Category +: Interface Change + +--- + +#### War Assets Tweaks (LE3) + +Mod Name +: [War Assets Tweaks (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1733) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +--- + +#### Metallic Armor Tints (LE3) + +Mod Name +: [Metallic Armor Tints](https://www.nexusmods.com/masseffectlegendaryedition/mods/482) + +Mod Author +: Kinkojiro + +Category +: Player Customization + +--- + +#### More Color Options for Tints and Patterns LE3 + +Mod Name +: [Morning's More Color Options for Tints and Patterns LE3](https://www.nexusmods.com/masseffectlegendaryedition/mods/2101) + +Mod Author +: MorningAngel + +Category +: Player Customization + +--- + +#### Clear Mnemonic Visor (LE3) + +Mod Name +: [Clear Mnemonic Visor (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1753) + +Mod Author +: CDRFredryck + +Category +: Added Content & Player Customization + +--- + +#### Morning's Outfits for Femshep LE3 PT3 + +Mod Name +: [Morning's Outfits for Femshep LE3 PT3](https://www.nexusmods.com/masseffectlegendaryedition/mods/1593) + +Mod Author +: MorningAngel + +Category +: Player Customization + +Download Note +: I also download Texture mod options for the outfits. + +--- + +#### Morning's Accessories for Shepard LE3 + +Mod Name +: [Morning's Accessories for Shepard LE3](https://www.nexusmods.com/masseffectlegendaryedition/mods/1571) + +Mod Author +: MorningAngel + +Category +: Player Customization + +--- + +#### New Outfits I For Shepard (MELE3) + +Mod Name +: [New Outfits I For Shepard (MELE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1638) + +Mod Author +: deepsky27 + +Category +: Player Customization + +--- + +#### Jane's Turtleneck Dress + +Mod Name +: [Jane's Turtleneck Dress](https://www.nexusmods.com/masseffectlegendaryedition/mods/1656) + +Mod Author +: Soriyumi + +Category +: Player Customization + +Download Note +: I also download the Optional Recolors and install one of the MEM files with Mass Effect Modder after all the DLC mods I want to use via ME3Tweak Mod Manager. + +--- + +#### Jane's Pajamas + +Mod Name +: [Jane's Pajamas](https://www.nexusmods.com/masseffectlegendaryedition/mods/1664) + +Mod Author +: Soriyumi + +Category +: Player Customization + +Download Note +: I also download the Optional Recolors and install Jane'sPajamas - BlackRecolor.mem with Mass Effect Modder after all the DLC mods I want to use via ME3Tweak Mod Manager. + +--- + +#### Leather Jacket for Femshep (LE3) + +Mod Name +: [Leather Jacket for Femshep](https://www.nexusmods.com/masseffectlegendaryedition/mods/440) + +Mod Author +: rngdshep + +Category +: Player Customization + +--- + +#### The Illusive Woman (LE3) + +Mod Name +: [The Illusive Woman (or a Suit for Femshep)](https://www.nexusmods.com/masseffectlegendaryedition/mods/671) + +Mod Author +: rngdshep + +Category +: Player Customization + +--- + +#### Turtlenecks for Male Shepard (LE3) + +Mod Name +: [Turtlenecks for Male Shepard (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1662) + +Mod Author +: clericofshadows + +Category +: Player Customization + +--- + +#### Coats and Jackets for Male Shepard (LE3) + +Mod Name +: [Coats and Jackets for Male Shepard (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1689) + +Mod Author +: clericofshadows + +Category +: Player Customization + +--- + +#### Practical Bodies for Shepard's Armors (LE3) + +Mod Name +: [Practical Bodies for Shepard's Armors (MELE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1423) + +Mod Author +: DeepSky27 + +Category +: Appearance Change + +Installation Note +: I install Version B. + +--- + +#### Practical Bodies for Casual Shepard (LE3) + +Mod Name +: [Practical Bodies for Casual Shepard (MELE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1410) + +Mod Author +: DeepSky27 + +Category +: Appearance Change + +--- + +#### Reduced Interaction Circle HUD + +Mod Name +: [Reduced interaction circle HUD](https://www.nexusmods.com/masseffectlegendaryedition/mods/1106) + +Mod Author +: daneeyul + +Category +: Interface Change + +--- + +#### Shorter Notifications (LE3) + +Mod Name +: [Shorter Notifications (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/803) + +Mod Author +: WiredTexan + +Category +: Interface Change + +--- + +#### Unlimited Sprint and Boost Duration + +Mod Name +: [Unlimited Sprint and Boost Duration](https://www.nexusmods.com/masseffectlegendaryedition/mods/337) + +Mod Author +: Sapphire/Nypheena + +Category +: Mechanics Change + +Installation Note +: Download and install Unlimited Sprint LE3. + +--- + +#### Combined Ammo Mod (LE2) + +Mod Name +: [Combined Ammo Mod (LE2)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1817) + +Mod Author +: RepugnantPear + +Category +: Mechanics Change + +Required Mod +: [LE2 Improved Functionality](https://www.nexusmods.com/masseffectlegendaryedition/mods/1458) + +Installation Note +: I install all the options. + +--- + +#### Stock Weapon Appearance + +Mod Name +: [Stock Weapon Appearance](https://www.nexusmods.com/masseffectlegendaryedition/mods/1502) + +Mod Author +: Herobrine24 + +Category +: Appearance Change + +--- + +#### No Sniper Zoom for SMGs HPs and ARs (LE3) + +Mod Name +: [No Sniper Zoom for SMGs HPs and ARs (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1279) + +Mod Author +: RepugnantPear + +Category +: Interface Change + +--- + +#### Weapon Legendary Warpack + +Mod Name +: [Weapon Legendary Warpack - Rescoped Avenger - Slim N7 Typhoon - Automatic Valkyrie](https://www.nexusmods.com/masseffectlegendaryedition/mods/925) + +Mod Author +: survivor686 + +Category & Tier: Appearance Change. + +Installation Note +: I install the Default option. + +--- + +#### Faster Normandy (LE3) + +Mod Name +: [Faster Normandy (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1179) + +Mod Author +: 55tumbl + +Category +: Mechanics Change + +--- + +#### Assorted Bed Sheets (LE3) + +Mod Name +: [Assorted Bed Sheets (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1294) + +Mod Author +: munchyfly + +Category +: Appearance Change + +--- + +#### Bakara's Gift + +Mod Name +: [Bakara's Gift](https://www.nexusmods.com/masseffectlegendaryedition/mods/1600) + +Mod Author +: munchyfly + +Category +: Added Content + +--- + +#### Padme's Cabin Additions and Memorials (LE3) + +Mod Name +: [Padme's Cabin Additions and Memorials (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/631) + +Mod Author +: Padme4000 + +Category +: Added Content + +--- + +#### shley Consistency Project (LE3) + +Mod Name +: [Ashley Consistency Project (MELE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1209) + +Mod Author +: Jenya66 + +Category +: Appearance Change + +--- + +#### Ashley Williams's Armory (LE3) + +Mod Name +: [Ashley Williams's Armory (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1759) + +Mod Author +: clericofshadows + +Category +: Added Content + +--- + +#### Liara Full Helmet + +Mod Name +: [Liara Full Helmet](https://www.nexusmods.com/masseffectlegendaryedition/mods/1452) + +Mod Author +: M1SZ3L Getorex + +Category +: Appearance Change + +--- + +#### EDI's Armory + +Mod Name +: [EDI's Armory](https://www.nexusmods.com/masseffectlegendaryedition/mods/1756) + +Mod Author +: clericofshadows + +Category +: Added Content + +--- + +#### Javik's New Armor (LE3) + +Mod Name +: [Javik's New Armor (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1153) + +Mod Author +: Zeb + +Category +: Added Content + +--- + +#### Traynor Long Hair + +Mod Name +: [Traynor Long Hair mod](https://www.nexusmods.com/masseffectlegendaryedition/mods/516) + +Mod Author +: Morax + +Category +: Appearance Change + +--- + +#### Bakara Visible Face + +Mod Name +: [Bakara Visible Face](https://www.nexusmods.com/masseffectlegendaryedition/mods/1231) + +Mod Author +: Aleirdra + +Category +: Appearance Change + +--- + +#### Virmire Savior Mod (LE3) + +Mod Name +: [Virmire Savior Mod (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1442) + +Mod Author +: Vegz + +Category +: Modified Content + +--- + +#### Shepard Can Agree With Anderson + +Mod Name +: [Shepard Can Agree With Anderson](https://www.nexusmods.com/masseffectlegendaryedition/mods/1013) + +Mod Author +: Pauju + +Category +: Modified Content + +--- + +#### Cerberus Retrofits + +Mod Name +: [Cerberus Retrofits](https://www.nexusmods.com/masseffectlegendaryedition/mods/709) + +Mod Author +: Tydeous + +Category +: Appearance Change + +--- + +#### IFF Dialogue Tweak + +Mod Name +: [IFF Dialogue Tweak](https://www.nexusmods.com/masseffectlegendaryedition/mods/1666) + +Mod Author +: LLinden + +Category +: Immersion + +--- + +#### Reegar Returns + +Mod Name +: [Reegar Returns](https://www.nexusmods.com/masseffectlegendaryedition/mods/2252) + +Mod Author +: Scottina123 + +Category +: Modified Content + +--- + +#### Reworked Kai Leng + +Mod Name +: [Reworked Kai Leng](https://www.nexusmods.com/masseffectlegendaryedition/mods/1038) + +Mod Author +: Pauju + +Category +: Modified Content + +Download Note +: I download the white armor version. + +--- + +#### MIranda Mod + +Mod Name +: [MIranda Mod (LE)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1350) + +Mod Author +: Kinkojiro + +Category +: Added Content + +Required Mod +: Expanded Galaxy Mod + +--- + +#### More Gay Romances (LE3) + +Mod Name +: [More Gay Romances](https://www.nexusmods.com/masseffectlegendaryedition/mods/489) + +Mod Author +: Mentlegen + +Category +: Modified Content + +--- + +#### Take Earth Back + +Mod Name +: [Take Earth Back](https://www.nexusmods.com/masseffectlegendaryedition/mods/16) + +Mod Author +: Mass Effect Modding Community, project leader Tydeous + +Category +: Mechanics Change, Immersion & Restored Content + +--- + +#### Audemus’ Happy Ending Mod + +Mod Name +: [Audemus’ Happy Ending Mod (AHEM)](https://www.nexusmods.com/masseffectlegendaryedition/mods/323) + +Mod Author +: Audemus + +Category +: Modified Content + +--- + +#### Project Variety (LE3) + +Mod Name +: [Project Variety (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1481) + +Mod Author +: Scottina123 + +Category +: Added Content, Modified Content, Player Customization, Restored Content, Mechanics Change & Immersion + +--- + +#### Thane Can Live + +Mod Name +: [Thane Can Live](https://www.nexusmods.com/masseffectlegendaryedition/mods/1282) + +Mod Author +: phoenixsoul13 + +Category +: Modified Content + +--- + +#### Emily Lives + +Mod Name +: [Emily Lives](https://www.nexusmods.com/masseffectlegendaryedition/mods/2199) + +Mod Author +: Scottina123 + +Category +: Modified Content + +--- + +#### Super Extra Party Time + +Mod Name +: [Super Extra Party Time](https://www.nexusmods.com/masseffectlegendaryedition/mods/1750) + +Mod Author +: beccatoria + +Category +: Modified Content + +Installation Note +: I select the Project Variety and Virmire Savior compatibility patches. + +--- + +#### Pinnacle Station Apartment (LE3) + +Mod Name +: [Pinnacle Station Apartment (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1588) + +Mod Author +: Scottina123 & LLinden + +Category & Tier: Added Content + +--- + +#### Various Dialogue Tweaks (LE3) + +Mod Name +: [Various Dialogue Tweaks (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1511) + +Mod Author +: phoenixsoul13 + +Category +: Modified Content + +Installation Note +: I install the Garrus dialogue tweak. + +--- + +#### No Movement Penalty During Rannoch Boss Fight + +Mod Name +: [No Movement Penalty During Rannoch Boss Fight](https://www.nexusmods.com/masseffectlegendaryedition/mods/1156) + +Mod Author +: Herobrine24 + +Category +: Mechanics Change + +--- + +#### Liara Mourns the Dead + +Mod Name +: [Liara Mourns the Dead](https://www.nexusmods.com/masseffectlegendaryedition/mods/1713) + +Mod Author +: beccatoria + +Category +: Added Content + +--- + +#### Omega Hub + +Mod Name +: [Omega Hub](https://www.nexusmods.com/masseffectlegendaryedition/mods/1597) + +Mod Author +: Tydeous + +Category +: Added Content + +--- + +#### Choose Your Friend + +Mod Name +: [Choose Your Friend](https://www.nexusmods.com/masseffectlegendaryedition/mods/996) + +Mod Author +: phoenixsoul13 + +Category +: Modified Content + +--- + +#### Prioritize Scar Comments (LE3) + +Mod Name +: [Prioritize Scar Comments (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1413) + +Mod Author +: phoenixsoul13 + +Category +: Modified Content + +--- + +#### Shepard's Archived Profile + +Mod Name +: [Shepard's Archived Profile](https://www.nexusmods.com/masseffectlegendaryedition/mods/2045) + +Mod Author +: Mistyvail + +Category +: Immersion + +--- + +#### Dreams Remade + +Mod Name +: [Dreams Remade](https://www.nexusmods.com/masseffectlegendaryedition/mods/1630) + +Mod Author +: Pauju + +Category +: Modified Content + +--- + +#### ALOV (LE3) + +Mod Name +: [A Lot Of Videos (ALOV)](https://www.nexusmods.com/masseffectlegendaryedition/mods/3) + +Mod Author +: Audemus and ALOV Team + +Category +: Graphics Improvement + +Installation Note +: “ALOV for ME3”. + +--- + +### Installed with Mass Effect Modder (MEM) + +#### Wraith Eyes (LE3) + +Mod Name +: [Wraith Eyes](https://www.nexusmods.com/masseffectlegendaryedition/mods/1085) + +Mod Author +: mulderitsme + +Category +: Graphics Improvement + +Installation Note +: Install Wraith Eyes LE3 and Default Renegade Scars LE3. + +--- + +#### Teeth fix for new hairstyles (ME3) + +Mod Name +: [Teeth fix for new hairstyles (ME3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/487) + +Mod Author +: xramina + +Category +: Bugfix + +Installation Note +: Install Wraith Eyes LE3 and Default Renegade Scars LE3. + +--- + +#### Fix for Lighter Middle Part of Lipsticks for LE3 + +Mod Name +: [Fix for Lighter Middle Part of Lipsticks for LE3](https://www.nexusmods.com/masseffectlegendaryedition/mods/281) + +Mod Author +: MorningAngel + +Category +: Graphics Improvement + +--- + +#### Cleaner Visor (LE3) + +Mod Name +: [Cleaner Visor](https://www.nexusmods.com/masseffectlegendaryedition/mods/744) + +Mod Author +: PorkinMemes + +Category +: Appearance Change + +Installation Note +: Install the VisorLE3.mem file + +--- + +#### GunMetal Weapon Textures (LE3) + +Mod Name +: [GunMetal Weapon Textures (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/1772) + +Mod Author +: SpaceWombat + +Category +: Graphics Improvement + +--- + +#### Ashley LE1 Complexion for LE3 + +Mod Name +: [Ashley LE1 Complexion for LE3](https://www.nexusmods.com/masseffectlegendaryedition/mods/1191) + +Mod Author +: Audemus + +Category +: Appearance Change + +--- + +#### HD Garrus Face Texture (LE3) + +Mod Name +: [ClearanceClarence's HD Garrus Face Texture (LE3)](https://www.nexusmods.com/masseffectlegendaryedition/mods/992) + +Mod Author +: ClearanceClarence & Emma Vakarian-Theirin + +Category +: Appearance Change & Graphics Improvement + +Installation Note +: I download and install both ClearanceClarence's HD Garrus Face Texture (LE3) and Blue Scars for Garrus (LE3). + +--- + +#### aJvik by Murderclan + +Mod Name +: [Javik by Murderclan](https://www.nexusmods.com/masseffectlegendaryedition/mods/1730) + +Mod Author +: MurderClan + +Category +: Appearance Change + +Download Note +: I download and install Javik's Black Sun Armour + +--- + +#### LE3 Main Menu Screen Reaplacer + +Mod Name +: [LE3 Main Menu Screen Reaplacer](https://www.nexusmods.com/masseffectlegendaryedition/mods/800) + +Mod Author +: Jenya66 + +Category +: Immersion + +--- + +#### Reduced Lens Flares (LE3) + +Mod Name +: [Reduced Lens Flares - LE3](https://www.nexusmods.com/masseffectlegendaryedition/mods/776) + +Mod Author +: Linus04 + +Category +: Appearance Change + +--- +{% endcontainer %} \ No newline at end of file diff --git a/src/links/pages/pages.11tydata.js b/src/links/pages/pages.11tydata.js new file mode 100644 index 00000000..c882c1c4 --- /dev/null +++ b/src/links/pages/pages.11tydata.js @@ -0,0 +1,12 @@ +export default { + layout: "main/content", + permalink: "/links/{{ page.fileSlug }}/", + hasBreadcrumbs: true, + eleventyComputed: { + title: (data) => `${data.articleTitle} | Links`, + eleventyNavigation: { + key: (data) => data.articleTitle, + parent: "Links" + } + } +} \ No newline at end of file diff --git a/src/links/pages/stardew-valley-mod-list.md b/src/links/pages/stardew-valley-mod-list.md new file mode 100644 index 00000000..674431dd --- /dev/null +++ b/src/links/pages/stardew-valley-mod-list.md @@ -0,0 +1,1358 @@ +--- +articleTitle: Leilukin's Stardew Valley Mod Build +desc: A list of Stardew Valley mods I use. +tags: ["contents", "mod lists"] +categories: ["stardew valley", "video game mods"] +updated: 2025-04-18T06:30:06+0800 +isContentDivided: true +toc: true +--- + +{% container "article", "content__section" %} +Welcome to Leilukin’s {% cite "Stardew Valley" %} Mod Build! + +Here I’m compiling a list of all the modifications, or mods in short, that I use for {% cite "Stardew Valley" %}, the independent farming simulator video game developed by ConcernedApe, for the best experience with the game. This document is made for my reference and to share with others. + +The format of this mod list is inspired by [KOTOR Community Portal's mod lists](https://kotor.neocities.org/modding/). + +(This mod list was last updated on ) +{% endcontainer %} + +{% container "article", "content__section" %} +## Mod Categories + +The mods I included in my mod build are divided into the following categories, which clarifies the types of changes the mod makes: + +Appearance Change +: Appearance change is not inherently graphics improvement, but rather a modification to the default appearance of a character, item, location, interface, etc. + +Immersion +: These mods are not inherently bugfixes, but changes done to improve the internal consistency of the game’s content. + +Interface Change +: As the name implies, this type of mod modifies the game’s interface. + +Mechanics Change +: This type of mod makes changes to the game’s system which directly impacts the way you play the game, varying from changing the camera angle of a location to altering the core stats of a class. +{% endcontainer %} + +{% container "article", "content__section" %} +## Mod Tiers + +The tiers for each mod included in my mod build are not necessary a judgement on the quality of the mods themselves. In my mod builds, mod tiers are ranked on a scale of 1-4, based on how important the individual mods are for my experience with {% cite "Stardew Valley" %}. + +Tier 1 - Essential +: This tier indicates mods that I cannot play {% cite "Stardew Valley" %} without. Usually this is because I find those mods make very crucial changes to the game, typically by fixing things that bother me the most in the vanilla game. Similarly, mods of the Patch category that belong to this tier make critical changes to other mods. I consider excluding Tier 1 mods will negatively affect my experience with {% cite "Stardew Valley" %}. + +Tier 2 - Very Important +: This tier indicates mods that vastly improve my experience with the game. Mods belong to this tier are the bread and butter of my mod build. That said, unlike Tier 1 mods, excluding Tier 2 mods from my playthrough does not actively make my {% cite "Stardew Valley" %} experience worse either. + +Tier 3 - Somewhat Important +: This tier indicates mods that make changes that are in smaller scope or more subjective compared to Tier 1 and Tier 2 mods. Usually this is because the changes made by Tier 3 mods are less noticeable or more of a matter of personal taste. + +Tier 4 - Optional +: This tier indicates mods that makes even smaller or more subjective changes than Tier 3 mods, to the point that using these mods are optional. I include Tier 4 mods in my build for the purpose of maximizing my immersion, or because I use these mods for customization purposes for my characters. +{.deflist-1col} +{% endcontainer %} + +{% container "article", "content__section" %} +## {% cite "Stardew Valley" %} Mod Build - Full List + +### Mod Tools + +Frameworks that are essential to install for {% cite "Stardew Valley" %} mods to function: + +* [Stardew Modding API](https://smapi.io/) by Pathoschild +* [Content Patcher](https://www.nexusmods.com/stardewvalley/mods/1915) by Pathoschild + +{% cite "Stardew Valley" %} mod manager: + +* [Stardrop](https://www.nexusmods.com/stardewvalley/mods/10455) + +--- + +### Generic Mod Config Menu + +Mod Name +: [Generic Mod Config Menu](https://www.nexusmods.com/stardewvalley/mods/5098) + +Mod Author +: spacechase0 + +Category +: Interface Change + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Lookup Anything + +Mod Name +: [Lookup Anything](http://www.nexusmods.com/stardewvalley/mods/541) + +Mod Author +: Pathoschild + +Category +: Interface Change + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: No + +Leilukin’s Comment +: This mod is essential for me because it allows me to look up various information in-game without needing to pause the game just to check the Stardew Valley wiki. + +--- + +### NPC Map Locations + +Mod Name +: [NPC Map Locations](https://www.nexusmods.com/stardewvalley/mods/239) + +Mod Author +: Bouhm and Pathoschild + +Category +: Interface Change + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Stardew Valley Map Teleport + +Mod Name +: [Stardew Valley Map Teleport](https://www.nexusmods.com/stardewvalley/mods/21381) + +Mod Author +: Richard2091 + +Category +: Interface Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### tardew Notifications + +Mod Name +: [Stardew Notifications](https://www.nexusmods.com/stardewvalley/mods/4713) + +Mod Author +: monopandora, maintained by Sakorona + +Category +: Interface Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Stardew Progress + +Mod Name +: [Stardew Progress](https://www.nexusmods.com/stardewvalley/mods/9786) + +Mod Author +: seeinggreen + +Category +: Interface Change + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### TimeSpeed + +Mod Name +: [TimeSpeed](https://www.nexusmods.com/stardewvalley/mods/169) + +Mod Author +: cantorsdust and Pathoschild + +Category +: Mechanics Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Chests Anywhere + +Mod Name +: [Chests Anywhere](https://www.nexusmods.com/stardewvalley/mods/518) + +Mod Author +: Pathoschild + +Category +: Interface Change + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Always Hay + +Mod Name +: [Always Hay](https://www.nexusmods.com/stardewvalley/mods/20808) + +Mod Author +: Omek97 + +Category +: Mechanics Change + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: No + +Leilukin’s Comment +: What bothers me about the hay in {% cite "Stardew Valley" %} is that if your silos are full, you cannot collect hay at all, not even as extra items in your inventory. This mod fixes that. + +--- + +### No Fence Decay Redux + +Mod Name +: [No Fence Decay Redux](https://www.nexusmods.com/stardewvalley/mods/20802) + +Mod Author +: EnderTedi + +Category +: Mechanics Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Automatic Gates + +Mod Name +: [Automatic Gates](https://www.nexusmods.com/stardewvalley/mods/3109) + +Mod Author +: Rakiin aka ScheKaa + +Category +: Mechanics Change + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Better Junimos + +Mod Name +: [Better Junimos](https://www.nexusmods.com/stardewvalley/mods/2221) + +Mod Author +: hawkfalcon + +Category +: Mechanics Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### One Click Shed Reloader + +Mod Name +: [One Click Shed Reloader](https://www.nexusmods.com/stardewvalley/mods/2052) + +Mod Author +: BitwiseJon + +Category +: Mechanics Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Automate + +Mod Name +: [Automate](https://www.nexusmods.com/stardewvalley/mods/1063) + +Mod Author +: Pathoschild + +Category +: Mechanics Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Tractor Mod + +Mod Name +: [Tractor Mod](https://www.nexusmods.com/stardewvalley/mods/1401) + +Mod Author +: Pathoschild + +Category +: Mechanics Change + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Friends Forever + +Mod Name +: [Friends Forever (1.6)](https://www.nexusmods.com/stardewvalley/mods/20702) + +Mod Author +: IsaacSDev + +Category +: Mechanics Change + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Gender Neutrality Mod + +Mod Name +: [Gender Neutrality Mod](https://www.nexusmods.com/stardewvalley/mods/722) + +Mod Author +: Hana + +Category +: Immersion + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +Other Required Files +: [Gender Neutrality Mod Tokens](https://www.nexusmods.com/stardewvalley/mods/14426) by Hana + +--- + +### Platonic Partners and Friendships + +Mod Name +: [Platonic Partners and Friendships](https://www.nexusmods.com/stardewvalley/mods/8146/) + +Mod Author +: Amaranthacyan + +Category +: Modified Content + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +Leilukin’s Comment +: I have always wanted to be able to see all the heart events of the marriage candidates without romancing them, so this mod is a must-have for me. + +--- + +### Platonic Relationships + +Mod Name +: [Platonic Relationships](https://www.nexusmods.com/stardewvalley/mods/4668) + +Mod Author +: CherryChain + +Category +: Modified Content + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Farmer Age Dialogue Tweaks + +Mod Name +: [SFG's Farmer Age Dialogue Tweaks](https://www.nexusmods.com/stardewvalley/mods/4211) + +Mod Author +: ShotFromGuns + +Category +: Modified Content + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Polyamory + +Mod Name +: [Polyamory](https://github.com/EnderTedi/Polyamory) + +Mod Author +: EnderTedi + +Category +: Modified Content + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Custom Spouse Rooms + +Mod Name +: [Custom Spouse Rooms - Continued](https://www.nexusmods.com/stardewvalley/mods/20966) + +Mod Author +: Datamancer + +Category +: Modified Content + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Custom Spouse Patio + +Mod Name +: [Custom Spouse Patio Redux](https://www.nexusmods.com/stardewvalley/mods/10889) + +Mod Author +: aedenthorn + +Category +: Modified Content + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Bed Tweaks + +Mod Name +: [Bed Tweaks](https://www.nexusmods.com/stardewvalley/mods/10023) + +Mod Author +: aedenthorn + +Category +: Appearance Change + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Hugs and Kisses + +Mod Name +: [Hugs and Kisses Continued](https://www.nexusmods.com/stardewvalley/mods/21019) + +Mod Author +: JoXW + +Category +: Modified Content + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Part of the Community + +Mod Name +: [Part of the Community](https://www.nexusmods.com/stardewvalley/mods/923) + +Mod Author +: Space Baby + +Category +: Mechanics Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: No + +--- + +### Misc Introduction Fixes + +Mod Name +: [Misc introduction fixes](https://www.nexusmods.com/stardewvalley/mods/12562) + +Mod Author +: mistyspring + +Category +: Modified Content + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Shane’s New Job + +Mod Name +: [Shane’s New Job](https://www.nexusmods.com/stardewvalley/mods/2894) + +Mod Author +: Ran + +Category +: Modified Content + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### No More War - Kent as Journalist + +Mod Name +: [SFG's No More War - Kent as Journalist](https://www.nexusmods.com/stardewvalley/mods/4217) + +Mod Author +: ShotFromGuns + +Category +: Modified Content + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Kent Gets Therapy + +Mod Name +: [Kent Gets Therapy - 3 Heart Event Edit](https://www.nexusmods.com/stardewvalley/mods/14535) + +Mod Author +: Airyn + +Category +: Modified Content + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Tolerable Pierre + +Mod Name +: [Tolerable Pierre](https://www.moddrop.com/stardew-valley/mods/734913-tolerable-pierre) + +Mod Author +: LavenderLight + +Category +: Modified Content + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Marnie Deserves Better + +Mod Name +: [Marnie Deserves Better](https://www.nexusmods.com/stardewvalley/mods/7686) + +Mod Author +: IllogicalMoodSwing + +Category +: Modified Content + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Less Corrupt Lewis + +Mod Name +: [Less Corrupt Lewis - No More Statue](https://www.nexusmods.com/stardewvalley/mods/14269) + +Mod Author +: Airyn + +Category +: Modified Content + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### sqbr's Dialogue Edits + +Mod Name +: [sqbr's Dialogue Edits](https://www.nexusmods.com/stardewvalley/mods/14156) + +Mod Author +: sqbr + +Category +: Modified Content + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### No More Dialogue Differences + +Mod Name +: [No More Dialogue Differences](https://www.nexusmods.com/stardewvalley/mods/4459) + +Mod Author +: Isi + +Category +: Modified Content + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Demetrius's Tomato Dilemma + +Mod Name +: [Demetrius's Tomato Dilemma](https://www.nexusmods.com/stardewvalley/mods/7250) + +Mod Author +: Fuzzlepuzzle + +Category +: Modified Content + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Robin and Demetrius's Better Bed Discussion + +Mod Name +: [Robin and Demetrius's Better Bed Discussion](https://www.nexusmods.com/stardewvalley/mods/14534) + +Mod Author +: Airyn + +Category +: Modified Content + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Mx. Qi + +Mod Name +: [Mx. Qi](https://www.nexusmods.com/stardewvalley/mods/4310) + +Mod Author +: Isi + +Category +: Modified Content + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Befriend Marlon and Gunther + +Mod Name +: [Befriend Marlon and Gunther](https://www.nexusmods.com/stardewvalley/mods/2569) + +Mod Author +: Yoshimax and Pathoschild + +Category +: Modified Content + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Pelican Town Potluck + +Mod Name +: [Pelican Town Potluck](https://www.moddrop.com/stardew-valley/mods/1032927-pelican-town-potluck/) + +Mod Author +: LenneDalben + +Category +: Modified Content + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Fixed Luau Bridge + +Mod Name +: [Fixed Luau Bridge](https://www.nexusmods.com/stardewvalley/mods/19264) + +Mod Author +: Airyn + +Category +: Immersion + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Elaho's Babies and Toddlers Expanded + +Mod Name +: [Elaho's Babies and Toddlers Expanded](https://www.nexusmods.com/stardewvalley) + +Mod Author +: Elaho + +Category +: Appearance Change & Immersion + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +Leilukin’s Comment +: This mod is essential for me because I find the generic appearance of the babies rather immersion-breaking. + +--- + +### Diverse Stardew Valley + +Mod Name +: [Diverse Stardew Valley (DSV)](https://diversestardewvalley.weebly.com/) + +Mod Author +: DSV Project Team. Original version of the mod made by notsnufffie. + +Category +: Appearance Change & Modified Content + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +Other Required Files +: * [Generic Mod Config Menu](https://www.nexusmods.com/stardewvalley/mods/5098) by spacechase0 +: * [Cross-Mod Compatibility Tokens (CMCT)](https://www.nexusmods.com/stardewvalley/mods/28284) by Spiderbuttons +: * [Sprites in Detail](https://www.nexusmods.com/stardewvalley/mods/14487) by BleakCodex for the Marigold + +: Linus Modded config option + +Leilukin’s Comment +: As much as I like {% cite "Stardew Valley" %}, I cannot help but notice that the characters are overwhelmingly white. Therefore, the existence of the Diverse Stardew Valley mod is a gift and I consider this mod essential for my game. + +--- + +### Diverse Stardew Valley Additional Characters + +Mod Name +: [Diverse Stardew Valley (DSV) Additional Characters - Townspeople](https://www.nexusmods.com/stardewvalley/mods/23918) + +Mod Author +: DSV Project Team + +Category +: Appearance Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +Other Required Files +: [Diverse Stardew Valley (DSV)](https://diversestardewvalley.weebly.com/) + +Download Note +: I download and Install the Malaysian Indian Gus add-on + +Leilukin’s Comment +: I use the Malaysian Indian Gus add-on since I am Malaysian myself (albeit not Indian) and Malaysians get very little representation in video games. + +--- + +### inger Island NPC Overhaul + +Mod Name +: [Ginger Island NPC Overhaul](https://www.nexusmods.com/stardewvalley/mods/9242) + +Mod Author +: Zoedoll Lemurkat and AirynS + +Category +: Appearance Change + +Tier +: Tier 1 - Essential + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +Other Required Files +: * [Anti-Social NPCs](https://www.nexusmods.com/stardewvalley/mods/5371) by Super Aardvark +: * [Custom NPC Exclusions](https://www.nexusmods.com/stardewvalley/mods/7089) by Esca-MMC + +Leilukin’s Comment +: I highly recommend reading Tumblr user jojaqualityheadcanons‘ post about the [issues with the Ginger Island content](https://jojaqualityheadcanons.tumblr.com/post/646056190629052416/sdvs-15-update-contains-content-that-plays-into). + +--- + +### Elle's New Horses + +Mod Name +: [Elle's New Horses](https://www.nexusmods.com/stardewvalley/mods/3169) + +Mod Author +: junimods + +Category +: Appearance Change + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Elle's Dog Replacements + +Mod Name +: [Elle's Dog Replacements](https://www.nexusmods.com/stardewvalley/mods/3871) + +Mod Author +: junimods + +Category +: Appearance Change + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### lle's Cat Replacements + +Mod Name +: [Elle's Cat Replacements](https://www.nexusmods.com/stardewvalley/mods/3872) + +Mod Author +: junimods + +Category +: Appearance Change + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Mopsy's Harvest Moon Animals + +Mod Name +: [Mopsy's Harvest Moon Animals](https://www.nexusmods.com/stardewvalley/mods/2188) + +Mod Author +: Mopquill + +Category +: Appearance Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +Usage Note +: Since I use Elle's Dog Replacements, I disable the dog replacement function of this mod. + +Leilukin’s Comment +: I have never actually played any of the Harvest Moon games, though I find the animals, especially the chubby cows, from this mod too cute to resist using it. + +--- + +### K's Goat Replacers + +Mod Name +: [K's Goat Replacers](https://www.nexusmods.com/stardewvalley/mods/2964) + +Mod Author +: Kwillow + +Category +: Appearance Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +Installation Note +: I install the Solid White version. + +--- + +### K's Pig Replacers + +Mod Name +: [K's Pig Replacers](https://www.nexusmods.com/stardewvalley/mods/2945) + +Mod Author +: Kwillow + +Category +: Appearance Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +Installation Note +: I install the Solid Pink version. + +--- + +### Elle's Seasonal Vanilla Buildings + +Mod Name +: [Elle's Seasonal Vanilla Buildings](https://www.nexusmods.com/stardewvalley/mods/6330) + +Mod Author +: junimods + +Category +: Appearance Change + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Elle's Farmhouse Pride + +Mod Name +: [Elle's Farmhouse Pride](https://www.nexusmods.com/stardewvalley/mods/14764) + +Mod Author +: junimods + +Category +: Appearance Change + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Super Cellar + +Mod Name +: [Super Cellar](https://www.nexusmods.com/stardewvalley/mods/12747) + +Mod Author +: N3rdGirl + +Category +: Appearance Change + +Tier +: Tier 2 - Very Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Seasonal Tub o Flowers + +Mod Name +: [Seasonal Tub o Flowers](https://www.nexusmods.com/stardewvalley/mods/2758) + +Mod Author +: MouseyPounds + +Category +: Appearance Change + +Tier +: Tier 3 - Somewhat Important + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- + +### Gold Clock Sundial + +Mod Name +: [Gold Clock Sundial](https://www.nexusmods.com/stardewvalley/mods/7863) + +Mod Author +: birdblinder + +Category +: Appearance Change + +Tier +: Tier 4 - Optional + +SMAPI Required +: Yes + +Content Patcher Required +: Yes + +--- +{% endcontainer %} diff --git a/src/main b/src/main new file mode 100644 index 00000000..9b7ede98 --- /dev/null +++ b/src/main @@ -0,0 +1,7 @@ +--- +layout: global/content +--- + +{{ content | safe }} + +

      (This {{ keyword if keyword else "page" }} was last updated on )

      diff --git a/src/projects/art/art.11tydata.js b/src/projects/art/art.11tydata.js new file mode 100644 index 00000000..db5ec89a --- /dev/null +++ b/src/projects/art/art.11tydata.js @@ -0,0 +1,4 @@ +export default { + tags: ["artworks", "contents"], + categories: ["artworks"] +} \ No newline at end of file diff --git a/src/projects/code/bellabuffs-phpmailer.md b/src/projects/code/bellabuffs-phpmailer.md new file mode 100644 index 00000000..18dba385 --- /dev/null +++ b/src/projects/code/bellabuffs-phpmailer.md @@ -0,0 +1,30 @@ +--- +title: BellaBuffs with PHPMailer Integration +desc: My fork of BellaBuffs, with PHPMailer powering the email sending features. +eleventyNavigation: + order: 4 +--- + +* [Demo](https://fan.leilukin.com/cassettebeasts){.link-btn} +* [Source Code (GitHub)](https://github.com/helenclx/BellaBuffs-PHPMailer){.link-btn} +* [Source Code (Gitea)](https://git.32bit.cafe/Leilukin/BellaBuffs-PHPMailer){.link-btn} +* [Download (GitHub)](https://github.com/helenclx/BellaBuffs-PHPMailer/releases/latest){.link-btn} +{.link-btn--wrapper} + +This is a fork of the fanlisting PHP script [BullaBuffs](https://github.com/jemjabella/BellaBuffs), with the email sending library [PHPMailer](https://github.com/PHPMailer/PHPMailer) integrated. + +BellaBuffs includes the optional features to email new members after submitting the join form, email the fanlisting admin when a new member joins or email new members when their applications were approved. The original BellaBuffs script achieved this by using PHP's built-in `mail()` feature. + +This fork replaces the PHP `mail()` functions from BellaBuffs with PHPMailer, allowing a fanlisting to send out emails with SMTP, provided the fanlisting owner chooses to enable them, even if the hosting server does not support the PHP `mail()` function. + +I created this BellaBuffs fork when I was building the [{% cite "Cassette Beasts" %} fanlisting](https://fan.leilukin.com/cassettebeasts) with BellaBuffs and hosting the fanlisting on [InfinityFree](https://www.infinityfree.com/). I learned that InfinityFree's free hosting plan [does not support PHP `mail()` function](https://forum.infinityfree.com/t/sending-email-from-your-website-php-mail/49242), so incorporating PHPMailer was the solution to allow the {% cite "Cassette Beasts" %} fanlisting to send emails. + +More information about my BellaBuffs fork and instructions for how to use it can be found on [its GitHub repository](https://github.com/helenclx/BellaBuffs-PHPMailer) and [its Gitea repository mirror](https://git.32bit.cafe/Leilukin/BellaBuffs-PHPMailer). + +## Features +* Integrate PHPMailer for the email sending features, should the fanlisting owner enables these features +* Email sending features are enabled by default, but can be disabled in `prefs.php` +* HTML5 form validation, including E-mail and URL input types and the `required` attribute +* Update list of countries +* Add a buttons folder (with a placeholder file to enable the folder to be pushed via Git), so users do not need to manually create the folder to store uploaded buttons +* Allows fnalisting members to change their favourites with the update form if favourites field is enabled \ No newline at end of file diff --git a/src/projects/code/code.11tydata.js b/src/projects/code/code.11tydata.js new file mode 100644 index 00000000..e6412235 --- /dev/null +++ b/src/projects/code/code.11tydata.js @@ -0,0 +1,3 @@ +export default { + tags: ["code projects"] +} \ No newline at end of file diff --git a/src/projects/playlists.md b/src/projects/playlists.md new file mode 100644 index 00000000..2bc025b1 --- /dev/null +++ b/src/projects/playlists.md @@ -0,0 +1,25 @@ +--- +title: My Music Playlists +desc: Music playlists that I have created. +toc: true +eleventyNavigation: + order: 3 +--- +## My Dear Summer Lover + +{% from "asummersend/myplaylist.njk" import myASEPlaylist %} +{{ myASEPlaylist("A fanmix for the visual novel") }} + +## Mandopop LGBTQ+ Anthem [華語流行音樂同志國歌]{lang="zh"} + +{% imgFigure "/assets/projects/playlists/Mandopop-LGBTQ+-Anthem-Cover.avif", "Cover of the Mandopop LGBTQ+ Anthem playlist" %} +[Image description: A progress pride flag, with the Traditional Chinese words, [同志國歌]{lang="zh"}, meaning queer anthem on top.] +{% endimgFigure %} + +A collection of Mandarin queer anthems. + +I made this playlist after discovering Wikipedia's list of Chinese queer anthems on the article [同志國歌](https://zh.wikipedia.org/wiki/%E5%90%8C%E5%BF%97%E5%9C%8B%E6%AD%8C#%E8%8F%AF%E8%AA%9E){lang="zh"}, the Mandarin article for Gay Anthem. + +Listen on Spotify + + diff --git a/src/projects/projects.11tydata.js b/src/projects/projects.11tydata.js new file mode 100644 index 00000000..cce29528 --- /dev/null +++ b/src/projects/projects.11tydata.js @@ -0,0 +1,11 @@ +export default { + tags: "project pages", + layout: "main/content.njk", + hasBreadcrumbs: true, + eleventyComputed: { + eleventyNavigation: { + key: (data) => data.title, + parent: "Projects" + } + } +} \ No newline at end of file diff --git a/src/projects/snippets/disability-pride-flag-background.md b/src/projects/snippets/disability-pride-flag-background.md new file mode 100644 index 00000000..061d0eff --- /dev/null +++ b/src/projects/snippets/disability-pride-flag-background.md @@ -0,0 +1,48 @@ +--- +title: Responsive Disability Pride flag CSS Background +desc: CSS code snippet of Disability Pride flag background that can adapt to different widths and screen sizes. +eleventyNavigation: + order: 5 +--- + +There have been CSS code snippets of LGBTQ+ pride flag backgrounds out there, such as [Alvaro Montoro's LGBTQ+ Flags Coded in CSS demo](https://codepen.io/alvaromontoro/full/NWyBrZJ), but I could not find one for the [Disability Pride flag](https://www.womansday.com/life/a43964487/disability-pride-flag/), which was created by [Ann Magill](https://capri0mni.dreamwidth.org/837596.html) and released in 2021. + +Therefore, at the start of [Disability Pride Month](https://en.wikipedia.org/wiki/Disability_Pride_Month) in July 2024, I decided to code a Disability Pride flag background in CSS, and now I am releasing my code snippet for public use. + +My Disability Pride flag CSS background is done with a combination of the CSS [`background` property](https://developer.mozilla.org/en-US/docs/Web/CSS/background) and [`linuear-gradient()` function](https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/linear-gradient), and designed to be responsive, so it can adapt to different screen sizes and devices. + +I have used JavaScript to set up the header of the main part of this website, so it will display the Disability Pride flag as its background during July. + +Since Ann Magill released the Disability Pride flag to the public domain under [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/), I am doing the same to my responsive Disability Pride flag CSS background. Therefore, you are free to use my code and do what you want with it without asking for permission or crediting me. + +## Demo +{% set demoHeight = "23rem" %} +{%- css %} +.flag-disability.demo { height: {{ demoHeight }}; } +{% endcss %} + + + +## Code + +CSS: + +```css +.disability-pride-flag { +    background: + linear-gradient( + 37deg, + #595959 0 35%, + #CF7280 30% 41%, + #EEDE77 30% 47%, + #E8E8E8 30% 53%, + #7bc2e0 30% 59%, + #3BB07D 30% 65%, + #595959 0 + ); +} +``` + +After copying the above snippet in a CSS stylesheet or the HTML `