From fc60b28ac1aff0ec9cbc9db910c38b4971621728 Mon Sep 17 00:00:00 2001 From: Stefan Imhoff Date: Thu, 4 Apr 2024 13:51:17 +0200 Subject: [PATCH] feat: remove astro-imagetools It's not worth the effort. --- astro.config.mjs | 2 - package.json | 2 - pnpm-lock.yaml | 342 +----------------- .../images/tools/webp/affinity-designer.webp | Bin 0 -> 2032 bytes .../images/tools/webp/affinity-photo.webp | Bin 0 -> 2256 bytes .../images/tools/webp/affinity-publisher.webp | Bin 0 -> 2312 bytes .../assets/images/tools/webp/arc-browser.webp | Bin 0 -> 4200 bytes public/assets/images/tools/webp/bibdesk.webp | Bin 0 -> 2598 bytes .../assets/images/tools/webp/bitwarden.webp | Bin 0 -> 3390 bytes .../images/tools/webp/brave-browser.webp | Bin 0 -> 3136 bytes .../assets/images/tools/webp/devonthink.webp | Bin 0 -> 2796 bytes public/assets/images/tools/webp/eagle.webp | Bin 0 -> 2208 bytes public/assets/images/tools/webp/espanso.webp | Bin 0 -> 1680 bytes .../images/tools/webp/ia-presenter.webp | Bin 0 -> 1760 bytes .../assets/images/tools/webp/ia-writer.webp | Bin 0 -> 2036 bytes .../images/tools/webp/kaleidoscope.webp | Bin 0 -> 4850 bytes .../images/tools/webp/karabiner-elements.webp | Bin 0 -> 2804 bytes public/assets/images/tools/webp/kitty.webp | Bin 0 -> 2886 bytes public/assets/images/tools/webp/mindnode.webp | Bin 0 -> 2104 bytes public/assets/images/tools/webp/neovim.webp | Bin 0 -> 3292 bytes public/assets/images/tools/webp/obsidian.webp | Bin 0 -> 2028 bytes public/assets/images/tools/webp/overcast.webp | Bin 0 -> 3124 bytes .../assets/images/tools/webp/procreate.webp | Bin 0 -> 1796 bytes .../assets/images/tools/webp/protonmail.webp | Bin 0 -> 1848 bytes .../assets/images/tools/webp/protonpass.webp | Bin 0 -> 1972 bytes .../assets/images/tools/webp/protonvpn.webp | Bin 0 -> 2382 bytes .../assets/images/tools/webp/raindrop.io.webp | Bin 0 -> 1904 bytes public/assets/images/tools/webp/raycast.webp | Bin 0 -> 2054 bytes .../images/tools/webp/readwise-reader.webp | Bin 0 -> 2082 bytes public/assets/images/tools/webp/readwise.webp | Bin 0 -> 1992 bytes public/assets/images/tools/webp/reeder.webp | Bin 0 -> 1820 bytes public/assets/images/tools/webp/snipd.webp | Bin 0 -> 1782 bytes public/assets/images/tools/webp/things.webp | Bin 0 -> 2142 bytes public/assets/images/tools/webp/tmux.webp | Bin 0 -> 1168 bytes public/assets/images/tools/webp/typeface.webp | Bin 0 -> 2616 bytes .../images/tools/webp/visual-studio-code.webp | Bin 0 -> 2582 bytes public/assets/images/tools/webp/wezterm.webp | Bin 0 -> 1980 bytes public/assets/images/tools/webp/yoink.webp | Bin 0 -> 4758 bytes src/components/GalleryDetail.astro | 11 +- src/components/Image.astro | 23 +- src/components/JournalList.astro | 22 +- src/components/MarkdownImage.astro | 10 +- src/components/Picture.astro | 38 -- src/components/ProjectImage.astro | 7 +- src/components/Toolbox.astro | 13 +- src/data/tools.ts | 62 ++-- src/layouts/AboutLayout.astro | 9 +- src/layouts/PageLayout.astro | 9 +- src/mdx-components.ts | 3 - src/pages/[...slug].astro | 19 +- src/pages/ai-art.astro | 7 +- src/pages/colophon.mdx | 1 - src/pages/index.astro | 10 +- src/pages/sketchnotes.astro | 11 +- types/astro-imagetools.d.ts | 1 - 55 files changed, 78 insertions(+), 524 deletions(-) create mode 100644 public/assets/images/tools/webp/affinity-designer.webp create mode 100644 public/assets/images/tools/webp/affinity-photo.webp create mode 100644 public/assets/images/tools/webp/affinity-publisher.webp create mode 100644 public/assets/images/tools/webp/arc-browser.webp create mode 100644 public/assets/images/tools/webp/bibdesk.webp create mode 100644 public/assets/images/tools/webp/bitwarden.webp create mode 100644 public/assets/images/tools/webp/brave-browser.webp create mode 100644 public/assets/images/tools/webp/devonthink.webp create mode 100644 public/assets/images/tools/webp/eagle.webp create mode 100644 public/assets/images/tools/webp/espanso.webp create mode 100644 public/assets/images/tools/webp/ia-presenter.webp create mode 100644 public/assets/images/tools/webp/ia-writer.webp create mode 100644 public/assets/images/tools/webp/kaleidoscope.webp create mode 100644 public/assets/images/tools/webp/karabiner-elements.webp create mode 100644 public/assets/images/tools/webp/kitty.webp create mode 100644 public/assets/images/tools/webp/mindnode.webp create mode 100644 public/assets/images/tools/webp/neovim.webp create mode 100644 public/assets/images/tools/webp/obsidian.webp create mode 100644 public/assets/images/tools/webp/overcast.webp create mode 100644 public/assets/images/tools/webp/procreate.webp create mode 100644 public/assets/images/tools/webp/protonmail.webp create mode 100644 public/assets/images/tools/webp/protonpass.webp create mode 100644 public/assets/images/tools/webp/protonvpn.webp create mode 100644 public/assets/images/tools/webp/raindrop.io.webp create mode 100644 public/assets/images/tools/webp/raycast.webp create mode 100644 public/assets/images/tools/webp/readwise-reader.webp create mode 100644 public/assets/images/tools/webp/readwise.webp create mode 100644 public/assets/images/tools/webp/reeder.webp create mode 100644 public/assets/images/tools/webp/snipd.webp create mode 100644 public/assets/images/tools/webp/things.webp create mode 100644 public/assets/images/tools/webp/tmux.webp create mode 100644 public/assets/images/tools/webp/typeface.webp create mode 100644 public/assets/images/tools/webp/visual-studio-code.webp create mode 100644 public/assets/images/tools/webp/wezterm.webp create mode 100644 public/assets/images/tools/webp/yoink.webp delete mode 100644 src/components/Picture.astro delete mode 100644 types/astro-imagetools.d.ts diff --git a/astro.config.mjs b/astro.config.mjs index ce1a210..6a9b4c2 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -4,7 +4,6 @@ import prefetch from '@astrojs/prefetch'; import sitemap from '@astrojs/sitemap'; import tailwind from '@astrojs/tailwind'; import swup from '@swup/astro'; -import { astroImageTools } from 'astro-imagetools'; import pagefind from 'astro-pagefind'; import webmanifest from 'astro-webmanifest'; import { defineConfig } from 'astro/config'; @@ -33,7 +32,6 @@ export default defineConfig({ compat: true, }), swup({ globalInstance: true }), - astroImageTools, prefetch(), pagefind(), sitemap({ diff --git a/package.json b/package.json index 7cc529a..48c6eb6 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "@swup/scripts-plugin": "^2.1.0", "@swup/scroll-plugin": "^3.3.2", "astro": "^4.5.4", - "astro-imagetools": "^0.9.0", "astro-pagefind": "^1.4.0", "astro-seo": "^0.8.3", "astro-webmanifest": "^1.0.0", @@ -58,7 +57,6 @@ "react-dom": "npm:@preact/compat@latest", "reading-time": "^1.5.0", "sal.js": "^0.8.5", - "sharp": "^0.33.2", "swup": "^4.6.0", "tailwindcss": "^3.4.1", "unist-util-visit": "^5.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c817741..793cca3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,9 +57,6 @@ dependencies: astro: specifier: ^4.5.4 version: 4.5.4(@types/node@20.11.27)(typescript@5.4.2) - astro-imagetools: - specifier: ^0.9.0 - version: 0.9.0(astro@4.5.4) astro-pagefind: specifier: ^1.4.0 version: 1.4.0(astro@4.5.4) @@ -129,9 +126,6 @@ dependencies: sal.js: specifier: ^0.8.5 version: 0.8.5 - sharp: - specifier: ^0.33.2 - version: 0.33.2 swup: specifier: ^4.6.0 version: 4.6.0 @@ -504,10 +498,6 @@ packages: - supports-color dev: false - /@astropub/codecs@0.4.4: - resolution: {integrity: sha512-jHmdZK2B7dfelTsVzkWVb93WPjuKkHz07xUcyg5WtUxTeCCxdDVLnvZlsB5PC2r7HmJLf03TP1QYb1ZgrEebyQ==} - dev: false - /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -2406,14 +2396,6 @@ packages: resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} dev: false - /@emnapi/runtime@0.45.0: - resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==} - requiresBuild: true - dependencies: - tslib: 2.6.2 - dev: false - optional: true - /@esbuild/aix-ppc64@0.19.11: resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} engines: {node: '>=12'} @@ -3129,194 +3111,6 @@ packages: resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} dev: true - /@img/sharp-darwin-arm64@0.33.2: - resolution: {integrity: sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.1 - dev: false - optional: true - - /@img/sharp-darwin-x64@0.33.2: - resolution: {integrity: sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.1 - dev: false - optional: true - - /@img/sharp-libvips-darwin-arm64@1.0.1: - resolution: {integrity: sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw==} - engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-darwin-x64@1.0.1: - resolution: {integrity: sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog==} - engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-arm64@1.0.1: - resolution: {integrity: sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-arm@1.0.1: - resolution: {integrity: sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-s390x@1.0.1: - resolution: {integrity: sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linux-x64@1.0.1: - resolution: {integrity: sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linuxmusl-arm64@1.0.1: - resolution: {integrity: sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-libvips-linuxmusl-x64@1.0.1: - resolution: {integrity: sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-linux-arm64@0.33.2: - resolution: {integrity: sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.1 - dev: false - optional: true - - /@img/sharp-linux-arm@0.33.2: - resolution: {integrity: sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.1 - dev: false - optional: true - - /@img/sharp-linux-s390x@0.33.2: - resolution: {integrity: sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.1 - dev: false - optional: true - - /@img/sharp-linux-x64@0.33.2: - resolution: {integrity: sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.1 - dev: false - optional: true - - /@img/sharp-linuxmusl-arm64@0.33.2: - resolution: {integrity: sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 - dev: false - optional: true - - /@img/sharp-linuxmusl-x64@0.33.2: - resolution: {integrity: sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.1 - dev: false - optional: true - - /@img/sharp-wasm32@0.33.2: - resolution: {integrity: sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [wasm32] - requiresBuild: true - dependencies: - '@emnapi/runtime': 0.45.0 - dev: false - optional: true - - /@img/sharp-win32-ia32@0.33.2: - resolution: {integrity: sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@img/sharp-win32-x64@0.33.2: - resolution: {integrity: sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - /@import-maps/resolve@1.0.1: resolution: {integrity: sha512-tWZNBIS1CoekcwlMuyG2mr0a1Wo5lb5lEHwwWvZo+5GLgr3e9LLDTtmgtCWEwBpXMkxn9D+2W9j2FY6eZQq0tA==} dev: true @@ -4179,7 +3973,7 @@ packages: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.5.4 + semver: 7.6.0 tar: 6.2.0 transitivePeerDependencies: - encoding @@ -6051,7 +5845,7 @@ packages: debug: 4.3.4(supports-color@9.4.0) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 + semver: 7.6.0 tsutils: 3.21.0(typescript@5.4.2) typescript: 5.4.2 transitivePeerDependencies: @@ -6743,23 +6537,6 @@ packages: - supports-color dev: true - /astro-imagetools@0.9.0(astro@4.5.4): - resolution: {integrity: sha512-iZCSiUbFr0h8HSyX2Fl/hzc3RlmVjNstWwsZZSyQKW9vRmMny/bd3qL3p8wuC6ISsAvtHfVnJLmorhhRhwVOcw==} - engines: {node: ^14.15.0 || >=16.0.0} - peerDependencies: - astro: '>=0.26 || >=1.0.0-beta' - dependencies: - '@astropub/codecs': 0.4.4 - astro: 4.5.4(@types/node@20.11.27)(typescript@5.4.2) - file-type: 17.1.1 - find-cache-dir: 3.3.2 - find-up: 6.3.0 - object-hash: 3.0.0 - potrace: 2.1.8 - optionalDependencies: - imagetools-core: 3.0.2 - dev: false - /astro-pagefind@1.4.0(astro@4.5.4): resolution: {integrity: sha512-WMUlS0TTqIDqygplj/cxKU+l3oI+zB2qgYNMZed5R5nXuw8HhAKATog9zazuN05TOSWxI2Ap9+9WAYnnJ+4C7A==} peerDependencies: @@ -7309,7 +7086,7 @@ packages: /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: - semver: 7.5.4 + semver: 7.6.0 dev: true /byline@5.0.0: @@ -8524,6 +8301,7 @@ packages: /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + requiresBuild: true /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -8660,6 +8438,7 @@ packages: engines: {node: '>=0.10'} hasBin: true requiresBuild: true + dev: true /detect-libc@2.0.2: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} @@ -9928,15 +9707,6 @@ packages: token-types: 4.2.1 dev: true - /file-type@17.1.1: - resolution: {integrity: sha512-heRUMZHby2Qj6wZAA3YHeMlRmZNQTcb6VxctkGmM+mcM6ROQKvHpr7SS6EgdfEhH+s25LDshBjvPx/Ecm+bOVQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - readable-web-to-node-stream: 3.0.2 - strtok3: 7.0.0 - token-types: 5.0.1 - dev: false - /file-type@18.7.0: resolution: {integrity: sha512-ihHtXRzXEziMrQ56VSgU7wkxh55iNchFkosu7Y9/S+tXHdKyrGjVK0ujbqNnsxzea+78MaLhN6PGmfYSAv1ACw==} engines: {node: '>=14.16'} @@ -11208,15 +10978,6 @@ packages: dependencies: '@types/node': 16.9.1 - /imagetools-core@3.0.2: - resolution: {integrity: sha512-DlArpNiefCc1syIqvOONcE8L8IahN8GjwaEjm6wIJIvuKoFoI1RcKmWWfS2dYxSlTiSp2X5b3JnHDjUXmWqlVA==} - engines: {node: '>=12.0.0'} - requiresBuild: true - dependencies: - sharp: 0.29.3 - dev: false - optional: true - /import-cwd@3.0.0: resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} engines: {node: '>=8'} @@ -12639,7 +12400,7 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: - semver: 7.5.4 + semver: 7.6.0 dev: true /make-error@1.3.6: @@ -13840,15 +13601,6 @@ packages: tslib: 2.6.2 dev: true - /node-abi@3.40.0: - resolution: {integrity: sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==} - engines: {node: '>=10'} - requiresBuild: true - dependencies: - semver: 7.6.0 - dev: false - optional: true - /node-abi@3.56.0: resolution: {integrity: sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==} engines: {node: '>=10'} @@ -13856,12 +13608,6 @@ packages: dependencies: semver: 7.6.0 - /node-addon-api@4.3.0: - resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} - requiresBuild: true - dev: false - optional: true - /node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} requiresBuild: true @@ -14016,7 +13762,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.13.1 - semver: 7.5.4 + semver: 7.6.0 validate-npm-package-license: 3.0.4 dev: true @@ -14026,7 +13772,7 @@ packages: dependencies: hosted-git-info: 7.0.1 is-core-module: 2.13.1 - semver: 7.5.4 + semver: 7.6.0 validate-npm-package-license: 3.0.4 dev: true @@ -14547,7 +14293,7 @@ packages: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.5.4 + semver: 7.6.0 dev: true /pagefind@1.0.4: @@ -15734,27 +15480,6 @@ packages: resolution: {integrity: sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw==} dev: false - /prebuild-install@7.1.1: - resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} - engines: {node: '>=10'} - hasBin: true - requiresBuild: true - dependencies: - detect-libc: 2.0.2 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.40.0 - pump: 3.0.0 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - dev: false - optional: true - /prebuild-install@7.1.2: resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} engines: {node: '>=10'} @@ -16920,7 +16645,7 @@ packages: resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} engines: {node: '>=12'} dependencies: - semver: 7.5.4 + semver: 7.6.0 dev: true /semver@5.7.2: @@ -17038,22 +16763,6 @@ packages: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: true - /sharp@0.29.3: - resolution: {integrity: sha512-fKWUuOw77E4nhpyzCCJR1ayrttHoFHBT2U/kR/qEMRhvPEcluG4BKj324+SCO1e84+knXHwhJ1HHJGnUt4ElGA==} - engines: {node: '>=12.13.0'} - requiresBuild: true - dependencies: - color: 4.2.3 - detect-libc: 1.0.3 - node-addon-api: 4.3.0 - prebuild-install: 7.1.1 - semver: 7.6.0 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - dev: false - optional: true - /sharp@0.32.6: resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} engines: {node: '>=14.15.0'} @@ -17068,36 +16777,6 @@ packages: tar-fs: 3.0.5 tunnel-agent: 0.6.0 - /sharp@0.33.2: - resolution: {integrity: sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ==} - engines: {libvips: '>=8.15.1', node: ^18.17.0 || ^20.3.0 || >=21.0.0} - requiresBuild: true - dependencies: - color: 4.2.3 - detect-libc: 2.0.2 - semver: 7.6.0 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.2 - '@img/sharp-darwin-x64': 0.33.2 - '@img/sharp-libvips-darwin-arm64': 1.0.1 - '@img/sharp-libvips-darwin-x64': 1.0.1 - '@img/sharp-libvips-linux-arm': 1.0.1 - '@img/sharp-libvips-linux-arm64': 1.0.1 - '@img/sharp-libvips-linux-s390x': 1.0.1 - '@img/sharp-libvips-linux-x64': 1.0.1 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 - '@img/sharp-libvips-linuxmusl-x64': 1.0.1 - '@img/sharp-linux-arm': 0.33.2 - '@img/sharp-linux-arm64': 0.33.2 - '@img/sharp-linux-s390x': 0.33.2 - '@img/sharp-linux-x64': 0.33.2 - '@img/sharp-linuxmusl-arm64': 0.33.2 - '@img/sharp-linuxmusl-x64': 0.33.2 - '@img/sharp-wasm32': 0.33.2 - '@img/sharp-win32-ia32': 0.33.2 - '@img/sharp-win32-x64': 0.33.2 - dev: false - /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -17675,6 +17354,7 @@ packages: /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} + requiresBuild: true /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} diff --git a/public/assets/images/tools/webp/affinity-designer.webp b/public/assets/images/tools/webp/affinity-designer.webp new file mode 100644 index 0000000000000000000000000000000000000000..26007fe85f94e0c91f4d396758ea4798f5812d2f GIT binary patch literal 2032 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/affinity-publisher.webp b/public/assets/images/tools/webp/affinity-publisher.webp new file mode 100644 index 0000000000000000000000000000000000000000..cefb8174dc1316a86df2791bc11b2e28d53fcaf1 GIT binary patch literal 2312 zcmV+j3HSC=Nk&Eh2><|BMM6+kP&il$0000G0001g004jh06|PpND~7900B?spp7I) zI@es}5BcsRf{4h)-}BN0MMi_xW@t6Zr##ke-J^D)_6?VNZBS5N3KERlNK#bGoPWSf zckhV)PXH^$paX(Z13JzK4^qkz`3JlnQ30@apj5j->Du;Gukt*}C-wFy?ru|uF(dvj ziZIcBI^pAPDf+^jLrZ2|6ew{qaW+9eZqYVl?#L zlK|mK2M5BrUlj$xU{ZttgM}E{YHx9AeQ~js)IY*ay!OtUhmpgr3*VmGRnN%5!bcw; zLOyps`@HIx8^8a_A>_6BV2VBB@wcau-O<}mIQE3@$tRHIC!QwQ3oJ|`)5AHUmk}9P z4~UJtZKyNcSVz{kueIHf;SMr?_qI9#iR_QisTLRVclbd!_2K-@%R11*AqqIYqh!+g zLnSzL#gwdBAC$nY?F~#|{Q85Z;^A*Vf0&g{rARL;g(($6DI$``aww6CQ6qUMMWs|~OVK97 zZYlPWR%t$92?7%Dmq7X1%R;o`#EaX1QI=@ z_rp!8g|rAsBi}(vf=)M{dGp!Pb|*d$2cZOzaB? z5U}dTrL}r?G#(B;9l>4+CdJU!?e5(x+jUj#w+5ouGP4ls#es7q38L?UB$>swZJMTO z(SON8+tl7WI)doGAeluAA;f5Q001)!EgeY$V9x|VKQ);_!U2_x00DsLyYN#%5dPg1 z09H^qAjSm%0FWO5odGI<0D%BLjXs%2r6Z^zDzjaw01=5|0MR`BRDpLu=Z>-Ig=XE( zcJD|#(#@hhZ;GzJqeNFPdv%=5XTa!QseyQ2#I)3e#R75&q8&^SVdC~gNkt1{n$KR_7|4|TnRS=X7i41sbV zQUnc<3$+m)1<^sG07Lj@_dDnbOMsJe&>NoeqC&6BllCp;azB7sOA&WJ3gk%uE4nwu za`F~ic;rR89%i_uyLuWT^i&x%LNFYcN@&Y|2X?TPi5BN;EXMKroB7L>3_Zi|RmU`n zxZ4KiMjvl7@Bje*{9NCW`@^!Ke*emP=&9^~u-}uhrrlk+WuYh$fijd^9Z)@3rp{!z zAQXhN3b5PTYRd4U)Z0vC2f;6 zAYVf_J}Py@?*EzYV5l+YU1HDJrL8Hcj;$$Q5Pb9YTfY|@lr{V2)8A1$OWDA7adj@T z6tpxzD1RT&v{tP%B7m49TkbULz6_%rlw>XOa& zY)44(Gj3+zI6DAwUkG8=(bj)^rM!NeI_ykAagwxY<#Pru_Taqe?$^M5mS6lTzn(*t z8oRTal*@|%Z~?rt3F8J^wq?Jn0!h3-xEQX3-2;s2)hDZP^Ruf%m-voZC3s;90mg@A z#US~JA1&=Iy-TU(;>sR9lg5Oq^YbLRFl9F3&`kZ7W#-nH!eLJm)5Z!2CG`V{Xon@s zL{02&WV+&+1D~?$Xm+lgy=tO32(%AS=QH!$Fi5fsS|O-&<(2sC`NqBHSE&)8qQn`K zzJ7e=7eTU;ZKGD0vt~f;H3yYSue6c*KNtg2tfBo(J+Q}rxLQb1Z^4;fx+6@JeZ$Z0{WhTHNKjmZv z%AXDXUC!T2KyM%$`HuBQ9qP);;VbTVLE6-AIq#Y+5`BJRl`5$sljS#FJO>^-ACszU zI=#8l_5N>4W2j}kO`@l-)h-QZ5)6)st#k}DMT`GU>ABJ39>w&ZOP|0a$5JDX6UanR zHg%YvhZfuVR?^82>Ys?8-NV=$z=eC*xO;ssJKWCMawTX{Tukqr+A`aX=9)a&VYXOz zG|Hb`z12hHe(fV(b8%+Dne(#2y&=k_!4|cLG~qY`fW}gAquS|_)u<*6v36+oQ5+|A zLiu~!d29j|4XkRDVt*dLN+ot%hTx9mz7m5(BX&4D71$Q zv~oCrEH3zYVb8cozj3Yg1EO={I^ej+!ENISlkyctl9tJJEa6q~W1{@V|=Q$SV7S6Ik_Q8U_Rmb^i%%S*doSxp?(?Iwm(wSDv zYv19!7w+2HR0;doIYKof_S1UcJGein1NVF7beX;VguF-$J$}rQSu>p|2_9|j zS$$cnfY=oM?*lq!4&&k}z>oltNe~s8?sm+8;eIys`2AKOi^2^--2Piy7u|?l5HFn} z&hK|uc{@BXs(+H`E&m=f!yH9LekyMN?+Y-qL4$z#g6B%d%moru#6@#+a-N8Q^6&68 z(eo0>-|_T{#(dqCwe#gl8zeXLT|F;D{ht8+lEp*P z<&|+tkt>9h#W22^@nkWrAm_O|M4?#psKzB_yEEiBPfs|4~+jOX1g9mnOG_#R1t5TM2PWltmwr$JYM!K%| zE0AJAq%fzMnYmZPGpqT9vtnjuW}XRi3}XhV;Ct^ym8AERYT1j3m;m3BBw3Oq*%p%b zz5lBJ|BLDt{Ge(c9tr&c5itS$U~>TlPuI`vy$}MqD5_6?@ZsI9>3GulijYM5#u&3< zs5SG&;`qVs_g|VPs#XLd11~>2 zc~^V&&Ju^wcNSU#xDv>O>0#(HWWw|?bQzE!it76e?CdS*iV7G8ZhkiNO~;U#4#HHr z&ULHFbeS-EIG5=%VS0ED0t!y_(HR3;rr*W~y#$#C?PxSEBLM?oRyxLIvWK@vkMN<7 zjcmv0%ZKCvApfuTr+jBz+LiGq7*X*HfSk7c*zS%17@ZBrFB&&Ly5sUqbI$&D;wnGi>p?5aC8%hG5hjyefV@V_mm#dp1Of;I3E2&Ix@KFF zkRN_?*<|s5xa!9vJEaj$*6poztf#@zKhXAH03p*wAWhsB8;x0;GjlfCQ_24>8!i4h zfbI#d3y@O)4=GKhi23k(aQ-*6{%gQ>31wPlJt2fsMvFAI6B@Btm`tooUY<2u{2%J5 zbnyI#4m-H<+S^wXatfep=5LTQnGfpnuWA3s398_w&wY&bhhP5Ep>j%PjE(vS^3jF3 z=Jk66%-%vo-Tw%ue*Q5vCjip?#n1>NOhy7){)QocF9CE?IO~p>oFKMKAs^S#%|RYq zMZ@iI_UlwxFU|8p?5%aIhw?1L{&tW%Jq>ehmJ@~yA!i0PjR2PJCkDEE8~7`l{?EUV z;S_m0at=X!>c-S&)eKWp=@mBZ5v~aia20~y-Za<#bXSHTD}U296b2Zkqp$M8815!10Ee-(lkzHU&hymCf?6eUz&i zA`v7ku5Xn7D%mm#4j|<0{Y~N{}`HO{8DRXzI5GcTVM;Gd^k87Q-t|J3ZlpP96UcFF{ruJ3PlW8_z6uB#m`U~~3 z5~SCwylJ!RD<)jqeUOX&xKxQS8Fpxrp-B1S1^avs8(~?Yd0|$|mep5GEMff2AfFqP5u@hkM^Rx_s*k?HomyU_S_Q2Ix_% zNB`x|{=E9{KmOs5-+%jSU(2%9Es=MXnpWw>m>}q#MmvY5PMEOu`nOi^S0+QiENFfN z;x&qx>y18`)eHGT9@Iwv4aS_ZsX>m8|3(S+)Pi7H`csU*@@! z>q)Dt>!u?BuiiY9+X4hS7^<25$JwsGLC8ImVy;%wBz1OgmnIELlKNNI&yZp%3K=pP zCEWVAvs`&8VKTkZ;hkD(>*(NsqKeYm)|E#-<|%Id?{82sdAFeR%lp&QTtzLLZ-y^F zJhqK=)l#osd*;bCv;VnQEJe;q0DH8YMLgthJ6n$n?Y=pPI;JAp&g;|OU5~!(A z^1-M{2NG7*!n;AT?c?3J&|13Z9RY$yo5dn4kkmZLWXPb3pimMpD3C!`v%_agv6b-N z*PN;-Au0t~O%h7w<03#R1l2buQxE!fq+EZ7ZVawWPEk&x=rX-Apdl1M0uWCzAYsQR z?iAY*|3|ipfP#Vmt^rh#A(KHBG#~^O(8-*VtqJ9bL0`XrU3)+v(t5(=(-S7|3NGO* zSIGeJ+W#2DQUXE{qal+C6DCZCOeRbifgnIdpPSVon5~DmH5ks^JT{r{X6~8HcS`|$ zcG_nc8&7sSDAI5;`TS(^@s%g1lRgaGjmiY+jtQ8Rb_8=~G8r=DoHLWjfCLz+j7MG1 zz@rrJ%`uBPttUS_`M%r2Btg%fD!@jpqGK<~%a*hta4A{KGqoz6LpmT1KOC@Ub7A3XpI@KrBNhlOc>t1__F? z`tN^nZ@%ag&Zm~*&O>;x)`{n%y_itRgbN|k4aeQ<%TPB?6j7F2`WHRYSU9pIG(ytmqP3`;TVlkV~ z=gWlitzGHH-KgtIQP1BXNv*YCE|>kX)^GvUVkxR1=RSng)YPPMaRphu5I`XOfMWnw zP&gnA1^@uiB>^o-XF6!5uhQ^Z$YBwV%(dfAD*Te=Yu<|0~wV z*+-+l>;gqFD3p_RnVXNzB$ubq25TwE5wsW;B`G=UcO``oINE$W4j$i|vYPlsA#t1? z3$NW$(<>K_Mc>y&9+-VX@VNyAZOe8Oo<~{GAGqcGGOx-3CThPaYq1XLf`FgDL}xuv zOab)OM9kGeG2Kl#pE$$V3hN;S7d>N8s{@=2*HUQ_OO-|fR;a1bZ@0z5Y>2OBN0%wD z^V$Yzd2B09C!B@<+2Nfioey$YQp}2cgy8n!!M2x`_a&6|ndI^8M_6Bf61!&a-3t)W*xRwk4) zLu^0S?eFeEzasa*SV=1@m*`PmLAq#W+KdwLB!oMrbDuQ-ll#AzuYkqtd~SO7@3T$h zb*tZh&sS-y0dI0yx7oFq&^phl5%7Pc7BH$J-*HZ}%cmNj7h~HstQ{`?^Xx=+|7MOK zDdR+r92uJdtd0jSXZ&Y@bserexJ^_jWCs*$BF;}4z*;o;oRyphf;Z*WqlAE8&mXHV z{cGJ2dd_#ho8?GV;j{m*F>Oal{Cb$FU|cw`+uL?UukPYp6W!emJu#V>#k=PDrUzcP zo)Pl&E>g*+#`QK8=%)fjGy%E<{flXr({LiCZuv}OjH%NNz)$Rjk|E8iKaO%z{jOhs zq0gqVCeEKsk3yiqfE)BTl+=^T@z@q5=?vHhbAP!qHjRB+ACk#|?r=(qvnm|)=ZoH0 z1U4Grv=@kk0>!KD^PN>+SP;eM{9LsNe<``XZiwqe+ao4OuvjbD1X1UGSUvE&FQdN2 zbFYs>K9XmLbV!0M>(GMKkDBAvW2;Jkn^Anpj=TZsv{d;$qLH@4lSQ(neTtOIDcf28 z&FKn%>iwhG3#klWv-)6sp@5Y)Fbh|FkDa~qF+UM)&ckmDm2>c4HW+Wrw~?}xjf@Xq z{I#yV|E8Mb4Or8O{h~%R7Ne9{8k^h|w9aNr60}_3HPS@r&p2l}{qJtsN75nKJk-C*24uz8$LEF54q21a zzO6p)>LCqD9QE=iAt6KEE%15iX!-m})*J9b!g&wLJ^#3s`Mv_b&{I!ZIwP|z*uG!B zO8${hFSSy&SN?TkAFZeiT1s1Tc7svkVLOVIp_jOsXM zKACdJ^1&l0ZjkRhU1O}D2YTPZ0v-~;yc>u$d`DW9GA$=I)WT6mgqBK_T#=EnG+ye> zBq_{N^Y)fLUcl^F4awmJ9_qx_7&oznv`5`m#ho7v1a0##?d#J@5?JK&HpmHZv5AVq zd#;@#m+jScEH(83lP4kId*OIbON;^#rg$CwPPB*`rJ$-mZ~IbZmk2gB^KH$neNIY- zLUZ1)UyrefiS;CribG34A(lt@K+gpv*Yn7+lDraey`_%vFI^Yoa-vy232r~Zp_inf zb#^%{XR3C3fkF!acqe>akU3|}7^^JyIz{ItgfIuUMKK81srMZ&>|WHZP^rtA3KuYcD^@ODx^bHB?`O~Hz_wrCk|?q3#WaV_+YP5tLz@V7 yg8>nW^r*=<^gSYI9z=6UokUI{euGxKMNvQI7L#Wwvmvib>~9-&|Nlk60000SvN$&Y literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/bibdesk.webp b/public/assets/images/tools/webp/bibdesk.webp new file mode 100644 index 0000000000000000000000000000000000000000..9c2fd8a914cf8cdded69d387402dc51df2eca90d GIT binary patch literal 2598 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 I15%Ix0DVsD6#xJL literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/bitwarden.webp b/public/assets/images/tools/webp/bitwarden.webp new file mode 100644 index 0000000000000000000000000000000000000000..a37fd2bd7df95a591ace28f1f5eb240e484a9bce GIT binary patch literal 3390 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 a2c<6GM0`YeoE~QT@7Dn+cCbPK0001Ud?&{M literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/devonthink.webp b/public/assets/images/tools/webp/devonthink.webp new file mode 100644 index 0000000000000000000000000000000000000000..f261ba9a41e6730eb9d19ea872ee997ef1792b04 GIT binary patch literal 2796 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/eagle.webp b/public/assets/images/tools/webp/eagle.webp new file mode 100644 index 0000000000000000000000000000000000000000..2ce677d5efe611ed8067dd4739038c7596c44437 GIT binary patch literal 2208 zcmV;R2w(S7Nk&GP2mk%U>6 zCeooEfaxLzz|6k_?U7Je+se7J9ulqXZJXtjWM}<*!2Mt0hK@M0SUtyfEH<2om;n4+ zks}NE5?`Pab}3)V(46wFXc~tY20#G%)@3e%eBq)23andN&nMdj4a>5GNk+!L^I1>Z z;c#e=hUNBpp3%vCK7M!@8>8{|?tVs3^Udu@EyZcMVRV+Kd6H%babiP%$2m$P#(_cT zGNaK9LazzX7W8Q7d9r$W&FGs{qw^7+U+TSDcVX1f)mS3#&@c^>;v{g%ohU59RDt}skBWPpofC`U3EGwKQrfzfQtDUQC^&2p>qBcx#uVOSJA{h!e4~RzyFfW{{1!3{3HL&3#&k0)HMGndtv2Z zUQ{&vFm2^%^P-}8p_>(hIsrv-OI{=^hJ11&qqt#pL02sYJ-UEn1sv)lo*u3`C!EQuAdENCx4_9zm%}u6O~!=k#AE1~ zhB4&^V(gb7vRO5lAoNNBfuTVLwyjTFh7ej!NjsDj?Gl(H51sjV(h#{B5VMJ8gl?SI zBk~dnO*7?WS+_9m?!4s{3B!cujWliR8Uq9ZK-yD4p%B{$^N3xVK@%hp1cV*hSGG|M z60lc;DnkIqUNb2+WdIC*|) zdT9gXj&jhRHPYKe(Def09M9>7^gq4IZrn9%ECFNM^5niC%MsI%IJtD1E}Y2yiMOD| zqIe+qdwS9y6|X7eQ?g_NGP=R?t$ZOOr1am-|91F&)apdb%2W3+4rQD2T%xuv!cx<^ zG-6?~wgy@TEpU5PZiw>CdiM9vJ%yy?Eai{N%j*wEU=(a#6stt5Ib-YD!q zCJSo&$r%2aEasJQl2mWY%0eginfGQ<35GZO^q#yVcf&#{*_(6pLe!RkIb`ph;{X8u z`~6;jTCMoWc!|m50|J{OeJDv`GpW5iP?F~dg=2s^-{K=3Ps^XZP(w_I7%)Fuk-NbI zqA@L;qt@S!xe&r1Dux_YcIU zg^$EU+$Ki(Hdp_#is7B!=6R0RIvqTh(i`8;o*JVvAg(1F^LzIkws zm%=o&O76rx@|q^j=?2U_I|aV@PMR1g)*`1-Rsmjso}az$PipKeT|HdcapLTHi4gw; z#)aQq)7BuL(>wzy(jBHIxah`E#`1*Y8rk0IaLDATijN@toXX@Er7bvMQhfG5GgDa* z*jT3T9+ce=C9|3iM<1{{h!W=l%+A&3Pzm=g0vm|K%J;t0AX+ zW{CgLMWiRyvFMK|Q;HwP2=7BeP2*9w5yb~-*$-lh2f~2+W9t;PNLAf=O>Ad++bU5y zyCQQsZEeRQPfFonOF_lzE=wZ^d|f*Q+Z=83q+%OF&gzjowkoA&!Cqd24zQv9VvaT* zZ^7*-)D;f60P_wC&ujEmVFdd}5sVJkG6D&cE6uxDuy7r|NLw@yHotBjXx(IGYV;D= z2XlN}LYeY&?F?Xo@b{jdpE4Mq)0ckiP1a3Z<+g@wj3GGfMbXeoobd8Ik?cQLn2A(- zXoS&lh8T;aliALl%v7d#Llol%sF^)%B>qQWhrRJ7s<=2~xZ-5kO9I;PMsd#ZK#=6D zGjGaOQ%Ft<5ZM051gFZ*5wfmf3$yOq>MxF^+!T zKAFvpM?0e(>hE0XNXJ2TEoWO7E17*YLUfwb-g5ji z6z=@^{2NpJv*T(;YbODw)(@dFjT=(6tzSdl0pbak5O2QR^1l7R*YA`wp?pRK#i*Nf zjyHGlcILte4sxyqq4$X>Rg4)!9;&32x1_g_%Rp!X`IcW=G0lk{$4G33-dRb0yZ!03 zU<}eG#=@UGIRf`^H($a%{ubYnpeIN1v+sS;^ zi{Um&2&MByE&KE(_%2{@>EvpysKpWOJ^cg35Ecw^uRua0sw9vv5emyXobC>||Nj79F5jYVfCsr!g8%>k0000cT|I>W literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/espanso.webp b/public/assets/images/tools/webp/espanso.webp new file mode 100644 index 0000000000000000000000000000000000000000..839252424baf61832975c2087079cce9cfe155b0 GIT binary patch literal 1680 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 C;bs{C literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/ia-writer.webp b/public/assets/images/tools/webp/ia-writer.webp new file mode 100644 index 0000000000000000000000000000000000000000..ff5c5a645b519d3bb0bb4039e59f62070964eb52 GIT binary patch literal 2036 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

