From 5bd56c54095a772cf14aae82389bf104338d7ac8 Mon Sep 17 00:00:00 2001 From: polwex Date: Sat, 28 Jun 2025 03:10:47 +0700 Subject: fucking dune man --- NOTES.md | 2 + assets/avatars/.DS_Store | Bin 0 -> 6148 bytes .../bros/04a3e845-545a-4563-83e1-f7ccb34e34a9.png | Bin 0 -> 12333 bytes .../bros/05bcc4c7-13b2-4242-a660-02d6609ebd25.png | Bin 0 -> 17590 bytes .../bros/149ccaed-89be-4064-991c-4e37f082cdd9.png | Bin 0 -> 12740 bytes .../bros/159173f1-1556-46cc-87c1-2cec9541f504.png | Bin 0 -> 7342 bytes assets/avatars/bros/15ff72ea5cd7027a.jpg | Bin 0 -> 83272 bytes .../bros/1c92955d-cc23-4723-b2cd-04c7238d9cdc.png | Bin 0 -> 12608 bytes .../bros/1dff3587-75f1-47e5-bbfd-9c337b8c4c67.jpg | Bin 0 -> 2629 bytes .../bros/2b0c4931-7b3d-466d-8eea-aceb358f7d76.jpeg | Bin 0 -> 2789 bytes .../bros/2c920876-0a54-46cb-863b-ce489adebb7e.jpg | Bin 0 -> 2609 bytes .../bros/33da9fac-a4c4-4288-a54c-c6280c6220d3.png | Bin 0 -> 13620 bytes .../bros/3519be1d-df9e-4c60-8403-9c47499d84cb.png | Bin 0 -> 13082 bytes .../bros/3c28e55b-58c4-4d25-a76e-70b8239846d1.png | Bin 0 -> 14327 bytes .../bros/3e432ff5-0e36-40e8-8706-5f238df7ebb0.jpeg | Bin 0 -> 4418 bytes .../bros/3e5ffe6f-6c7d-459e-8ea0-bedb85875eaa.png | Bin 0 -> 16459 bytes .../bros/49c0e107-d221-402f-9a42-16b531baa9ad.png | Bin 0 -> 16723 bytes .../bros/4bcd672a-bc4b-4fc2-b122-e30c45ac15e5.jpg | Bin 0 -> 4832 bytes .../bros/5a1d970a-2766-47c2-b9d2-425789faa52e.png | Bin 0 -> 12912 bytes .../bros/5e94ccbd-50b3-408a-8019-af76f00f2e11.png | Bin 0 -> 7143 bytes .../bros/68faa862-4198-438b-8972-d88ba9806c06.png | Bin 0 -> 12682 bytes .../bros/69376d6b-b145-4edc-9277-aedc03de20d1.jpg | Bin 0 -> 5867 bytes .../bros/6a1f9f06-042d-4aca-a16e-7efec588757e.png | Bin 0 -> 9854 bytes .../bros/6ea7215f-116f-40f3-a45e-4f98f549bce2.jpg | Bin 0 -> 2629 bytes .../bros/75e258d6-a850-4438-a2d5-f9a46c545c0b.png | Bin 0 -> 13486 bytes .../bros/779d4203-0863-43df-b66f-5134d5a92d2e.png | Bin 0 -> 13397 bytes .../bros/7c60fcdb-7164-4f8b-9b03-b4f70e029d80.png | Bin 0 -> 15914 bytes .../bros/84b61747-4cc3-49b0-a646-baec96352f05.png | Bin 0 -> 7269 bytes .../bros/86390603-1ca1-4ba2-a81b-def1fb82ab0b.png | Bin 0 -> 12686 bytes .../bros/89da29c1-ae95-48ba-b954-6e690b56e19b.jpg | Bin 0 -> 4691 bytes .../bros/8df3a7b3-653f-4aae-a673-1cb3595564d2.png | Bin 0 -> 15006 bytes .../bros/904467df-9c43-419d-912b-1b83f712172c.png | Bin 0 -> 16966 bytes .../bros/9afc3e65-4287-4e48-a4b3-01625e9b78a1.png | Bin 0 -> 14147 bytes assets/avatars/bros/Ej5Ys-pUwAAjQ6-.jpeg | Bin 0 -> 58965 bytes .../bros/a3d10289-4cdd-44c6-9d61-da7e760b2812.png | Bin 0 -> 13737 bytes .../bros/a60e5493-75a0-4c49-a060-1b0e88b19ad8.png | Bin 0 -> 15364 bytes .../bros/ac3ac83e-96eb-49f5-b71c-856b23dc3ccc.png | Bin 0 -> 9744 bytes .../bros/bbe5f3a1-c893-4808-946f-3f567b834655.png | Bin 0 -> 21035 bytes assets/avatars/bros/chad.png | Bin 0 -> 29388 bytes .../bros/d0d8a2bb-284c-4b80-bd86-28f201ff2939.png | Bin 0 -> 14104 bytes .../bros/d0f68378-38a2-45c6-af27-c5748d87736e.png | Bin 0 -> 7846 bytes .../bros/daaf0fc3-b344-448f-b9f0-6ee95b262521.png | Bin 0 -> 10350 bytes .../bros/e1c40fb4-ff6f-42dd-9ea0-540504999b60.png | Bin 0 -> 23713 bytes .../bros/ea72e0f8-5a83-4b51-9b49-ea3f56509d8e.jpg | Bin 0 -> 5509 bytes .../bros/ee6f2951-dc28-4b59-b54d-553944e8ea87.png | Bin 0 -> 6989 bytes .../bros/f6c04eb5-4741-4882-ae2c-7b0b49f66502.jpg | Bin 0 -> 6556 bytes .../bros/fd8b2219-7435-4fc3-9722-a82370be2001.jpg | Bin 0 -> 6556 bytes assets/avatars/memes/Affirmative-Fed-Boi-Chad.png | Bin 0 -> 7131 bytes assets/avatars/memes/Bashar-Al-Assad-Chad.png | Bin 0 -> 5136 bytes assets/avatars/memes/Buddhist-Chad.png | Bin 0 -> 5756 bytes assets/avatars/memes/Chad-No-Nut.png | Bin 0 -> 9303 bytes assets/avatars/memes/Crusade-Chad.png | Bin 0 -> 6295 bytes assets/avatars/memes/Frenchman-Chad.png | Bin 0 -> 7332 bytes assets/avatars/memes/German-Soldier-Chad.png | Bin 0 -> 5593 bytes assets/avatars/memes/Hitler-Chad.png | Bin 0 -> 7464 bytes assets/avatars/memes/Hype-Beast-Chad.png | Bin 0 -> 7887 bytes assets/avatars/memes/Jew-Chad.png | Bin 0 -> 11718 bytes assets/avatars/memes/Joker-Chad.png | Bin 0 -> 10335 bytes assets/avatars/memes/King-Harkinian-Chad.png | Bin 0 -> 6976 bytes assets/avatars/memes/Military-Chad.png | Bin 0 -> 8517 bytes assets/avatars/memes/Nazbol-Chad.png | Bin 0 -> 6731 bytes .../memes/Nordic-Chad-No-Beard-Black-HEadset.png | Bin 0 -> 11227 bytes assets/avatars/memes/Portugeuse-Chad.png | Bin 0 -> 12146 bytes assets/avatars/memes/Red-Headed-Gamer-Chad.png | Bin 0 -> 138536 bytes assets/avatars/memes/Saudi-Arabian-Chad.png | Bin 0 -> 4937 bytes assets/avatars/memes/Suited-Chad.png | Bin 0 -> 9253 bytes assets/avatars/memes/Trump-Chad.png | Bin 0 -> 8165 bytes assets/avatars/memes/gigachad.png | Bin 0 -> 576429 bytes assets/avatars/memes/wojak-cry.jpeg | Bin 0 -> 8022 bytes assets/board/boards/AI.svg | 1 + assets/board/boards/ai.svg | 1 + assets/board/boards/art.svg | 26 + assets/board/boards/bookmark.svg | 6 + assets/board/boards/books.svg | 21 + assets/board/boards/btc.svg | 12 + assets/board/boards/business.svg | 27 + assets/board/boards/chud.jpg | Bin 0 -> 41666 bytes assets/board/boards/computing.svg | 19 + assets/board/boards/crypto.svg | 12 + assets/board/boards/family.svg | 35 + assets/board/boards/film.svg | 27 + assets/board/boards/food.svg | 41 ++ assets/board/boards/gmi.svg | 24 + assets/board/boards/hbd.svg | 30 + assets/board/boards/health.svg | 17 + assets/board/boards/history.svg | 16 + assets/board/boards/humor.svg | 1 + assets/board/boards/irl.svg | 45 ++ assets/board/boards/links.svg | 31 + assets/board/boards/misc.svg | 1 + assets/board/boards/money.svg | 65 ++ assets/board/boards/music.svg | 25 + assets/board/boards/ngmi.svg | 23 + assets/board/boards/orient.svg | 22 + assets/board/boards/physiognomy.jpg | Bin 0 -> 41666 bytes assets/board/boards/physiognomy.svg | Bin 0 -> 41666 bytes assets/board/boards/politics.svg | 30 + assets/board/boards/public.svg | 23 + assets/board/boards/religion.svg | 13 + assets/board/boards/science.svg | 32 + assets/board/boards/sex.svg | 55 ++ assets/board/boards/spinner.svg | 1 + assets/board/boards/tech.svg | 28 + assets/board/boards/theory.svg | 100 +++ assets/board/boards/travel.svg | 17 + assets/board/boards/ui | 8 + assets/board/boards/urbit.svg | 4 + assets/board/boards/vip.svg | 94 +++ assets/board/boards/war.svg | 43 ++ assets/board/boards/wyb.svg | 1 + assets/board/boards/zh.svg | 45 ++ assets/board/lol.lol | 1 + assets/board/octicons/bold-24.svg | 1 + assets/board/octicons/code-24.svg | 1 + assets/board/octicons/code-square-24.svg | 1 + assets/board/octicons/heading-24.svg | 1 + assets/board/octicons/image-24.svg | 1 + assets/board/octicons/italic-24.svg | 1 + assets/board/octicons/link-24.svg | 1 + assets/board/octicons/list-ordered-24.svg | 1 + assets/board/octicons/list-unordered-24.svg | 1 + assets/board/octicons/quote-24.svg | 1 + assets/board/octicons/screen-full-24.svg | 1 + assets/board/octicons/screen-normal-24.svg | 1 + assets/board/octicons/x-24.svg | 1 + assets/board/ui/collapse.svg | 16 + assets/board/ui/copy.svg | 31 + assets/board/ui/delete.svg | 21 + assets/board/ui/down.svg | 12 + assets/board/ui/downvote.svg | 11 + assets/board/ui/edit.svg | 16 + assets/board/ui/left.svg | 12 + assets/board/ui/menu.svg | 14 + assets/board/ui/poll.svg | 15 + assets/board/ui/reply.svg | 12 + assets/board/ui/right.svg | 15 + assets/board/ui/search.svg | 17 + assets/board/ui/sort.svg | 1 + assets/board/ui/tianming.svg | 76 ++ assets/board/ui/uncollapse.svg | 20 + assets/board/ui/upvote.svg | 13 + assets/fonts/CrimsonText-Bold.ttf | Bin 0 -> 112116 bytes assets/fonts/CrimsonText-BoldItalic.ttf | Bin 0 -> 114268 bytes assets/fonts/CrimsonText-Italic.ttf | Bin 0 -> 109440 bytes assets/fonts/CrimsonText-Regular.ttf | Bin 0 -> 106512 bytes assets/fonts/CrimsonText-SemiBold.ttf | Bin 0 -> 110420 bytes assets/fonts/CrimsonText-SemiBoldItalic.ttf | Bin 0 -> 111332 bytes assets/fonts/Crimson_Text/Crimson_Text,Inter.zip | Bin 0 -> 4307878 bytes .../Crimson_Text/Crimson_Text/CrimsonText-Bold.ttf | Bin 0 -> 112116 bytes .../Crimson_Text/CrimsonText-BoldItalic.ttf | Bin 0 -> 114268 bytes .../Crimson_Text/CrimsonText-Italic.ttf | Bin 0 -> 109440 bytes .../Crimson_Text/CrimsonText-Regular.ttf | Bin 0 -> 106512 bytes .../Crimson_Text/CrimsonText-SemiBold.ttf | Bin 0 -> 110420 bytes .../Crimson_Text/CrimsonText-SemiBoldItalic.ttf | Bin 0 -> 111332 bytes assets/fonts/Crimson_Text/Crimson_Text/OFL.txt | 93 +++ .../Inter/Inter/Inter-VariableFont_slnt,wght.ttf | Bin 0 -> 804612 bytes assets/fonts/In/Inter/Inter/OFL.txt | 93 +++ assets/fonts/In/Inter/Inter/README.txt | 72 ++ assets/fonts/In/Inter/Inter/static/Inter-Black.ttf | Bin 0 -> 316848 bytes assets/fonts/In/Inter/Inter/static/Inter-Bold.ttf | Bin 0 -> 316584 bytes .../In/Inter/Inter/static/Inter-ExtraBold.ttf | Bin 0 -> 317184 bytes .../In/Inter/Inter/static/Inter-ExtraLight.ttf | Bin 0 -> 311232 bytes assets/fonts/In/Inter/Inter/static/Inter-Light.ttf | Bin 0 -> 310832 bytes .../fonts/In/Inter/Inter/static/Inter-Medium.ttf | Bin 0 -> 315132 bytes .../fonts/In/Inter/Inter/static/Inter-Regular.ttf | Bin 0 -> 310252 bytes .../fonts/In/Inter/Inter/static/Inter-SemiBold.ttf | Bin 0 -> 316220 bytes assets/fonts/In/Inter/Inter/static/Inter-Thin.ttf | Bin 0 -> 310984 bytes assets/fonts/Inter-Black.ttf | Bin 0 -> 316848 bytes assets/fonts/Inter-Bold.ttf | Bin 0 -> 316584 bytes assets/fonts/Inter-ExtraBold.ttf | Bin 0 -> 317184 bytes assets/fonts/Inter-ExtraLight.ttf | Bin 0 -> 311232 bytes assets/fonts/Inter-Light.ttf | Bin 0 -> 310832 bytes assets/fonts/Inter-Medium.ttf | Bin 0 -> 315132 bytes assets/fonts/Inter-Regular.ttf | Bin 0 -> 310252 bytes assets/fonts/Inter-SemiBold.ttf | Bin 0 -> 316220 bytes assets/fonts/Inter-Thin.ttf | Bin 0 -> 310984 bytes assets/fonts/Inter-VariableFont.ttf | Bin 0 -> 804612 bytes assets/fonts/Inter-VariableFont_slnt,wght.ttf | Bin 0 -> 804612 bytes .../Inter/Inter/Inter-VariableFont_slnt,wght.ttf | Bin 0 -> 804612 bytes assets/fonts/Inter/Inter/OFL.txt | 93 +++ assets/fonts/Inter/Inter/README.txt | 72 ++ assets/fonts/Inter/Inter/static/Inter-Black.ttf | Bin 0 -> 316848 bytes assets/fonts/Inter/Inter/static/Inter-Bold.ttf | Bin 0 -> 316584 bytes .../fonts/Inter/Inter/static/Inter-ExtraBold.ttf | Bin 0 -> 317184 bytes .../fonts/Inter/Inter/static/Inter-ExtraLight.ttf | Bin 0 -> 311232 bytes assets/fonts/Inter/Inter/static/Inter-Light.ttf | Bin 0 -> 310832 bytes assets/fonts/Inter/Inter/static/Inter-Medium.ttf | Bin 0 -> 315132 bytes assets/fonts/Inter/Inter/static/Inter-Regular.ttf | Bin 0 -> 310252 bytes assets/fonts/Inter/Inter/static/Inter-SemiBold.ttf | Bin 0 -> 316220 bytes assets/fonts/Inter/Inter/static/Inter-Thin.ttf | Bin 0 -> 310984 bytes assets/icons/favicon.ico | Bin 0 -> 14830 bytes assets/icons/search.svg | 13 + assets/icons/tianming.svg | 76 ++ assets/input.css | 182 +++++ assets/soyjaks/addict.png | Bin 0 -> 28769 bytes assets/soyjaks/adulterer.png | Bin 0 -> 17777 bytes assets/soyjaks/billions.png | Bin 0 -> 5656 bytes assets/soyjaks/bloomer.png | Bin 0 -> 27711 bytes assets/soyjaks/chudcry.jpeg | Bin 0 -> 68402 bytes assets/soyjaks/chudjak.png | Bin 0 -> 34330 bytes assets/soyjaks/chudsmile.png | Bin 0 -> 86665 bytes assets/soyjaks/coomer.png | Bin 0 -> 39311 bytes assets/soyjaks/crychud.png | Bin 0 -> 22140 bytes assets/soyjaks/cuck.png | Bin 0 -> 16222 bytes assets/soyjaks/eunuch.png | Bin 0 -> 22677 bytes assets/soyjaks/fatjak.png | Bin 0 -> 292409 bytes assets/soyjaks/friendzoned.png | Bin 0 -> 13294 bytes assets/soyjaks/furry.png | Bin 0 -> 11142 bytes assets/soyjaks/gay.png | Bin 0 -> 12359 bytes assets/soyjaks/griller.png | Bin 0 -> 31793 bytes assets/soyjaks/grinsoy.jpg | Bin 0 -> 52824 bytes assets/soyjaks/groomer.png | Bin 0 -> 15929 bytes assets/soyjaks/grooomer.png | Bin 0 -> 16205 bytes assets/soyjaks/husband.png | Bin 0 -> 59738 bytes assets/soyjaks/improover.png | Bin 0 -> 21254 bytes assets/soyjaks/incel.png | Bin 0 -> 23925 bytes assets/soyjaks/mouthjak.png | Bin 0 -> 120926 bytes assets/soyjaks/normal.png | Bin 0 -> 13084 bytes assets/soyjaks/partner.png | Bin 0 -> 40135 bytes assets/soyjaks/paypig.png | Bin 0 -> 47172 bytes assets/soyjaks/pervert.png | Bin 0 -> 21049 bytes assets/soyjaks/polygamist.png | Bin 0 -> 66516 bytes assets/soyjaks/pua.png | Bin 0 -> 22117 bytes assets/soyjaks/pussyhound.png | Bin 0 -> 36644 bytes assets/soyjaks/redditjak.png | Bin 0 -> 107557 bytes assets/soyjaks/smartjak.jpeg | Bin 0 -> 8317 bytes assets/soyjaks/soyjak.png | Bin 0 -> 405676 bytes assets/soyjaks/sugardaddy.png | Bin 0 -> 42204 bytes assets/soyjaks/tranny.png | Bin 0 -> 33738 bytes assets/soyjaks/troon.png | Bin 0 -> 45304 bytes assets/soyjaks/twink.png | Bin 0 -> 16270 bytes assets/soyjaks/volcel.png | Bin 0 -> 27745 bytes assets/soyjaks/weeb.png | Bin 0 -> 26588 bytes assets/styles.css | 492 +++++++++++++ dune | 6 + dune-project | 2 + flake.nix | 1 + js/.gitignore | 34 - js/Pepe.tsx | 369 ---------- js/README.md | 15 - js/bun.lock | 189 ----- js/index.ts | 1 - js/output.css | 792 --------------------- js/package.json | 16 - js/styles.css | 182 ----- js/tailwind.config.js | 5 - js/tsconfig.json | 29 - lib/pages/BlogIndex.mlx | 1 + tailwind.sh | 1 + 249 files changed, 2537 insertions(+), 1632 deletions(-) create mode 100644 assets/avatars/.DS_Store create mode 100644 assets/avatars/bros/04a3e845-545a-4563-83e1-f7ccb34e34a9.png create mode 100644 assets/avatars/bros/05bcc4c7-13b2-4242-a660-02d6609ebd25.png create mode 100644 assets/avatars/bros/149ccaed-89be-4064-991c-4e37f082cdd9.png create mode 100644 assets/avatars/bros/159173f1-1556-46cc-87c1-2cec9541f504.png create mode 100644 assets/avatars/bros/15ff72ea5cd7027a.jpg create mode 100644 assets/avatars/bros/1c92955d-cc23-4723-b2cd-04c7238d9cdc.png create mode 100644 assets/avatars/bros/1dff3587-75f1-47e5-bbfd-9c337b8c4c67.jpg create mode 100644 assets/avatars/bros/2b0c4931-7b3d-466d-8eea-aceb358f7d76.jpeg create mode 100644 assets/avatars/bros/2c920876-0a54-46cb-863b-ce489adebb7e.jpg create mode 100644 assets/avatars/bros/33da9fac-a4c4-4288-a54c-c6280c6220d3.png create mode 100644 assets/avatars/bros/3519be1d-df9e-4c60-8403-9c47499d84cb.png create mode 100644 assets/avatars/bros/3c28e55b-58c4-4d25-a76e-70b8239846d1.png create mode 100644 assets/avatars/bros/3e432ff5-0e36-40e8-8706-5f238df7ebb0.jpeg create mode 100644 assets/avatars/bros/3e5ffe6f-6c7d-459e-8ea0-bedb85875eaa.png create mode 100644 assets/avatars/bros/49c0e107-d221-402f-9a42-16b531baa9ad.png create mode 100644 assets/avatars/bros/4bcd672a-bc4b-4fc2-b122-e30c45ac15e5.jpg create mode 100644 assets/avatars/bros/5a1d970a-2766-47c2-b9d2-425789faa52e.png create mode 100644 assets/avatars/bros/5e94ccbd-50b3-408a-8019-af76f00f2e11.png create mode 100644 assets/avatars/bros/68faa862-4198-438b-8972-d88ba9806c06.png create mode 100644 assets/avatars/bros/69376d6b-b145-4edc-9277-aedc03de20d1.jpg create mode 100644 assets/avatars/bros/6a1f9f06-042d-4aca-a16e-7efec588757e.png create mode 100644 assets/avatars/bros/6ea7215f-116f-40f3-a45e-4f98f549bce2.jpg create mode 100644 assets/avatars/bros/75e258d6-a850-4438-a2d5-f9a46c545c0b.png create mode 100644 assets/avatars/bros/779d4203-0863-43df-b66f-5134d5a92d2e.png create mode 100644 assets/avatars/bros/7c60fcdb-7164-4f8b-9b03-b4f70e029d80.png create mode 100644 assets/avatars/bros/84b61747-4cc3-49b0-a646-baec96352f05.png create mode 100644 assets/avatars/bros/86390603-1ca1-4ba2-a81b-def1fb82ab0b.png create mode 100644 assets/avatars/bros/89da29c1-ae95-48ba-b954-6e690b56e19b.jpg create mode 100644 assets/avatars/bros/8df3a7b3-653f-4aae-a673-1cb3595564d2.png create mode 100644 assets/avatars/bros/904467df-9c43-419d-912b-1b83f712172c.png create mode 100644 assets/avatars/bros/9afc3e65-4287-4e48-a4b3-01625e9b78a1.png create mode 100644 assets/avatars/bros/Ej5Ys-pUwAAjQ6-.jpeg create mode 100644 assets/avatars/bros/a3d10289-4cdd-44c6-9d61-da7e760b2812.png create mode 100644 assets/avatars/bros/a60e5493-75a0-4c49-a060-1b0e88b19ad8.png create mode 100644 assets/avatars/bros/ac3ac83e-96eb-49f5-b71c-856b23dc3ccc.png create mode 100644 assets/avatars/bros/bbe5f3a1-c893-4808-946f-3f567b834655.png create mode 100644 assets/avatars/bros/chad.png create mode 100644 assets/avatars/bros/d0d8a2bb-284c-4b80-bd86-28f201ff2939.png create mode 100644 assets/avatars/bros/d0f68378-38a2-45c6-af27-c5748d87736e.png create mode 100644 assets/avatars/bros/daaf0fc3-b344-448f-b9f0-6ee95b262521.png create mode 100644 assets/avatars/bros/e1c40fb4-ff6f-42dd-9ea0-540504999b60.png create mode 100644 assets/avatars/bros/ea72e0f8-5a83-4b51-9b49-ea3f56509d8e.jpg create mode 100644 assets/avatars/bros/ee6f2951-dc28-4b59-b54d-553944e8ea87.png create mode 100644 assets/avatars/bros/f6c04eb5-4741-4882-ae2c-7b0b49f66502.jpg create mode 100644 assets/avatars/bros/fd8b2219-7435-4fc3-9722-a82370be2001.jpg create mode 100644 assets/avatars/memes/Affirmative-Fed-Boi-Chad.png create mode 100644 assets/avatars/memes/Bashar-Al-Assad-Chad.png create mode 100644 assets/avatars/memes/Buddhist-Chad.png create mode 100644 assets/avatars/memes/Chad-No-Nut.png create mode 100644 assets/avatars/memes/Crusade-Chad.png create mode 100644 assets/avatars/memes/Frenchman-Chad.png create mode 100644 assets/avatars/memes/German-Soldier-Chad.png create mode 100644 assets/avatars/memes/Hitler-Chad.png create mode 100644 assets/avatars/memes/Hype-Beast-Chad.png create mode 100644 assets/avatars/memes/Jew-Chad.png create mode 100644 assets/avatars/memes/Joker-Chad.png create mode 100644 assets/avatars/memes/King-Harkinian-Chad.png create mode 100644 assets/avatars/memes/Military-Chad.png create mode 100644 assets/avatars/memes/Nazbol-Chad.png create mode 100644 assets/avatars/memes/Nordic-Chad-No-Beard-Black-HEadset.png create mode 100644 assets/avatars/memes/Portugeuse-Chad.png create mode 100644 assets/avatars/memes/Red-Headed-Gamer-Chad.png create mode 100644 assets/avatars/memes/Saudi-Arabian-Chad.png create mode 100644 assets/avatars/memes/Suited-Chad.png create mode 100644 assets/avatars/memes/Trump-Chad.png create mode 100644 assets/avatars/memes/gigachad.png create mode 100644 assets/avatars/memes/wojak-cry.jpeg create mode 100644 assets/board/boards/AI.svg create mode 100644 assets/board/boards/ai.svg create mode 100644 assets/board/boards/art.svg create mode 100644 assets/board/boards/bookmark.svg create mode 100644 assets/board/boards/books.svg create mode 100644 assets/board/boards/btc.svg create mode 100644 assets/board/boards/business.svg create mode 100644 assets/board/boards/chud.jpg create mode 100644 assets/board/boards/computing.svg create mode 100644 assets/board/boards/crypto.svg create mode 100644 assets/board/boards/family.svg create mode 100644 assets/board/boards/film.svg create mode 100644 assets/board/boards/food.svg create mode 100644 assets/board/boards/gmi.svg create mode 100644 assets/board/boards/hbd.svg create mode 100644 assets/board/boards/health.svg create mode 100644 assets/board/boards/history.svg create mode 100644 assets/board/boards/humor.svg create mode 100644 assets/board/boards/irl.svg create mode 100644 assets/board/boards/links.svg create mode 100644 assets/board/boards/misc.svg create mode 100644 assets/board/boards/money.svg create mode 100644 assets/board/boards/music.svg create mode 100644 assets/board/boards/ngmi.svg create mode 100644 assets/board/boards/orient.svg create mode 100644 assets/board/boards/physiognomy.jpg create mode 100644 assets/board/boards/physiognomy.svg create mode 100644 assets/board/boards/politics.svg create mode 100644 assets/board/boards/public.svg create mode 100644 assets/board/boards/religion.svg create mode 100644 assets/board/boards/science.svg create mode 100644 assets/board/boards/sex.svg create mode 100644 assets/board/boards/spinner.svg create mode 100644 assets/board/boards/tech.svg create mode 100644 assets/board/boards/theory.svg create mode 100644 assets/board/boards/travel.svg create mode 100644 assets/board/boards/ui create mode 100644 assets/board/boards/urbit.svg create mode 100644 assets/board/boards/vip.svg create mode 100644 assets/board/boards/war.svg create mode 100644 assets/board/boards/wyb.svg create mode 100644 assets/board/boards/zh.svg create mode 100644 assets/board/lol.lol create mode 100644 assets/board/octicons/bold-24.svg create mode 100644 assets/board/octicons/code-24.svg create mode 100644 assets/board/octicons/code-square-24.svg create mode 100644 assets/board/octicons/heading-24.svg create mode 100644 assets/board/octicons/image-24.svg create mode 100644 assets/board/octicons/italic-24.svg create mode 100644 assets/board/octicons/link-24.svg create mode 100644 assets/board/octicons/list-ordered-24.svg create mode 100644 assets/board/octicons/list-unordered-24.svg create mode 100644 assets/board/octicons/quote-24.svg create mode 100644 assets/board/octicons/screen-full-24.svg create mode 100644 assets/board/octicons/screen-normal-24.svg create mode 100644 assets/board/octicons/x-24.svg create mode 100644 assets/board/ui/collapse.svg create mode 100644 assets/board/ui/copy.svg create mode 100644 assets/board/ui/delete.svg create mode 100644 assets/board/ui/down.svg create mode 100644 assets/board/ui/downvote.svg create mode 100644 assets/board/ui/edit.svg create mode 100644 assets/board/ui/left.svg create mode 100644 assets/board/ui/menu.svg create mode 100644 assets/board/ui/poll.svg create mode 100644 assets/board/ui/reply.svg create mode 100644 assets/board/ui/right.svg create mode 100644 assets/board/ui/search.svg create mode 100644 assets/board/ui/sort.svg create mode 100644 assets/board/ui/tianming.svg create mode 100644 assets/board/ui/uncollapse.svg create mode 100644 assets/board/ui/upvote.svg create mode 100644 assets/fonts/CrimsonText-Bold.ttf create mode 100644 assets/fonts/CrimsonText-BoldItalic.ttf create mode 100644 assets/fonts/CrimsonText-Italic.ttf create mode 100644 assets/fonts/CrimsonText-Regular.ttf create mode 100644 assets/fonts/CrimsonText-SemiBold.ttf create mode 100644 assets/fonts/CrimsonText-SemiBoldItalic.ttf create mode 100644 assets/fonts/Crimson_Text/Crimson_Text,Inter.zip create mode 100644 assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-Bold.ttf create mode 100644 assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-BoldItalic.ttf create mode 100644 assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-Italic.ttf create mode 100644 assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-Regular.ttf create mode 100644 assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-SemiBold.ttf create mode 100644 assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-SemiBoldItalic.ttf create mode 100644 assets/fonts/Crimson_Text/Crimson_Text/OFL.txt create mode 100644 assets/fonts/In/Inter/Inter/Inter-VariableFont_slnt,wght.ttf create mode 100644 assets/fonts/In/Inter/Inter/OFL.txt create mode 100644 assets/fonts/In/Inter/Inter/README.txt create mode 100644 assets/fonts/In/Inter/Inter/static/Inter-Black.ttf create mode 100644 assets/fonts/In/Inter/Inter/static/Inter-Bold.ttf create mode 100644 assets/fonts/In/Inter/Inter/static/Inter-ExtraBold.ttf create mode 100644 assets/fonts/In/Inter/Inter/static/Inter-ExtraLight.ttf create mode 100644 assets/fonts/In/Inter/Inter/static/Inter-Light.ttf create mode 100644 assets/fonts/In/Inter/Inter/static/Inter-Medium.ttf create mode 100644 assets/fonts/In/Inter/Inter/static/Inter-Regular.ttf create mode 100644 assets/fonts/In/Inter/Inter/static/Inter-SemiBold.ttf create mode 100644 assets/fonts/In/Inter/Inter/static/Inter-Thin.ttf create mode 100644 assets/fonts/Inter-Black.ttf create mode 100644 assets/fonts/Inter-Bold.ttf create mode 100644 assets/fonts/Inter-ExtraBold.ttf create mode 100644 assets/fonts/Inter-ExtraLight.ttf create mode 100644 assets/fonts/Inter-Light.ttf create mode 100644 assets/fonts/Inter-Medium.ttf create mode 100644 assets/fonts/Inter-Regular.ttf create mode 100644 assets/fonts/Inter-SemiBold.ttf create mode 100644 assets/fonts/Inter-Thin.ttf create mode 100644 assets/fonts/Inter-VariableFont.ttf create mode 100644 assets/fonts/Inter-VariableFont_slnt,wght.ttf create mode 100644 assets/fonts/Inter/Inter/Inter-VariableFont_slnt,wght.ttf create mode 100644 assets/fonts/Inter/Inter/OFL.txt create mode 100644 assets/fonts/Inter/Inter/README.txt create mode 100644 assets/fonts/Inter/Inter/static/Inter-Black.ttf create mode 100644 assets/fonts/Inter/Inter/static/Inter-Bold.ttf create mode 100644 assets/fonts/Inter/Inter/static/Inter-ExtraBold.ttf create mode 100644 assets/fonts/Inter/Inter/static/Inter-ExtraLight.ttf create mode 100644 assets/fonts/Inter/Inter/static/Inter-Light.ttf create mode 100644 assets/fonts/Inter/Inter/static/Inter-Medium.ttf create mode 100644 assets/fonts/Inter/Inter/static/Inter-Regular.ttf create mode 100644 assets/fonts/Inter/Inter/static/Inter-SemiBold.ttf create mode 100644 assets/fonts/Inter/Inter/static/Inter-Thin.ttf create mode 100644 assets/icons/favicon.ico create mode 100644 assets/icons/search.svg create mode 100644 assets/icons/tianming.svg create mode 100644 assets/input.css create mode 100644 assets/soyjaks/addict.png create mode 100644 assets/soyjaks/adulterer.png create mode 100644 assets/soyjaks/billions.png create mode 100644 assets/soyjaks/bloomer.png create mode 100644 assets/soyjaks/chudcry.jpeg create mode 100644 assets/soyjaks/chudjak.png create mode 100644 assets/soyjaks/chudsmile.png create mode 100644 assets/soyjaks/coomer.png create mode 100644 assets/soyjaks/crychud.png create mode 100644 assets/soyjaks/cuck.png create mode 100644 assets/soyjaks/eunuch.png create mode 100644 assets/soyjaks/fatjak.png create mode 100644 assets/soyjaks/friendzoned.png create mode 100644 assets/soyjaks/furry.png create mode 100644 assets/soyjaks/gay.png create mode 100644 assets/soyjaks/griller.png create mode 100644 assets/soyjaks/grinsoy.jpg create mode 100644 assets/soyjaks/groomer.png create mode 100644 assets/soyjaks/grooomer.png create mode 100644 assets/soyjaks/husband.png create mode 100644 assets/soyjaks/improover.png create mode 100644 assets/soyjaks/incel.png create mode 100644 assets/soyjaks/mouthjak.png create mode 100644 assets/soyjaks/normal.png create mode 100644 assets/soyjaks/partner.png create mode 100644 assets/soyjaks/paypig.png create mode 100644 assets/soyjaks/pervert.png create mode 100644 assets/soyjaks/polygamist.png create mode 100644 assets/soyjaks/pua.png create mode 100644 assets/soyjaks/pussyhound.png create mode 100644 assets/soyjaks/redditjak.png create mode 100644 assets/soyjaks/smartjak.jpeg create mode 100644 assets/soyjaks/soyjak.png create mode 100644 assets/soyjaks/sugardaddy.png create mode 100644 assets/soyjaks/tranny.png create mode 100644 assets/soyjaks/troon.png create mode 100644 assets/soyjaks/twink.png create mode 100644 assets/soyjaks/volcel.png create mode 100644 assets/soyjaks/weeb.png create mode 100644 assets/styles.css create mode 100644 dune delete mode 100644 js/.gitignore delete mode 100644 js/Pepe.tsx delete mode 100644 js/README.md delete mode 100644 js/bun.lock delete mode 100644 js/index.ts delete mode 100644 js/output.css delete mode 100644 js/package.json delete mode 100644 js/styles.css delete mode 100644 js/tailwind.config.js delete mode 100644 js/tsconfig.json create mode 100644 tailwind.sh diff --git a/NOTES.md b/NOTES.md index 082a9d4..8def51e 100644 --- a/NOTES.md +++ b/NOTES.md @@ -21,6 +21,8 @@ The user is experiencing a build failure with the `litedb` library. The error me * Tailwind is abominable. They deprecated the tailwind.config.js file for a shitty CLI with barely any options. You can't tell it which folders to follow so just call it from root. `bunx @tailwindcss/cli -i js/styles.css -o js/output.css` + more info here +[](https://tailwindcss.com/docs/detecting-classes-in-source-files#safelisting-specific-utilities) ### Next Steps: diff --git a/assets/avatars/.DS_Store b/assets/avatars/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/assets/avatars/.DS_Store differ diff --git a/assets/avatars/bros/04a3e845-545a-4563-83e1-f7ccb34e34a9.png b/assets/avatars/bros/04a3e845-545a-4563-83e1-f7ccb34e34a9.png new file mode 100644 index 0000000..ea6a222 Binary files /dev/null and b/assets/avatars/bros/04a3e845-545a-4563-83e1-f7ccb34e34a9.png differ diff --git a/assets/avatars/bros/05bcc4c7-13b2-4242-a660-02d6609ebd25.png b/assets/avatars/bros/05bcc4c7-13b2-4242-a660-02d6609ebd25.png new file mode 100644 index 0000000..a60584f Binary files /dev/null and b/assets/avatars/bros/05bcc4c7-13b2-4242-a660-02d6609ebd25.png differ diff --git a/assets/avatars/bros/149ccaed-89be-4064-991c-4e37f082cdd9.png b/assets/avatars/bros/149ccaed-89be-4064-991c-4e37f082cdd9.png new file mode 100644 index 0000000..196fdab Binary files /dev/null and b/assets/avatars/bros/149ccaed-89be-4064-991c-4e37f082cdd9.png differ diff --git a/assets/avatars/bros/159173f1-1556-46cc-87c1-2cec9541f504.png b/assets/avatars/bros/159173f1-1556-46cc-87c1-2cec9541f504.png new file mode 100644 index 0000000..ae74c1f Binary files /dev/null and b/assets/avatars/bros/159173f1-1556-46cc-87c1-2cec9541f504.png differ diff --git a/assets/avatars/bros/15ff72ea5cd7027a.jpg b/assets/avatars/bros/15ff72ea5cd7027a.jpg new file mode 100644 index 0000000..bce6f1e Binary files /dev/null and b/assets/avatars/bros/15ff72ea5cd7027a.jpg differ diff --git a/assets/avatars/bros/1c92955d-cc23-4723-b2cd-04c7238d9cdc.png b/assets/avatars/bros/1c92955d-cc23-4723-b2cd-04c7238d9cdc.png new file mode 100644 index 0000000..d96562a Binary files /dev/null and b/assets/avatars/bros/1c92955d-cc23-4723-b2cd-04c7238d9cdc.png differ diff --git a/assets/avatars/bros/1dff3587-75f1-47e5-bbfd-9c337b8c4c67.jpg b/assets/avatars/bros/1dff3587-75f1-47e5-bbfd-9c337b8c4c67.jpg new file mode 100644 index 0000000..e14ca32 Binary files /dev/null and b/assets/avatars/bros/1dff3587-75f1-47e5-bbfd-9c337b8c4c67.jpg differ diff --git a/assets/avatars/bros/2b0c4931-7b3d-466d-8eea-aceb358f7d76.jpeg b/assets/avatars/bros/2b0c4931-7b3d-466d-8eea-aceb358f7d76.jpeg new file mode 100644 index 0000000..a2f1c63 Binary files /dev/null and b/assets/avatars/bros/2b0c4931-7b3d-466d-8eea-aceb358f7d76.jpeg differ diff --git a/assets/avatars/bros/2c920876-0a54-46cb-863b-ce489adebb7e.jpg b/assets/avatars/bros/2c920876-0a54-46cb-863b-ce489adebb7e.jpg new file mode 100644 index 0000000..2ef4b56 Binary files /dev/null and b/assets/avatars/bros/2c920876-0a54-46cb-863b-ce489adebb7e.jpg differ diff --git a/assets/avatars/bros/33da9fac-a4c4-4288-a54c-c6280c6220d3.png b/assets/avatars/bros/33da9fac-a4c4-4288-a54c-c6280c6220d3.png new file mode 100644 index 0000000..a8d7da5 Binary files /dev/null and b/assets/avatars/bros/33da9fac-a4c4-4288-a54c-c6280c6220d3.png differ diff --git a/assets/avatars/bros/3519be1d-df9e-4c60-8403-9c47499d84cb.png b/assets/avatars/bros/3519be1d-df9e-4c60-8403-9c47499d84cb.png new file mode 100644 index 0000000..be681a8 Binary files /dev/null and b/assets/avatars/bros/3519be1d-df9e-4c60-8403-9c47499d84cb.png differ diff --git a/assets/avatars/bros/3c28e55b-58c4-4d25-a76e-70b8239846d1.png b/assets/avatars/bros/3c28e55b-58c4-4d25-a76e-70b8239846d1.png new file mode 100644 index 0000000..990d493 Binary files /dev/null and b/assets/avatars/bros/3c28e55b-58c4-4d25-a76e-70b8239846d1.png differ diff --git a/assets/avatars/bros/3e432ff5-0e36-40e8-8706-5f238df7ebb0.jpeg b/assets/avatars/bros/3e432ff5-0e36-40e8-8706-5f238df7ebb0.jpeg new file mode 100644 index 0000000..4478d79 Binary files /dev/null and b/assets/avatars/bros/3e432ff5-0e36-40e8-8706-5f238df7ebb0.jpeg differ diff --git a/assets/avatars/bros/3e5ffe6f-6c7d-459e-8ea0-bedb85875eaa.png b/assets/avatars/bros/3e5ffe6f-6c7d-459e-8ea0-bedb85875eaa.png new file mode 100644 index 0000000..de5368f Binary files /dev/null and b/assets/avatars/bros/3e5ffe6f-6c7d-459e-8ea0-bedb85875eaa.png differ diff --git a/assets/avatars/bros/49c0e107-d221-402f-9a42-16b531baa9ad.png b/assets/avatars/bros/49c0e107-d221-402f-9a42-16b531baa9ad.png new file mode 100644 index 0000000..9484954 Binary files /dev/null and b/assets/avatars/bros/49c0e107-d221-402f-9a42-16b531baa9ad.png differ diff --git a/assets/avatars/bros/4bcd672a-bc4b-4fc2-b122-e30c45ac15e5.jpg b/assets/avatars/bros/4bcd672a-bc4b-4fc2-b122-e30c45ac15e5.jpg new file mode 100644 index 0000000..894591b Binary files /dev/null and b/assets/avatars/bros/4bcd672a-bc4b-4fc2-b122-e30c45ac15e5.jpg differ diff --git a/assets/avatars/bros/5a1d970a-2766-47c2-b9d2-425789faa52e.png b/assets/avatars/bros/5a1d970a-2766-47c2-b9d2-425789faa52e.png new file mode 100644 index 0000000..7e5c5c4 Binary files /dev/null and b/assets/avatars/bros/5a1d970a-2766-47c2-b9d2-425789faa52e.png differ diff --git a/assets/avatars/bros/5e94ccbd-50b3-408a-8019-af76f00f2e11.png b/assets/avatars/bros/5e94ccbd-50b3-408a-8019-af76f00f2e11.png new file mode 100644 index 0000000..88a7899 Binary files /dev/null and b/assets/avatars/bros/5e94ccbd-50b3-408a-8019-af76f00f2e11.png differ diff --git a/assets/avatars/bros/68faa862-4198-438b-8972-d88ba9806c06.png b/assets/avatars/bros/68faa862-4198-438b-8972-d88ba9806c06.png new file mode 100644 index 0000000..1728ade Binary files /dev/null and b/assets/avatars/bros/68faa862-4198-438b-8972-d88ba9806c06.png differ diff --git a/assets/avatars/bros/69376d6b-b145-4edc-9277-aedc03de20d1.jpg b/assets/avatars/bros/69376d6b-b145-4edc-9277-aedc03de20d1.jpg new file mode 100644 index 0000000..14d3869 Binary files /dev/null and b/assets/avatars/bros/69376d6b-b145-4edc-9277-aedc03de20d1.jpg differ diff --git a/assets/avatars/bros/6a1f9f06-042d-4aca-a16e-7efec588757e.png b/assets/avatars/bros/6a1f9f06-042d-4aca-a16e-7efec588757e.png new file mode 100644 index 0000000..2cbbec2 Binary files /dev/null and b/assets/avatars/bros/6a1f9f06-042d-4aca-a16e-7efec588757e.png differ diff --git a/assets/avatars/bros/6ea7215f-116f-40f3-a45e-4f98f549bce2.jpg b/assets/avatars/bros/6ea7215f-116f-40f3-a45e-4f98f549bce2.jpg new file mode 100644 index 0000000..e14ca32 Binary files /dev/null and b/assets/avatars/bros/6ea7215f-116f-40f3-a45e-4f98f549bce2.jpg differ diff --git a/assets/avatars/bros/75e258d6-a850-4438-a2d5-f9a46c545c0b.png b/assets/avatars/bros/75e258d6-a850-4438-a2d5-f9a46c545c0b.png new file mode 100644 index 0000000..a2ecbb8 Binary files /dev/null and b/assets/avatars/bros/75e258d6-a850-4438-a2d5-f9a46c545c0b.png differ diff --git a/assets/avatars/bros/779d4203-0863-43df-b66f-5134d5a92d2e.png b/assets/avatars/bros/779d4203-0863-43df-b66f-5134d5a92d2e.png new file mode 100644 index 0000000..d5361a1 Binary files /dev/null and b/assets/avatars/bros/779d4203-0863-43df-b66f-5134d5a92d2e.png differ diff --git a/assets/avatars/bros/7c60fcdb-7164-4f8b-9b03-b4f70e029d80.png b/assets/avatars/bros/7c60fcdb-7164-4f8b-9b03-b4f70e029d80.png new file mode 100644 index 0000000..d093533 Binary files /dev/null and b/assets/avatars/bros/7c60fcdb-7164-4f8b-9b03-b4f70e029d80.png differ diff --git a/assets/avatars/bros/84b61747-4cc3-49b0-a646-baec96352f05.png b/assets/avatars/bros/84b61747-4cc3-49b0-a646-baec96352f05.png new file mode 100644 index 0000000..cbd0ad3 Binary files /dev/null and b/assets/avatars/bros/84b61747-4cc3-49b0-a646-baec96352f05.png differ diff --git a/assets/avatars/bros/86390603-1ca1-4ba2-a81b-def1fb82ab0b.png b/assets/avatars/bros/86390603-1ca1-4ba2-a81b-def1fb82ab0b.png new file mode 100644 index 0000000..4c7f265 Binary files /dev/null and b/assets/avatars/bros/86390603-1ca1-4ba2-a81b-def1fb82ab0b.png differ diff --git a/assets/avatars/bros/89da29c1-ae95-48ba-b954-6e690b56e19b.jpg b/assets/avatars/bros/89da29c1-ae95-48ba-b954-6e690b56e19b.jpg new file mode 100644 index 0000000..4490f39 Binary files /dev/null and b/assets/avatars/bros/89da29c1-ae95-48ba-b954-6e690b56e19b.jpg differ diff --git a/assets/avatars/bros/8df3a7b3-653f-4aae-a673-1cb3595564d2.png b/assets/avatars/bros/8df3a7b3-653f-4aae-a673-1cb3595564d2.png new file mode 100644 index 0000000..c907e74 Binary files /dev/null and b/assets/avatars/bros/8df3a7b3-653f-4aae-a673-1cb3595564d2.png differ diff --git a/assets/avatars/bros/904467df-9c43-419d-912b-1b83f712172c.png b/assets/avatars/bros/904467df-9c43-419d-912b-1b83f712172c.png new file mode 100644 index 0000000..f8c327a Binary files /dev/null and b/assets/avatars/bros/904467df-9c43-419d-912b-1b83f712172c.png differ diff --git a/assets/avatars/bros/9afc3e65-4287-4e48-a4b3-01625e9b78a1.png b/assets/avatars/bros/9afc3e65-4287-4e48-a4b3-01625e9b78a1.png new file mode 100644 index 0000000..d13da04 Binary files /dev/null and b/assets/avatars/bros/9afc3e65-4287-4e48-a4b3-01625e9b78a1.png differ diff --git a/assets/avatars/bros/Ej5Ys-pUwAAjQ6-.jpeg b/assets/avatars/bros/Ej5Ys-pUwAAjQ6-.jpeg new file mode 100644 index 0000000..128e4ea Binary files /dev/null and b/assets/avatars/bros/Ej5Ys-pUwAAjQ6-.jpeg differ diff --git a/assets/avatars/bros/a3d10289-4cdd-44c6-9d61-da7e760b2812.png b/assets/avatars/bros/a3d10289-4cdd-44c6-9d61-da7e760b2812.png new file mode 100644 index 0000000..b50723d Binary files /dev/null and b/assets/avatars/bros/a3d10289-4cdd-44c6-9d61-da7e760b2812.png differ diff --git a/assets/avatars/bros/a60e5493-75a0-4c49-a060-1b0e88b19ad8.png b/assets/avatars/bros/a60e5493-75a0-4c49-a060-1b0e88b19ad8.png new file mode 100644 index 0000000..3b681f6 Binary files /dev/null and b/assets/avatars/bros/a60e5493-75a0-4c49-a060-1b0e88b19ad8.png differ diff --git a/assets/avatars/bros/ac3ac83e-96eb-49f5-b71c-856b23dc3ccc.png b/assets/avatars/bros/ac3ac83e-96eb-49f5-b71c-856b23dc3ccc.png new file mode 100644 index 0000000..1afd8b2 Binary files /dev/null and b/assets/avatars/bros/ac3ac83e-96eb-49f5-b71c-856b23dc3ccc.png differ diff --git a/assets/avatars/bros/bbe5f3a1-c893-4808-946f-3f567b834655.png b/assets/avatars/bros/bbe5f3a1-c893-4808-946f-3f567b834655.png new file mode 100644 index 0000000..ec737a7 Binary files /dev/null and b/assets/avatars/bros/bbe5f3a1-c893-4808-946f-3f567b834655.png differ diff --git a/assets/avatars/bros/chad.png b/assets/avatars/bros/chad.png new file mode 100644 index 0000000..d055a84 Binary files /dev/null and b/assets/avatars/bros/chad.png differ diff --git a/assets/avatars/bros/d0d8a2bb-284c-4b80-bd86-28f201ff2939.png b/assets/avatars/bros/d0d8a2bb-284c-4b80-bd86-28f201ff2939.png new file mode 100644 index 0000000..15c4a00 Binary files /dev/null and b/assets/avatars/bros/d0d8a2bb-284c-4b80-bd86-28f201ff2939.png differ diff --git a/assets/avatars/bros/d0f68378-38a2-45c6-af27-c5748d87736e.png b/assets/avatars/bros/d0f68378-38a2-45c6-af27-c5748d87736e.png new file mode 100644 index 0000000..4d89b1e Binary files /dev/null and b/assets/avatars/bros/d0f68378-38a2-45c6-af27-c5748d87736e.png differ diff --git a/assets/avatars/bros/daaf0fc3-b344-448f-b9f0-6ee95b262521.png b/assets/avatars/bros/daaf0fc3-b344-448f-b9f0-6ee95b262521.png new file mode 100644 index 0000000..cc4fbb4 Binary files /dev/null and b/assets/avatars/bros/daaf0fc3-b344-448f-b9f0-6ee95b262521.png differ diff --git a/assets/avatars/bros/e1c40fb4-ff6f-42dd-9ea0-540504999b60.png b/assets/avatars/bros/e1c40fb4-ff6f-42dd-9ea0-540504999b60.png new file mode 100644 index 0000000..505e6a2 Binary files /dev/null and b/assets/avatars/bros/e1c40fb4-ff6f-42dd-9ea0-540504999b60.png differ diff --git a/assets/avatars/bros/ea72e0f8-5a83-4b51-9b49-ea3f56509d8e.jpg b/assets/avatars/bros/ea72e0f8-5a83-4b51-9b49-ea3f56509d8e.jpg new file mode 100644 index 0000000..0a1c176 Binary files /dev/null and b/assets/avatars/bros/ea72e0f8-5a83-4b51-9b49-ea3f56509d8e.jpg differ diff --git a/assets/avatars/bros/ee6f2951-dc28-4b59-b54d-553944e8ea87.png b/assets/avatars/bros/ee6f2951-dc28-4b59-b54d-553944e8ea87.png new file mode 100644 index 0000000..65c8cdc Binary files /dev/null and b/assets/avatars/bros/ee6f2951-dc28-4b59-b54d-553944e8ea87.png differ diff --git a/assets/avatars/bros/f6c04eb5-4741-4882-ae2c-7b0b49f66502.jpg b/assets/avatars/bros/f6c04eb5-4741-4882-ae2c-7b0b49f66502.jpg new file mode 100644 index 0000000..4f6774d Binary files /dev/null and b/assets/avatars/bros/f6c04eb5-4741-4882-ae2c-7b0b49f66502.jpg differ diff --git a/assets/avatars/bros/fd8b2219-7435-4fc3-9722-a82370be2001.jpg b/assets/avatars/bros/fd8b2219-7435-4fc3-9722-a82370be2001.jpg new file mode 100644 index 0000000..4f6774d Binary files /dev/null and b/assets/avatars/bros/fd8b2219-7435-4fc3-9722-a82370be2001.jpg differ diff --git a/assets/avatars/memes/Affirmative-Fed-Boi-Chad.png b/assets/avatars/memes/Affirmative-Fed-Boi-Chad.png new file mode 100644 index 0000000..96cb415 Binary files /dev/null and b/assets/avatars/memes/Affirmative-Fed-Boi-Chad.png differ diff --git a/assets/avatars/memes/Bashar-Al-Assad-Chad.png b/assets/avatars/memes/Bashar-Al-Assad-Chad.png new file mode 100644 index 0000000..f19b84c Binary files /dev/null and b/assets/avatars/memes/Bashar-Al-Assad-Chad.png differ diff --git a/assets/avatars/memes/Buddhist-Chad.png b/assets/avatars/memes/Buddhist-Chad.png new file mode 100644 index 0000000..10544e5 Binary files /dev/null and b/assets/avatars/memes/Buddhist-Chad.png differ diff --git a/assets/avatars/memes/Chad-No-Nut.png b/assets/avatars/memes/Chad-No-Nut.png new file mode 100644 index 0000000..f760199 Binary files /dev/null and b/assets/avatars/memes/Chad-No-Nut.png differ diff --git a/assets/avatars/memes/Crusade-Chad.png b/assets/avatars/memes/Crusade-Chad.png new file mode 100644 index 0000000..c3914fa Binary files /dev/null and b/assets/avatars/memes/Crusade-Chad.png differ diff --git a/assets/avatars/memes/Frenchman-Chad.png b/assets/avatars/memes/Frenchman-Chad.png new file mode 100644 index 0000000..2afc7be Binary files /dev/null and b/assets/avatars/memes/Frenchman-Chad.png differ diff --git a/assets/avatars/memes/German-Soldier-Chad.png b/assets/avatars/memes/German-Soldier-Chad.png new file mode 100644 index 0000000..8db33eb Binary files /dev/null and b/assets/avatars/memes/German-Soldier-Chad.png differ diff --git a/assets/avatars/memes/Hitler-Chad.png b/assets/avatars/memes/Hitler-Chad.png new file mode 100644 index 0000000..71dcb12 Binary files /dev/null and b/assets/avatars/memes/Hitler-Chad.png differ diff --git a/assets/avatars/memes/Hype-Beast-Chad.png b/assets/avatars/memes/Hype-Beast-Chad.png new file mode 100644 index 0000000..38e8730 Binary files /dev/null and b/assets/avatars/memes/Hype-Beast-Chad.png differ diff --git a/assets/avatars/memes/Jew-Chad.png b/assets/avatars/memes/Jew-Chad.png new file mode 100644 index 0000000..83396d5 Binary files /dev/null and b/assets/avatars/memes/Jew-Chad.png differ diff --git a/assets/avatars/memes/Joker-Chad.png b/assets/avatars/memes/Joker-Chad.png new file mode 100644 index 0000000..e10b88a Binary files /dev/null and b/assets/avatars/memes/Joker-Chad.png differ diff --git a/assets/avatars/memes/King-Harkinian-Chad.png b/assets/avatars/memes/King-Harkinian-Chad.png new file mode 100644 index 0000000..9c0af9e Binary files /dev/null and b/assets/avatars/memes/King-Harkinian-Chad.png differ diff --git a/assets/avatars/memes/Military-Chad.png b/assets/avatars/memes/Military-Chad.png new file mode 100644 index 0000000..acd36b6 Binary files /dev/null and b/assets/avatars/memes/Military-Chad.png differ diff --git a/assets/avatars/memes/Nazbol-Chad.png b/assets/avatars/memes/Nazbol-Chad.png new file mode 100644 index 0000000..ece3ad4 Binary files /dev/null and b/assets/avatars/memes/Nazbol-Chad.png differ diff --git a/assets/avatars/memes/Nordic-Chad-No-Beard-Black-HEadset.png b/assets/avatars/memes/Nordic-Chad-No-Beard-Black-HEadset.png new file mode 100644 index 0000000..65dcc9c Binary files /dev/null and b/assets/avatars/memes/Nordic-Chad-No-Beard-Black-HEadset.png differ diff --git a/assets/avatars/memes/Portugeuse-Chad.png b/assets/avatars/memes/Portugeuse-Chad.png new file mode 100644 index 0000000..107fdf9 Binary files /dev/null and b/assets/avatars/memes/Portugeuse-Chad.png differ diff --git a/assets/avatars/memes/Red-Headed-Gamer-Chad.png b/assets/avatars/memes/Red-Headed-Gamer-Chad.png new file mode 100644 index 0000000..8882724 Binary files /dev/null and b/assets/avatars/memes/Red-Headed-Gamer-Chad.png differ diff --git a/assets/avatars/memes/Saudi-Arabian-Chad.png b/assets/avatars/memes/Saudi-Arabian-Chad.png new file mode 100644 index 0000000..a3ba541 Binary files /dev/null and b/assets/avatars/memes/Saudi-Arabian-Chad.png differ diff --git a/assets/avatars/memes/Suited-Chad.png b/assets/avatars/memes/Suited-Chad.png new file mode 100644 index 0000000..a97aab2 Binary files /dev/null and b/assets/avatars/memes/Suited-Chad.png differ diff --git a/assets/avatars/memes/Trump-Chad.png b/assets/avatars/memes/Trump-Chad.png new file mode 100644 index 0000000..49b68d3 Binary files /dev/null and b/assets/avatars/memes/Trump-Chad.png differ diff --git a/assets/avatars/memes/gigachad.png b/assets/avatars/memes/gigachad.png new file mode 100644 index 0000000..aa5945b Binary files /dev/null and b/assets/avatars/memes/gigachad.png differ diff --git a/assets/avatars/memes/wojak-cry.jpeg b/assets/avatars/memes/wojak-cry.jpeg new file mode 100644 index 0000000..65e2b86 Binary files /dev/null and b/assets/avatars/memes/wojak-cry.jpeg differ diff --git a/assets/board/boards/AI.svg b/assets/board/boards/AI.svg new file mode 100644 index 0000000..9449d06 --- /dev/null +++ b/assets/board/boards/AI.svg @@ -0,0 +1 @@ + diff --git a/assets/board/boards/ai.svg b/assets/board/boards/ai.svg new file mode 100644 index 0000000..c38dc1f --- /dev/null +++ b/assets/board/boards/ai.svg @@ -0,0 +1 @@ + diff --git a/assets/board/boards/art.svg b/assets/board/boards/art.svg new file mode 100644 index 0000000..e9fe493 --- /dev/null +++ b/assets/board/boards/art.svg @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/assets/board/boards/bookmark.svg b/assets/board/boards/bookmark.svg new file mode 100644 index 0000000..9c32d25 --- /dev/null +++ b/assets/board/boards/bookmark.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/board/boards/books.svg b/assets/board/boards/books.svg new file mode 100644 index 0000000..6530dba --- /dev/null +++ b/assets/board/boards/books.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/assets/board/boards/btc.svg b/assets/board/boards/btc.svg new file mode 100644 index 0000000..16eb504 --- /dev/null +++ b/assets/board/boards/btc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/board/boards/business.svg b/assets/board/boards/business.svg new file mode 100644 index 0000000..1a14f48 --- /dev/null +++ b/assets/board/boards/business.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + diff --git a/assets/board/boards/chud.jpg b/assets/board/boards/chud.jpg new file mode 100644 index 0000000..6c1a03e Binary files /dev/null and b/assets/board/boards/chud.jpg differ diff --git a/assets/board/boards/computing.svg b/assets/board/boards/computing.svg new file mode 100644 index 0000000..6d73dae --- /dev/null +++ b/assets/board/boards/computing.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/assets/board/boards/crypto.svg b/assets/board/boards/crypto.svg new file mode 100644 index 0000000..16eb504 --- /dev/null +++ b/assets/board/boards/crypto.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/board/boards/family.svg b/assets/board/boards/family.svg new file mode 100644 index 0000000..4aa9b55 --- /dev/null +++ b/assets/board/boards/family.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + diff --git a/assets/board/boards/film.svg b/assets/board/boards/film.svg new file mode 100644 index 0000000..5ccb192 --- /dev/null +++ b/assets/board/boards/film.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + diff --git a/assets/board/boards/food.svg b/assets/board/boards/food.svg new file mode 100644 index 0000000..374a3d5 --- /dev/null +++ b/assets/board/boards/food.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + diff --git a/assets/board/boards/gmi.svg b/assets/board/boards/gmi.svg new file mode 100644 index 0000000..ca41511 --- /dev/null +++ b/assets/board/boards/gmi.svg @@ -0,0 +1,24 @@ + + + + + + + + + + diff --git a/assets/board/boards/hbd.svg b/assets/board/boards/hbd.svg new file mode 100644 index 0000000..f7dfd1b --- /dev/null +++ b/assets/board/boards/hbd.svg @@ -0,0 +1,30 @@ + + + + + + + + + diff --git a/assets/board/boards/health.svg b/assets/board/boards/health.svg new file mode 100644 index 0000000..2ad7bf9 --- /dev/null +++ b/assets/board/boards/health.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/assets/board/boards/history.svg b/assets/board/boards/history.svg new file mode 100644 index 0000000..495a9c2 --- /dev/null +++ b/assets/board/boards/history.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/assets/board/boards/humor.svg b/assets/board/boards/humor.svg new file mode 100644 index 0000000..819a9a2 --- /dev/null +++ b/assets/board/boards/humor.svg @@ -0,0 +1 @@ + diff --git a/assets/board/boards/irl.svg b/assets/board/boards/irl.svg new file mode 100644 index 0000000..af94ae9 --- /dev/null +++ b/assets/board/boards/irl.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + diff --git a/assets/board/boards/links.svg b/assets/board/boards/links.svg new file mode 100644 index 0000000..b269373 --- /dev/null +++ b/assets/board/boards/links.svg @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/assets/board/boards/misc.svg b/assets/board/boards/misc.svg new file mode 100644 index 0000000..5b7ce6a --- /dev/null +++ b/assets/board/boards/misc.svg @@ -0,0 +1 @@ +x diff --git a/assets/board/boards/money.svg b/assets/board/boards/money.svg new file mode 100644 index 0000000..23a025f --- /dev/null +++ b/assets/board/boards/money.svg @@ -0,0 +1,65 @@ + + + + + + + + + diff --git a/assets/board/boards/music.svg b/assets/board/boards/music.svg new file mode 100644 index 0000000..44ceb47 --- /dev/null +++ b/assets/board/boards/music.svg @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/assets/board/boards/ngmi.svg b/assets/board/boards/ngmi.svg new file mode 100644 index 0000000..e5e6086 --- /dev/null +++ b/assets/board/boards/ngmi.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/assets/board/boards/orient.svg b/assets/board/boards/orient.svg new file mode 100644 index 0000000..a2a08ff --- /dev/null +++ b/assets/board/boards/orient.svg @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/assets/board/boards/physiognomy.jpg b/assets/board/boards/physiognomy.jpg new file mode 100644 index 0000000..6c1a03e Binary files /dev/null and b/assets/board/boards/physiognomy.jpg differ diff --git a/assets/board/boards/physiognomy.svg b/assets/board/boards/physiognomy.svg new file mode 100644 index 0000000..6c1a03e Binary files /dev/null and b/assets/board/boards/physiognomy.svg differ diff --git a/assets/board/boards/politics.svg b/assets/board/boards/politics.svg new file mode 100644 index 0000000..aa5bc9b --- /dev/null +++ b/assets/board/boards/politics.svg @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/assets/board/boards/public.svg b/assets/board/boards/public.svg new file mode 100644 index 0000000..7c1a3c6 --- /dev/null +++ b/assets/board/boards/public.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + diff --git a/assets/board/boards/religion.svg b/assets/board/boards/religion.svg new file mode 100644 index 0000000..c7105d6 --- /dev/null +++ b/assets/board/boards/religion.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/assets/board/boards/science.svg b/assets/board/boards/science.svg new file mode 100644 index 0000000..21d822d --- /dev/null +++ b/assets/board/boards/science.svg @@ -0,0 +1,32 @@ + + + + + + + + + + diff --git a/assets/board/boards/sex.svg b/assets/board/boards/sex.svg new file mode 100644 index 0000000..8be269a --- /dev/null +++ b/assets/board/boards/sex.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + diff --git a/assets/board/boards/spinner.svg b/assets/board/boards/spinner.svg new file mode 100644 index 0000000..a6763ca --- /dev/null +++ b/assets/board/boards/spinner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/boards/tech.svg b/assets/board/boards/tech.svg new file mode 100644 index 0000000..846d58d --- /dev/null +++ b/assets/board/boards/tech.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + diff --git a/assets/board/boards/theory.svg b/assets/board/boards/theory.svg new file mode 100644 index 0000000..5503b69 --- /dev/null +++ b/assets/board/boards/theory.svg @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + diff --git a/assets/board/boards/travel.svg b/assets/board/boards/travel.svg new file mode 100644 index 0000000..202661d --- /dev/null +++ b/assets/board/boards/travel.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/assets/board/boards/ui b/assets/board/boards/ui new file mode 100644 index 0000000..e96ad71 --- /dev/null +++ b/assets/board/boards/ui @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/assets/board/boards/urbit.svg b/assets/board/boards/urbit.svg new file mode 100644 index 0000000..3a77787 --- /dev/null +++ b/assets/board/boards/urbit.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/board/boards/vip.svg b/assets/board/boards/vip.svg new file mode 100644 index 0000000..48ef69d --- /dev/null +++ b/assets/board/boards/vip.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/board/boards/war.svg b/assets/board/boards/war.svg new file mode 100644 index 0000000..69d1e11 --- /dev/null +++ b/assets/board/boards/war.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/assets/board/boards/wyb.svg b/assets/board/boards/wyb.svg new file mode 100644 index 0000000..06b5abd --- /dev/null +++ b/assets/board/boards/wyb.svg @@ -0,0 +1 @@ + diff --git a/assets/board/boards/zh.svg b/assets/board/boards/zh.svg new file mode 100644 index 0000000..1c500df --- /dev/null +++ b/assets/board/boards/zh.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + diff --git a/assets/board/lol.lol b/assets/board/lol.lol new file mode 100644 index 0000000..c4cd6d8 --- /dev/null +++ b/assets/board/lol.lol @@ -0,0 +1 @@ +lmao diff --git a/assets/board/octicons/bold-24.svg b/assets/board/octicons/bold-24.svg new file mode 100644 index 0000000..3bf9678 --- /dev/null +++ b/assets/board/octicons/bold-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/octicons/code-24.svg b/assets/board/octicons/code-24.svg new file mode 100644 index 0000000..5613d91 --- /dev/null +++ b/assets/board/octicons/code-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/octicons/code-square-24.svg b/assets/board/octicons/code-square-24.svg new file mode 100644 index 0000000..3b784cc --- /dev/null +++ b/assets/board/octicons/code-square-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/octicons/heading-24.svg b/assets/board/octicons/heading-24.svg new file mode 100644 index 0000000..6f44213 --- /dev/null +++ b/assets/board/octicons/heading-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/octicons/image-24.svg b/assets/board/octicons/image-24.svg new file mode 100644 index 0000000..164bb84 --- /dev/null +++ b/assets/board/octicons/image-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/octicons/italic-24.svg b/assets/board/octicons/italic-24.svg new file mode 100644 index 0000000..84a5b12 --- /dev/null +++ b/assets/board/octicons/italic-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/octicons/link-24.svg b/assets/board/octicons/link-24.svg new file mode 100644 index 0000000..2fa1b17 --- /dev/null +++ b/assets/board/octicons/link-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/octicons/list-ordered-24.svg b/assets/board/octicons/list-ordered-24.svg new file mode 100644 index 0000000..104e926 --- /dev/null +++ b/assets/board/octicons/list-ordered-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/octicons/list-unordered-24.svg b/assets/board/octicons/list-unordered-24.svg new file mode 100644 index 0000000..4cf9d4c --- /dev/null +++ b/assets/board/octicons/list-unordered-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/octicons/quote-24.svg b/assets/board/octicons/quote-24.svg new file mode 100644 index 0000000..1a40fcb --- /dev/null +++ b/assets/board/octicons/quote-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/octicons/screen-full-24.svg b/assets/board/octicons/screen-full-24.svg new file mode 100644 index 0000000..1f4e279 --- /dev/null +++ b/assets/board/octicons/screen-full-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/octicons/screen-normal-24.svg b/assets/board/octicons/screen-normal-24.svg new file mode 100644 index 0000000..cf3141e --- /dev/null +++ b/assets/board/octicons/screen-normal-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/octicons/x-24.svg b/assets/board/octicons/x-24.svg new file mode 100644 index 0000000..add65b8 --- /dev/null +++ b/assets/board/octicons/x-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/board/ui/collapse.svg b/assets/board/ui/collapse.svg new file mode 100644 index 0000000..bfb9a8d --- /dev/null +++ b/assets/board/ui/collapse.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/assets/board/ui/copy.svg b/assets/board/ui/copy.svg new file mode 100644 index 0000000..b269373 --- /dev/null +++ b/assets/board/ui/copy.svg @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/assets/board/ui/delete.svg b/assets/board/ui/delete.svg new file mode 100644 index 0000000..39cb5bc --- /dev/null +++ b/assets/board/ui/delete.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/assets/board/ui/down.svg b/assets/board/ui/down.svg new file mode 100644 index 0000000..ba3d8d7 --- /dev/null +++ b/assets/board/ui/down.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/assets/board/ui/downvote.svg b/assets/board/ui/downvote.svg new file mode 100644 index 0000000..2b58da9 --- /dev/null +++ b/assets/board/ui/downvote.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/assets/board/ui/edit.svg b/assets/board/ui/edit.svg new file mode 100644 index 0000000..c842cc0 --- /dev/null +++ b/assets/board/ui/edit.svg @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/assets/board/ui/left.svg b/assets/board/ui/left.svg new file mode 100644 index 0000000..9a0daf1 --- /dev/null +++ b/assets/board/ui/left.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/assets/board/ui/menu.svg b/assets/board/ui/menu.svg new file mode 100644 index 0000000..6c23436 --- /dev/null +++ b/assets/board/ui/menu.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/assets/board/ui/poll.svg b/assets/board/ui/poll.svg new file mode 100644 index 0000000..a54b8e0 --- /dev/null +++ b/assets/board/ui/poll.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/assets/board/ui/reply.svg b/assets/board/ui/reply.svg new file mode 100644 index 0000000..59eb129 --- /dev/null +++ b/assets/board/ui/reply.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/assets/board/ui/right.svg b/assets/board/ui/right.svg new file mode 100644 index 0000000..9df4fc3 --- /dev/null +++ b/assets/board/ui/right.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/assets/board/ui/search.svg b/assets/board/ui/search.svg new file mode 100644 index 0000000..588208c --- /dev/null +++ b/assets/board/ui/search.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/assets/board/ui/sort.svg b/assets/board/ui/sort.svg new file mode 100644 index 0000000..3a56244 --- /dev/null +++ b/assets/board/ui/sort.svg @@ -0,0 +1 @@ +Levers 6.5Created with Sketch. diff --git a/assets/board/ui/tianming.svg b/assets/board/ui/tianming.svg new file mode 100644 index 0000000..3120a56 --- /dev/null +++ b/assets/board/ui/tianming.svg @@ -0,0 +1,76 @@ + + + + + + + + diff --git a/assets/board/ui/uncollapse.svg b/assets/board/ui/uncollapse.svg new file mode 100644 index 0000000..6b0d362 --- /dev/null +++ b/assets/board/ui/uncollapse.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/assets/board/ui/upvote.svg b/assets/board/ui/upvote.svg new file mode 100644 index 0000000..3f29b99 --- /dev/null +++ b/assets/board/ui/upvote.svg @@ -0,0 +1,13 @@ + + + + + + + diff --git a/assets/fonts/CrimsonText-Bold.ttf b/assets/fonts/CrimsonText-Bold.ttf new file mode 100644 index 0000000..5753863 Binary files /dev/null and b/assets/fonts/CrimsonText-Bold.ttf differ diff --git a/assets/fonts/CrimsonText-BoldItalic.ttf b/assets/fonts/CrimsonText-BoldItalic.ttf new file mode 100644 index 0000000..233e387 Binary files /dev/null and b/assets/fonts/CrimsonText-BoldItalic.ttf differ diff --git a/assets/fonts/CrimsonText-Italic.ttf b/assets/fonts/CrimsonText-Italic.ttf new file mode 100644 index 0000000..e8fe8b8 Binary files /dev/null and b/assets/fonts/CrimsonText-Italic.ttf differ diff --git a/assets/fonts/CrimsonText-Regular.ttf b/assets/fonts/CrimsonText-Regular.ttf new file mode 100644 index 0000000..f24bf2a Binary files /dev/null and b/assets/fonts/CrimsonText-Regular.ttf differ diff --git a/assets/fonts/CrimsonText-SemiBold.ttf b/assets/fonts/CrimsonText-SemiBold.ttf new file mode 100644 index 0000000..96f27e8 Binary files /dev/null and b/assets/fonts/CrimsonText-SemiBold.ttf differ diff --git a/assets/fonts/CrimsonText-SemiBoldItalic.ttf b/assets/fonts/CrimsonText-SemiBoldItalic.ttf new file mode 100644 index 0000000..66b129b Binary files /dev/null and b/assets/fonts/CrimsonText-SemiBoldItalic.ttf differ diff --git a/assets/fonts/Crimson_Text/Crimson_Text,Inter.zip b/assets/fonts/Crimson_Text/Crimson_Text,Inter.zip new file mode 100644 index 0000000..e421034 Binary files /dev/null and b/assets/fonts/Crimson_Text/Crimson_Text,Inter.zip differ diff --git a/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-Bold.ttf b/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-Bold.ttf new file mode 100644 index 0000000..5753863 Binary files /dev/null and b/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-Bold.ttf differ diff --git a/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-BoldItalic.ttf b/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-BoldItalic.ttf new file mode 100644 index 0000000..233e387 Binary files /dev/null and b/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-BoldItalic.ttf differ diff --git a/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-Italic.ttf b/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-Italic.ttf new file mode 100644 index 0000000..e8fe8b8 Binary files /dev/null and b/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-Italic.ttf differ diff --git a/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-Regular.ttf b/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-Regular.ttf new file mode 100644 index 0000000..f24bf2a Binary files /dev/null and b/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-Regular.ttf differ diff --git a/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-SemiBold.ttf b/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-SemiBold.ttf new file mode 100644 index 0000000..96f27e8 Binary files /dev/null and b/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-SemiBold.ttf differ diff --git a/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-SemiBoldItalic.ttf b/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-SemiBoldItalic.ttf new file mode 100644 index 0000000..66b129b Binary files /dev/null and b/assets/fonts/Crimson_Text/Crimson_Text/CrimsonText-SemiBoldItalic.ttf differ diff --git a/assets/fonts/Crimson_Text/Crimson_Text/OFL.txt b/assets/fonts/Crimson_Text/Crimson_Text/OFL.txt new file mode 100644 index 0000000..114c104 --- /dev/null +++ b/assets/fonts/Crimson_Text/Crimson_Text/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2010 The Crimson Text Project Authors (https://github.com/googlefonts/Crimson) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/fonts/In/Inter/Inter/Inter-VariableFont_slnt,wght.ttf b/assets/fonts/In/Inter/Inter/Inter-VariableFont_slnt,wght.ttf new file mode 100644 index 0000000..e724708 Binary files /dev/null and b/assets/fonts/In/Inter/Inter/Inter-VariableFont_slnt,wght.ttf differ diff --git a/assets/fonts/In/Inter/Inter/OFL.txt b/assets/fonts/In/Inter/Inter/OFL.txt new file mode 100644 index 0000000..d05ec4b --- /dev/null +++ b/assets/fonts/In/Inter/Inter/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/fonts/In/Inter/Inter/README.txt b/assets/fonts/In/Inter/Inter/README.txt new file mode 100644 index 0000000..9a81522 --- /dev/null +++ b/assets/fonts/In/Inter/Inter/README.txt @@ -0,0 +1,72 @@ +Inter Variable Font +=================== + +This download contains Inter as both a variable font and static fonts. + +Inter is a variable font with these axes: + slnt + wght + +This means all the styles are contained in a single file: + Inter/Inter-VariableFont_slnt,wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Inter: + Inter/static/Inter-Thin.ttf + Inter/static/Inter-ExtraLight.ttf + Inter/static/Inter-Light.ttf + Inter/static/Inter-Regular.ttf + Inter/static/Inter-Medium.ttf + Inter/static/Inter-SemiBold.ttf + Inter/static/Inter-Bold.ttf + Inter/static/Inter-ExtraBold.ttf + Inter/static/Inter-Black.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (OFL.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +You can use them in your products & projects – print or digital, +commercial or otherwise. + +This isn't legal advice, please consider consulting a lawyer and see the full +license for all details. diff --git a/assets/fonts/In/Inter/Inter/static/Inter-Black.ttf b/assets/fonts/In/Inter/Inter/static/Inter-Black.ttf new file mode 100644 index 0000000..b27822b Binary files /dev/null and b/assets/fonts/In/Inter/Inter/static/Inter-Black.ttf differ diff --git a/assets/fonts/In/Inter/Inter/static/Inter-Bold.ttf b/assets/fonts/In/Inter/Inter/static/Inter-Bold.ttf new file mode 100644 index 0000000..fe23eeb Binary files /dev/null and b/assets/fonts/In/Inter/Inter/static/Inter-Bold.ttf differ diff --git a/assets/fonts/In/Inter/Inter/static/Inter-ExtraBold.ttf b/assets/fonts/In/Inter/Inter/static/Inter-ExtraBold.ttf new file mode 100644 index 0000000..874b1b0 Binary files /dev/null and b/assets/fonts/In/Inter/Inter/static/Inter-ExtraBold.ttf differ diff --git a/assets/fonts/In/Inter/Inter/static/Inter-ExtraLight.ttf b/assets/fonts/In/Inter/Inter/static/Inter-ExtraLight.ttf new file mode 100644 index 0000000..c993e82 Binary files /dev/null and b/assets/fonts/In/Inter/Inter/static/Inter-ExtraLight.ttf differ diff --git a/assets/fonts/In/Inter/Inter/static/Inter-Light.ttf b/assets/fonts/In/Inter/Inter/static/Inter-Light.ttf new file mode 100644 index 0000000..71188f5 Binary files /dev/null and b/assets/fonts/In/Inter/Inter/static/Inter-Light.ttf differ diff --git a/assets/fonts/In/Inter/Inter/static/Inter-Medium.ttf b/assets/fonts/In/Inter/Inter/static/Inter-Medium.ttf new file mode 100644 index 0000000..a01f377 Binary files /dev/null and b/assets/fonts/In/Inter/Inter/static/Inter-Medium.ttf differ diff --git a/assets/fonts/In/Inter/Inter/static/Inter-Regular.ttf b/assets/fonts/In/Inter/Inter/static/Inter-Regular.ttf new file mode 100644 index 0000000..5e4851f Binary files /dev/null and b/assets/fonts/In/Inter/Inter/static/Inter-Regular.ttf differ diff --git a/assets/fonts/In/Inter/Inter/static/Inter-SemiBold.ttf b/assets/fonts/In/Inter/Inter/static/Inter-SemiBold.ttf new file mode 100644 index 0000000..ecc7041 Binary files /dev/null and b/assets/fonts/In/Inter/Inter/static/Inter-SemiBold.ttf differ diff --git a/assets/fonts/In/Inter/Inter/static/Inter-Thin.ttf b/assets/fonts/In/Inter/Inter/static/Inter-Thin.ttf new file mode 100644 index 0000000..fe77243 Binary files /dev/null and b/assets/fonts/In/Inter/Inter/static/Inter-Thin.ttf differ diff --git a/assets/fonts/Inter-Black.ttf b/assets/fonts/Inter-Black.ttf new file mode 100644 index 0000000..b27822b Binary files /dev/null and b/assets/fonts/Inter-Black.ttf differ diff --git a/assets/fonts/Inter-Bold.ttf b/assets/fonts/Inter-Bold.ttf new file mode 100644 index 0000000..fe23eeb Binary files /dev/null and b/assets/fonts/Inter-Bold.ttf differ diff --git a/assets/fonts/Inter-ExtraBold.ttf b/assets/fonts/Inter-ExtraBold.ttf new file mode 100644 index 0000000..874b1b0 Binary files /dev/null and b/assets/fonts/Inter-ExtraBold.ttf differ diff --git a/assets/fonts/Inter-ExtraLight.ttf b/assets/fonts/Inter-ExtraLight.ttf new file mode 100644 index 0000000..c993e82 Binary files /dev/null and b/assets/fonts/Inter-ExtraLight.ttf differ diff --git a/assets/fonts/Inter-Light.ttf b/assets/fonts/Inter-Light.ttf new file mode 100644 index 0000000..71188f5 Binary files /dev/null and b/assets/fonts/Inter-Light.ttf differ diff --git a/assets/fonts/Inter-Medium.ttf b/assets/fonts/Inter-Medium.ttf new file mode 100644 index 0000000..a01f377 Binary files /dev/null and b/assets/fonts/Inter-Medium.ttf differ diff --git a/assets/fonts/Inter-Regular.ttf b/assets/fonts/Inter-Regular.ttf new file mode 100644 index 0000000..5e4851f Binary files /dev/null and b/assets/fonts/Inter-Regular.ttf differ diff --git a/assets/fonts/Inter-SemiBold.ttf b/assets/fonts/Inter-SemiBold.ttf new file mode 100644 index 0000000..ecc7041 Binary files /dev/null and b/assets/fonts/Inter-SemiBold.ttf differ diff --git a/assets/fonts/Inter-Thin.ttf b/assets/fonts/Inter-Thin.ttf new file mode 100644 index 0000000..fe77243 Binary files /dev/null and b/assets/fonts/Inter-Thin.ttf differ diff --git a/assets/fonts/Inter-VariableFont.ttf b/assets/fonts/Inter-VariableFont.ttf new file mode 100644 index 0000000..e724708 Binary files /dev/null and b/assets/fonts/Inter-VariableFont.ttf differ diff --git a/assets/fonts/Inter-VariableFont_slnt,wght.ttf b/assets/fonts/Inter-VariableFont_slnt,wght.ttf new file mode 100644 index 0000000..e724708 Binary files /dev/null and b/assets/fonts/Inter-VariableFont_slnt,wght.ttf differ diff --git a/assets/fonts/Inter/Inter/Inter-VariableFont_slnt,wght.ttf b/assets/fonts/Inter/Inter/Inter-VariableFont_slnt,wght.ttf new file mode 100644 index 0000000..e724708 Binary files /dev/null and b/assets/fonts/Inter/Inter/Inter-VariableFont_slnt,wght.ttf differ diff --git a/assets/fonts/Inter/Inter/OFL.txt b/assets/fonts/Inter/Inter/OFL.txt new file mode 100644 index 0000000..d05ec4b --- /dev/null +++ b/assets/fonts/Inter/Inter/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/fonts/Inter/Inter/README.txt b/assets/fonts/Inter/Inter/README.txt new file mode 100644 index 0000000..9a81522 --- /dev/null +++ b/assets/fonts/Inter/Inter/README.txt @@ -0,0 +1,72 @@ +Inter Variable Font +=================== + +This download contains Inter as both a variable font and static fonts. + +Inter is a variable font with these axes: + slnt + wght + +This means all the styles are contained in a single file: + Inter/Inter-VariableFont_slnt,wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Inter: + Inter/static/Inter-Thin.ttf + Inter/static/Inter-ExtraLight.ttf + Inter/static/Inter-Light.ttf + Inter/static/Inter-Regular.ttf + Inter/static/Inter-Medium.ttf + Inter/static/Inter-SemiBold.ttf + Inter/static/Inter-Bold.ttf + Inter/static/Inter-ExtraBold.ttf + Inter/static/Inter-Black.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (OFL.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +You can use them in your products & projects – print or digital, +commercial or otherwise. + +This isn't legal advice, please consider consulting a lawyer and see the full +license for all details. diff --git a/assets/fonts/Inter/Inter/static/Inter-Black.ttf b/assets/fonts/Inter/Inter/static/Inter-Black.ttf new file mode 100644 index 0000000..b27822b Binary files /dev/null and b/assets/fonts/Inter/Inter/static/Inter-Black.ttf differ diff --git a/assets/fonts/Inter/Inter/static/Inter-Bold.ttf b/assets/fonts/Inter/Inter/static/Inter-Bold.ttf new file mode 100644 index 0000000..fe23eeb Binary files /dev/null and b/assets/fonts/Inter/Inter/static/Inter-Bold.ttf differ diff --git a/assets/fonts/Inter/Inter/static/Inter-ExtraBold.ttf b/assets/fonts/Inter/Inter/static/Inter-ExtraBold.ttf new file mode 100644 index 0000000..874b1b0 Binary files /dev/null and b/assets/fonts/Inter/Inter/static/Inter-ExtraBold.ttf differ diff --git a/assets/fonts/Inter/Inter/static/Inter-ExtraLight.ttf b/assets/fonts/Inter/Inter/static/Inter-ExtraLight.ttf new file mode 100644 index 0000000..c993e82 Binary files /dev/null and b/assets/fonts/Inter/Inter/static/Inter-ExtraLight.ttf differ diff --git a/assets/fonts/Inter/Inter/static/Inter-Light.ttf b/assets/fonts/Inter/Inter/static/Inter-Light.ttf new file mode 100644 index 0000000..71188f5 Binary files /dev/null and b/assets/fonts/Inter/Inter/static/Inter-Light.ttf differ diff --git a/assets/fonts/Inter/Inter/static/Inter-Medium.ttf b/assets/fonts/Inter/Inter/static/Inter-Medium.ttf new file mode 100644 index 0000000..a01f377 Binary files /dev/null and b/assets/fonts/Inter/Inter/static/Inter-Medium.ttf differ diff --git a/assets/fonts/Inter/Inter/static/Inter-Regular.ttf b/assets/fonts/Inter/Inter/static/Inter-Regular.ttf new file mode 100644 index 0000000..5e4851f Binary files /dev/null and b/assets/fonts/Inter/Inter/static/Inter-Regular.ttf differ diff --git a/assets/fonts/Inter/Inter/static/Inter-SemiBold.ttf b/assets/fonts/Inter/Inter/static/Inter-SemiBold.ttf new file mode 100644 index 0000000..ecc7041 Binary files /dev/null and b/assets/fonts/Inter/Inter/static/Inter-SemiBold.ttf differ diff --git a/assets/fonts/Inter/Inter/static/Inter-Thin.ttf b/assets/fonts/Inter/Inter/static/Inter-Thin.ttf new file mode 100644 index 0000000..fe77243 Binary files /dev/null and b/assets/fonts/Inter/Inter/static/Inter-Thin.ttf differ diff --git a/assets/icons/favicon.ico b/assets/icons/favicon.ico new file mode 100644 index 0000000..7bb609b Binary files /dev/null and b/assets/icons/favicon.ico differ diff --git a/assets/icons/search.svg b/assets/icons/search.svg new file mode 100644 index 0000000..5d48d1b --- /dev/null +++ b/assets/icons/search.svg @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/assets/icons/tianming.svg b/assets/icons/tianming.svg new file mode 100644 index 0000000..3120a56 --- /dev/null +++ b/assets/icons/tianming.svg @@ -0,0 +1,76 @@ + + + + + + + + diff --git a/assets/input.css b/assets/input.css new file mode 100644 index 0000000..4b288be --- /dev/null +++ b/assets/input.css @@ -0,0 +1,182 @@ +@import "tailwindcss"; +/* @config "./tailwind.config.js"; */ + +/* Since we use dynamic classNames on Theme.re, we need to inline the colors here. This can cause tailwind to not generate some classes if there's a missing variant here or we add new colors. */ +/* @source inline("{hover:,}{text,bg,border}-[#FFC53D]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#080808]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#0F0F0F]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#151515]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#191919]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#1E1E1E]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#252525]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#2A2A2A]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#313131]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#3A3A3A]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#484848]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#6E6E6E]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#B4B4B4]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#EEEEEE]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#F5F5F5]"); */ +/* @source inline("{hover:,}{text,bg,border}-[#FFFFFF]"); */ +/* @source inline("{hover:,focus:,active:,disabled:,}{text,bg,border}-primary"); */ + + + +:root { + --red05: rgba(255, 65, 54, 0.05); + --red100: rgba(255, 65, 54, 1); + --blue05: rgba(33, 157, 255, 0.05); + --blue30: rgba(33, 157, 255, 0.3); + --blue100: rgba(33, 157, 255, 1); + --black05: rgba(0, 0, 0, 0.05); + --black20: rgba(0, 0, 0, 0.2); + --black60: rgba(0, 0, 0, 0.6); + --white: rgba(255, 255, 255, 1); + + --text: rgba(0, 0, 0, 1); + --heihong: rgb(141, 15, 15); + --hong: rgb(183, 14, 14); + --huang: rgb(230, 180, 60); + --lan: rgb(30, 60, 80); +} + +[data-theme=dark] { + --background-color: black; + --text-color: rgb(200, 200, 200); +} + +[data-theme=light] { + /* --background-color: #EFF1EC; */ + --background-color: white; + --text-color: black; +} + +@font-face { + font-family: Crimson Text; + src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-Regular.ttf) format('truetype'); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Crimson Text; + src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-Italic.ttf) format('truetype'); + font-weight: 400; + font-style: italic; + font-display: swap; +} + +@font-face { + font-family: Crimson Text; + src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-SemiBold.ttf) format('truetype'); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Crimson Text; + src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-SemiBoldItalic.ttf) format('truetype'); + font-weight: 600; + font-style: italic; + font-display: swap; +} + +@font-face { + font-family: Crimson Text; + src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-Bold.ttf) format('truetype'); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Crimson Text; + src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-BoldItalic.ttf) format('truetype'); + font-weight: 700; + font-style: italic; + font-display: swap; +} + +@font-face { + font-family: "Inter"; + src: url(https://s3.spandrell.ch/assets/fonts/InterVariableFont.otf) format('truetype-variations'); + font-weight: 100 900; + font-style: normal; + font-display: swap; +} + +html { + height: 100%; + color: var(--text-color); + -webkit-font-smoothing: antialiased; +} + +body { + margin: 0; + width: 100%; + height: 100%; + font-size: 16px; + font-weight: 400; + line-height: 1.5; + font-size: 1rem; + line-height: 1.618; + text-align: left; + color: black !important; + text-rendering: optimizeLegibility !important; + -webkit-font-smoothing: antialiased; + word-break: break-word; +} + +h1, +h2, +h3, +h4, +h5, +h6, +p { + font-family: Crimson Text; +} + + +a, +button, +input { + transition: all .4s ease; +} + + +input[type="submit"], +button, +.button { + border-color: #181818; + background-color: #181818; + padding: 0.5rem 1.25rem; + color: #fff; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; + display: inline-block; + font-weight: 400; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + -o-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + font-family: 'Montserrat', sans-serif; + text-transform: uppercase; + letter-spacing: 1px; + font-size: 13px; + -webkit-transition: all .4s ease; + -o-transition: all .4s ease; + transition: all .4s ease; +} diff --git a/assets/soyjaks/addict.png b/assets/soyjaks/addict.png new file mode 100644 index 0000000..98b6443 Binary files /dev/null and b/assets/soyjaks/addict.png differ diff --git a/assets/soyjaks/adulterer.png b/assets/soyjaks/adulterer.png new file mode 100644 index 0000000..c2b6c18 Binary files /dev/null and b/assets/soyjaks/adulterer.png differ diff --git a/assets/soyjaks/billions.png b/assets/soyjaks/billions.png new file mode 100644 index 0000000..08324d7 Binary files /dev/null and b/assets/soyjaks/billions.png differ diff --git a/assets/soyjaks/bloomer.png b/assets/soyjaks/bloomer.png new file mode 100644 index 0000000..d5aa4cc Binary files /dev/null and b/assets/soyjaks/bloomer.png differ diff --git a/assets/soyjaks/chudcry.jpeg b/assets/soyjaks/chudcry.jpeg new file mode 100644 index 0000000..388ab4c Binary files /dev/null and b/assets/soyjaks/chudcry.jpeg differ diff --git a/assets/soyjaks/chudjak.png b/assets/soyjaks/chudjak.png new file mode 100644 index 0000000..6b3c0b3 Binary files /dev/null and b/assets/soyjaks/chudjak.png differ diff --git a/assets/soyjaks/chudsmile.png b/assets/soyjaks/chudsmile.png new file mode 100644 index 0000000..c3f990b Binary files /dev/null and b/assets/soyjaks/chudsmile.png differ diff --git a/assets/soyjaks/coomer.png b/assets/soyjaks/coomer.png new file mode 100644 index 0000000..912ae31 Binary files /dev/null and b/assets/soyjaks/coomer.png differ diff --git a/assets/soyjaks/crychud.png b/assets/soyjaks/crychud.png new file mode 100644 index 0000000..ff5dc56 Binary files /dev/null and b/assets/soyjaks/crychud.png differ diff --git a/assets/soyjaks/cuck.png b/assets/soyjaks/cuck.png new file mode 100644 index 0000000..4fbf9a6 Binary files /dev/null and b/assets/soyjaks/cuck.png differ diff --git a/assets/soyjaks/eunuch.png b/assets/soyjaks/eunuch.png new file mode 100644 index 0000000..ffa1f57 Binary files /dev/null and b/assets/soyjaks/eunuch.png differ diff --git a/assets/soyjaks/fatjak.png b/assets/soyjaks/fatjak.png new file mode 100644 index 0000000..6daa4b7 Binary files /dev/null and b/assets/soyjaks/fatjak.png differ diff --git a/assets/soyjaks/friendzoned.png b/assets/soyjaks/friendzoned.png new file mode 100644 index 0000000..ef6f141 Binary files /dev/null and b/assets/soyjaks/friendzoned.png differ diff --git a/assets/soyjaks/furry.png b/assets/soyjaks/furry.png new file mode 100644 index 0000000..1300a58 Binary files /dev/null and b/assets/soyjaks/furry.png differ diff --git a/assets/soyjaks/gay.png b/assets/soyjaks/gay.png new file mode 100644 index 0000000..4c36b92 Binary files /dev/null and b/assets/soyjaks/gay.png differ diff --git a/assets/soyjaks/griller.png b/assets/soyjaks/griller.png new file mode 100644 index 0000000..a76bc5f Binary files /dev/null and b/assets/soyjaks/griller.png differ diff --git a/assets/soyjaks/grinsoy.jpg b/assets/soyjaks/grinsoy.jpg new file mode 100644 index 0000000..74952a1 Binary files /dev/null and b/assets/soyjaks/grinsoy.jpg differ diff --git a/assets/soyjaks/groomer.png b/assets/soyjaks/groomer.png new file mode 100644 index 0000000..a441e7c Binary files /dev/null and b/assets/soyjaks/groomer.png differ diff --git a/assets/soyjaks/grooomer.png b/assets/soyjaks/grooomer.png new file mode 100644 index 0000000..948c28b Binary files /dev/null and b/assets/soyjaks/grooomer.png differ diff --git a/assets/soyjaks/husband.png b/assets/soyjaks/husband.png new file mode 100644 index 0000000..72bd6af Binary files /dev/null and b/assets/soyjaks/husband.png differ diff --git a/assets/soyjaks/improover.png b/assets/soyjaks/improover.png new file mode 100644 index 0000000..11cda55 Binary files /dev/null and b/assets/soyjaks/improover.png differ diff --git a/assets/soyjaks/incel.png b/assets/soyjaks/incel.png new file mode 100644 index 0000000..95e0fb5 Binary files /dev/null and b/assets/soyjaks/incel.png differ diff --git a/assets/soyjaks/mouthjak.png b/assets/soyjaks/mouthjak.png new file mode 100644 index 0000000..6620927 Binary files /dev/null and b/assets/soyjaks/mouthjak.png differ diff --git a/assets/soyjaks/normal.png b/assets/soyjaks/normal.png new file mode 100644 index 0000000..79c9c25 Binary files /dev/null and b/assets/soyjaks/normal.png differ diff --git a/assets/soyjaks/partner.png b/assets/soyjaks/partner.png new file mode 100644 index 0000000..405db27 Binary files /dev/null and b/assets/soyjaks/partner.png differ diff --git a/assets/soyjaks/paypig.png b/assets/soyjaks/paypig.png new file mode 100644 index 0000000..165551d Binary files /dev/null and b/assets/soyjaks/paypig.png differ diff --git a/assets/soyjaks/pervert.png b/assets/soyjaks/pervert.png new file mode 100644 index 0000000..cb3c8e2 Binary files /dev/null and b/assets/soyjaks/pervert.png differ diff --git a/assets/soyjaks/polygamist.png b/assets/soyjaks/polygamist.png new file mode 100644 index 0000000..9188ab6 Binary files /dev/null and b/assets/soyjaks/polygamist.png differ diff --git a/assets/soyjaks/pua.png b/assets/soyjaks/pua.png new file mode 100644 index 0000000..dca85a5 Binary files /dev/null and b/assets/soyjaks/pua.png differ diff --git a/assets/soyjaks/pussyhound.png b/assets/soyjaks/pussyhound.png new file mode 100644 index 0000000..6dfaa7b Binary files /dev/null and b/assets/soyjaks/pussyhound.png differ diff --git a/assets/soyjaks/redditjak.png b/assets/soyjaks/redditjak.png new file mode 100644 index 0000000..3a3c65f Binary files /dev/null and b/assets/soyjaks/redditjak.png differ diff --git a/assets/soyjaks/smartjak.jpeg b/assets/soyjaks/smartjak.jpeg new file mode 100644 index 0000000..32a3583 Binary files /dev/null and b/assets/soyjaks/smartjak.jpeg differ diff --git a/assets/soyjaks/soyjak.png b/assets/soyjaks/soyjak.png new file mode 100644 index 0000000..6133175 Binary files /dev/null and b/assets/soyjaks/soyjak.png differ diff --git a/assets/soyjaks/sugardaddy.png b/assets/soyjaks/sugardaddy.png new file mode 100644 index 0000000..a15a9f2 Binary files /dev/null and b/assets/soyjaks/sugardaddy.png differ diff --git a/assets/soyjaks/tranny.png b/assets/soyjaks/tranny.png new file mode 100644 index 0000000..1ade67f Binary files /dev/null and b/assets/soyjaks/tranny.png differ diff --git a/assets/soyjaks/troon.png b/assets/soyjaks/troon.png new file mode 100644 index 0000000..9053330 Binary files /dev/null and b/assets/soyjaks/troon.png differ diff --git a/assets/soyjaks/twink.png b/assets/soyjaks/twink.png new file mode 100644 index 0000000..9869ff7 Binary files /dev/null and b/assets/soyjaks/twink.png differ diff --git a/assets/soyjaks/volcel.png b/assets/soyjaks/volcel.png new file mode 100644 index 0000000..32cf50d Binary files /dev/null and b/assets/soyjaks/volcel.png differ diff --git a/assets/soyjaks/weeb.png b/assets/soyjaks/weeb.png new file mode 100644 index 0000000..e664c90 Binary files /dev/null and b/assets/soyjaks/weeb.png differ diff --git a/assets/styles.css b/assets/styles.css new file mode 100644 index 0000000..9b0a153 --- /dev/null +++ b/assets/styles.css @@ -0,0 +1,492 @@ +/*! tailwindcss v4.1.10 | MIT License | https://tailwindcss.com */ +@layer properties; +@layer theme, base, components, utilities; +@layer theme { + :root, :host { + --font-sans: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', + 'Noto Color Emoji'; + --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', + monospace; + --color-gray-50: oklch(98.5% 0.002 247.839); + --color-gray-300: oklch(87.2% 0.01 258.338); + --color-gray-600: oklch(44.6% 0.03 256.802); + --color-gray-700: oklch(37.3% 0.034 259.733); + --color-gray-900: oklch(21% 0.034 264.665); + --color-black: #000; + --color-white: #fff; + --spacing: 0.25rem; + --container-4xl: 56rem; + --text-sm: 0.875rem; + --text-sm--line-height: calc(1.25 / 0.875); + --text-2xl: 1.5rem; + --text-2xl--line-height: calc(2 / 1.5); + --text-5xl: 3rem; + --text-5xl--line-height: 1; + --font-weight-medium: 500; + --default-transition-duration: 150ms; + --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + --default-font-family: var(--font-sans); + --default-mono-font-family: var(--font-mono); + } +} +@layer base { + *, ::after, ::before, ::backdrop, ::file-selector-button { + box-sizing: border-box; + margin: 0; + padding: 0; + border: 0 solid; + } + html, :host { + line-height: 1.5; + -webkit-text-size-adjust: 100%; + tab-size: 4; + font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'); + font-feature-settings: var(--default-font-feature-settings, normal); + font-variation-settings: var(--default-font-variation-settings, normal); + -webkit-tap-highlight-color: transparent; + } + hr { + height: 0; + color: inherit; + border-top-width: 1px; + } + abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + } + h1, h2, h3, h4, h5, h6 { + font-size: inherit; + font-weight: inherit; + } + a { + color: inherit; + -webkit-text-decoration: inherit; + text-decoration: inherit; + } + b, strong { + font-weight: bolder; + } + code, kbd, samp, pre { + font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace); + font-feature-settings: var(--default-mono-font-feature-settings, normal); + font-variation-settings: var(--default-mono-font-variation-settings, normal); + font-size: 1em; + } + small { + font-size: 80%; + } + sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + sub { + bottom: -0.25em; + } + sup { + top: -0.5em; + } + table { + text-indent: 0; + border-color: inherit; + border-collapse: collapse; + } + :-moz-focusring { + outline: auto; + } + progress { + vertical-align: baseline; + } + summary { + display: list-item; + } + ol, ul, menu { + list-style: none; + } + img, svg, video, canvas, audio, iframe, embed, object { + display: block; + vertical-align: middle; + } + img, video { + max-width: 100%; + height: auto; + } + button, input, select, optgroup, textarea, ::file-selector-button { + font: inherit; + font-feature-settings: inherit; + font-variation-settings: inherit; + letter-spacing: inherit; + color: inherit; + border-radius: 0; + background-color: transparent; + opacity: 1; + } + :where(select:is([multiple], [size])) optgroup { + font-weight: bolder; + } + :where(select:is([multiple], [size])) optgroup option { + padding-inline-start: 20px; + } + ::file-selector-button { + margin-inline-end: 4px; + } + ::placeholder { + opacity: 1; + } + @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) { + ::placeholder { + color: currentcolor; + @supports (color: color-mix(in lab, red, red)) { + color: color-mix(in oklab, currentcolor 50%, transparent); + } + } + } + textarea { + resize: vertical; + } + ::-webkit-search-decoration { + -webkit-appearance: none; + } + ::-webkit-date-and-time-value { + min-height: 1lh; + text-align: inherit; + } + ::-webkit-datetime-edit { + display: inline-flex; + } + ::-webkit-datetime-edit-fields-wrapper { + padding: 0; + } + ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field { + padding-block: 0; + } + :-moz-ui-invalid { + box-shadow: none; + } + button, input:where([type='button'], [type='reset'], [type='submit']), ::file-selector-button { + appearance: button; + } + ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { + height: auto; + } + [hidden]:where(:not([hidden='until-found'])) { + display: none !important; + } +} +@layer utilities { + .static { + position: static; + } + .container { + width: 100%; + @media (width >= 40rem) { + max-width: 40rem; + } + @media (width >= 48rem) { + max-width: 48rem; + } + @media (width >= 64rem) { + max-width: 64rem; + } + @media (width >= 80rem) { + max-width: 80rem; + } + @media (width >= 96rem) { + max-width: 96rem; + } + } + .m-55 { + margin: calc(var(--spacing) * 55); + } + .mx-auto { + margin-inline: auto; + } + .mb-2 { + margin-bottom: calc(var(--spacing) * 2); + } + .mb-8 { + margin-bottom: calc(var(--spacing) * 8); + } + .flex { + display: flex; + } + .min-h-screen { + min-height: 100vh; + } + .w-4 { + width: calc(var(--spacing) * 4); + } + .w-\[60px\] { + width: 60px; + } + .max-w-4xl { + max-width: var(--container-4xl); + } + .transform { + transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,); + } + .items-center { + align-items: center; + } + .justify-between { + justify-content: space-between; + } + .space-y-12 { + :where(& > :not(:last-child)) { + --tw-space-y-reverse: 0; + margin-block-start: calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse)); + margin-block-end: calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse))); + } + } + .space-x-6 { + :where(& > :not(:last-child)) { + --tw-space-x-reverse: 0; + margin-inline-start: calc(calc(var(--spacing) * 6) * var(--tw-space-x-reverse)); + margin-inline-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-x-reverse))); + } + } + .bg-black { + background-color: var(--color-black); + } + .bg-gray-50 { + background-color: var(--color-gray-50); + } + .px-4 { + padding-inline: calc(var(--spacing) * 4); + } + .py-2 { + padding-block: calc(var(--spacing) * 2); + } + .py-8 { + padding-block: calc(var(--spacing) * 8); + } + .text-center { + text-align: center; + } + .text-2xl { + font-size: var(--text-2xl); + line-height: var(--tw-leading, var(--text-2xl--line-height)); + } + .text-5xl { + font-size: var(--text-5xl); + line-height: var(--tw-leading, var(--text-5xl--line-height)); + } + .text-sm { + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + } + .font-medium { + --tw-font-weight: var(--font-weight-medium); + font-weight: var(--font-weight-medium); + } + .text-gray-600 { + color: var(--color-gray-600); + } + .text-gray-900 { + color: var(--color-gray-900); + } + .text-white { + color: var(--color-white); + } + .italic { + font-style: italic; + } + .transition-colors { + transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + } + .hover\:text-gray-300 { + &:hover { + @media (hover: hover) { + color: var(--color-gray-300); + } + } + } + .hover\:text-gray-700 { + &:hover { + @media (hover: hover) { + color: var(--color-gray-700); + } + } + } +} +:root { + --red05: rgba(255, 65, 54, 0.05); + --red100: rgba(255, 65, 54, 1); + --blue05: rgba(33, 157, 255, 0.05); + --blue30: rgba(33, 157, 255, 0.3); + --blue100: rgba(33, 157, 255, 1); + --black05: rgba(0, 0, 0, 0.05); + --black20: rgba(0, 0, 0, 0.2); + --black60: rgba(0, 0, 0, 0.6); + --white: rgba(255, 255, 255, 1); + --text: rgba(0, 0, 0, 1); + --heihong: rgb(141, 15, 15); + --hong: rgb(183, 14, 14); + --huang: rgb(230, 180, 60); + --lan: rgb(30, 60, 80); +} +[data-theme=dark] { + --background-color: black; + --text-color: rgb(200, 200, 200); +} +[data-theme=light] { + --background-color: white; + --text-color: black; +} +@font-face { + font-family: Crimson Text; + src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-Regular.ttf) format('truetype'); + font-weight: 400; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: Crimson Text; + src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-Italic.ttf) format('truetype'); + font-weight: 400; + font-style: italic; + font-display: swap; +} +@font-face { + font-family: Crimson Text; + src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-SemiBold.ttf) format('truetype'); + font-weight: 600; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: Crimson Text; + src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-SemiBoldItalic.ttf) format('truetype'); + font-weight: 600; + font-style: italic; + font-display: swap; +} +@font-face { + font-family: Crimson Text; + src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-Bold.ttf) format('truetype'); + font-weight: 700; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: Crimson Text; + src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-BoldItalic.ttf) format('truetype'); + font-weight: 700; + font-style: italic; + font-display: swap; +} +@font-face { + font-family: "Inter"; + src: url(https://s3.spandrell.ch/assets/fonts/InterVariableFont.otf) format('truetype-variations'); + font-weight: 100 900; + font-style: normal; + font-display: swap; +} +html { + height: 100%; + color: var(--text-color); + -webkit-font-smoothing: antialiased; +} +body { + margin: 0; + width: 100%; + height: 100%; + font-size: 16px; + font-weight: 400; + line-height: 1.5; + font-size: 1rem; + line-height: 1.618; + text-align: left; + color: black !important; + text-rendering: optimizeLegibility !important; + -webkit-font-smoothing: antialiased; + word-break: break-word; +} +h1, h2, h3, h4, h5, h6, p { + font-family: Crimson Text; +} +a, button, input { + transition: all .4s ease; +} +input[type="submit"], button, .button { + border-color: #181818; + background-color: #181818; + padding: 0.5rem 1.25rem; + color: #fff; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; + display: inline-block; + font-weight: 400; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + -o-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + font-family: 'Montserrat', sans-serif; + text-transform: uppercase; + letter-spacing: 1px; + font-size: 13px; + -webkit-transition: all .4s ease; + -o-transition: all .4s ease; + transition: all .4s ease; +} +@property --tw-rotate-x { + syntax: "*"; + inherits: false; +} +@property --tw-rotate-y { + syntax: "*"; + inherits: false; +} +@property --tw-rotate-z { + syntax: "*"; + inherits: false; +} +@property --tw-skew-x { + syntax: "*"; + inherits: false; +} +@property --tw-skew-y { + syntax: "*"; + inherits: false; +} +@property --tw-space-y-reverse { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-space-x-reverse { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-font-weight { + syntax: "*"; + inherits: false; +} +@layer properties { + @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { + *, ::before, ::after, ::backdrop { + --tw-rotate-x: initial; + --tw-rotate-y: initial; + --tw-rotate-z: initial; + --tw-skew-x: initial; + --tw-skew-y: initial; + --tw-space-y-reverse: 0; + --tw-space-x-reverse: 0; + --tw-font-weight: initial; + } + } +} diff --git a/dune b/dune new file mode 100644 index 0000000..509d512 --- /dev/null +++ b/dune @@ -0,0 +1,6 @@ +(rule + (target styles.css) + (deps + (glob_files_rec assets/*)) + (action + (bash "sh tailwind.sh"))) diff --git a/dune-project b/dune-project index 3b0ab08..b8e5d6a 100644 --- a/dune-project +++ b/dune-project @@ -1,5 +1,7 @@ (lang dune 3.19) +(using directory-targets 0.1) + (name bs5) (generate_opam_files true) diff --git a/flake.nix b/flake.nix index 19f3b33..75cdd2a 100644 --- a/flake.nix +++ b/flake.nix @@ -173,6 +173,7 @@ nativeBuildInputs = with pkgs.ocamlPackages; [ pkgs.openjdk17 pkgs.nodejs + pkgs.tailwindcss_4 pkgs.sqlite pkgs.dune_3 pkgs.ocaml diff --git a/js/.gitignore b/js/.gitignore deleted file mode 100644 index a14702c..0000000 --- a/js/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -# dependencies (bun install) -node_modules - -# output -out -dist -*.tgz - -# code coverage -coverage -*.lcov - -# logs -logs -_.log -report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# caches -.eslintcache -.cache -*.tsbuildinfo - -# IntelliJ based IDEs -.idea - -# Finder (MacOS) folder config -.DS_Store diff --git a/js/Pepe.tsx b/js/Pepe.tsx deleted file mode 100644 index e247f9a..0000000 --- a/js/Pepe.tsx +++ /dev/null @@ -1,369 +0,0 @@ -"use client"; - -import type React from "react"; - -import { useState } from "react"; -import { Button } from "@/components/ui/button"; -import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; -import { - Card, - CardContent, - CardDescription, - CardHeader, - CardTitle, -} from "@/components/ui/card"; -import { Alert, AlertDescription } from "@/components/ui/alert"; -import { - Loader2, - Server, - MapPin, - CheckCircle, - AlertCircle, - Key, -} from "lucide-react"; - -// Mock data for locations -const mockLocations = [ - { - id: "nyc", - city: "New York", - country: "United States", - flag: "πŸ‡ΊπŸ‡Έ", - region: "North America", - }, - { - id: "lon", - city: "London", - country: "United Kingdom", - flag: "πŸ‡¬πŸ‡§", - region: "Europe", - }, - { - id: "fra", - city: "Frankfurt", - country: "Germany", - flag: "πŸ‡©πŸ‡ͺ", - region: "Europe", - }, - { - id: "sgp", - city: "Singapore", - country: "Singapore", - flag: "πŸ‡ΈπŸ‡¬", - region: "Asia Pacific", - }, - { - id: "tok", - city: "Tokyo", - country: "Japan", - flag: "πŸ‡―πŸ‡΅", - region: "Asia Pacific", - }, - { - id: "syd", - city: "Sydney", - country: "Australia", - flag: "πŸ‡¦πŸ‡Ί", - region: "Asia Pacific", - }, - { - id: "tor", - city: "Toronto", - country: "Canada", - flag: "πŸ‡¨πŸ‡¦", - region: "North America", - }, - { - id: "ams", - city: "Amsterdam", - country: "Netherlands", - flag: "πŸ‡³πŸ‡±", - region: "Europe", - }, -]; - -type Step = "api-key" | "location-select" | "creating" | "success" | "error"; - -interface Location { - id: string; - city: string; - country: string; - flag: string; - region: string; -} - -export default function VPSProvider() { - const [step, setStep] = useState("api-key"); - const [apiKey, setApiKey] = useState(""); - const [selectedLocation, setSelectedLocation] = useState( - null, - ); - const [error, setError] = useState(""); - const [isValidating, setIsValidating] = useState(false); - const [isCreating, setIsCreating] = useState(false); - - // Mock API key validation - const validateApiKey = async (key: string) => { - setIsValidating(true); - setError(""); - - // Simulate API call - await new Promise((resolve) => setTimeout(resolve, 1500)); - - // Mock validation - accept keys that are at least 20 characters - if (key.length >= 20) { - setStep("location-select"); - } else { - setError("Invalid API key. Please check your credentials and try again."); - } - - setIsValidating(false); - }; - - // Mock VPS creation - const createVPS = async (location: Location) => { - setIsCreating(true); - setError(""); - setStep("creating"); - - // Simulate VPS creation - await new Promise((resolve) => setTimeout(resolve, 3000)); - - // Mock success/failure (90% success rate) - if (Math.random() > 0.1) { - setStep("success"); - } else { - setError("Failed to create VPS. Please try again or contact support."); - setStep("error"); - } - - setIsCreating(false); - }; - - const handleApiKeySubmit = (e: React.FormEvent) => { - e.preventDefault(); - if (apiKey.trim()) { - validateApiKey(apiKey.trim()); - } - }; - - const handleLocationSelect = (location: Location) => { - setSelectedLocation(location); - createVPS(location); - }; - - const handleRetry = () => { - setError(""); - setStep("location-select"); - setSelectedLocation(null); - }; - - const handleNext = () => { - // This is where the user's flow continues - console.log("Proceeding to next step..."); - }; - - const renderApiKeyStep = () => ( - - -
- -
- Connect Your Account - - Enter your API key to get started with VPS deployment - -
- -
-
- - setApiKey(e.target.value)} - disabled={isValidating} - /> -
- - {error && ( - - - {error} - - )} - - -
-
-
- ); - - const renderLocationSelect = () => ( - - -
- -
- Choose Server Location - - Select the location where you want to deploy your VPS - -
- -
- {mockLocations.map((location) => ( - handleLocationSelect(location)} - > - -
- {location.flag} -
-

{location.city}

-

- {location.country} -

-

- {location.region} -

-
-
-
-
- ))} -
-
-
- ); - - const renderCreating = () => ( - - -
- -
- Creating Your VPS - - Setting up your server in {selectedLocation?.city},{" "} - {selectedLocation?.country} - -
- -
- {selectedLocation?.flag} - {selectedLocation?.city} -
-

- This may take a few minutes. Please don't close this window. -

-
-
- ); - - const renderSuccess = () => ( - - -
- -
- VPS Created Successfully! - - Your server is ready in {selectedLocation?.city},{" "} - {selectedLocation?.country} - -
- -
- {selectedLocation?.flag} - {selectedLocation?.city} -
- - - - - Your VPS is now online and ready to use! - - - - -
-
- ); - - const renderError = () => ( - - -
- -
- Creation Failed - - We couldn't create your VPS at this time - -
- - {error && ( - - - {error} - - )} - -
- - -
-
-
- ); - - return ( -
-
-
-

- Cloud VPS Deployment -

-

- Deploy your virtual private server in minutes -

-
- - {step === "api-key" && renderApiKeyStep()} - {step === "location-select" && renderLocationSelect()} - {step === "creating" && renderCreating()} - {step === "success" && renderSuccess()} - {step === "error" && renderError()} -
-
- ); -} diff --git a/js/README.md b/js/README.md deleted file mode 100644 index 874ec57..0000000 --- a/js/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# js - -To install dependencies: - -```bash -bun install -``` - -To run: - -```bash -bun run index.ts -``` - -This project was created using `bun init` in bun v1.2.16. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime. diff --git a/js/bun.lock b/js/bun.lock deleted file mode 100644 index 432f5f9..0000000 --- a/js/bun.lock +++ /dev/null @@ -1,189 +0,0 @@ -{ - "lockfileVersion": 1, - "workspaces": { - "": { - "name": "js", - "dependencies": { - "@tailwindcss/cli": "^4.1.11", - "tailwindcss": "^4.1.11", - }, - "devDependencies": { - "@types/bun": "latest", - }, - "peerDependencies": { - "typescript": "^5", - }, - }, - }, - "packages": { - "@ampproject/remapping": ["@ampproject/remapping@2.3.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="], - - "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], - - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.8", "", { "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA=="], - - "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], - - "@jridgewell/set-array": ["@jridgewell/set-array@1.2.1", "", {}, "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="], - - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="], - - "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], - - "@parcel/watcher": ["@parcel/watcher@2.5.1", "", { "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", "micromatch": "^4.0.5", "node-addon-api": "^7.0.0" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.1", "@parcel/watcher-darwin-arm64": "2.5.1", "@parcel/watcher-darwin-x64": "2.5.1", "@parcel/watcher-freebsd-x64": "2.5.1", "@parcel/watcher-linux-arm-glibc": "2.5.1", "@parcel/watcher-linux-arm-musl": "2.5.1", "@parcel/watcher-linux-arm64-glibc": "2.5.1", "@parcel/watcher-linux-arm64-musl": "2.5.1", "@parcel/watcher-linux-x64-glibc": "2.5.1", "@parcel/watcher-linux-x64-musl": "2.5.1", "@parcel/watcher-win32-arm64": "2.5.1", "@parcel/watcher-win32-ia32": "2.5.1", "@parcel/watcher-win32-x64": "2.5.1" } }, "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg=="], - - "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.1", "", { "os": "android", "cpu": "arm64" }, "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA=="], - - "@parcel/watcher-darwin-arm64": ["@parcel/watcher-darwin-arm64@2.5.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw=="], - - "@parcel/watcher-darwin-x64": ["@parcel/watcher-darwin-x64@2.5.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg=="], - - "@parcel/watcher-freebsd-x64": ["@parcel/watcher-freebsd-x64@2.5.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ=="], - - "@parcel/watcher-linux-arm-glibc": ["@parcel/watcher-linux-arm-glibc@2.5.1", "", { "os": "linux", "cpu": "arm" }, "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA=="], - - "@parcel/watcher-linux-arm-musl": ["@parcel/watcher-linux-arm-musl@2.5.1", "", { "os": "linux", "cpu": "arm" }, "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q=="], - - "@parcel/watcher-linux-arm64-glibc": ["@parcel/watcher-linux-arm64-glibc@2.5.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w=="], - - "@parcel/watcher-linux-arm64-musl": ["@parcel/watcher-linux-arm64-musl@2.5.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg=="], - - "@parcel/watcher-linux-x64-glibc": ["@parcel/watcher-linux-x64-glibc@2.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A=="], - - "@parcel/watcher-linux-x64-musl": ["@parcel/watcher-linux-x64-musl@2.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg=="], - - "@parcel/watcher-win32-arm64": ["@parcel/watcher-win32-arm64@2.5.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw=="], - - "@parcel/watcher-win32-ia32": ["@parcel/watcher-win32-ia32@2.5.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ=="], - - "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.1", "", { "os": "win32", "cpu": "x64" }, "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA=="], - - "@tailwindcss/cli": ["@tailwindcss/cli@4.1.11", "", { "dependencies": { "@parcel/watcher": "^2.5.1", "@tailwindcss/node": "4.1.11", "@tailwindcss/oxide": "4.1.11", "enhanced-resolve": "^5.18.1", "mri": "^1.2.0", "picocolors": "^1.1.1", "tailwindcss": "4.1.11" }, "bin": { "tailwindcss": "dist/index.mjs" } }, "sha512-7RAFOrVaXCFz5ooEG36Kbh+sMJiI2j4+Ozp71smgjnLfBRu7DTfoq8DsTvzse2/6nDeo2M3vS/FGaxfDgr3rtQ=="], - - "@tailwindcss/node": ["@tailwindcss/node@4.1.11", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "lightningcss": "1.30.1", "magic-string": "^0.30.17", "source-map-js": "^1.2.1", "tailwindcss": "4.1.11" } }, "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q=="], - - "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.11", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.4.3" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.11", "@tailwindcss/oxide-darwin-arm64": "4.1.11", "@tailwindcss/oxide-darwin-x64": "4.1.11", "@tailwindcss/oxide-freebsd-x64": "4.1.11", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11", "@tailwindcss/oxide-linux-arm64-musl": "4.1.11", "@tailwindcss/oxide-linux-x64-gnu": "4.1.11", "@tailwindcss/oxide-linux-x64-musl": "4.1.11", "@tailwindcss/oxide-wasm32-wasi": "4.1.11", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11", "@tailwindcss/oxide-win32-x64-msvc": "4.1.11" } }, "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg=="], - - "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.11", "", { "os": "android", "cpu": "arm64" }, "sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg=="], - - "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ=="], - - "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw=="], - - "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.11", "", { "os": "freebsd", "cpu": "x64" }, "sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA=="], - - "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11", "", { "os": "linux", "cpu": "arm" }, "sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg=="], - - "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ=="], - - "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ=="], - - "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg=="], - - "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.11", "", { "os": "linux", "cpu": "x64" }, "sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q=="], - - "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.11", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@emnapi/wasi-threads": "^1.0.2", "@napi-rs/wasm-runtime": "^0.2.11", "@tybys/wasm-util": "^0.9.0", "tslib": "^2.8.0" }, "cpu": "none" }, "sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g=="], - - "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w=="], - - "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.11", "", { "os": "win32", "cpu": "x64" }, "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg=="], - - "@types/bun": ["@types/bun@1.2.17", "", { "dependencies": { "bun-types": "1.2.17" } }, "sha512-l/BYs/JYt+cXA/0+wUhulYJB6a6p//GTPiJ7nV+QHa8iiId4HZmnu/3J/SowP5g0rTiERY2kfGKXEK5Ehltx4Q=="], - - "@types/node": ["@types/node@24.0.5", "", { "dependencies": { "undici-types": "~7.8.0" } }, "sha512-CXEG9E7GCTOZIre0WdDznmnhvF7xi7AmnP/zF496trmLiqlfdtxp9nPRgLVqfmJ8jgtcKcs0EcvOu2yDZSuvTg=="], - - "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - - "bun-types": ["bun-types@1.2.17", "", { "dependencies": { "@types/node": "*" } }, "sha512-ElC7ItwT3SCQwYZDYoAH+q6KT4Fxjl8DtZ6qDulUFBmXA8YB4xo+l54J9ZJN+k2pphfn9vk7kfubeSd5QfTVJQ=="], - - "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], - - "detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], - - "enhanced-resolve": ["enhanced-resolve@5.18.2", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ=="], - - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], - - "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - - "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], - - "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], - - "jiti": ["jiti@2.4.2", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="], - - "lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="], - - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="], - - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="], - - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="], - - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="], - - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="], - - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="], - - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="], - - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="], - - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="], - - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="], - - "magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], - - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - - "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], - - "minizlib": ["minizlib@3.0.2", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA=="], - - "mkdirp": ["mkdirp@3.0.1", "", { "bin": { "mkdirp": "dist/cjs/src/bin.js" } }, "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg=="], - - "mri": ["mri@1.2.0", "", {}, "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="], - - "node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="], - - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - - "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - - "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], - - "tailwindcss": ["tailwindcss@4.1.11", "", {}, "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA=="], - - "tapable": ["tapable@2.2.2", "", {}, "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg=="], - - "tar": ["tar@7.4.3", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" } }, "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw=="], - - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], - - "typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="], - - "undici-types": ["undici-types@7.8.0", "", {}, "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw=="], - - "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], - - "@tailwindcss/oxide/detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.4.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" }, "bundled": true }, "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.4.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ=="], - - "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.0.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA=="], - - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.11", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.9.0" }, "bundled": true }, "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA=="], - - "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.9.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw=="], - - "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "lightningcss/detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="], - } -} diff --git a/js/index.ts b/js/index.ts deleted file mode 100644 index f67b2c6..0000000 --- a/js/index.ts +++ /dev/null @@ -1 +0,0 @@ -console.log("Hello via Bun!"); \ No newline at end of file diff --git a/js/output.css b/js/output.css deleted file mode 100644 index 97c7dfe..0000000 --- a/js/output.css +++ /dev/null @@ -1,792 +0,0 @@ -/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */ -@layer properties; -@layer theme, base, components, utilities; -@layer theme { - :root, :host { - --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", - "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", - "Courier New", monospace; - --color-red-100: oklch(93.6% 0.032 17.717); - --color-red-600: oklch(57.7% 0.245 27.325); - --color-green-100: oklch(96.2% 0.044 156.743); - --color-green-500: oklch(72.3% 0.219 149.579); - --color-green-600: oklch(62.7% 0.194 149.214); - --color-blue-100: oklch(93.2% 0.032 255.585); - --color-blue-200: oklch(88.2% 0.059 254.128); - --color-blue-600: oklch(54.6% 0.245 262.881); - --color-gray-50: oklch(98.5% 0.002 247.839); - --color-gray-300: oklch(87.2% 0.01 258.338); - --color-gray-600: oklch(44.6% 0.03 256.802); - --color-gray-700: oklch(37.3% 0.034 259.733); - --color-gray-900: oklch(21% 0.034 264.665); - --color-black: #000; - --color-white: #fff; - --spacing: 0.25rem; - --container-md: 28rem; - --container-4xl: 56rem; - --container-6xl: 72rem; - --text-xs: 0.75rem; - --text-xs--line-height: calc(1 / 0.75); - --text-sm: 0.875rem; - --text-sm--line-height: calc(1.25 / 0.875); - --text-2xl: 1.5rem; - --text-2xl--line-height: calc(2 / 1.5); - --text-3xl: 1.875rem; - --text-3xl--line-height: calc(2.25 / 1.875); - --text-5xl: 3rem; - --text-5xl--line-height: 1; - --text-6xl: 3.75rem; - --text-6xl--line-height: 1; - --font-weight-medium: 500; - --font-weight-semibold: 600; - --font-weight-bold: 700; - --animate-spin: spin 1s linear infinite; - --default-transition-duration: 150ms; - --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - --default-font-family: var(--font-sans); - --default-mono-font-family: var(--font-mono); - } -} -@layer base { - *, ::after, ::before, ::backdrop, ::file-selector-button { - box-sizing: border-box; - margin: 0; - padding: 0; - border: 0 solid; - } - html, :host { - line-height: 1.5; - -webkit-text-size-adjust: 100%; - tab-size: 4; - font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"); - font-feature-settings: var(--default-font-feature-settings, normal); - font-variation-settings: var(--default-font-variation-settings, normal); - -webkit-tap-highlight-color: transparent; - } - hr { - height: 0; - color: inherit; - border-top-width: 1px; - } - abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - } - h1, h2, h3, h4, h5, h6 { - font-size: inherit; - font-weight: inherit; - } - a { - color: inherit; - -webkit-text-decoration: inherit; - text-decoration: inherit; - } - b, strong { - font-weight: bolder; - } - code, kbd, samp, pre { - font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); - font-feature-settings: var(--default-mono-font-feature-settings, normal); - font-variation-settings: var(--default-mono-font-variation-settings, normal); - font-size: 1em; - } - small { - font-size: 80%; - } - sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; - } - sub { - bottom: -0.25em; - } - sup { - top: -0.5em; - } - table { - text-indent: 0; - border-color: inherit; - border-collapse: collapse; - } - :-moz-focusring { - outline: auto; - } - progress { - vertical-align: baseline; - } - summary { - display: list-item; - } - ol, ul, menu { - list-style: none; - } - img, svg, video, canvas, audio, iframe, embed, object { - display: block; - vertical-align: middle; - } - img, video { - max-width: 100%; - height: auto; - } - button, input, select, optgroup, textarea, ::file-selector-button { - font: inherit; - font-feature-settings: inherit; - font-variation-settings: inherit; - letter-spacing: inherit; - color: inherit; - border-radius: 0; - background-color: transparent; - opacity: 1; - } - :where(select:is([multiple], [size])) optgroup { - font-weight: bolder; - } - :where(select:is([multiple], [size])) optgroup option { - padding-inline-start: 20px; - } - ::file-selector-button { - margin-inline-end: 4px; - } - ::placeholder { - opacity: 1; - } - @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) { - ::placeholder { - color: currentcolor; - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, currentcolor 50%, transparent); - } - } - } - textarea { - resize: vertical; - } - ::-webkit-search-decoration { - -webkit-appearance: none; - } - ::-webkit-date-and-time-value { - min-height: 1lh; - text-align: inherit; - } - ::-webkit-datetime-edit { - display: inline-flex; - } - ::-webkit-datetime-edit-fields-wrapper { - padding: 0; - } - ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field { - padding-block: 0; - } - :-moz-ui-invalid { - box-shadow: none; - } - button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button { - appearance: button; - } - ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { - height: auto; - } - [hidden]:where(:not([hidden="until-found"])) { - display: none !important; - } -} -@layer utilities { - .container { - width: 100%; - @media (width >= 40rem) { - max-width: 40rem; - } - @media (width >= 48rem) { - max-width: 48rem; - } - @media (width >= 64rem) { - max-width: 64rem; - } - @media (width >= 80rem) { - max-width: 80rem; - } - @media (width >= 96rem) { - max-width: 96rem; - } - } - .mx-auto { - margin-inline: auto; - } - .mr-2 { - margin-right: calc(var(--spacing) * 2); - } - .mb-2 { - margin-bottom: calc(var(--spacing) * 2); - } - .mb-4 { - margin-bottom: calc(var(--spacing) * 4); - } - .mb-8 { - margin-bottom: calc(var(--spacing) * 8); - } - .flex { - display: flex; - } - .grid { - display: grid; - } - .table { - display: table; - } - .h-4 { - height: calc(var(--spacing) * 4); - } - .h-6 { - height: calc(var(--spacing) * 6); - } - .h-12 { - height: calc(var(--spacing) * 12); - } - .min-h-screen { - min-height: 100vh; - } - .w-4 { - width: calc(var(--spacing) * 4); - } - .w-6 { - width: calc(var(--spacing) * 6); - } - .w-12 { - width: calc(var(--spacing) * 12); - } - .w-\[20px\] { - width: 20px; - } - .w-\[60px\] { - width: 60px; - } - .w-full { - width: 100%; - } - .max-w-4xl { - max-width: var(--container-4xl); - } - .max-w-6xl { - max-width: var(--container-6xl); - } - .max-w-md { - max-width: var(--container-md); - } - .flex-1 { - flex: 1; - } - .border-collapse { - border-collapse: collapse; - } - .transform { - transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,); - } - .animate-spin { - animation: var(--animate-spin); - } - .cursor-pointer { - cursor: pointer; - } - .resize { - resize: both; - } - .grid-cols-1 { - grid-template-columns: repeat(1, minmax(0, 1fr)); - } - .items-center { - align-items: center; - } - .justify-between { - justify-content: space-between; - } - .justify-center { - justify-content: center; - } - .gap-4 { - gap: calc(var(--spacing) * 4); - } - .space-y-2 { - :where(& > :not(:last-child)) { - --tw-space-y-reverse: 0; - margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse)); - margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse))); - } - } - .space-y-4 { - :where(& > :not(:last-child)) { - --tw-space-y-reverse: 0; - margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse)); - margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse))); - } - } - .space-y-12 { - :where(& > :not(:last-child)) { - --tw-space-y-reverse: 0; - margin-block-start: calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse)); - margin-block-end: calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse))); - } - } - .space-x-2 { - :where(& > :not(:last-child)) { - --tw-space-x-reverse: 0; - margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse)); - margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse))); - } - } - .space-x-3 { - :where(& > :not(:last-child)) { - --tw-space-x-reverse: 0; - margin-inline-start: calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse)); - margin-inline-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse))); - } - } - .space-x-6 { - :where(& > :not(:last-child)) { - --tw-space-x-reverse: 0; - margin-inline-start: calc(calc(var(--spacing) * 6) * var(--tw-space-x-reverse)); - margin-inline-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-x-reverse))); - } - } - .rounded-full { - border-radius: calc(infinity * 1px); - } - .border { - border-style: var(--tw-border-style); - border-width: 1px; - } - .border-2 { - border-style: var(--tw-border-style); - border-width: 2px; - } - .bg-black { - background-color: var(--color-black); - } - .bg-blue-100 { - background-color: var(--color-blue-100); - } - .bg-gray-50 { - background-color: var(--color-gray-50); - } - .bg-green-100 { - background-color: var(--color-green-100); - } - .bg-red-100 { - background-color: var(--color-red-100); - } - .p-4 { - padding: calc(var(--spacing) * 4); - } - .px-4 { - padding-inline: calc(var(--spacing) * 4); - } - .py-2 { - padding-block: calc(var(--spacing) * 2); - } - .py-8 { - padding-block: calc(var(--spacing) * 8); - } - .py-12 { - padding-block: calc(var(--spacing) * 12); - } - .text-center { - text-align: center; - } - .text-2xl { - font-size: var(--text-2xl); - line-height: var(--tw-leading, var(--text-2xl--line-height)); - } - .text-3xl { - font-size: var(--text-3xl); - line-height: var(--tw-leading, var(--text-3xl--line-height)); - } - .text-5xl { - font-size: var(--text-5xl); - line-height: var(--tw-leading, var(--text-5xl--line-height)); - } - .text-6xl { - font-size: var(--text-6xl); - line-height: var(--tw-leading, var(--text-6xl--line-height)); - } - .text-sm { - font-size: var(--text-sm); - line-height: var(--tw-leading, var(--text-sm--line-height)); - } - .text-xs { - font-size: var(--text-xs); - line-height: var(--tw-leading, var(--text-xs--line-height)); - } - .font-bold { - --tw-font-weight: var(--font-weight-bold); - font-weight: var(--font-weight-bold); - } - .font-medium { - --tw-font-weight: var(--font-weight-medium); - font-weight: var(--font-weight-medium); - } - .font-semibold { - --tw-font-weight: var(--font-weight-semibold); - font-weight: var(--font-weight-semibold); - } - .text-blue-600 { - color: var(--color-blue-600); - } - .text-gray-600 { - color: var(--color-gray-600); - } - .text-gray-900 { - color: var(--color-gray-900); - } - .text-green-500 { - color: var(--color-green-500); - } - .text-green-600 { - color: var(--color-green-600); - } - .text-red-600 { - color: var(--color-red-600); - } - .text-white { - color: var(--color-white); - } - .italic { - font-style: italic; - } - .underline { - text-decoration-line: underline; - } - .outline { - outline-style: var(--tw-outline-style); - outline-width: 1px; - } - .transition { - transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } - .transition-colors { - transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } - .transition-shadow { - transition-property: box-shadow; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } - .hover\:border-blue-200 { - &:hover { - @media (hover: hover) { - border-color: var(--color-blue-200); - } - } - } - .hover\:text-gray-300 { - &:hover { - @media (hover: hover) { - color: var(--color-gray-300); - } - } - } - .hover\:text-gray-700 { - &:hover { - @media (hover: hover) { - color: var(--color-gray-700); - } - } - } - .hover\:shadow-md { - &:hover { - @media (hover: hover) { - --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - } - } - .md\:grid-cols-2 { - @media (width >= 48rem) { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - } - .lg\:grid-cols-3 { - @media (width >= 64rem) { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - } -} -:root { - --red05: rgba(255, 65, 54, 0.05); - --red100: rgba(255, 65, 54, 1); - --blue05: rgba(33, 157, 255, 0.05); - --blue30: rgba(33, 157, 255, 0.3); - --blue100: rgba(33, 157, 255, 1); - --black05: rgba(0, 0, 0, 0.05); - --black20: rgba(0, 0, 0, 0.2); - --black60: rgba(0, 0, 0, 0.6); - --white: rgba(255, 255, 255, 1); - --text: rgba(0, 0, 0, 1); - --heihong: rgb(141, 15, 15); - --hong: rgb(183, 14, 14); - --huang: rgb(230, 180, 60); - --lan: rgb(30, 60, 80); -} -[data-theme=dark] { - --background-color: black; - --text-color: rgb(200, 200, 200); -} -[data-theme=light] { - --background-color: white; - --text-color: black; -} -@font-face { - font-family: Crimson Text; - src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-Regular.ttf) format('truetype'); - font-weight: 400; - font-style: normal; - font-display: swap; -} -@font-face { - font-family: Crimson Text; - src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-Italic.ttf) format('truetype'); - font-weight: 400; - font-style: italic; - font-display: swap; -} -@font-face { - font-family: Crimson Text; - src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-SemiBold.ttf) format('truetype'); - font-weight: 600; - font-style: normal; - font-display: swap; -} -@font-face { - font-family: Crimson Text; - src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-SemiBoldItalic.ttf) format('truetype'); - font-weight: 600; - font-style: italic; - font-display: swap; -} -@font-face { - font-family: Crimson Text; - src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-Bold.ttf) format('truetype'); - font-weight: 700; - font-style: normal; - font-display: swap; -} -@font-face { - font-family: Crimson Text; - src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-BoldItalic.ttf) format('truetype'); - font-weight: 700; - font-style: italic; - font-display: swap; -} -@font-face { - font-family: "Inter"; - src: url(https://s3.spandrell.ch/assets/fonts/InterVariableFont.otf) format('truetype-variations'); - font-weight: 100 900; - font-style: normal; - font-display: swap; -} -html { - height: 100%; - color: var(--text-color); - -webkit-font-smoothing: antialiased; -} -body { - margin: 0; - width: 100%; - height: 100%; - font-size: 16px; - font-weight: 400; - line-height: 1.5; - font-size: 1rem; - line-height: 1.618; - text-align: left; - color: black !important; - text-rendering: optimizeLegibility !important; - -webkit-font-smoothing: antialiased; - word-break: break-word; -} -h1, h2, h3, h4, h5, h6, p { - font-family: Crimson Text; -} -a, button, input { - transition: all .4s ease; -} -input[type="submit"], button, .button { - border-color: #181818; - background-color: #181818; - padding: 0.5rem 1.25rem; - color: #fff; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; - display: inline-block; - font-weight: 400; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; - -o-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; - font-family: 'Montserrat', sans-serif; - text-transform: uppercase; - letter-spacing: 1px; - font-size: 13px; - -webkit-transition: all .4s ease; - -o-transition: all .4s ease; - transition: all .4s ease; -} -@property --tw-rotate-x { - syntax: "*"; - inherits: false; -} -@property --tw-rotate-y { - syntax: "*"; - inherits: false; -} -@property --tw-rotate-z { - syntax: "*"; - inherits: false; -} -@property --tw-skew-x { - syntax: "*"; - inherits: false; -} -@property --tw-skew-y { - syntax: "*"; - inherits: false; -} -@property --tw-space-y-reverse { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-space-x-reverse { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-border-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} -@property --tw-font-weight { - syntax: "*"; - inherits: false; -} -@property --tw-outline-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} -@property --tw-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-shadow-color { - syntax: "*"; - inherits: false; -} -@property --tw-shadow-alpha { - syntax: ""; - inherits: false; - initial-value: 100%; -} -@property --tw-inset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-inset-shadow-color { - syntax: "*"; - inherits: false; -} -@property --tw-inset-shadow-alpha { - syntax: ""; - inherits: false; - initial-value: 100%; -} -@property --tw-ring-color { - syntax: "*"; - inherits: false; -} -@property --tw-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-inset-ring-color { - syntax: "*"; - inherits: false; -} -@property --tw-inset-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-ring-inset { - syntax: "*"; - inherits: false; -} -@property --tw-ring-offset-width { - syntax: ""; - inherits: false; - initial-value: 0px; -} -@property --tw-ring-offset-color { - syntax: "*"; - inherits: false; - initial-value: #fff; -} -@property --tw-ring-offset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@keyframes spin { - to { - transform: rotate(360deg); - } -} -@layer properties { - @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { - *, ::before, ::after, ::backdrop { - --tw-rotate-x: initial; - --tw-rotate-y: initial; - --tw-rotate-z: initial; - --tw-skew-x: initial; - --tw-skew-y: initial; - --tw-space-y-reverse: 0; - --tw-space-x-reverse: 0; - --tw-border-style: solid; - --tw-font-weight: initial; - --tw-outline-style: solid; - --tw-shadow: 0 0 #0000; - --tw-shadow-color: initial; - --tw-shadow-alpha: 100%; - --tw-inset-shadow: 0 0 #0000; - --tw-inset-shadow-color: initial; - --tw-inset-shadow-alpha: 100%; - --tw-ring-color: initial; - --tw-ring-shadow: 0 0 #0000; - --tw-inset-ring-color: initial; - --tw-inset-ring-shadow: 0 0 #0000; - --tw-ring-inset: initial; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-offset-shadow: 0 0 #0000; - } - } -} diff --git a/js/package.json b/js/package.json deleted file mode 100644 index 0c965de..0000000 --- a/js/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "js", - "module": "index.ts", - "type": "module", - "private": true, - "devDependencies": { - "@types/bun": "latest" - }, - "peerDependencies": { - "typescript": "^5" - }, - "dependencies": { - "@tailwindcss/cli": "^4.1.11", - "tailwindcss": "^4.1.11" - } -} diff --git a/js/styles.css b/js/styles.css deleted file mode 100644 index 4b288be..0000000 --- a/js/styles.css +++ /dev/null @@ -1,182 +0,0 @@ -@import "tailwindcss"; -/* @config "./tailwind.config.js"; */ - -/* Since we use dynamic classNames on Theme.re, we need to inline the colors here. This can cause tailwind to not generate some classes if there's a missing variant here or we add new colors. */ -/* @source inline("{hover:,}{text,bg,border}-[#FFC53D]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#080808]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#0F0F0F]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#151515]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#191919]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#1E1E1E]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#252525]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#2A2A2A]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#313131]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#3A3A3A]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#484848]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#6E6E6E]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#B4B4B4]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#EEEEEE]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#F5F5F5]"); */ -/* @source inline("{hover:,}{text,bg,border}-[#FFFFFF]"); */ -/* @source inline("{hover:,focus:,active:,disabled:,}{text,bg,border}-primary"); */ - - - -:root { - --red05: rgba(255, 65, 54, 0.05); - --red100: rgba(255, 65, 54, 1); - --blue05: rgba(33, 157, 255, 0.05); - --blue30: rgba(33, 157, 255, 0.3); - --blue100: rgba(33, 157, 255, 1); - --black05: rgba(0, 0, 0, 0.05); - --black20: rgba(0, 0, 0, 0.2); - --black60: rgba(0, 0, 0, 0.6); - --white: rgba(255, 255, 255, 1); - - --text: rgba(0, 0, 0, 1); - --heihong: rgb(141, 15, 15); - --hong: rgb(183, 14, 14); - --huang: rgb(230, 180, 60); - --lan: rgb(30, 60, 80); -} - -[data-theme=dark] { - --background-color: black; - --text-color: rgb(200, 200, 200); -} - -[data-theme=light] { - /* --background-color: #EFF1EC; */ - --background-color: white; - --text-color: black; -} - -@font-face { - font-family: Crimson Text; - src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-Regular.ttf) format('truetype'); - font-weight: 400; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: Crimson Text; - src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-Italic.ttf) format('truetype'); - font-weight: 400; - font-style: italic; - font-display: swap; -} - -@font-face { - font-family: Crimson Text; - src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-SemiBold.ttf) format('truetype'); - font-weight: 600; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: Crimson Text; - src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-SemiBoldItalic.ttf) format('truetype'); - font-weight: 600; - font-style: italic; - font-display: swap; -} - -@font-face { - font-family: Crimson Text; - src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-Bold.ttf) format('truetype'); - font-weight: 700; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: Crimson Text; - src: url(https://s3.spandrell.ch/assets/fonts/CrimsonText-BoldItalic.ttf) format('truetype'); - font-weight: 700; - font-style: italic; - font-display: swap; -} - -@font-face { - font-family: "Inter"; - src: url(https://s3.spandrell.ch/assets/fonts/InterVariableFont.otf) format('truetype-variations'); - font-weight: 100 900; - font-style: normal; - font-display: swap; -} - -html { - height: 100%; - color: var(--text-color); - -webkit-font-smoothing: antialiased; -} - -body { - margin: 0; - width: 100%; - height: 100%; - font-size: 16px; - font-weight: 400; - line-height: 1.5; - font-size: 1rem; - line-height: 1.618; - text-align: left; - color: black !important; - text-rendering: optimizeLegibility !important; - -webkit-font-smoothing: antialiased; - word-break: break-word; -} - -h1, -h2, -h3, -h4, -h5, -h6, -p { - font-family: Crimson Text; -} - - -a, -button, -input { - transition: all .4s ease; -} - - -input[type="submit"], -button, -.button { - border-color: #181818; - background-color: #181818; - padding: 0.5rem 1.25rem; - color: #fff; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; - display: inline-block; - font-weight: 400; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; - -o-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; - font-family: 'Montserrat', sans-serif; - text-transform: uppercase; - letter-spacing: 1px; - font-size: 13px; - -webkit-transition: all .4s ease; - -o-transition: all .4s ease; - transition: all .4s ease; -} diff --git a/js/tailwind.config.js b/js/tailwind.config.js deleted file mode 100644 index e97787d..0000000 --- a/js/tailwind.config.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - // files: ["../client/**/*.mlx","../server/**/*.mlx", "../universal/**/*.mlx"], - content:{files: ["*.mlx", "../**/*.{js, ts, jsx, tsx}","../**/*.mlx"]}, - plugins: {}, -} diff --git a/js/tsconfig.json b/js/tsconfig.json deleted file mode 100644 index bfa0fea..0000000 --- a/js/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "compilerOptions": { - // Environment setup & latest features - "lib": ["ESNext"], - "target": "ESNext", - "module": "Preserve", - "moduleDetection": "force", - "jsx": "react-jsx", - "allowJs": true, - - // Bundler mode - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "verbatimModuleSyntax": true, - "noEmit": true, - - // Best practices - "strict": true, - "skipLibCheck": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedIndexedAccess": true, - "noImplicitOverride": true, - - // Some stricter flags (disabled by default) - "noUnusedLocals": false, - "noUnusedParameters": false, - "noPropertyAccessFromIndexSignature": false - } -} diff --git a/lib/pages/BlogIndex.mlx b/lib/pages/BlogIndex.mlx index 3e036aa..7f13bed 100644 --- a/lib/pages/BlogIndex.mlx +++ b/lib/pages/BlogIndex.mlx @@ -15,6 +15,7 @@ module Layout = struct (React.string "Bloody Shovel 5") + diff --git a/tailwind.sh b/tailwind.sh new file mode 100644 index 0000000..f059719 --- /dev/null +++ b/tailwind.sh @@ -0,0 +1 @@ +tailwindcss -i assets/input.css -o assets/styles.css -- cgit v1.2.3