Compare commits

...

10 Commits

Author SHA1 Message Date
will e7bf1336da moving around how the fonts work and css stuff 2026-06-13 01:23:44 -05:00
will 331537415f clean up the shirt page some more including mobile stuff 2026-06-13 01:23:27 -05:00
will 2e9dd3f314 Finalizing the shirt preorder page. we'll see what i did wrong 2026-06-13 01:23:27 -05:00
will 74ee25d2f1 removing app.scss stuff infavor of the current way of doing things 2026-06-13 01:23:27 -05:00
will a140127c44 added the shirts form. It mostly works except for deleting shirts
doesn't work as one would expect
2026-06-13 01:23:27 -05:00
will 84171c9ff4 update main page and layout with transparency and shirts 2026-06-13 01:23:27 -05:00
will ad8ef867eb moved email out to its own folder because i am using it twice 2026-06-13 01:23:27 -05:00
will a2eb02409e remove unnecessary files and amek global scss work 2026-06-13 01:23:27 -05:00
will 2e6df0e19f renamed a bunch of photos
fucked up the colors a bunch
hopefully did some good mobile stuff
2026-06-13 01:23:27 -05:00
will 60ea4e76f9 Cleaned up the look of the application and then made it worse for fun,
learned some gradients and backgrounds including gradient borders.

added primary and secondary color palletes that are calculated, played
with gradients