5@Aiv|M}pDMgg zw<;*@rW1NXJQDbBv}*etEgfJTB@*-48yTa0j2UVn2kn2laWjeN+#m=oJ1T{B(?p)K z)5p^3v}2_oVZQ(B`pO?bk4m2;Nw0V|s-L;FwdZGPDgVt}BPYT9%bowgbfN}(vzWXnV>&4Xca2(_m=AroG<%&^BduN$j++rE96;F(MZ+C7o2 z#9`8!4(q;X<7ly*U?)3zIume&>jzpdRcb0h#0DX)lO*rr2%l+zOWI<- zK%`Sh+l46uPELHzE7CLd1bVA>F01DHy`vOnz?eYWg?6Q9%AeK&3TsQX?JEESVT2vs YLaJAoVhE!{pLVc5EbRL2FaQ7m04FVlr2qf` literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/karabiner-elements.webp b/public/assets/images/tools/webp/karabiner-elements.webp new file mode 100644 index 0000000000000000000000000000000000000000..601db458649ffacabd2876a96567b6a8f89b4080 GIT binary patch literal 2804 zcmV;M<<18=E7P9mPSCb(+ik+EeXbjrflVj9_xAt4(tA(nrbxQyJjmF9uF{hc z5fi}gL;>nhwBpGK+5X-%bt*4@`z;5=;|XoQxx2GFwq#vu{O;uR;%WJ|Pve&v<)VA|ZD z?IoZQL=s(&EQkTHH`|};VKkX;Cm@3u(EY3kB}m)Ti5_M&0y4r9h0H7+jagsZxd93# zO6o4aa)nltZmt|~qqJ@g_~J%d34X096HBOn6)P*B0!EI84ijb-VbBS^VqIlK3^GN} z1MJ;_36KpBU{sZ@8o|L(wC!jQQZ8FguyS6Uw->Pr^r+xIz->4kpdFV$lcR}kRU)~BX(3isKAZurC{M_N*}+|` zgpKzSfTA=ZfV4mMH5hEn3^0$fgd32yH-_%3g$>5$0Ewm?4GAEp@gO-XM<_|P0~U~T z337%oz-uX4#7cyOs*CdsBn)bgE=6Q85|Gc&Do4D*RM~?E6=r5lZtRwn=zhI8zqzg_7ESQbLV{{>eS3E~7$yPg zKmd{JCg1tZe74=>csLM5HKuQSR3MGe ztEU#y%&`g<#(+#5fZ@~lhwP+F2`AZ~D>>O<*$3A)m7*kW(_0$X&0@2l%iBoj(HbScX`gW7Dm z=6D+50TBovV8}^kXxoEKAV)7cCva#E0092}htsY~I@@={C@_FJj_s}NwMo(=w+Ier zs0%-ykdRjWe4D+wVWFaV;CYOM1_mlC%kZt;lap_^+a}uk``-emW8k_LwDF*$; zchUzJpNM|9F`H6kV98lA0r!H5>gJ9m8JWQ7ST%>Ty^k=}S_};Ht;Fu9p?PBdAB+`n zl~~t#jenX8bl=aEh$eYJfO8;l_`-(C{x>TUwVM_{f1u65)uMgBW5<$L~f4=a?t`u)b(*&!m zpCSy+B!9)ga5x#%*StdX(i@I4bALZH*+qV?yV7UgqBfwCFAR(G@tZc66z+ywYJC?9 z#334vcMfEUuM2v?WbwNRGEkrpN_J$wv6O(-nP^7S0jx9`WACivum5a=p4@y2B&0DXZ z1nL)`KhE0M0ye%hJ0?yt4=Zh4TRS#4fJ^r&B2m zlcCGAQ-nw^!SmMr*AB1j#o$3L(IYnk05J0%R#3kroWHWy;Jn-v*=`P6_J^C2M}I#c zXWPJGoJ`lGK2kEok?ki4s1F66A{{s##a||1tv{SdB4?#p%lgb}IlnM~M!)Ij#-K!) zsya6e$|A-7FI)5Hk*dY~jIEBDV~Gf~0L}xiec!{HHDZ4MXD8K7n3K|-yq~fF7wDZ> zmDeQ>>}I#Q)J>>8<0mBU=etiT)0qWkEBP3h>5_;m>+jdc>Mzy~o=D+5*B90v=gS7K z^{-@f=7S;mOF1{3s>u<)&sN|QD5fxCkExOk^cm|HWlz%fp5FKn0!eq=UFgw0W3$#I zuYaiWv$a}KlC|fMyJLH5hkls&miLV*S)}Y4=C9?b%hKQq{up3PGwSy6BGX?$E`hh6 zK6T*TlAuugGtz?6cHk4IG~oEaW6-M7l-n%w5gsmn&da!*V!s^S)T(h)lz@9|FS2tP zs=>_O_Uinyw!uivqtOOF)L|DtEHX18oFKzL*oYNDIQQKd6ADMxEuP5&5x4Q50%5n} zod|;zj+NjqUeAW+IMQ*clJ@9=b`Sj|hGX!O5M-Gr2pCD78~Ep#2c0;d+erT2_TKlc z=zI>d$)|qo^QZKbSNpqMys1q#Nk;3FY(|hG-4~7S4w7<80Rus_W$3TW?lEb1PDXX%QnpR=SAQn#r8W0 ze1rps4iuy_(E|+^#55Z(RS;Ago2{2UnX3R4zLp7vv-~)sDb6%fV&uTgVIG G00009ic;bL literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/kitty.webp b/public/assets/images/tools/webp/kitty.webp new file mode 100644 index 0000000000000000000000000000000000000000..58e6c659c54582f5d637f8a04b9e8fc510dceadd GIT binary patch literal 2886 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/mindnode.webp b/public/assets/images/tools/webp/mindnode.webp new file mode 100644 index 0000000000000000000000000000000000000000..0868f3584918282079ff3431c8b6286e732f26d2 GIT binary patch literal 2104 zcmV-82*>wQNk&F62mk00DQ!plu^b z=XUp&Kj!-nK}6){*LZ3zR0LMK8`Z`rp~G~HnBoX^lQ_jOr6nQWBow!eq%1@KB_HEE zqW=>BQ?av>+#@lB1yL7$MMw`P0DxH!7wbW3+cv|t^S;%Kdmr0AL&O?c~uo?Y20gz^i& z%nph_R3pTV4dvT;3v58reEBdxMiW<;!NJXEqlfum;SFx`Eoi=*3joH1XmUlnWy-o*}!&UOZ7QY2?MDY|vFN?wfMi^RW}R z44Gx=g%cA~zNb#S$_B;5J{+Frvv}5AI9MAp%j(B>T)0{%WrEUVp9e=@L?K(89DMA+ zH{)p8e)@80@mP~+PE633p+QQvW_8)PIT;$2*~XR%N>Q3VS$^UK!y+|kM72W-6GiKGq)a$#?#a;08st->ZJ>d7O&`c2feBaV2cE$6i3te z=;6y}56AU*^lB1?wkxH&uAf&`U?4!WUXaWzrg}P=OsCOiz*4NIld1}VB*B&mkW9%^ zj4{Pz!VC(Q;xq)31c=rPf=p&I8D>>70|8=Y1wr`NR8~+pAPNNl0I(qdodGI=0D%BL zkwBVArKBRED7q|Auo4Ml0G3x;*w67$=V2p z31?5T2%tdOX6$?H#c@0odc|w(>g=C(1bs()Ak^^8c8p$c`*kj1@^aQNo#MFSisW5C z@9CBsdh6P0n0Y&k^pnvM?+lgCIrKjYn+0%hfklzAhL`r(=H^e~*Up1V=5|Py8T}vk z%N@lTHt&ADZ^b6mG?P{WjyfFp{@?kdS;0IL{hDuao7j;V)@uRf9!>4kNii!>;AvujNT|Jivs8ljfD(83FL=YlbMPxFWc2|ZI(gl zo_9lUdBnH-LH*uPuhAzkzpz)o{x`_OKG7%UOK1ftJ+qat))nFEG%wED3h)+`9NTnM zBcti)m$}6Z$eWA?dC)558VLlv8U4I!O=v$Nf8!~Rc*%IB`j2h|1Vy#+FMa$%utDRg zi~u$&Ki|`LYZ<_Yw8cAkrFE(?NYq8gDxhUEgr$X|<%Lv=aR(o$W@Ve_{Wi)9D}ctZ*Xhqb#Q5 z35JFw0>tqAfep1UHVw$rKklJmb}vzghN=?CQ_S?dTjNPy{2?1VPe&FDwR4ltPu3Zl zJ2|m-nOxg~D<3cSPA_=ivfoa-a4Gs z>{Pli6T%<0WnPZ*#4bJ-5lnk9*wD-LO?0!R;=YPdY7yrWl$*9oIe}AV=)Mw z5*4X(%|)Hbo+yg8b}05CwLsl@bbVCRzgIDvY_|pCMyslVr||)c1+V`xV;v1dR*8Nb z#WMl5k#Mvzs!rF1m{Q>10Ndx!8?x9>@|-^F_rq{(R@O)N^V#$h4AV0_vS^VTB9(-c z**JiQ&aKug60C;BjlGzJz1Nwk5D@lt9A=57`_{4GOdIrPD_$2Tf%yZW8oHcIJc|im z?Akm5S$;V~neJ}-_zXZiNU3y&`2Xt9H@|?g8vHFtKWU@tYtPzF&?z>1>x1Hx0*C)U z5DU*A_E;u=iz&R0i}7X{=fKg%xOs3ccIXVgHKYHT+hEzbr`4y>|ciXM;l~k zIS9~M%T?LMw6D%E8Sp*)5Y_D&x4i7~nFmspOI7MGg(4FF^2$rXB#!<@qg) iz~-ZFyhaWAINKX; literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/neovim.webp b/public/assets/images/tools/webp/neovim.webp new file mode 100644 index 0000000000000000000000000000000000000000..71d9ea1fd92fb38cef8c23e565d88bfeea741814 GIT binary patch literal 3292 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 OeHe3#6128$Z`(G{3u=1Xa%T5# zk9^kk|F8WA_HOO$A;nrI@E*ul0#RW1h=>W`ACuKMmq9DKWK)f#O%cclp$#$?5>oR7 z2r29xZ1+2z5P}-!lu~`MJbyF;387{Qkl1~Dw7b348}vgZNsY4Ym=^Qp^y-k)xmMI5 zffQalx%tcatYXuTuikjaXSW(92pZn}@ZDX?IsW{kp#rEOQg!p>{i~Gq&dJS6Y6vj8 zxwA!ScW#bosx)|EK!FD@45Vgs2g5*-!*I}TgzE{#9$$D(Hm+|^TrN-U)W*(-@%N8S z!TtDqWAaN1KZ>I3rywaGl1?f7sU+4piHp)L;)Hd2X^NkgUdMReEnjyr&Sv}WgMRt? z5ANE|1NEIJDxW5IYVz7?`b$L%R=-S>okI%M-ccJI?Nvd_AW%5!v_a=E2=r`7A?(nK zJ0VEql-ffglltv2P$o(0wL?#mG6>oP^lTuhYKKY^IR)ypLr0(-Ald?vS4iz3p*%oa z@S9cbp3=U$n#0b{^nKJDi)$wrA}y z!_FZTrtuxMK$;kw0m1yqtKAlOJW0to1EL;}_FCZf)W+nEjWYoD`211n?)|WgG1+7kQV7%MMrAvGZW@Aw zvIv29UM$-SI|iXFfRMVQQOS-+T?vs{0PYMARW2P4I|fiT+f~);_e<69_o~Wvwo4tV zin=OORZ~^LtWnqwA!s=pyF4DxmI@)*M!7&(5@`PGtTfYK<^oAZtXBYzlcc>)K^EWM znnVLgtl6xl80&f(4?BfeeDUkSD8{t1cCqS|qI5C2b9bWcDg;RzVLPRGetPTPOE2yZ zV@ke6>$%iUF$$o5c)GRK>vlsWp+*@yre(dH>gv_&U0X3Gd!>nXN-MTg3X+7_L}S~7 zU?UV$g8(OtQ;IQ!r%;3Z6bU0CCDT}Ar?EFn%ZG#6|j9Ba$DQg*gb-OKwjx*2Tlh4wLTihuPzNEgI_0RH@4 zDS4?=V1}fp4S5e*?|{ZaKj*3K>nvk&>zQ(DIV4fj^(pilKkk)r^22P63sj1#qqqK# z{tJJE?{8r}i6~Hh2C;xOEw5fsvhZY?V_k}B5UFx;OsXOR^`xrPu zrgy4M+u)EwwH0scI2bZF;q-qeM0_aJ8Sf5wodMV+Z^QPxN5XiSR9hv0q9cu4k@=OM z`*PuBxvbXuf7kq4c@3H1sYM^W>?v{f3z+OHyPcUe!Lv#c(~mP4F$`W@z+i5F7))-C z6Z016IOgv!N;f*2uI~w})}pg=Ec@{G|9h=2b=8^IlM8kUR!x9*`Ioi5HCwFX@Z$h@ zw2OiVD~?05;*l7Bh`{#?0> z5lW}A(nb%qk(u?*hbh6Nda736kS z*eY}EjQ6QS3eUfQkz*bq#a34t7mODBbnHXIAgp-?4FZ1nxk~9*sx>mz~!|Qdf mRN+qm6j#d$DhRKvQh<^#{{TQwpfvN}tpr%i+*SYp0002=++KhH literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/protonmail.webp b/public/assets/images/tools/webp/protonmail.webp new file mode 100644 index 0000000000000000000000000000000000000000..de3e51043a7372d1c5f8afce4824e2cdea547c35 GIT binary patch literal 1848 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 G00007-pc*} literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/protonvpn.webp b/public/assets/images/tools/webp/protonvpn.webp new file mode 100644 index 0000000000000000000000000000000000000000..44fec63461d064e4843d7bda50692f0d1c18b14c GIT binary patch literal 2382 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/readwise-reader.webp b/public/assets/images/tools/webp/readwise-reader.webp new file mode 100644 index 0000000000000000000000000000000000000000..26255ac17bb7346b4017884ed01db27737e8ee1f GIT binary patch literal 2082 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 aCX7Hx=$ literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/reeder.webp b/public/assets/images/tools/webp/reeder.webp new file mode 100644 index 0000000000000000000000000000000000000000..95f7ad8d26339aba2b5aadd6e69b1d6fea221eed GIT binary patch literal 1820 zcmV+%2jlosNk&E#2LJ$9MM6+kP&il$0000I0001h004jh06|VkO$Gn}0RR90{{a9& zPEAJW1^@sB000I60BisNYXATM0006(Oi)Pn0ssI3&*h+vBu6?|-~aQ+oCAS~$its1 z7UpC_WCW|Th=}qs_gf5xI;%NDQALt_-XxR;K*9j-|9__0BljSu>{^$Z zMqDPH0HxcuPTS6$YwvxYZQCySCI2A5&90?rCnejq?Obo~?^}hlkG~ZsEg~iWLna6i z{SzZq^sN9?F{Y#(+_!ei+RmcIaTJpvNP_KxH1KuwpduIj!+*uTE< z2an$Bnop{b{d(J%Q~f~VWa-jyEm@u<5&EP^95D}7&L|T01At_{5T-1J5Capw{3Z)e z`E{nsAwXSIz51mOi+=n_**K4(dRG-QkG(q=j_mVizfDW0Ivn+NnP)%Vch3u-&nYKu z;kTbZ_^Qa$w04Risc*_`es1pLM{mDj&6=glI&mZdj*&urnJRo!l|_+PUWWz1 zH&K#wl1>~)A|#3NSA|#STwPan)i{q)Dj<|tVu^$Tf@7zEdiBmb=e+mOk#rMm1&IlP zwnH(##3U<*4OUP%AkqT>01y`dodGIs0Bit0g*KK)r6VFCw%5pzpb&{^0Md7bwdmG+ zEX^!aHS!ttP=T+HvIP?ut;Qd^7u2bG$eqGq=wOz;181bc6l^^PJVd#&_0AR~%A8i- zh1c$D>plHdK2PeSL6sUqFLCl0N&au{?41F!^U4_B^Ev#+E0Yhx0v^9?A^nx`ei@e4 z;g2tU5PT$Qt%;2=YvLGPU?OCn90G5~w$`{c#;Pk3g!M57t*Nn4G)LdXW}yG}i5fX! zRsaD0{Zq$u*v${#uXeV}o1&Uf)_6+Ij-o4cDUB7HRb=ig2M3jUfW=Wwp9ty-YVgL> zIh&I@AebKN4Tg;AEnVD7-|O+QUApgmmv72?I<(qb6^`TEh%E*x**e%+gr-Rj$;l3kd;i}CQWbE;U7`MjY3+`CsaT3HY|V;i4-S@a9fOZGQW46PiM2lza>Df1 z?S;ZgFUW?=z;evO0Hg-jjl*>E6Ns{yn{yM6IB3-17?*=SmDcGM2Bq0bSkdhV5I$qx zfPdI=cuW>@Pq9>(=68K;F@;`D24=T6Gl+8pS3Tcg0C%sSlqwf~t7A&)?`s150H2T7 zQz$U|B$b>Y!;Z%RgTFm@Xp!`++tV{5VTIc?n{t;k*f956^Du>$tpNygcUu)Z+kgM-u8O?Ja1O4j`yZ-2R z+H)zEht?rffa$|$jB`n{TzdPPFXi^y+S+~C*u&)mc9^7&?#4!Kha)qUiIrtgQr4Tz zrvlbwwM+!}`gE72e-ZQghp=F7$7@y>0hD7?;+RTchyQSl7;f; zyz6Oen7y-pcJ{5Fel4r}tK~hm;+l#9-Rth}12bxEh8LK!uuwcIhlM+RYbUg7(jj7q z%C0P=b^wEDSCtG-sy|VhVB<>-ai#qK^oN$@Px`gQNQtgfXsLn7PMB=xpV>UO{TvZy z3p)N?7C)CS&PxXKq&ax}go{o#XMI-HfIP3TA(fi#2Z9`e?;O3%(ee%L86!bXq1}o! zlDTNkJIBi_vBrD{z2EBC%jK7o8ybWQj(6>UB)(<%{^N*X@rW}()+?ayPZ6h)OB1tb z(!xv3(y=5MGk44b{4G4!XpZP_TZTx(YR`B0ZdqFfsG}cNWg)RBAP49eU)qFxNo)|* Kp=_xD0002g@NI_x literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/snipd.webp b/public/assets/images/tools/webp/snipd.webp new file mode 100644 index 0000000000000000000000000000000000000000..ae33c3070924a61a5b801d125fcfeb4bcc9be5a1 GIT binary patch literal 1782 zcmVKHco@GBuR=S%RH-Ln0c9Z z--(%i{2kxBGczsIP;;dp1|++>@-alj1n^JGnhe*105RE?G%*5M2sA+k2_a2@0HI=j zX<@e6YBmX|Qno!B4h9E%8X*v>m_Vp??ecQ5G&?`jY&R8Dwdi4gaJb*Od}XINCGbT-$0=m%V#mzdIEKs)(dw>)F>A8`SA=?}a%@ z)nV#Y`Srl1M5^(|MSdKq)|>k%xwm zNGb?!Msk5Nmr>>KfB*mK>-_y*_E?<1G84|;h~y?_ zqD*E?HxGTB2yiBbjM2S3bjM)t=HbA03WM#3d3bEnmxl{k*j)gW!rhITw=OjehNPPIP{@%Yn ziHjU+K%9Wk~#AOE;{adlx@ zHQ>(fy`LUjkI|T;8q4t!NBhB-x0h#T=4NK5TSZYQ98pCK*e*xq@UYuC=yW>UHv+OqWYGR1ww=)#+4EHcrX@bGKB>~ z3ItPmAxQyA2u*}BJ{e5{LI@#16JWp?W6Y!q#Ia%$&9MeE(K=>=&0nMe09H^qAnXDF z08kVFodGI=0D%BLkw}|LC9^Ccrq!xqU=j&q0MWG)&*hQ8dkOBC6Go2F>20B%_khr! zw-NkOJ}oL?R%o~mw-3q@i+I?xb^> z@ZAp_5iVFU__BY9Pda|LccRQeU;+iuPNf`Vo;355J#Z)A8iU78w5fy7-Eeb{LFF@M zCpcq(ui+YE-yl-M%x@#W0RH=&(W$CcFBT#LeJ&z0a2L_I#NHr#Bj5j7G^vHhZ02RkqFbk_Z+E(L=`QvMQ?#`{b?h)E-pVAGy6Gw)DY zh5!SvtCn{=GV^)}KW|ixFzIPz?~pDb9ocfb^=dC^oMSL)Fci&;lCpHs;>kL1V%p0x Y-~>y)KF$huS@ci{{EcV;000000IdW(y8r+H literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/things.webp b/public/assets/images/tools/webp/things.webp new file mode 100644 index 0000000000000000000000000000000000000000..6ea3ac9163b826eff8d481c1b4274ef022694f34 GIT binary patch literal 2142 zcmV-k2%+~mjoH>*``h1lZJUuEBEQ&HYMX!HMND64r_OB~$F@=U_MSo2t@=)#*-ji0 z6F{^LtxmLRcH*29hjwjR=bg1y4CUF0!T0V{^Y%1S=81?Z-vG$ zp8q5ik>2$Lbbk8apUv%h15ztbyJo)Eq4un-F+I?`j*aYn9g2r5XIk|JG=I%A+zHW> zpVr&;q$<2UROfEUuD)2a{$5>prW?Td5Z?JLfa{gv+8oKH(#`{RtW~!c(oX_Av>kNn zwyePxZL8K`owg*yYHi4niA#`*^YRjTUS1+EMJCS6OXPW^;u2&lJdbq6mx)V|iu3T| zQs=~Z^YWay%o24@UFuAncMzY+OPz`H@=`~29_pMrpRDv!d0t+o&#OxlbzWY&;`8!S zeNJ6MbqMMzC3SPN>P9Chu4igoTwC5Lt_%N)>&JiEIEXfFbK~fvGWIWG#Hg$t7z@x% z>x3B{1>WeKtJHxWEsFwz;(z1Fg*icKv{noz?ia50+`8#bvpp1 z5n)|5p{pPQ);a{#=`{e>UXaFN)OP8LlQq_>YkH0VIHYT!LXaHS)fGT6PR+||V+72* z3o=pXZ_J$0T)J()s4H{t49@w|B`pvItHTL*DmViGS30)^P9DfpGr-K;_)baZj93i} z7(TXqIIw;^0yO~QAKT9?<>qdpu7Po)Zy+>dz4hNmvQDkF9a}E_wfnL(F{@)BktSNg zYVVz)!5EFbMS*}76aZAv#I!kQ4IzU0&%Ff!AdJl^Ahf?7B4B8UK+G$DzcW%)!9x3s z_a`d>%^DeFwKV<7^Ov2!zGcc?FTeE1V!0aGOfB>B!ra8FO^1#j+q-SUDsR?GjFr;l zNbmpcL;uXpm8yX#B!=qZ?5b>4n$()XT802a3?YO{d3wH-2a-hqAY+nv@11jku$qW5 zhCJjU5=(1l&YT&9ZA4^bB*7&i%wRBFBtVd87FJL=Aj|{+0MHu%odGIf0CNC7kvy45 zrK2LDDzgoEuo4Mm0LR?h5YNJI!AgzzBR~1?djFUYHlIgd?RV3C06JTk2=6vs8f$-9 z=UUL4=3D1I4*y^PEI|$|nS|MdLwPw4`!g2e8Rho|uFy3P^2{uaHQ2ZST-;JO!sWLh z`EVXjK18$DSeRdR1G^>EkHlQ+X0od|iqd%A#l^dHw|P1>vrqJ9nG3pTen^x51jG$? zur7x6`o2p{e$GAIRWNR3~EhnPFO9jTdgjQ_E1A1(u(@|{a1pFq;mY@w?NhNkE-v;d`LhN zIJ(-}$WqNsTPdh7AkQ0g1pY}#Tr_2DCbmqig2wLI8pLy7lk8cTUKvLhBxs~ROS|(n zc#!_Ba;KY7e(*<h!}Q&RbtEP} z0r$96ibw2-$HJUtsOyn$r_*Wr)B45ffncsMnwUv^kq6YPDaq$Q0@{Yodbt%|eYN75 z1xc62O!~fmQS7|Z?~`0ju7}zwT-_%brb;e%NuGd!2If6Ps3H7qQ_~4PbE+&~FZ5cjaV~#b z*0Zuv;Ckma!=%!g*Rx!WrD1MNq@XiMwWs@UpT6gq?BnvBu5mDtN&N%bfD~A6fl%{l zn~g{Tzq!UJis1TL@vBB#+madrW+qx>amP)Biinue4r_N}`;WLUd3Y$y=xCMPM}vDz zb^K$aI`&L@Sfpwt7KG9F10+`dcARfhD(#>hApZDw8W+KpKmc zx2KagWZaUKXM~i_!FoW2H5rhgzsP#*;k)Xc2R69UNf-e0zX4iTv4;vMF2bG%we=aa URn(rPVUmnJa7(b;=>uQ@0MZaBiU0rr literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/tmux.webp b/public/assets/images/tools/webp/tmux.webp new file mode 100644 index 0000000000000000000000000000000000000000..0802818535c9df98d732325de9a9dd3a23ccbab1 GIT binary patch literal 1168 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 O^XHVys-~IcAOHYvf5gK8 literal 0 HcmV?d00001 diff --git a/public/assets/images/tools/webp/yoink.webp b/public/assets/images/tools/webp/yoink.webp new file mode 100644 index 0000000000000000000000000000000000000000..776434cc3004a8deb6bca7899c2f1aa590b12fc7 GIT binary patch literal 4758 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 - + {entry.data.title} )) } diff --git a/src/components/Image.astro b/src/components/Image.astro index 7e90564..fff68f1 100644 --- a/src/components/Image.astro +++ b/src/components/Image.astro @@ -1,15 +1,6 @@ --- import cx from 'classnames'; -import { Img } from 'astro-imagetools/components'; -import type { ImgConfigOptions } from 'astro-imagetools'; - -interface Props extends ImgConfigOptions { - class?: string; - noMargin?: boolean; - src: string; -} - const { class: className, noMargin, src, ...props } = Astro.props; const classes = cx( @@ -22,17 +13,5 @@ const imageClasses = ---

