From ce47707134d95116d70d37893b3db421c004ca6f Mon Sep 17 00:00:00 2001 From: Kaan Barmore-Genc Date: Thu, 9 May 2024 22:33:58 -0500 Subject: [PATCH] Implement pagefind --- package-lock.json | 76 ++++++++++++++++++++++++++++++ package.json | 7 ++- src/_vars.scss | 2 + src/app.html | 7 +++ src/app.scss | 17 +++++++ src/routes/Header.svelte | 10 ++++ static/android-chrome-192x192.png | 4 +- static/android-chrome-512x512.png | 4 +- static/apple-touch-icon.png | 4 +- static/extra/Crafty Poster.pdf | 3 -- static/extra/DepAware Poster.pdf | 3 -- static/extra/kaangenc.gpg | 52 -------------------- static/favicon-16x16.png | 4 +- static/favicon-32x32.png | 4 +- static/favicon.ico | Bin 15406 -> 15406 bytes static/favicon.png | 4 +- 16 files changed, 129 insertions(+), 72 deletions(-) delete mode 100644 static/extra/Crafty Poster.pdf delete mode 100644 static/extra/DepAware Poster.pdf delete mode 100644 static/extra/kaangenc.gpg diff --git a/package-lock.json b/package-lock.json index e61c120..bc0019a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.1", "dependencies": { "@sveltejs/adapter-static": "^2.0.3", + "pagefind": "^1.1.0", "reading-time-estimator": "^1.11.0" }, "devDependencies": { @@ -240,6 +241,66 @@ "node": ">= 8" } }, + "node_modules/@pagefind/darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.1.0.tgz", + "integrity": "sha512-SLsXNLtSilGZjvqis8sX42fBWsWAVkcDh1oerxwqbac84HbiwxpxOC2jm8hRwcR0Z55HPZPWO77XeRix/8GwTg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@pagefind/darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.1.0.tgz", + "integrity": "sha512-QjQSE/L5oS1C8N8GdljGaWtjCBMgMtfrPAoiCmINTu9Y9dp0ggAyXvF8K7Qg3VyIMYJ6v8vg2PN7Z3b+AaAqUA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@pagefind/linux-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.1.0.tgz", + "integrity": "sha512-8zjYCa2BtNEL7KnXtysPtBELCyv5DSQ4yHeK/nsEq6w4ToAMTBl0K06khqxdSGgjMSwwrxvLzq3so0LC5Q14dA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pagefind/linux-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.1.0.tgz", + "integrity": "sha512-4lsg6VB7A6PWTwaP8oSmXV4O9H0IHX7AlwTDcfyT+YJo/sPXOVjqycD5cdBgqNLfUk8B9bkWcTDCRmJbHrKeCw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pagefind/windows-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.1.0.tgz", + "integrity": "sha512-OboCM76BcMKT9IoSfZuFhiqMRgTde8x4qDDvKulFmycgiJrlL5WnIqBHJLQxZq+o2KyZpoHF97iwsGAm8c32sQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@polka/url": { "version": "1.0.0-next.23", "license": "MIT" @@ -2010,6 +2071,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pagefind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.1.0.tgz", + "integrity": "sha512-1nmj0/vfYcMxNEQj0YDRp6bTVv9hI7HLdPhK/vBBYlrnwjATndQvHyicj5Y7pUHrpCFZpFnLVQXIF829tpFmaw==", + "bin": { + "pagefind": "lib/runner/bin.cjs" + }, + "optionalDependencies": { + "@pagefind/darwin-arm64": "1.1.0", + "@pagefind/darwin-x64": "1.1.0", + "@pagefind/linux-arm64": "1.1.0", + "@pagefind/linux-x64": "1.1.0", + "@pagefind/windows-x64": "1.1.0" + } + }, "node_modules/parent-module": { "version": "1.0.1", "dev": true, diff --git a/package.json b/package.json index 02e671f..ce3748a 100644 --- a/package.json +++ b/package.json @@ -4,12 +4,14 @@ "private": true, "scripts": { "dev": "vite dev", - "build": "vite build", + "build": "vite build && npm run build:pagefind", "preview": "vite preview", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --check . && eslint .", - "format": "prettier --write ." + "format": "prettier --write .", + "pagefind": "pagefind", + "build:pagefind": "pagefind --site .svelte-kit/output/prerendered/pages/" }, "devDependencies": { "@sveltejs/kit": "^1.27.6", @@ -37,6 +39,7 @@ "type": "module", "dependencies": { "@sveltejs/adapter-static": "^2.0.3", + "pagefind": "^1.1.0", "reading-time-estimator": "^1.11.0" } } diff --git a/src/_vars.scss b/src/_vars.scss index 139bf37..13769b9 100644 --- a/src/_vars.scss +++ b/src/_vars.scss @@ -5,3 +5,5 @@ $size-modal: 480px; $min-w-supported: 370px; $size-full-w: max(100vw, $min-w-supported); + +$border: 3px solid $color-accent; diff --git a/src/app.html b/src/app.html index 77a5ff5..fd3d267 100644 --- a/src/app.html +++ b/src/app.html @@ -8,5 +8,12 @@
%sveltekit.body%
+ + + diff --git a/src/app.scss b/src/app.scss index d06b848..00c6e71 100644 --- a/src/app.scss +++ b/src/app.scss @@ -103,3 +103,20 @@ body { min-height: 100vh; flex-direction: column; } + +/* Pagefind UI */ +.pagefind-ui { + --pagefind-ui-border-radius: 0; + --pagefind-ui-image-border-radius: 0; + --pagefind-ui-font: inherit; + + .pagefind-ui__drawer { + position: absolute; + z-index: var(--z-index-modal); + background-color: var(--color-bg); + box-shadow: var(--shadow-medium); + padding: 2rem; + border: $border; + border-top: 0; + } +} diff --git a/src/routes/Header.svelte b/src/routes/Header.svelte index 6c82fd2..e44811c 100644 --- a/src/routes/Header.svelte +++ b/src/routes/Header.svelte @@ -1,10 +1,16 @@
@@ -20,6 +26,7 @@ +
@@ -49,4 +56,7 @@ min-width: 6rem; min-height: 3rem; } + #search { + min-width: 1rem; + } diff --git a/static/android-chrome-192x192.png b/static/android-chrome-192x192.png index 9ffba49..463f177 100644 --- a/static/android-chrome-192x192.png +++ b/static/android-chrome-192x192.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17ec088f965c173e59b20f5f74f6e2be6b5c3dd68d84bfefb3aececa66eae5b1 -size 28198 +oid sha256:556f93e048b12e25bf1f4e7b8ae80f58a70601ced2b38c15340d236dff2b92e0 +size 27285 diff --git a/static/android-chrome-512x512.png b/static/android-chrome-512x512.png index 28402e5..90738db 100644 --- a/static/android-chrome-512x512.png +++ b/static/android-chrome-512x512.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:489cb6a38f7a2f1fb982876369f7c7a309337740d351ababdc8b5705ca562a02 -size 153562 +oid sha256:096b695afa7139f01574d4453492a234bfd697e0ca57706dfab27d146ed32d03 +size 150785 diff --git a/static/apple-touch-icon.png b/static/apple-touch-icon.png index 3a95b03..e470b33 100644 --- a/static/apple-touch-icon.png +++ b/static/apple-touch-icon.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6af985cddd7deac96c549e9fabfa3932b2a1a4ff44761144b215fea3b6cc4b18 -size 25206 +oid sha256:61b77718ac2b543a4483bcfab246de65718d2d7a4d451ae618d2fb591d61f409 +size 24336 diff --git a/static/extra/Crafty Poster.pdf b/static/extra/Crafty Poster.pdf deleted file mode 100644 index 091e7da..0000000 --- a/static/extra/Crafty Poster.pdf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e4eb2d69b979c22f4b6022a55bdcaa02fa2ab1cadab30bcdf61ae534652f4ef6 -size 1295913 diff --git a/static/extra/DepAware Poster.pdf b/static/extra/DepAware Poster.pdf deleted file mode 100644 index 99727e9..0000000 --- a/static/extra/DepAware Poster.pdf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3165e80d898f66502e56e0aa40243b2f0e4688f227ffb5efe20f7d4f6b3490f0 -size 121987 diff --git a/static/extra/kaangenc.gpg b/static/extra/kaangenc.gpg deleted file mode 100644 index ad20456..0000000 --- a/static/extra/kaangenc.gpg +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -2Vw6bCeYRslIgNo= -=tme2 ------END PGP PUBLIC KEY BLOCK----- diff --git a/static/favicon-16x16.png b/static/favicon-16x16.png index f359ff8..aef23cb 100644 --- a/static/favicon-16x16.png +++ b/static/favicon-16x16.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10fe39579ba0452f51b658ae2d0f83b27384c0ce01e800f5baaa5aba999bb3d8 -size 693 +oid sha256:53598e083597853293753d6b92fabc42540492b3360f7f7dcaed8da9d22831ba +size 720 diff --git a/static/favicon-32x32.png b/static/favicon-32x32.png index 56c15fa..0a0add0 100644 --- a/static/favicon-32x32.png +++ b/static/favicon-32x32.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31996829c64d911eac0c3029b8c4c10bd23213a7d61d0e83656dbec4427a623d -size 1779 +oid sha256:a82aa00d56ca1ae128b0e57e67798ef82abbea1265ef48d62ae338d5652f765d +size 1826 diff --git a/static/favicon.ico b/static/favicon.ico index 2aacd9c33c057c4049580bd0a1a602e22c3a2b9a..53e070d64034aebf593d806f9ebfb84496ddfd63 100644 GIT binary patch literal 15406 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 literal 15406 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