Added the JSON and CSV for applications, mailed them to Giac and me
2026-06-13 01:23:27 -05:00
40 changed files with 1010 additions and 613 deletions
-285
View File
@@ -1,285 +0,0 @@
{
"lockfileVersion": 1,
"workspaces": {
"": {
"name": "sludge-link",
"dependencies": {
"@sveltejs/kit": "^2.27.3",
"marked": "^15.0.12",
"proquint": "^0.0.1",
},
"devDependencies": {
"@sveltejs/vite-plugin-svelte": "^5.1.1",
"sass": "^1.90.0",
"svelte": "^5.38.0",
"svelte-adapter-bun": "^0.5.2",
"svelte-check": "^4.3.1",
"typescript": "^5.9.2",
"vite": "^6.3.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=="],
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ=="],
"@esbuild/android-arm": ["@esbuild/android-arm@0.25.3", "", { "os": "android", "cpu": "arm" }, "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A=="],
"@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.3", "", { "os": "android", "cpu": "arm64" }, "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ=="],
"@esbuild/android-x64": ["@esbuild/android-x64@0.25.3", "", { "os": "android", "cpu": "x64" }, "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ=="],
"@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w=="],
"@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A=="],
"@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw=="],
"@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q=="],
"@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.3", "", { "os": "linux", "cpu": "arm" }, "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ=="],
"@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A=="],
"@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.3", "", { "os": "linux", "cpu": "ia32" }, "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw=="],
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.3", "", { "os": "linux", "cpu": "none" }, "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g=="],
"@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.3", "", { "os": "linux", "cpu": "none" }, "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag=="],
"@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg=="],
"@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.3", "", { "os": "linux", "cpu": "none" }, "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA=="],
"@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ=="],
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.3", "", { "os": "linux", "cpu": "x64" }, "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA=="],
"@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.3", "", { "os": "none", "cpu": "arm64" }, "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA=="],
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.3", "", { "os": "none", "cpu": "x64" }, "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g=="],
"@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.3", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ=="],
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.3", "", { "os": "openbsd", "cpu": "x64" }, "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w=="],
"@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.3", "", { "os": "sunos", "cpu": "x64" }, "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA=="],
"@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ=="],
"@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew=="],
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.3", "", { "os": "win32", "cpu": "x64" }, "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg=="],
"@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=="],
"@polka/url": ["@polka/url@1.0.0-next.29", "", {}, "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww=="],
"@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.40.1", "", { "os": "android", "cpu": "arm" }, "sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw=="],
"@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.40.1", "", { "os": "android", "cpu": "arm64" }, "sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw=="],
"@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.40.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA=="],
"@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.40.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw=="],
"@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.40.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw=="],
"@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.40.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q=="],
"@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.40.1", "", { "os": "linux", "cpu": "arm" }, "sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg=="],
"@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.40.1", "", { "os": "linux", "cpu": "arm" }, "sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg=="],
"@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.40.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg=="],
"@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.40.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ=="],
"@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.40.1", "", { "os": "linux", "cpu": "none" }, "sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ=="],
"@rollup/rollup-linux-powerpc64le-gnu": ["@rollup/rollup-linux-powerpc64le-gnu@4.40.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg=="],
"@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.40.1", "", { "os": "linux", "cpu": "none" }, "sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ=="],
"@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.40.1", "", { "os": "linux", "cpu": "none" }, "sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA=="],
"@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.40.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg=="],
"@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.40.1", "", { "os": "linux", "cpu": "x64" }, "sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ=="],
"@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.40.1", "", { "os": "linux", "cpu": "x64" }, "sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ=="],
"@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.40.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg=="],
"@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.40.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA=="],
"@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.40.1", "", { "os": "win32", "cpu": "x64" }, "sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA=="],
"@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="],
"@sveltejs/acorn-typescript": ["@sveltejs/acorn-typescript@1.0.5", "", { "peerDependencies": { "acorn": "^8.9.0" } }, "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ=="],
"@sveltejs/kit": ["@sveltejs/kit@2.27.3", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@sveltejs/acorn-typescript": "^1.0.5", "@types/cookie": "^0.6.0", "acorn": "^8.14.1", "cookie": "^0.6.0", "devalue": "^5.1.0", "esm-env": "^1.2.2", "kleur": "^4.1.5", "magic-string": "^0.30.5", "mrmime": "^2.0.0", "sade": "^1.8.1", "set-cookie-parser": "^2.6.0", "sirv": "^3.0.0" }, "peerDependencies": { "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", "svelte": "^4.0.0 || ^5.0.0-next.0", "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" }, "bin": { "svelte-kit": "svelte-kit.js" } }, "sha512-jiG3NGZ8RRpi+ncjVnX+oR7uWEgzy//3YLGcTU5mHtjGraeGyNDr7GJFHlk7z0vi8bMXpXIUkEXj6p70FJmHvw=="],
"@sveltejs/vite-plugin-svelte": ["@sveltejs/vite-plugin-svelte@5.1.1", "", { "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", "debug": "^4.4.1", "deepmerge": "^4.3.1", "kleur": "^4.1.5", "magic-string": "^0.30.17", "vitefu": "^1.0.6" }, "peerDependencies": { "svelte": "^5.0.0", "vite": "^6.0.0" } }, "sha512-Y1Cs7hhTc+a5E9Va/xwKlAJoariQyHY+5zBgCZg4PFWNYQ1nMN9sjK1zhw1gK69DuqVP++sht/1GZg1aRwmAXQ=="],
"@sveltejs/vite-plugin-svelte-inspector": ["@sveltejs/vite-plugin-svelte-inspector@4.0.1", "", { "dependencies": { "debug": "^4.3.7" }, "peerDependencies": { "@sveltejs/vite-plugin-svelte": "^5.0.0", "svelte": "^5.0.0", "vite": "^6.0.0" } }, "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw=="],
"@types/cookie": ["@types/cookie@0.6.0", "", {}, "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA=="],
"@types/estree": ["@types/estree@1.0.7", "", {}, "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="],
"acorn": ["acorn@8.14.1", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg=="],
"aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="],
"axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="],
"braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
"chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="],
"clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
"cookie": ["cookie@0.6.0", "", {}, "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw=="],
"debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="],
"deepmerge": ["deepmerge@4.3.1", "", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="],
"detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="],
"devalue": ["devalue@5.1.1", "", {}, "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw=="],
"esbuild": ["esbuild@0.25.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.3", "@esbuild/android-arm": "0.25.3", "@esbuild/android-arm64": "0.25.3", "@esbuild/android-x64": "0.25.3", "@esbuild/darwin-arm64": "0.25.3", "@esbuild/darwin-x64": "0.25.3", "@esbuild/freebsd-arm64": "0.25.3", "@esbuild/freebsd-x64": "0.25.3", "@esbuild/linux-arm": "0.25.3", "@esbuild/linux-arm64": "0.25.3", "@esbuild/linux-ia32": "0.25.3", "@esbuild/linux-loong64": "0.25.3", "@esbuild/linux-mips64el": "0.25.3", "@esbuild/linux-ppc64": "0.25.3", "@esbuild/linux-riscv64": "0.25.3", "@esbuild/linux-s390x": "0.25.3", "@esbuild/linux-x64": "0.25.3", "@esbuild/netbsd-arm64": "0.25.3", "@esbuild/netbsd-x64": "0.25.3", "@esbuild/openbsd-arm64": "0.25.3", "@esbuild/openbsd-x64": "0.25.3", "@esbuild/sunos-x64": "0.25.3", "@esbuild/win32-arm64": "0.25.3", "@esbuild/win32-ia32": "0.25.3", "@esbuild/win32-x64": "0.25.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q=="],
"esm-env": ["esm-env@1.2.2", "", {}, "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA=="],
"esrap": ["esrap@2.1.0", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" } }, "sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA=="],
"fdir": ["fdir@6.4.4", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg=="],
"fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
"fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
"globalyzer": ["globalyzer@0.1.0", "", {}, "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q=="],
"globrex": ["globrex@0.1.2", "", {}, "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="],
"immutable": ["immutable@5.1.1", "", {}, "sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg=="],
"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=="],
"is-reference": ["is-reference@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.6" } }, "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw=="],
"kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="],
"locate-character": ["locate-character@3.0.0", "", {}, "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA=="],
"magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="],
"marked": ["marked@15.0.12", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA=="],
"micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
"mri": ["mri@1.2.0", "", {}, "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="],
"mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="],
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
"nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
"node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="],
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
"picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="],
"postcss": ["postcss@8.5.3", "", { "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A=="],
"proquint": ["proquint@0.0.1", "", {}, "sha512-6ZQaEo+Ts+Dr7wUu4+/VlBICOV+fxxg/sFNelr22H+0GnnrnzWdMSbcu+c2X1b3YnvS8scyojjOWPbejLD1cnQ=="],
"readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="],
"rollup": ["rollup@4.40.1", "", { "dependencies": { "@types/estree": "1.0.7" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.40.1", "@rollup/rollup-android-arm64": "4.40.1", "@rollup/rollup-darwin-arm64": "4.40.1", "@rollup/rollup-darwin-x64": "4.40.1", "@rollup/rollup-freebsd-arm64": "4.40.1", "@rollup/rollup-freebsd-x64": "4.40.1", "@rollup/rollup-linux-arm-gnueabihf": "4.40.1", "@rollup/rollup-linux-arm-musleabihf": "4.40.1", "@rollup/rollup-linux-arm64-gnu": "4.40.1", "@rollup/rollup-linux-arm64-musl": "4.40.1", "@rollup/rollup-linux-loongarch64-gnu": "4.40.1", "@rollup/rollup-linux-powerpc64le-gnu": "4.40.1", "@rollup/rollup-linux-riscv64-gnu": "4.40.1", "@rollup/rollup-linux-riscv64-musl": "4.40.1", "@rollup/rollup-linux-s390x-gnu": "4.40.1", "@rollup/rollup-linux-x64-gnu": "4.40.1", "@rollup/rollup-linux-x64-musl": "4.40.1", "@rollup/rollup-win32-arm64-msvc": "4.40.1", "@rollup/rollup-win32-ia32-msvc": "4.40.1", "@rollup/rollup-win32-x64-msvc": "4.40.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw=="],
"sade": ["sade@1.8.1", "", { "dependencies": { "mri": "^1.1.0" } }, "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A=="],
"sass": ["sass@1.90.0", "", { "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": { "sass": "sass.js" } }, "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q=="],
"set-cookie-parser": ["set-cookie-parser@2.7.1", "", {}, "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ=="],
"sirv": ["sirv@3.0.1", "", { "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", "totalist": "^3.0.0" } }, "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A=="],
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
"svelte": ["svelte@5.38.0", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "@jridgewell/sourcemap-codec": "^1.5.0", "@sveltejs/acorn-typescript": "^1.0.5", "@types/estree": "^1.0.5", "acorn": "^8.12.1", "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", "esm-env": "^1.2.1", "esrap": "^2.1.0", "is-reference": "^3.0.3", "locate-character": "^3.0.0", "magic-string": "^0.30.11", "zimmerframe": "^1.1.2" } }, "sha512-cWF1Oc2IM/QbktdK89u5lt9MdKxRtQnRKnf2tq6KOhYuhLOd2hbMuTiJ+vWMzAeMDe81AzbCgLd4GVtOJ4fDRg=="],
"svelte-adapter-bun": ["svelte-adapter-bun@0.5.2", "", { "dependencies": { "tiny-glob": "^0.2.9" } }, "sha512-xEtFgaal6UgrCwwkSIcapO9kopoFNUYCYqyKCikdqxX9bz2TDYnrWQZ7qBnkunMxi1HOIERUCvTcebYGiarZLA=="],
"svelte-check": ["svelte-check@4.3.1", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "chokidar": "^4.0.1", "fdir": "^6.2.0", "picocolors": "^1.0.0", "sade": "^1.7.4" }, "peerDependencies": { "svelte": "^4.0.0 || ^5.0.0-next.0", "typescript": ">=5.0.0" }, "bin": { "svelte-check": "bin/svelte-check" } }, "sha512-lkh8gff5gpHLjxIV+IaApMxQhTGnir2pNUAqcNgeKkvK5bT/30Ey/nzBxNLDlkztCH4dP7PixkMt9SWEKFPBWg=="],
"tiny-glob": ["tiny-glob@0.2.9", "", { "dependencies": { "globalyzer": "0.1.0", "globrex": "^0.1.2" } }, "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg=="],
"tinyglobby": ["tinyglobby@0.2.13", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw=="],
"to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
"totalist": ["totalist@3.0.1", "", {}, "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ=="],
"typescript": ["typescript@5.9.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A=="],
"vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="],
"vitefu": ["vitefu@1.0.6", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" }, "optionalPeers": ["vite"] }, "sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA=="],
"zimmerframe": ["zimmerframe@1.1.2", "", {}, "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w=="],
"@sveltejs/vite-plugin-svelte-inspector/debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="],
"micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
}
}
+269
View File
@@ -0,0 +1,269 @@
@font-face {
font-family: 'Charter';
src: url('/fonts/Charter.otf') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Noto Serif';
src: url('/fonts/NotoSerif-Black.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "Baskerville";
font-display: swap;
font-style: italic;
font-weight: 500;
src: url("/fonts/LibreBaskerville-Italic.otf") format("opentype");
}
@font-face {
font-family: "Baskerville";
font-display: swap;
font-style: normal;
font-weight: 900;
src: url("/fonts/LibreBaskerville-Bold.otf") format("opentype");
}
@font-face {
font-family: "Baskerville";
font-display: swap;
font-style: normal;
font-weight: 500;
src: url("/fonts/LibreBaskerville-Regular.otf") format("opentype");
}
@font-face {
font-family: "Initials";
font-display: swap;
font-style: normal;
font-weight: 500;
src: url("/fonts/EBGaramond-Initials.otf") format("opentype");
}
@font-face {
font-family: "Initials";
font-display: swap;
font-style: normal;
font-weight: 100;
src: url("/fonts/EBGaramond-InitialsF1.otf") format("opentype");
}
@font-face {
font-family: "Initials";
font-display: swap;
font-style: normal;
font-weight: 200;
src: url("/fonts/EBGaramond-InitialsF2.otf") format("opentype");
}
@font-face {
font-family: "Garamond";
font-display: swap;
font-style: italic;
src: url("/fonts/EBGaramond-Italic.ttf") format("truetype");
}
@font-face {
font-family: "Garamond";
font-display: swap;
font-style: normal;
src: url("/fonts/EBGaramond.ttf") format("truetype");
}
:root {
font-family: "Garamond", serif;
--br: 0.375rem;
--bs: 2px 2px 9px var(--primary-8);
--primary: 225deg;
--gradient-degree: var(--primary, 42deg);
--l-base: 0.91;
--l-step: 0.067;
--c-peak: 0.179;
--primary-1: oklch(
calc(var(--l-base)) calc(var(--c-peak) * 0.26) var(--primary)
);
--primary-2: oklch(
calc(var(--l-base) - var(--l-step)) calc(var(--c-peak) * 0.46)
var(--primary)
);
--primary-3: oklch(
calc(var(--l-base) - var(--l-step) * 2) calc(var(--c-peak) * 0.68)
var(--primary)
);
--primary-4: oklch(
calc(var(--l-base) - var(--l-step) * 3) calc(var(--c-peak) * 0.91)
var(--primary)
);
--primary-5: oklch(
calc(var(--l-base) - var(--l-step) * 4) var(--c-peak) var(--primary)
);
--primary-6: oklch(
calc(var(--l-base) - var(--l-step) * 5) calc(var(--c-peak) * 0.9)
var(--primary)
);
--primary-7: oklch(
calc(var(--l-base) - var(--l-step) * 6) calc(var(--c-peak) * 0.79)
var(--primary)
);
--primary-8: oklch(
calc(var(--l-base) - var(--l-step) * 7) calc(var(--c-peak) * 0.69)
var(--primary)
);
--primary-9: oklch(
calc(var(--l-base) - var(--l-step) * 8) calc(var(--c-peak) * 0.59)
var(--primary)
);
--primary-10: oklch(
calc(var(--l-base) - var(--l-step) * 9) calc(var(--c-peak) * 0.48)
var(--primary)
);
--primary-11: oklch(
calc(var(--l-base) - var(--l-step) * 10) calc(var(--c-peak) * 0.38)
var(--primary)
);
--primary-12: oklch(
calc(var(--l-base) - var(--l-step) * 11) calc(var(--c-peak) * 0.27)
var(--primary)
);
--primary-13: oklch(
calc(var(--l-base) - var(--l-step) * 12) calc(var(--c-peak) * 0.17)
var(--primary)
);
--secondary: calc(180deg - var(--primary));
--secondary-1: oklch(
calc(var(--l-base)) calc(var(--c-peak) * 0.26) var(--secondary)
);
--secondary-2: oklch(
calc(var(--l-base) - var(--l-step)) calc(var(--c-peak) * 0.46)
var(--secondary)
);
--secondary-3: oklch(
calc(var(--l-base) - var(--l-step) * 2) calc(var(--c-peak) * 0.68)
var(--secondary)
);
--secondary-4: oklch(
calc(var(--l-base) - var(--l-step) * 3) calc(var(--c-peak) * 0.91)
var(--secondary)
);
--secondary-5: oklch(
calc(var(--l-base) - var(--l-step) * 4) var(--c-peak) var(--secondary)
);
--secondary-6: oklch(
calc(var(--l-base) - var(--l-step) * 5) calc(var(--c-peak) * 0.9)
var(--secondary)
);
--secondary-7: oklch(
calc(var(--l-base) - var(--l-step) * 6) calc(var(--c-peak) * 0.79)
var(--secondary)
);
--secondary-8: oklch(
calc(var(--l-base) - var(--l-step) * 7) calc(var(--c-peak) * 0.69)
var(--secondary)
);
--secondary-9: oklch(
calc(var(--l-base) - var(--l-step) * 8) calc(var(--c-peak) * 0.59)
var(--secondary)
);
--secondary-10: oklch(
calc(var(--l-base) - var(--l-step) * 9) calc(var(--c-peak) * 0.48)
var(--secondary)
);
--secondary-11: oklch(
calc(var(--l-base) - var(--l-step) * 10) calc(var(--c-peak) * 0.38)
var(--secondary)
);
--secondary-12: oklch(
calc(var(--l-base) - var(--l-step) * 11) calc(var(--c-peak) * 0.27)
var(--secondary)
);
--secondary-13: oklch(
calc(var(--l-base) - var(--l-step) * 12) calc(var(--c-peak) * 0.17)
var(--secondary)
);
}
html,
body,
div,
span,
object,
iframe,
figure,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
code,
em,
img,
small,
strike,
strong,
sub,
sup,
tt,
b,
u,
i,
ol,
ul,
li,
fieldset,
form,
label,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
main,
canvas,
embed,
footer,
header,
nav,
section,
video {
margin: 0;
padding: 0;
border: 0;
box-sizing: border-box;
font-size: 100%;
color: var(--primary-1);
font-size-adjust: 0.75;
vertical-align: baseline;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
}
body {
min-height: 100vh;
padding: 0 1rem;
/* background-color:; */
/* '3px-tile.png', */
/* 'arabesque.png', */
/* 'beige-paper.png', */
/* 'binding-dark.png', */
/* '45-degree-fabric-light.png' */
background-image: url("/patterns/arabesque.png"),
linear-gradient(
var(--gradient-degree),
var(--primary-12) 10%,
var(--primary-10) 70%
);
background-attachment: fixed;
}
-7
View File
@@ -1,7 +0,0 @@
$blue: oklch(0.76 0.0358 233.23);
$yellow: oklch(0.84 0.123 100);
$orange: oklch(0.76 0.239 65);
$brown: oklch(0.36 0.042 42);
$green: oklch(0.22 0.0211 174);
$green-42: oklch(0.42 0.042 142);
Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

+95
View File
@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="4in"
height="1in"
viewBox="0 0 101.6002 25.40005"
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:version="1.4.4 (dcaf3e7d9e, 2026-05-05)"
sodipodi:docname="SF26-embroidery.svg"
inkscape:export-filename="SF26-embroidery.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.24705882"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="in"
inkscape:zoom="2.0453984"
inkscape:cx="271.58523"
inkscape:cy="20.044995"
inkscape:window-width="2280"
inkscape:window-height="1360"
inkscape:window-x="26"
inkscape:window-y="23"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" /><defs
id="defs1"><rect
x="166.81557"
y="437.54904"
width="233.52373"
height="218.40071"
id="rect1" /></defs><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><g
inkscape:label="Layer 1"
id="layer1-4"
transform="matrix(0.09171297,1.6006962e-4,-1.6006962e-4,0.09171297,50.533542,0.39664716)"
style="stroke-width:11.2876;stroke-dasharray:none"><path
style="display:inline;fill:none;stroke:#000000;stroke-width:11.2876;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="m 67.708856,241.99975 c -24.781803,-23.9035 -54.07957,-97.83849 -55.686807,-113.0705 -18.6991621,10.48953 2.11406,92.55202 20.124305,129.96719 l 100.147616,-0.41295 c 34.19996,-61.10911 21.20237,-94.51691 14.75986,-127.03281 -56.306535,32.71724 -34.97525,77.3054 -94.925743,126.28552"
id="path1"
sodipodi:nodetypes="cccccc"
inkscape:label="base" /><path
style="display:inline;fill:none;stroke:#000000;stroke-width:11.2876;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="M 23.175841,161.67706 C 26.411075,101.86782 48.599531,84.187573 68.991489,73.181806 114.20802,87.265465 116.76073,126.68515 127.36434,146.09424"
id="path2"
sodipodi:nodetypes="ccc"
inkscape:label="middle" /><path
style="display:inline;fill:none;stroke:#000000;stroke-width:11.2876;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="M 15.863958,142.02296 C 23.715404,88.14624 34.770433,13.417556 60.176642,7.2796304 69.013186,25.012525 66.803066,46.478644 68.095073,72.125361 67.714309,47.478972 65.416728,18.381159 72.435575,6.2426585 99.840579,1.7640546 117.87907,93.294068 138.89664,135.47029"
id="path3"
sodipodi:nodetypes="ccccc"
inkscape:label="top" /><text
xml:space="preserve"
transform="matrix(0.46056331,0,0,0.46056331,-44.629128,-96.745906)"
id="text1"
style="writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1);shape-padding:0;display:none;fill:#50167d;fill-opacity:1;stroke:#000000;stroke-width:24.5082;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;paint-order:stroke fill markers"
inkscape:label="year"><tspan
x="166.81641"
y="583.12886"
id="tspan6"><tspan
style="font-size:160px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif, Normal'"
id="tspan5">26</tspan></tspan></text></g><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.2593px;font-family:Charter;-inkscape-font-specification:'Charter, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.0960606;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
x="0.36601716"
y="20.596315"
id="text2"><tspan
sodipodi:role="line"
id="tspan1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.2593px;font-family:Charter;-inkscape-font-specification:'Charter, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke-width:0.0960614"
x="0.36601716"
y="20.596315">Sludge</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.9204px;font-family:Charter;-inkscape-font-specification:'Charter, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.105537;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
x="66.054001"
y="20.401834"
id="text3"><tspan
sodipodi:role="line"
id="tspan2"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.9204px;font-family:Charter;-inkscape-font-specification:'Charter, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke-width:0.105537"
x="66.054001"
y="20.401834">Farm</tspan></text></g></svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

Before

Width:  |  Height:  |  Size: 405 KiB

After

Width:  |  Height:  |  Size: 405 KiB

Before

Width:  |  Height:  |  Size: 519 KiB

After

Width:  |  Height:  |  Size: 519 KiB

Before

Width:  |  Height:  |  Size: 416 KiB

After

Width:  |  Height:  |  Size: 416 KiB

Before

Width:  |  Height:  |  Size: 365 KiB

After

Width:  |  Height:  |  Size: 365 KiB

Before

Width:  |  Height:  |  Size: 392 KiB

After

Width:  |  Height:  |  Size: 392 KiB

Before

Width:  |  Height:  |  Size: 391 KiB

After

Width:  |  Height:  |  Size: 391 KiB

Before

Width:  |  Height:  |  Size: 434 KiB

After

Width:  |  Height:  |  Size: 434 KiB

Before

Width:  |  Height:  |  Size: 515 KiB

After

Width:  |  Height:  |  Size: 515 KiB

+10
View File
@@ -0,0 +1,10 @@
import { SMTP_TOKEN, SMTP_USERNAME } from '$env/static/private'
import nodemailer from "nodemailer"
export const transporter = nodemailer.createTransport({
service: "Proton",
auth: {
user: SMTP_USERNAME,
pass: SMTP_TOKEN
},
authMethod: "PLAIN"
} as nodemailer.TransportOptions)
+25 -171
View File
@@ -1,4 +1,5 @@
<script lang="ts">
import "../app.css";
interface Props {
data: {};
children: any;
@@ -14,7 +15,12 @@
while (Math.abs(random - hue) <= TOLERANCE) {
random = Math.floor(Math.random() * 360);
}
document.documentElement.style.setProperty("--primary", String(random));
console.log(random);
document.documentElement.style.setProperty(
"--primary",
String(random + "deg"),
);
}
</script>
@@ -23,126 +29,29 @@
<meta name="description" content="Sludge's internet facing spot" />
</svelte:head>
<div id="buddy">
<nav>
<nav>
<a href="/">Sludge</a>
<button onclick={change_theme}>&#127752;</button>
<a href="/fest">Fest</a>
<button onclick={change_theme}>&#127922&#127752;</button>
<!-- <a href="/fest">Fest</a> -->
<a href="/shirts">Shirts</a>
<a href="/pork">Pork</a>
</nav>
</nav>
<main>
<main>
{@render children()}
</main>
</div>
</main>
<style lang="scss">
:root {
--green-42: oklch(0.42 0.042 142);
--br: 0.375rem;
--bs: 2px 2px 9px var(--primary-8);
--primary: 42;
--primary-1: oklch(0.91 0.046 var(--primary));
--primary-2: oklch(0.843 0.083 var(--primary));
--primary-3: oklch(0.777 0.122 var(--primary));
--primary-4: oklch(0.71 0.163 var(--primary));
--primary-5: oklch(0.643 0.179 var(--primary));
--primary-6: oklch(0.577 0.161 var(--primary));
--primary-7: oklch(0.51 0.142 var(--primary));
--primary-8: oklch(0.443 0.124 var(--primary));
--primary-9: oklch(0.377 0.105 var(--primary));
--primary-10: oklch(0.31 0.086 var(--primary));
--primary-11: oklch(0.243 0.068 var(--primary));
--primary-12: oklch(0.177 0.049 var(--primary));
--primary-13: oklch(0.11 0.031 var(--primary));
}
#buddy {
min-height: 100vh;
background-color: var(--primary-11);
// '3px-tile.png',
// 'arabesque.png',
// 'beige-paper.png',
// 'binding-dark.png',
// '45-degree-fabric-light.png'
background-image: url("/patterns/arabesque.png");
background-attachment: fixed;
}
:global {
html,
body,
div,
span,
object,
iframe,
figure,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
code,
em,
img,
small,
strike,
strong,
sub,
sup,
tt,
b,
u,
i,
ol,
ul,
li,
fieldset,
form,
label,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
main,
canvas,
embed,
footer,
header,
nav,
section,
video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
// font: inherit;
color: var(--primary-1);
font-family: "Garamond", serif;
font-size-adjust: 0.75;
vertical-align: baseline;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
}
}
nav {
display: flex;
padding: 1rem;
flex-wrap: wrap;
padding: 0.5rem 0;
gap: 1rem;
justify-content: flex-end;
text-shadow: 3px 3px 3px var(--primary-9);
text-shadow: 3px 3px 3px var(--secondary-7);
a {
font-weight: 700;
color: var(--secondary-1);
line-height: 2rem;
font-size: 1.5rem;
line-height: 1.5rem;
@@ -151,11 +60,11 @@
margin-right: auto;
}
&:hover {
color: var(--primary-3);
color: var(--secondary-3);
}
}
button {
background: var(--primary-8);
background: transparent(var(--secondary-5));
border-radius: var(--br);
border: none;
width: fit-content;
@@ -166,9 +75,9 @@
font-size: 1.5rem;
line-height: 1.5rem;
font-weight: 900;
color: var(--primary-1);
color: var(--secondary-5);
&:hover {
background: var(--primary-10);
background: var(--secondary-6);
}
}
}
@@ -176,10 +85,11 @@
main {
display: flex;
flex-direction: row;
padding: 1rem;
// padding: 1rem;
justify-content: center;
}
@media screen and (min-width: 600px) {
@media screen and (min-width: 640px) {
nav {
padding: 1rem 20%;
flex-direction: row;
@@ -188,60 +98,4 @@
}
}
}
@font-face {
font-family: "Baskerville";
font-display: swap;
font-style: italic;
font-weight: 500;
src: url(/font/LibreBaskerville-Italic.otf) format("opentype");
}
@font-face {
font-family: "Baskerville";
font-display: swap;
font-style: normal;
font-weight: 900;
src: url(/font/LibreBaskerville-Bold.otf) format("opentype");
}
@font-face {
font-family: "Baskerville";
font-display: swap;
font-style: normal;
font-weight: 500;
src: url(/font/LibreBaskerville-Regular.otf) format("opentype");
}
@font-face {
font-family: "Initials";
font-display: swap;
font-style: normal;
font-weight: 500;
src: url(/font/EBGaramond-Initials.otf) format("opentype");
}
@font-face {
font-family: "Initials";
font-display: swap;
font-style: normal;
font-weight: 100;
src: url(/font/EBGaramond-InitialsF1.otf) format("opentype");
}
@font-face {
font-family: "Initials";
font-display: swap;
font-style: normal;
font-weight: 200;
src: url(/font/EBGaramond-InitialsF2.otf) format("opentype");
}
@font-face {
font-family: "Garamond";
font-display: swap;
font-style: italic;
src: url(/font/EBGaramond-Italic.ttf) format("truetype");
}
@font-face {
font-family: "Garamond";
font-display: swap;
font-style: normal;
src: url(/font/EBGaramond.ttf) format("truetype");
}
</style>
+38 -25
View File
@@ -1,40 +1,53 @@
<script lang="ts">
// let { data, form } = $props<{ html: string }>();
const cards = [
{
href: "/shirts",
name: "Shirts",
blurb:
"Enough people told me they wanted these that I decided to make an order form",
},
{
href: "/fest",
name: "Sludge Fest",
blurb:
"Sludge Fest is a homegrown music festival of friends, fanfare and fuckery; come, join us for a fun weekend out. Make some mates and memories",
},
{
href: "/pork",
name: "Pork",
blurb:
"I made the mistake of getting hogs that are better at their job than I am so please take some of it off my hands",
},
{
href: "https://plotters.sludge.link",
name: "Plotters",
blurb:
"This is a game we slapped together to see if we can agree on things. Its definitely not the same as some of those other games",
},
];
</script>
<section>
<h1><b title="Sludge">S</b>&amp;<b title="Friends">F</b></h1>
<h3>Here we make friends and mistakes</h3>
<div>
{#each cards as { href, name, blurb }}
<div>
<a href="/fest"><h2>Sludge Fest</h2></a>
<a {href}><h2>{name}</h2></a>
<p>
Sludge Fest is a homegrown music festival of friends and fuckery; come
join us for a fun weekend out and make some memories
</p>
</div>
<div>
<a href="/pork"><h2>Pork</h2></a>
<p>
I made the mistake of getting hogs that are better at their job than I
am so please take some of it off my hands
</p>
</div>
<div>
<a href="https://plotters.sludge.link"><h2>Plotters</h2></a>
<p>
This is a game we slapped together to see if we can agree on things. Its
definitely not the same as some of those other games
{blurb}
</p>
</div>
{/each}
</div>
</section>
<style lang="scss">
section {
max-width: 60rem;
margin: 1rem auto;
display: flex;
gap: 1rem;
flex-direction: column;
align-items: center;
div {
@@ -42,30 +55,30 @@
flex-direction: column;
gap: 1rem;
a:hover {
color: var(--primary-3);
color: var(--secondary-3);
}
div {
background: var(--primary-8);
padding: 2rem 1.5rem;
background: transparent(var(--secondary-9));
gap: 0.5rem;
padding: 0.25rem 1.5rem 2rem 1.5rem;
border-radius: var(--br);
max-width: 40rem;
}
}
h1 {
line-height: 5rem;
font-size: 1.5rem;
text-align: center;
text-justify: center;
color: var(--secondary-3);
b {
font-family: Initials;
color: inherit;
font-weight: 500;
font-size: 3.5rem;
padding: 0.5rem;
}
}
h3 {
// color: oklch(from var(--primary-4) calc(l + 0.2) c h);
color: var(--primary-9);
color: transparent(var(--secondary-2), 65%);
font-size: 0.75rem;
}
h2 {
+12 -10
View File
@@ -1,7 +1,7 @@
<script lang="javascript">
let {data} = $props()
let { data } = $props();
$inspect("b",data)
$inspect("b", data);
</script>
<svelte:head>
@@ -12,29 +12,30 @@
<section>
<h1>I might decide to write sometime</h1>
<ol>
{#each data.blags as {title, uri, created_at}}
<li><a href="blag/{uri}">{title}</a> @ <p>{new Date(created_at).toLocaleDateString()}</p></li>
{#each data.blags as { title, uri, created_at }}
<li>
<a href="blag/{uri}">{title}</a> @
<p>{new Date(created_at).toLocaleDateString()}</p>
</li>
{/each}
</ol>
</section>
<style lang="scss">
@use '/src/app.scss' as *;
section {
margin: 1rem auto;
min-width: 60rem;
display: flex;
flex-direction: column;
align-items: center;
h1{
h1 {
font-size: 1.5rem;
text-shadow: 3px 3px 3px $green;
text-shadow: 3px 3px 3px var(--primary-8);
}
ol{
ol {
list-style: none;
padding: 0;
li{
li {
display: flex;
gap: 1rem;
justify-content: space-between;
@@ -42,3 +43,4 @@
}
}
</style>
+4 -6
View File
@@ -22,7 +22,6 @@
</section>
<style lang="scss">
@use "/src/app.scss" as *;
section {
display: flex;
flex-direction: column;
@@ -38,14 +37,14 @@
text-align: center;
}
:global(hr) {
color: $green;
color: var(--primary-1);
}
:global(blockquote) {
background: $green-42;
border-left: 1rem solid $green;
background: var(--primary-6);
border-left: 1rem solid var(--primary-8);
padding: 0.5rem 1rem;
&:before {
color: $orange;
color: var(--secondary-5);
content: open-quote;
font-size: 1.5rem;
line-height: 0.1rem;
@@ -61,4 +60,3 @@
}
}
</style>
+13 -15
View File
@@ -53,8 +53,6 @@ Regular; hmm double enter gets a new
</section>
<style lang="scss">
@use "/src/app.scss" as *;
section {
width: 100%;
display: flex;
@@ -74,9 +72,9 @@ Regular; hmm double enter gets a new
margin: 1rem 0;
gap: 1rem;
input {
background: $green-42;
color: $yellow;
border: solid 3px $green;
background: var(--primary-7);
color: var(--primary-1);
border: solid 3px var(--primary-5);
border-radius: 5px;
&:focus-visible {
outline: none;
@@ -88,10 +86,10 @@ Regular; hmm double enter gets a new
width: 100%;
height: 40rem;
line-height: 1.5;
border: 1px solid $green;
border: 1px solid var(--primary-7);
border-radius: 5px;
background: $green-42;
color: $yellow;
background: var(--primary-5);
color: var(--primary-1);
font-family: "Garamond";
&:focus-visible {
outline: none;
@@ -100,9 +98,9 @@ Regular; hmm double enter gets a new
button {
padding: 0.25rem 0.75rem;
margin-top: 1rem;
background-color: $green-42;
color: $yellow;
border: solid 3px $green;
background-color: var(--primary-5);
color: var(--primary-1);
border: solid 3px var(--primary-7);
border-radius: 5px;
align-self: center;
}
@@ -119,14 +117,14 @@ Regular; hmm double enter gets a new
text-align: center;
}
:global(hr) {
color: $green;
color: var(--primary-7);
}
:global(blockquote) {
background: $green-42;
border-left: 1rem solid $green;
background: var(--primary-7);
border-left: 1rem solid var(--primary-7);
padding: 0.5rem 1rem;
&:before {
color: $orange;
color: var(--secondary-5);
content: open-quote;
font-size: 1.5rem;
line-height: 0.1rem;
+12 -2
View File
@@ -18,11 +18,18 @@
text-align: center;
padding-top: 2rem;
text-shadow: 3px 3px 3px var(--primary-9);
a {
color: var(--secondary-4);
&:hover {
color: var(--secondary-2);
}
}
h1 {
font-size: 2rem;
color: var(--secondary-4);
}
hr {
background: var(--primary-4);
background: var(--secondary-4);
border: none;
height: 0.25rem;
margin: 2rem 0;
@@ -30,6 +37,9 @@
}
}
@media screen and (min-width: 600px) {
@media screen and (min-width: 640px) {
section {
width: 100%;
}
}
</style>
+65 -15
View File
@@ -2,20 +2,79 @@ export async function load({ }) {
console.log("sludge fest application")
}
import { SMTP_USERNAME } from '$env/static/private'
import { transporter } from "$lib/email"
export const actions = {
default: async ({ request }) => {
let data = await request.formData();
console.log("apply", data);
// console.log("apply", data);
let artist = {
name: data.get('artist_name'),
city: data.get('artist_city'),
contact: {
name: data.get('artist_contact_name'),
number: data.get('artist_contact_number'),
email: data.get('artist_contact_email')
},
type: data.get("act_type") != 'other' ? data.get("act_type") : data.get('other_act'),
genre: data.get("act_genre"),
amount_performers: data.get("act_performer_amount"),
biography: data.get("act_bio"),
links: data.get("act_links"),
performance_time: data.get('perf_time') != 'other' ? data.get('perf_time') : data.get('other_time'),
performance_length: data.get('perf_length') != 'other' ? data.get('perf_length') : data.get('other_length'),
tech_needs: data.get("performance_needs"),
what_drew_you: data.get('olt_draw'),
any_other_questions: data.get("olt_know"),
donation_acceptance: data.get('donation_confirmation')
}
console.log("appl", artist)
const artist_string = [
artist.name,
artist.city,
artist.contact?.name,
artist.contact?.number,
artist.contact?.email,
artist.type,
artist.genre,
artist.amount_performers,
artist.biography,
artist.links,
artist.performance_time,
artist.performance_length,
artist.tech_needs,
artist.what_drew_you,
artist.any_other_questions,
artist.donation_acceptance
].map(v => {
// Escape for CSV safety
const s = String(v ?? '');
return s.includes(',') || s.includes('"') ? `"${s.replace(/"/g, '""')}"` : s;
}).join(', ');
// console.log(artist_string)
transporter.sendMail({
from: SMTP_USERNAME,
to: "fuckyou@sludge.link",
subject: "This is a test",
to: "fuckyou@sludge.link, black.ga@protonmail.com",
subject: "Sludge Fest Application for " + artist.name,
attachments: [{
filename: artist.name + '-application.csv',
content: artist_string
},
{
filename: artist.name + '-application.json',
content: JSON.stringify(artist)
}
],
html: `
<!DOCTYPE html>
<html>
<body>
<h1>Hello email</h1 >
<h1>New App just dropped!! </h1>
<pre> ${JSON.stringify(artist, null, 2).replace(/&/g, '&amp').replace(/</g, '&lt').replace(/>/g, '&gt')} </pre>
</body>
</html
`
@@ -29,13 +88,4 @@ export const actions = {
}
}
import { SMTP_TOKEN, SMTP_USERNAME } from '$env/static/private'
import nodemailer from "nodemailer"
const transporter = nodemailer.createTransport({
service: "Proton",
auth: {
user: SMTP_USERNAME,
pass: SMTP_TOKEN
},
authMethod: "PLAIN"
} as nodemailer.TransportOptions)
+95 -18
View File
@@ -26,23 +26,23 @@
<fieldset>
<legend> Who are You? </legend>
<label>
Band/Artist Name
<p>Band/Artist Name</p>
<input type="text" name="artist_name" />
</label>
<label>
Primary Contact Name
<p>Primary Contact Name</p>
<input type="text" name="artist_contact_name" />
</label>
<label>
Phone Number
<p>Phone Number</p>
<input type="text" name="artist_contact_number" />
</label>
<label>
Email
<p>Email</p>
<input type="text" name="artist_contact_email" />
</label>
<label>
City & State of Origin
<p>City & State of Origin</p>
<input type="text" name="artist_city" />
</label>
</fieldset>
@@ -93,19 +93,19 @@
</ul>
</label>
<label>
Genre(s)
<p>Genre(s)</p>
<input type="text" name="act_genre" />
</label>
<label>
Number of Members Performing
<p>Number of Members Performing</p>
<input type="text" name="act_performer_amount" />
</label>
<label>
Brief Bio
<p>Brief Bio</p>
<input type="text" name="act_bio" />
</label>
<label>
Links - BandCamp | Spotify | Youtube | Website | Social Media
<p>Links - BandCamp | Spotify | Youtube | Website | Social Media</p>
<input type="text" name="act_links" />
</label>
</fieldset>
@@ -197,12 +197,12 @@
<fieldset>
<legend>One Last Thing</legend>
<label>
What drew you to Sludge Fest?
<p>What drew you to Sludge Fest?</p>
<input type="text" name="olt_draw" />
</label>
<label>
Anything else you'd like us to know?
<input type="text" name="olt_know" />
<p>Anything else you'd like us to know?</p>
<textarea name="olt_know"></textarea>
</label>
<label>
Preferred Time
@@ -242,7 +242,20 @@
<style lang="scss">
section {
max-width: 50rem;
margin: 0 auto;
width: 100%;
margin: 0.5rem auto;
text-align: center;
div {
margin: auto 0.5rem;
h1 {
color: var(--secondary-3);
font-size: 2rem;
font-weight: 900;
}
b {
color: var(--secondary-2);
}
}
form {
display: flex;
flex-direction: column;
@@ -266,29 +279,69 @@
display: flex;
flex-direction: column;
gap: 1rem;
border: thick outset var(--primary-5);
border: thick solid transparent;
background:
url("/patterns/45-degree-fabric-light.png") padding-box,
linear-gradient(
var(--gradient-degree),
var(--primary-12) 0%,
var(--primary-11) 100%
)
padding-box,
linear-gradient(
var(--gradient-degree),
var(--secondary-7),
var(--secondary-3)
)
border-box;
padding: 0 1rem 1rem 1rem;
border-radius: var(--br);
legend {
color: var(--secondary-3);
font-weight: 900;
font-size: 1.125rem;
margin-left: 1rem;
padding: 0 0.5rem;
background: url("/patterns/45-degree-fabric-light.png"),
var(--primary-11);
border-radius: var(--br) var(--br) 0 0;
}
label {
display: flex;
gap: 1rem;
&:has(ul) {
color: var(--secondary-2);
flex-direction: column;
&:has(ul) {
label {
flex-direction: row;
}
}
p {
color: var(--secondary-2);
}
input {
background: var(--primary-9);
height: 2rem;
align-self: center;
width: 100%;
}
input,
textarea {
background: linear-gradient(
var(--gradient-degree),
var(--primary-11),
var(--primary-10)
);
border: none;
outline: none;
border-radius: var(--br);
color: var(--primary-1);
font-size: 1rem;
padding: 0 0.5rem;
accent-color: var(--primary-6);
accent-color: var(--primary-8);
}
input[type="radio"] {
flex-basis: 1rem;
}
ul {
display: flex;
@@ -297,4 +350,28 @@
}
}
}
@media screen and (min-width: 640px) {
section {
text-align: left;
p,
li {
font-size: 1.15rem;
}
fieldset {
label {
flex-direction: row;
gap: 1rem;
&:has(ul) {
flex-direction: column;
}
p,
input,
textarea {
text-align: right;
flex-basis: 50%;
}
}
}
}
}
</style>
+14 -14
View File
@@ -21,7 +21,7 @@ const pork = [
},
{
name: "bacon",
src: "/src/lib/assests/pork-links.jpg",
src: "/src/lib/assests/bacon.jpg",
cured: true,
tubed: false,
lb_package: true,
@@ -35,7 +35,7 @@ const pork = [
},
{
name: "bratwurst",
src: "/src/lib/assests/pork-links.jpg",
// src: "/src/lib/assests/bratwursts.jpg",
cured: false,
tubed: true,
lb_package: true,
@@ -52,7 +52,7 @@ const pork = [
},
{
name: "rings",
src: "/src/lib/assests/pork-links.jpg",
// src: "/src/lib/assests/rings.jpg",
cured: false,
tubed: true,
lb_package: true,
@@ -63,7 +63,7 @@ const pork = [
},
{
name: "patties",
src: "/src/lib/assests/pork-links.jpg",
// src: "/src/lib/assests/patties.jpg",
cured: false,
tubed: false,
lb_package: true,
@@ -75,7 +75,7 @@ const pork = [
},
{
name: "ham",
src: "/src/lib/assests/pork-links.jpg",
src: "/src/lib/assests/hams.jpg",
cured: true,
tubed: false,
lb_package: false,
@@ -83,63 +83,63 @@ const pork = [
},
{
name: "raw ham",
src: "/src/lib/assests/pork-links.jpg",
// src: "/src/lib/assests/pork-links.jpg",
cured: false,
tubed: false,
avg_weight: { min: 7, max: 15 }
},
{
name: "loin roast",
src: "/src/lib/assests/pork-links.jpg",
src: "/src/lib/assests/loin-roast.jpg",
cured: false,
tubed: false,
avg_weight: { min: 3, max: 4 }
},
{
name: "chop",
src: "/src/lib/assests/pork-links.jpg",
src: "/src/lib/assests/chops.jpg",
cured: false,
tubed: false,
avg_weight: { min: 0.75, max: 1.5 }
},
{
name: "steak",
src: "/src/lib/assests/pork-links.jpg",
src: "/src/lib/assests/steak.jpg",
cured: false,
tubed: false,
avg_weight: { min: 1.5, max: 3 }
},
{
name: "belly",
src: "/src/lib/assests/pork-links.jpg",
// src: "/src/lib/assests/pork-links.jpg",
cured: false,
tubed: false,
avg_weight: { min: 7, max: 10 }
},
{
name: "spare ribs",
src: "/src/lib/assests/pork-links.jpg",
src: "/src/lib/assests/spare-ribs.jpg",
cured: false,
tubed: false,
avg_weight: { min: 2, max: 4 }
},
{
name: "butt",
src: "/src/lib/assests/pork-links.jpg",
// src: "/src/lib/assests/pork-links.jpg",
cured: false,
tubed: false,
avg_weight: { min: 3, max: 5 }
},
{
name: "smoked hocks",
src: "/src/lib/assests/pork-links.jpg",
src: "/src/lib/assests/smoked-hocks.jpg",
cured: true,
tubed: false,
avg_weight: { min: 1, max: 2 }
},
{
name: "roast",
src: "/src/lib/assests/pork-links.jpg",
src: "/src/lib/assests/roast.jpg",
cured: false,
tubed: false,
avg_weight: { min: 4, max: 7 }
+18 -3
View File
@@ -41,7 +41,11 @@
{#each data.pork as { name, src, cured, tubed, lb_package, flavors, avg_weight }}
<card id={name}>
<h3>{name}</h3>
{#if src != undefined}
<img {src} alt="A photo of {name}" />
{:else}
<hr />
{/if}
<div>
{#if cured}
<span>Cured!</span>
@@ -82,6 +86,7 @@
b {
font-family: "Initials";
font-weight: 100;
color: var(--secondary-5);
}
section {
@@ -92,6 +97,7 @@
justify-content: center;
h1 {
font-family: "Initials";
color: var(--secondary-4);
text-align: center;
font-size: 2.5rem;
font-weight: 500;
@@ -113,7 +119,7 @@
gap: 1rem;
width: 100%;
card {
background: var(--primary-9);
background: var(--secondary-9);
border-radius: var(--br);
padding: 1rem;
display: flex;
@@ -124,6 +130,12 @@
width: 100%;
border-radius: var(--br);
}
hr {
height: 1rem;
color: var(--secondary-9);
border: none;
width: 1rem;
}
div {
display: flex;
justify-content: space-around;
@@ -132,17 +144,20 @@
span {
// font-size: 0.75rem;
background: var(--primary-5);
color: var(--primary-10);
font-weight: 900;
width: fit-content;
border-radius: var(--br);
padding: 0.125rem 0.325rem;
}
h3 {
position: absolute;
background: var(--primary-9);
background: var(--secondary-9);
border-radius: 0 0 var(--br) 0;
padding: 0.125rem 0.325rem;
padding: 0.25rem 0.5rem;
top: 1rem;
text-transform: capitalize;
color: var(--primary-5);
}
}
+71
View File
@@ -0,0 +1,71 @@
export async function load({ }) {
console.log("shirt preorder page")
}
import { SMTP_USERNAME } from '$env/static/private'
import { transporter } from "$lib/email"
export const actions = {
default: async ({ request }) => {
let data = await request.formData();
// console.log("apply", data);
let order = {
name: data.get('name'),
email: data.get('email'),
amount: data.get('amount'),
estimated_price: data.get('estimated_price'),
}
// console.log("shirt", order, data)
const type = data.getAll('type')
const color = data.getAll('color')
const size = data.getAll('size')
// console.log({ type, color, size })
if (Array.isArray(type)) {
for (let index in type) {
console.log(index)
const key = `tshirt-${index}`
const value = {
type: type[index],
color: color[index],
size: size[index]
}
order = {
...order,
[key]: value
}
}
}
console.log("shirt", order)
transporter.sendMail({
from: SMTP_USERNAME,
to: "farm@sludge.link",
subject: "Sludge Farm Shirt Preorder",
attachments: [{
filename: order.name + '-shirts.json',
content: JSON.stringify(order)
}
],
html: `
<!doctype html>
<html>
<body>
<h1>new order for ${order.name}!!</h1>
<pre> ${JSON.stringify(order, null, 2).replace(/&/g, '&amp').replace(/</g, '&lt').replace(/>/g, '&gt')} </pre>
</body>
</html
`
}, (error, info) => {
if (error) {
console.error("Error sending email:", error);
} else {
console.log("Email sent successfully:", info.response);
}
})
}
}
+211
View File
@@ -0,0 +1,211 @@
<script lang="ts">
const decoration = 4.5;
const USD = new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD",
minimumFractionDigits: 2,
});
const shirt_types = [
{ shirt_type: "CC6030", name: "Comfort Colors" },
{ shirt_type: "PC61PT", name: "Port & Co Pocket Talls" },
{ shirt_type: "PC61P", name: "Port & Co Pocket" },
];
const shirt_sizes = ["S", "M", "L", "XL", "2XL", "3XL", "4XL"];
const shirt_styles = [
{
blurb:
"100% cotton with cool pastel colors with a washed fade; suspender sun fade not included",
href: "https://ssactivewear.com/p/comfort_colors/6030",
style_name: "Comfort Colors",
cost: 13.65,
},
{
blurb:
"OG Will shirts in regular belly size, no belly button barbed wire holes however",
href: "https://www.sanmar.com/p/1300",
style_name: "Port & Co Essential Pocket Tee",
cost: 11.3,
},
{
blurb:
"DoubleOG Will shirts for humans with plentiful rotundity, or tall torso's I suppose. I get them to go over ma belly.",
href: "https://www.sanmar.com/p/5771",
style_name: "Port & Co Essential Pocket Tee Tall",
cost: 14.3,
},
];
let shirts = $state(1);
let estimated_price = $derived(shirts * 18);
import SludgeLogo from "$lib/assests/SF26-embroidery.svg";
</script>
<form method="POST">
<fieldset>
<legend>Shirt Styles</legend>
<img
src={SludgeLogo}
height="100%"
width="100%"
alt="Sludge Farm logo with a traced outline of a maple bud"
/>
<p>
Above is the embroidery I will have above the pocket. If you want to get
specific on embroidery color we can work with that but by default the
thread color will be light(white) for dark colored shirts and dark(black)
for light colored shirts
</p>
<p>
All these shirts are 6.1 ounce, 100% cotton (unless you get the heather or
safety colors). It makes them a little heavier; but they actually survive
active wear as a work shirt. Of course with the resplendent pocket.
</p>
<ul>
{#each shirt_styles as { style_name, cost, blurb, href }}
<li>
<a target="_blank" {href}>
{style_name}
</a>
<span>{USD.format(cost + decoration)}</span>
<p>{blurb}</p>
</li>
{/each}
</ul>
</fieldset>
<fieldset>
<legend> Request </legend>
<div>
<label for="name">Name:</label>
<input required name="name" type="text" />
</div>
<div>
<label for="email">Email:</label>
<input required name="email" type="email" />
</div>
<div>
<span>
{shirts} shirt{shirts > 1 ? "s" : ""} for roughly &approx;
{USD.format(estimated_price)}
</span>
<input hidden readonly name="amount" type="number" bind:value={shirts} />
<input
hidden
readonly
name="estimated_price"
type="number"
bind:value={estimated_price}
/>
</div>
<div>
<button type="button" onclick={() => shirts++}>Add</button>
<button type="button" onclick={() => shirts--}>Remove</button>
</div>
<div>
<ul>
{#each { length: shirts }, i}
<li>
<h4>Shirt #{i + 1}</h4>
<div>
<label for="type">Type:</label>
<select required name="type">
{#each shirt_types as { shirt_type, name }}
<option value={shirt_type}>{name}</option>
{/each}
</select>
</div>
<div>
<label for="color">Color Name from Website:</label>
<input
required
type="text"
name="color"
placeholder="Type one from the website"
/>
</div>
<div>
<label for="size">Size:</label>
<select required name="size">
{#each shirt_sizes as size}
<option>{size}</option>
{/each}
</select>
</div>
</li>
{/each}
</ul>
</div>
<h4>I will be in touch if there are issues.</h4>
<button>Submit</button>
</fieldset>
</form>
<style lang="scss">
form {
width: 100%;
max-width: 45rem;
display: flex;
flex-direction: column;
gap: 1rem;
align-items: center;
fieldset {
display: flex;
flex-direction: column;
gap: 1rem;
background: transparent(var(--secondary-5));
border-radius: var(--br);
padding: 0.25rem 1rem 1rem;
legend {
border-radius: var(--br);
background: var(--secondary-7);
}
p {
font-size: 0.75rem;
}
ul {
li {
display: flex;
flex-direction: column;
}
}
div {
width: 100%;
ul {
li {
gap: 1rem;
align-items: center;
div {
display: flex;
flex-direction: column;
}
}
}
}
}
input,
select,
button {
box-sizing: border-box;
background: var(--primary-8);
border-radius: var(--br);
color: var(--primary-1);
border: none;
padding: 0.25rem 0.5rem;
font-size: 1rem;
width: 100%;
}
button {
font-weight: 700;
width: fit-content;
background: transparent(var(--secondary-5));
align-self: center;
color: var(--primary-1);
&:hover {
background: var(--secondary-6);
}
}
}
</style>
+4
View File
@@ -0,0 +1,4 @@
@use 'sass:color';
@function transparent($color, $opacity: 75%) {
@return color-mix(in oklch, $color, transparent $opacity);
}
View File
Binary file not shown.
Binary file not shown.
+1 -4
View File
@@ -12,10 +12,7 @@ const config = {
// adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
// See https://svelte.dev/docs/kit/adapters for more information about adapters.
adapter: adapter(),
csrf: {
checkOrigin: true
}
adapter: adapter()
}
};
+16 -1
View File
@@ -1,9 +1,24 @@
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
import { dirname, join } from 'path';
import { fileURLToPath } from 'url';
const currentDir = dirname(fileURLToPath(import.meta.url))
export default defineConfig({
plugins: [sveltekit()],
server:{
server: {
port: 4242
},
css: {
preprocessorOptions: {
scss: {
api: 'modern',
additionalData: `
@use "${join(currentDir, './src/styles/functions')}" as *;
@use "${join(currentDir, './src/styles/variables')}" as *;
`
}
}
}
});