- { - src.includes('.svg') ? ( - - ) : ( - - ) - } +
diff --git a/src/components/JournalList.astro b/src/components/JournalList.astro index 4b4478d..ceda414 100644 --- a/src/components/JournalList.astro +++ b/src/components/JournalList.astro @@ -1,5 +1,5 @@ --- -import { Picture } from 'astro-imagetools/components'; +import { Picture } from 'astro:assets'; import type { CollectionEntry } from 'astro:content'; interface Props { @@ -28,19 +28,13 @@ const { entries } = Astro.props; >
{data.cover ? ( - <> - {data.cover.endsWith('.svg') ? ( - {data.title} - ) : ( - - )} - + ) : (
- { - src.includes('.svg') ? ( - - ) : ( - - ) - } +
diff --git a/src/components/Picture.astro b/src/components/Picture.astro deleted file mode 100644 index 375a077..0000000 --- a/src/components/Picture.astro +++ /dev/null @@ -1,38 +0,0 @@ ---- -import cx from 'classnames'; - -import { Picture as AstroImageToolsPicture } from 'astro-imagetools/components'; -import type { PictureConfigOptions } from 'astro-imagetools'; - -interface Props extends PictureConfigOptions { - alt: string; - aspect: number; - breakpoints?: number[]; - class?: string; - noMargin?: boolean; - src: string; -} - -const { class: className, noMargin, src, ...props } = Astro.props; - -const classes = cx( - 'image-shadow block h-auto w-full rounded-1 border-1 border-solid border-black/[0.1] bg-black/[0.1] shadow shadow-black/10 mbe-10 mbs-0 dark:border-white/[0.1] dark:opacity-[0.87] dark:shadow-white/5 border-x-0', - { 'mbe-0': noMargin }, - className -); ---- - -
- { - src.includes('.svg') ? ( - - ) : ( - - ) - } -
diff --git a/src/components/ProjectImage.astro b/src/components/ProjectImage.astro index 3c2a5a4..4072ee0 100644 --- a/src/components/ProjectImage.astro +++ b/src/components/ProjectImage.astro @@ -1,6 +1,6 @@ --- import type { CollectionEntry } from 'astro:content'; -import Picture from './Picture.astro'; +import Image from './Image.astro'; interface Props { project: CollectionEntry<'projects'>; @@ -16,12 +16,9 @@ const { project } = Astro.props; {project.data.title}
) : ( - )) diff --git a/src/components/Toolbox.astro b/src/components/Toolbox.astro index a8252ea..46373ab 100644 --- a/src/components/Toolbox.astro +++ b/src/components/Toolbox.astro @@ -1,5 +1,5 @@ --- -import { Img } from 'astro-imagetools/components'; +import { Image } from 'astro:assets'; import { Link } from '.'; import type { ToolsProps } from '../data/tools'; @@ -18,16 +18,7 @@ const { tools } = Astro.props; tools.map(({ name, url, image }) => (
  • - {name} + {name}
  • )) diff --git a/src/data/tools.ts b/src/data/tools.ts index 772d8ef..4f29d88 100644 --- a/src/data/tools.ts +++ b/src/data/tools.ts @@ -8,27 +8,27 @@ export const development = [ { name: 'Neovim', url: 'https://neovim.io/', - image: '/assets/images/tools/neovim.png', + image: '/assets/images/tools/webp/neovim.webp', }, { name: 'Tmux', url: 'https://tmux.github.io/', - image: '/assets/images/tools/tmux.png', + image: '/assets/images/tools/webp/tmux.webp', }, { name: 'Wezterm', url: 'https://wezfurlong.org/wezterm/', - image: '/assets/images/tools/wezterm.png', + image: '/assets/images/tools/webp/wezterm.webp', }, { name: 'Visual Studio Code', url: 'https://code.visualstudio.com/', - image: '/assets/images/tools/visual-studio-code.png', + image: '/assets/images/tools/webp/visual-studio-code.webp', }, { name: 'Kaleidoscope', url: 'https://kaleidoscope.app/', - image: '/assets/images/tools/kaleidoscope.png', + image: '/assets/images/tools/webp/kaleidoscope.webp', }, ]; @@ -36,32 +36,32 @@ export const design = [ { name: 'Affinity Designer', url: 'https://affinity.serif.com/designer/', - image: '/assets/images/tools/affinity-designer.png', + image: '/assets/images/tools/webp/affinity-designer.webp', }, { name: 'Affinity Photo', url: 'https://affinity.serif.com/photo/', - image: '/assets/images/tools/affinity-photo.png', + image: '/assets/images/tools/webp/affinity-photo.webp', }, { name: 'Affinity Publisher', url: 'https://affinity.serif.com/publisher/', - image: '/assets/images/tools/affinity-publisher.png', + image: '/assets/images/tools/webp/affinity-publisher.webp', }, { name: 'Eagle', url: 'https://eagle.cool/', - image: '/assets/images/tools/eagle.png', + image: '/assets/images/tools/webp/eagle.webp', }, { name: 'Procreate', url: 'https://procreate.com/', - image: '/assets/images/tools/procreate.png', + image: '/assets/images/tools/webp/procreate.webp', }, { name: 'Typeface', url: 'https://typefaceapp.com/', - image: '/assets/images/tools/typeface.png', + image: '/assets/images/tools/webp/typeface.webp', }, ]; @@ -69,57 +69,57 @@ export const research = [ { name: 'iA Writer', url: 'https://ia.net/writer', - image: '/assets/images/tools/ia-writer.png', + image: '/assets/images/tools/webp/ia-writer.webp', }, { name: 'iA Presenter', url: 'https://ia.net/presenter', - image: '/assets/images/tools/ia-presenter.png', + image: '/assets/images/tools/webp/ia-presenter.webp', }, { name: 'Obsidian', url: 'https://obsidian.md/', - image: '/assets/images/tools/obsidian.png', + image: '/assets/images/tools/webp/obsidian.webp', }, { name: 'DEVONthink', url: 'https://www.devontechnologies.com/apps/devonthink', - image: '/assets/images/tools/devonthink.png', + image: '/assets/images/tools/webp/devonthink.webp', }, { name: 'Raindrop.io', url: 'https://raindrop.io/', - image: '/assets/images/tools/raindrop.io.png', + image: '/assets/images/tools/webp/raindrop.io.webp', }, { name: 'Reeder', url: 'https://reeder.app/', - image: '/assets/images/tools/reeder.png', + image: '/assets/images/tools/webp/reeder.webp', }, { name: 'Readwise Reader', url: 'https://readwise.io/read', - image: '/assets/images/tools/readwise-reader.png', + image: '/assets/images/tools/webp/readwise-reader.webp', }, { name: 'Readwise', url: 'https://readwise.io/i/stefan805', - image: '/assets/images/tools/readwise.png', + image: '/assets/images/tools/webp/readwise.webp', }, { name: 'Snipd', url: 'https://www.snipd.com/', - image: '/assets/images/tools/snipd.png', + image: '/assets/images/tools/webp/snipd.webp', }, { name: 'MindNode', url: 'https://www.mindnode.com/', - image: '/assets/images/tools/mindnode.png', + image: '/assets/images/tools/webp/mindnode.webp', }, { name: 'BibDesk', url: 'https://bibdesk.sourceforge.io/', - image: '/assets/images/tools/bibdesk.png', + image: '/assets/images/tools/webp/bibdesk.webp', }, ]; @@ -127,46 +127,46 @@ export const other = [ { name: 'Things', url: 'https://culturedcode.com/things/', - image: '/assets/images/tools/things.png', + image: '/assets/images/tools/webp/things.webp', }, { name: 'Raycast', url: 'https://www.raycast.com/hey/059d78ca', - image: '/assets/images/tools/raycast.png', + image: '/assets/images/tools/webp/raycast.webp', }, { name: 'Arc', url: 'https://arc.net/gift/3a2fd063', - image: '/assets/images/tools/arc-browser.png', + image: '/assets/images/tools/webp/arc-browser.webp', }, { name: 'Brave Browser', url: 'https://brave.com/', - image: '/assets/images/tools/brave-browser.png', + image: '/assets/images/tools/webp/brave-browser.webp', }, { name: 'Proton Mail', url: 'https://proton.me/mail', - image: '/assets/images/tools/protonmail.png', + image: '/assets/images/tools/webp/protonmail.webp', }, { name: 'Proton VPN', url: 'https://protonvpn.com/', - image: '/assets/images/tools/protonvpn.png', + image: '/assets/images/tools/webp/protonvpn.webp', }, { name: 'Proton Pass', url: 'https://proton.me/pass', - image: '/assets/images/tools/protonpass.png', + image: '/assets/images/tools/webp/protonpass.webp', }, { name: 'Yoink', url: 'https://eternalstorms.at/yoink/mac/', - image: '/assets/images/tools/yoink.png', + image: '/assets/images/tools/webp/yoink.webp', }, { name: 'Karabiner-Elements', url: 'https://karabiner-elements.pqrs.org/', - image: '/assets/images/tools/karabiner-elements.png', + image: '/assets/images/tools/webp/karabiner-elements.webp', }, ]; diff --git a/src/layouts/AboutLayout.astro b/src/layouts/AboutLayout.astro index f2446fd..fc51f0e 100644 --- a/src/layouts/AboutLayout.astro +++ b/src/layouts/AboutLayout.astro @@ -3,7 +3,7 @@ import { site } from '../data/site'; import GridLayout from './GridLayout.astro'; import PageTitle from '../components/PageTitle.astro'; -import Picture from '../components/Picture.astro'; +import Image from '../components/Image.astro'; const { frontmatter } = Astro.props; const schema = JSON.stringify({ @@ -35,12 +35,7 @@ const schema = JSON.stringify({ slot="before-content" class="col-start-1 col-end-12 md:col-start-3 md:col-end-10 xl:col-start-15 xl:col-end-18 xl:row-start-2 xl:-scale-x-100 3xl:col-start-14 3xl:col-end-17" > - + Stefan Imhoff