From beefabb9088020c84dc0e66b234bcfba2fd69987 Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Sun, 6 Oct 2024 13:27:18 +0200 Subject: [PATCH] Links page. Icons using npm package instead of svgs. Props and types. Signed-off-by: Martin Berg Alstad --- .env | 3 +- astro.config.mjs | 6 +- messages/en.json | 4 +- messages/nb.json | 4 +- package.json | 2 + pnpm-lock.yaml | 495 ++++++++++++++++++++++++ src/components/Footer.astro | 10 +- src/components/Greeting.astro | 2 + src/components/icons/Gitea.astro | 10 + src/components/icons/PajamasIcon.astro | 12 + src/components/links/ExternalLink.astro | 10 +- src/components/links/GiteaLink.astro | 4 +- src/components/myLinks/LinkCard.astro | 23 ++ src/components/myLinks/LinksPage.astro | 15 + src/components/myLinks/myLinks.ts | 47 +++ src/env.d.ts | 1 + src/icons/ExternalLink.astro | 18 - src/icons/GitHub.astro | 18 - src/icons/Gitea.astro | 18 - src/icons/Hamburger.astro | 18 - src/icons/LinkedIn.astro | 18 - src/icons/Mastodon.astro | 17 - src/pages/en/links.astro | 6 +- src/pages/index.astro | 13 - src/pages/links.astro | 6 +- src/types/icons.ts | 3 + src/types/props.ts | 8 + 27 files changed, 656 insertions(+), 135 deletions(-) create mode 100644 src/components/icons/Gitea.astro create mode 100644 src/components/icons/PajamasIcon.astro create mode 100644 src/components/myLinks/LinkCard.astro create mode 100644 src/components/myLinks/LinksPage.astro create mode 100644 src/components/myLinks/myLinks.ts delete mode 100644 src/icons/ExternalLink.astro delete mode 100644 src/icons/GitHub.astro delete mode 100644 src/icons/Gitea.astro delete mode 100644 src/icons/Hamburger.astro delete mode 100644 src/icons/LinkedIn.astro delete mode 100644 src/icons/Mastodon.astro create mode 100644 src/types/icons.ts create mode 100644 src/types/props.ts diff --git a/.env b/.env index fc48fe7..b7c762a 100644 --- a/.env +++ b/.env @@ -1 +1,2 @@ -GIT_URL="https://git.martials.no" \ No newline at end of file +GIT_URL="https://git.martials.no" +STATUS_URL="https://status.martials.no/status/home" \ No newline at end of file diff --git a/astro.config.mjs b/astro.config.mjs index 7ed3d9b..29343ea 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -6,6 +6,8 @@ import { loadEnv } from "vite" import mdx from "@astrojs/mdx" import svelte from "@astrojs/svelte" +import icon from "astro-icon"; + const { url } = process.env.URL ? loadEnv(process.env.URL, process.cwd(), "") : { url: "http://localhost:3000" } @@ -17,5 +19,5 @@ export default defineConfig({ defaultLocale: "nb", locales: ["nb", "en"] }, - integrations: [tailwind(), sitemap(), mdx(), svelte()] -}) + integrations: [tailwind(), sitemap(), mdx(), svelte(), icon()] +}) \ No newline at end of file diff --git a/messages/en.json b/messages/en.json index 0338089..ee3d65e 100644 --- a/messages/en.json +++ b/messages/en.json @@ -10,5 +10,7 @@ "hardware": "Hardware", "sourceCode": "Source code", "createdAt": "Created at", - "updatedAt": "Updated at" + "updatedAt": "Updated at", + "forPersonalProjects": "For personal projects", + "status": "Status" } diff --git a/messages/nb.json b/messages/nb.json index 9fb27ae..c72b71f 100644 --- a/messages/nb.json +++ b/messages/nb.json @@ -10,5 +10,7 @@ "hardware": "Maskinvare", "sourceCode": "Kildekode", "createdAt": "Opprettet", - "updatedAt": "Oppdatert" + "updatedAt": "Oppdatert", + "forPersonalProjects": "For personlige prosjekter", + "status": "Status" } diff --git a/package.json b/package.json index 79ba8bc..7a38bca 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,10 @@ "@astrojs/sitemap": "^3.1.6", "@astrojs/svelte": "^5.7.1", "@astrojs/tailwind": "^5.1.1", + "@iconify-json/pajamas": "^1.2.2", "@tailwindcss/typography": "^0.5.15", "astro": "^4.15.9", + "astro-icon": "^1.1.1", "sharp": "^0.33.5", "svelte": "^4.2.19", "tailwindcss": "^3.4.13", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 54b4b20..498216c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,12 +23,18 @@ importers: '@astrojs/tailwind': specifier: ^5.1.1 version: 5.1.1(astro@4.15.9(rollup@4.21.2)(typescript@5.6.2))(tailwindcss@3.4.13) + '@iconify-json/pajamas': + specifier: ^1.2.2 + version: 1.2.2 '@tailwindcss/typography': specifier: ^0.5.15 version: 0.5.15(tailwindcss@3.4.13) astro: specifier: ^4.15.9 version: 4.15.9(rollup@4.21.2)(typescript@5.6.2) + astro-icon: + specifier: ^1.1.1 + version: 1.1.1 sharp: specifier: ^0.33.5 version: 0.33.5 @@ -71,6 +77,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@antfu/install-pkg@0.4.1': + resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + '@astrojs/check@0.9.3': resolution: {integrity: sha512-I6Dz45bMI5YRbp4yK2LKWsHH3/kkHRGdPGruGkLap6pqxhdcNh7oCgN04Ac+haDfc9ow5BYPGPmEhkwef15GQQ==} hasBin: true @@ -385,6 +397,18 @@ packages: cpu: [x64] os: [win32] + '@iconify-json/pajamas@1.2.2': + resolution: {integrity: sha512-F3BqRWsOvzlZWnIslF0p3EsF05okYB3SQn+MzaFfShYsomknSGH8zSoqTMkacxJAE0TVd2fDKkYyMTRFfcIP1g==} + + '@iconify/tools@4.0.7': + resolution: {integrity: sha512-zOJxKIfZn96ZRGGvIWzDRLD9vb2CsxjcLuM+QIdvwWbv6SWhm49gECzUnd4d2P0sq9sfodT7yCNobWK8nvavxQ==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.1.33': + resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==} + '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -656,6 +680,10 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} @@ -704,12 +732,18 @@ packages: '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + '@types/tar@6.1.13': + resolution: {integrity: sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==} + '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -801,6 +835,9 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true + astro-icon@1.1.1: + resolution: {integrity: sha512-HKBesWk2Faw/0+klLX+epQVqdTfSzZz/9+5vxXUjTJaN/HnpDf608gRPgHh7ZtwBPNJMEFoU5GLegxoDcT56OQ==} + astro@4.15.9: resolution: {integrity: sha512-51oXq9qrZ5OPWYmEXt1kGrvWmVeWsx28SgBTzi2XW6iwcnW/wC5ONm6ol6qBGSCF93tQvZplXvuzpaw1injECA==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} @@ -836,6 +873,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + boxen@7.1.1: resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} engines: {node: '>=14.16'} @@ -852,6 +892,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} @@ -886,10 +929,21 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.0.0: + resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} + engines: {node: '>=18.17'} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + ci-info@4.0.0: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} @@ -955,9 +1009,16 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + common-ancestor-path@1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} @@ -973,18 +1034,33 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-selector-tokenizer@0.8.0: resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==} + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + css-tree@2.3.1: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + culori@3.3.0: resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1052,6 +1128,19 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dset@3.1.3: resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} engines: {node: '>=4'} @@ -1074,6 +1163,12 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + encoding-sniffer@0.2.0: + resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -1134,6 +1229,11 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1150,6 +1250,9 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -1189,6 +1292,10 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1209,6 +1316,10 @@ packages: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -1289,9 +1400,16 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} @@ -1429,6 +1547,9 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -1444,6 +1565,10 @@ packages: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} @@ -1543,6 +1668,9 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -1675,10 +1803,34 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} @@ -1718,6 +1870,9 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -1726,6 +1881,9 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@7.0.0: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} @@ -1761,12 +1919,21 @@ packages: package-json-from-dist@1.0.0: resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-manager-detector@0.2.1: + resolution: {integrity: sha512-/hVW2fZvAdEas+wyKh0SnlZ2mx0NIa1+j11YaQkogEJkcMErbwchHCuo8z7lEtajZJQZ6rgZNVTWMVVd71Bjng==} + parse-entities@4.0.1: resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} parse-latin@7.0.0: resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} + parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -1791,6 +1958,12 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} @@ -1817,6 +1990,9 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} + pkg-types@1.2.0: + resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} + postcss-import@15.1.0: resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} @@ -1904,6 +2080,9 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -1997,6 +2176,9 @@ packages: s.color@0.0.15: resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sass-formatter@0.7.9: resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} @@ -2136,11 +2318,20 @@ packages: resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==} engines: {node: '>=16'} + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + tailwindcss@3.4.13: resolution: {integrity: sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==} engines: {node: '>=14.0.0'} hasBin: true + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -2196,6 +2387,13 @@ packages: engines: {node: '>=14.17'} hasBin: true + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + undici@6.19.8: + resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} + engines: {node: '>=18.17'} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -2406,6 +2604,14 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + which-pm-runs@1.1.0: resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} engines: {node: '>=4'} @@ -2431,6 +2637,9 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + xxhash-wasm@1.0.2: resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} @@ -2441,6 +2650,9 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml-language-server@1.15.0: resolution: {integrity: sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==} hasBin: true @@ -2462,6 +2674,9 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yocto-queue@1.1.1: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} @@ -2492,6 +2707,13 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@antfu/install-pkg@0.4.1': + dependencies: + package-manager-detector: 0.2.1 + tinyexec: 0.3.0 + + '@antfu/utils@0.7.10': {} + '@astrojs/check@0.9.3(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.2)': dependencies: '@astrojs/language-server': 2.14.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.2) @@ -2856,6 +3078,41 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true + '@iconify-json/pajamas@1.2.2': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/tools@4.0.7': + dependencies: + '@iconify/types': 2.0.0 + '@iconify/utils': 2.1.33 + '@types/tar': 6.1.13 + axios: 1.7.7 + cheerio: 1.0.0 + domhandler: 5.0.3 + extract-zip: 2.0.1 + local-pkg: 0.5.0 + pathe: 1.1.2 + svgo: 3.3.2 + tar: 6.2.1 + transitivePeerDependencies: + - debug + - supports-color + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.1.33': + dependencies: + '@antfu/install-pkg': 0.4.1 + '@antfu/utils': 0.7.10 + '@iconify/types': 2.0.0 + debug: 4.3.7 + kolorist: 1.8.0 + local-pkg: 0.5.0 + mlly: 1.7.1 + transitivePeerDependencies: + - supports-color + '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.0.4 @@ -3112,6 +3369,8 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 3.4.13 + '@trysound/sax@0.2.0': {} + '@types/acorn@4.0.6': dependencies: '@types/estree': 1.0.5 @@ -3171,10 +3430,20 @@ snapshots: dependencies: '@types/node': 17.0.45 + '@types/tar@6.1.13': + dependencies: + '@types/node': 17.0.45 + minipass: 4.2.8 + '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 17.0.45 + optional: true + '@ungap/structured-clone@1.2.0': {} '@volar/kit@2.4.4(typescript@5.6.2)': @@ -3281,6 +3550,15 @@ snapshots: astring@1.9.0: {} + astro-icon@1.1.1: + dependencies: + '@iconify/tools': 4.0.7 + '@iconify/types': 2.0.0 + '@iconify/utils': 2.1.33 + transitivePeerDependencies: + - debug + - supports-color + astro@4.15.9(rollup@4.21.2)(typescript@5.6.2): dependencies: '@astrojs/compiler': 2.10.3 @@ -3393,6 +3671,8 @@ snapshots: binary-extensions@2.3.0: {} + boolbase@1.0.0: {} + boxen@7.1.1: dependencies: ansi-align: 3.0.1 @@ -3419,6 +3699,8 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) + buffer-crc32@0.2.13: {} + camelcase-css@2.0.1: {} camelcase@7.0.1: {} @@ -3443,6 +3725,29 @@ snapshots: character-reference-invalid@2.0.1: {} + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + + cheerio@1.0.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + encoding-sniffer: 0.2.0 + htmlparser2: 9.1.0 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + parse5-parser-stream: 7.1.2 + undici: 6.19.8 + whatwg-mimetype: 4.0.0 + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -3455,6 +3760,8 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chownr@2.0.0: {} + ci-info@4.0.0: {} cli-boxes@3.0.0: {} @@ -3515,8 +3822,12 @@ snapshots: commander@4.1.1: {} + commander@7.2.0: {} + common-ancestor-path@1.0.1: {} + confbox@0.1.7: {} + consola@3.2.3: {} convert-source-map@2.0.0: {} @@ -3529,18 +3840,37 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + css-selector-tokenizer@0.8.0: dependencies: cssesc: 3.0.0 fastparse: 1.1.2 + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.0 + css-tree@2.3.1: dependencies: mdn-data: 2.0.30 source-map-js: 1.2.0 + css-what@6.1.0: {} + cssesc@3.0.0: {} + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + culori@3.3.0: {} daisyui@4.12.10(postcss@8.4.45): @@ -3588,6 +3918,24 @@ snapshots: dlv@1.1.3: {} + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dset@3.1.3: {} eastasianwidth@0.2.0: {} @@ -3605,6 +3953,15 @@ snapshots: emoji-regex@9.2.2: {} + encoding-sniffer@0.2.0: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + entities@4.5.0: {} es-module-lexer@1.5.4: {} @@ -3681,6 +4038,16 @@ snapshots: extend@3.0.2: {} + extract-zip@2.0.1: + dependencies: + debug: 4.3.7 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + fast-deep-equal@3.1.3: {} fast-glob@3.3.2: @@ -3699,6 +4066,10 @@ snapshots: dependencies: reusify: 1.0.4 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -3732,6 +4103,10 @@ snapshots: fraction.js@4.3.7: {} + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + fsevents@2.3.3: optional: true @@ -3743,6 +4118,10 @@ snapshots: get-east-asian-width@1.2.0: {} + get-stream@5.2.0: + dependencies: + pump: 3.0.2 + github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -3913,8 +4292,19 @@ snapshots: html-void-elements@3.0.0: {} + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + http-cache-semantics@4.1.1: {} + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + import-meta-resolve@4.1.0: {} inline-style-parser@0.1.1: {} @@ -4013,6 +4403,8 @@ snapshots: kleur@4.1.5: {} + kolorist@1.8.0: {} + lilconfig@2.1.0: {} lilconfig@3.1.2: {} @@ -4026,6 +4418,11 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 + local-pkg@0.5.0: + dependencies: + mlly: 1.7.1 + pkg-types: 1.2.0 + locate-character@3.0.0: {} locate-path@5.0.0: @@ -4239,6 +4636,8 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdn-data@2.0.28: {} + mdn-data@2.0.30: {} merge2@1.4.1: {} @@ -4526,8 +4925,30 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@4.2.8: {} + + minipass@5.0.0: {} + minipass@7.1.2: {} + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mkdirp@1.0.4: {} + + mlly@1.7.1: + dependencies: + acorn: 8.12.1 + pathe: 1.1.2 + pkg-types: 1.2.0 + ufo: 1.5.4 + mrmime@2.0.0: {} ms@2.1.3: {} @@ -4559,10 +4980,18 @@ snapshots: normalize-range@0.1.2: {} + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + object-assign@4.1.1: {} object-hash@3.0.0: {} + once@1.4.0: + dependencies: + wrappy: 1.0.2 + onetime@7.0.0: dependencies: mimic-function: 5.0.1 @@ -4602,6 +5031,8 @@ snapshots: package-json-from-dist@1.0.0: {} + package-manager-detector@0.2.1: {} + parse-entities@4.0.1: dependencies: '@types/unist': 2.0.11 @@ -4622,6 +5053,15 @@ snapshots: unist-util-visit-children: 3.0.0 vfile: 6.0.3 + parse5-htmlparser2-tree-adapter@7.0.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.1.2 + + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.1.2 + parse5@7.1.2: dependencies: entities: 4.5.0 @@ -4644,6 +5084,10 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + pathe@1.1.2: {} + + pend@1.2.0: {} + periscopic@3.1.0: dependencies: '@types/estree': 1.0.5 @@ -4664,6 +5108,12 @@ snapshots: dependencies: find-up: 4.1.0 + pkg-types@1.2.0: + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 + postcss-import@15.1.0(postcss@8.4.45): dependencies: postcss: 8.4.45 @@ -4746,6 +5196,11 @@ snapshots: proxy-from-env@1.1.0: {} + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + queue-microtask@1.2.3: {} read-cache@1.0.0: @@ -4905,6 +5360,8 @@ snapshots: s.color@0.0.15: {} + safer-buffer@2.1.2: {} + sass-formatter@0.7.9: dependencies: suf-log: 2.5.3 @@ -5076,6 +5533,16 @@ snapshots: magic-string: 0.30.11 periscopic: 3.1.0 + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.1.0 + tailwindcss@3.4.13: dependencies: '@alloc/quick-lru': 5.2.0 @@ -5103,6 +5570,15 @@ snapshots: transitivePeerDependencies: - ts-node + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -5141,6 +5617,10 @@ snapshots: typescript@5.6.2: {} + ufo@1.5.4: {} + + undici@6.19.8: {} + unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -5350,6 +5830,12 @@ snapshots: web-namespaces@2.0.1: {} + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@4.0.0: {} + which-pm-runs@1.1.0: {} which-pm@3.0.0: @@ -5376,12 +5862,16 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 + wrappy@1.0.2: {} + xxhash-wasm@1.0.2: {} y18n@5.0.8: {} yallist@3.1.1: {} + yallist@4.0.0: {} + yaml-language-server@1.15.0: dependencies: ajv: 8.17.1 @@ -5413,6 +5903,11 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + yocto-queue@1.1.1: {} zod-to-json-schema@3.23.2(zod@3.23.8): diff --git a/src/components/Footer.astro b/src/components/Footer.astro index f071499..cbfa11a 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -1,9 +1,17 @@ --- import GiteaLink from "./links/GiteaLink.astro" +import ExternalLink from "./links/ExternalLink.astro" +import PajamasIcon from "./icons/PajamasIcon.astro" +import * as m from "@/paraglide/messages" const gitUrl = import.meta.env.GIT_URL +const statusUrl = import.meta.env.STATUS_URL ---
-
+
+ + + {m.status()} +
diff --git a/src/components/Greeting.astro b/src/components/Greeting.astro index 5f48a25..c9247b5 100644 --- a/src/components/Greeting.astro +++ b/src/components/Greeting.astro @@ -18,3 +18,5 @@ import "@/styles/global.css"
Me on a hike + + \ No newline at end of file diff --git a/src/components/icons/Gitea.astro b/src/components/icons/Gitea.astro new file mode 100644 index 0000000..e03339f --- /dev/null +++ b/src/components/icons/Gitea.astro @@ -0,0 +1,10 @@ +--- +import PajamasIcon from "./PajamasIcon.astro" +interface Props { + class?: string +} + +const { class: clazz } = Astro.props +--- + + diff --git a/src/components/icons/PajamasIcon.astro b/src/components/icons/PajamasIcon.astro new file mode 100644 index 0000000..9a715bb --- /dev/null +++ b/src/components/icons/PajamasIcon.astro @@ -0,0 +1,12 @@ +--- +import type { PajamasIcon } from "@/types/icons" +import type { ComponentProps } from "@/types/props" +import { Icon } from "astro-icon/components" +interface Props extends ComponentProps { + name: PajamasIcon +} + +const { name, class: clazz, ...props } = Astro.props +--- + + diff --git a/src/components/links/ExternalLink.astro b/src/components/links/ExternalLink.astro index 4e5e91c..94d30ea 100644 --- a/src/components/links/ExternalLink.astro +++ b/src/components/links/ExternalLink.astro @@ -1,12 +1,12 @@ --- -interface Props { - href: string - class?: string +import type { LinkProps } from "@/types/props" +interface Props extends LinkProps { + noStyle?: boolean } -const { href, class: clazz } = Astro.props +const { href, noStyle = false, class: clazz, ...props } = Astro.props --- - + diff --git a/src/components/links/GiteaLink.astro b/src/components/links/GiteaLink.astro index 02d0357..4f21266 100644 --- a/src/components/links/GiteaLink.astro +++ b/src/components/links/GiteaLink.astro @@ -1,7 +1,7 @@ --- import ExternalLink from "./ExternalLink.astro" -import * as m from "../../paraglide/messages" -import Gitea from "../../icons/Gitea.astro" +import * as m from "@/paraglide/messages" +import Gitea from "../icons/Gitea.astro" interface Props { href: string } diff --git a/src/components/myLinks/LinkCard.astro b/src/components/myLinks/LinkCard.astro new file mode 100644 index 0000000..8a9851f --- /dev/null +++ b/src/components/myLinks/LinkCard.astro @@ -0,0 +1,23 @@ +--- +import ExternalLink from "../links/ExternalLink.astro" +import PajamasIcon from "../icons/PajamasIcon.astro" +import type { MyLink } from "./myLinks" + +interface Props extends MyLink { + class?: string +} + +const { title, message, url, icon, class: clazz } = Astro.props +--- + + +
+
+ +
+
{title}
+

{message}

+
+
+
+
diff --git a/src/components/myLinks/LinksPage.astro b/src/components/myLinks/LinksPage.astro new file mode 100644 index 0000000..436a265 --- /dev/null +++ b/src/components/myLinks/LinksPage.astro @@ -0,0 +1,15 @@ +--- +import links from "./myLinks" +import LinkCard from "./LinkCard.astro" +import "@/styles/global.css" +import * as m from "@/paraglide/messages" +--- + +

{m.myLinks()}

+
+ { + links.map((link) => ( + + )) + } +
diff --git a/src/components/myLinks/myLinks.ts b/src/components/myLinks/myLinks.ts new file mode 100644 index 0000000..dec58e3 --- /dev/null +++ b/src/components/myLinks/myLinks.ts @@ -0,0 +1,47 @@ +import type { PajamasIcon } from "@/types/icons.ts" +import * as m from "@/paraglide/messages" + +const gitUrl = import.meta.env.GIT_URL + +export interface MyLink { + title: string; + url: string; + message?: string; + icon?: PajamasIcon +} + +export default [ + { + title: "GitHub", + url: "https://github.com/emberal", + icon: "pajamas:github" + }, + { + title: "Gitea", + url: `${gitUrl}/martials`, + message: m.forPersonalProjects(), + icon: "pajamas:gitea" + }, + { + title: "LinkedIn", + url: "https://www.linkedin.com/in/martin-b-2a69391a3/", + icon: "pajamas:linkedin" + }, + { + title: "Mastodon (Snabelen)", + url: "https://snabelen.no/@Martials", + icon: "pajamas:mastodon" + }, + { + title: "Pixelfed", + url: "https://pixelfed.social/i/web/profile/261454857934868480" + }, + { + title: "Steam", + url: "https://steamcommunity.com/id/martials/" + }, + { + title: "Trakt.tv", + url: "https://trakt.tv/users/martials" + } +] satisfies MyLink[] diff --git a/src/env.d.ts b/src/env.d.ts index 3f74763..b487e7c 100644 --- a/src/env.d.ts +++ b/src/env.d.ts @@ -4,6 +4,7 @@ interface ImportMetaEnv { readonly URL: string readonly GIT_URL: string + readonly STATUS_URL: string } interface ImportMeta { diff --git a/src/icons/ExternalLink.astro b/src/icons/ExternalLink.astro deleted file mode 100644 index 762459f..0000000 --- a/src/icons/ExternalLink.astro +++ /dev/null @@ -1,18 +0,0 @@ ---- -// By GitLab SVGs -const props = Astro.props ---- - - - - diff --git a/src/icons/GitHub.astro b/src/icons/GitHub.astro deleted file mode 100644 index 3116cb0..0000000 --- a/src/icons/GitHub.astro +++ /dev/null @@ -1,18 +0,0 @@ ---- -// By GitLab SVGs -const props = Astro.props ---- - - - - diff --git a/src/icons/Gitea.astro b/src/icons/Gitea.astro deleted file mode 100644 index dd274df..0000000 --- a/src/icons/Gitea.astro +++ /dev/null @@ -1,18 +0,0 @@ ---- -// By GitLab SVGs -const props = Astro.props ---- - - - - diff --git a/src/icons/Hamburger.astro b/src/icons/Hamburger.astro deleted file mode 100644 index 76c1c44..0000000 --- a/src/icons/Hamburger.astro +++ /dev/null @@ -1,18 +0,0 @@ ---- -// By GitLab SVGs -const props = Astro.props ---- - - - - diff --git a/src/icons/LinkedIn.astro b/src/icons/LinkedIn.astro deleted file mode 100644 index f530ffb..0000000 --- a/src/icons/LinkedIn.astro +++ /dev/null @@ -1,18 +0,0 @@ ---- -// By GitLab SVGs -const props = Astro.props ---- - - - - diff --git a/src/icons/Mastodon.astro b/src/icons/Mastodon.astro deleted file mode 100644 index 45728cd..0000000 --- a/src/icons/Mastodon.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -// By GitLab SVGs -const props = Astro.props ---- - - - - diff --git a/src/pages/en/links.astro b/src/pages/en/links.astro index 853d812..3464899 100644 --- a/src/pages/en/links.astro +++ b/src/pages/en/links.astro @@ -1,3 +1,7 @@ --- - +import Layout from "@/layouts/Layout.astro" +import LinksPage from "@/components/myLinks/LinksPage.astro" --- + + + \ No newline at end of file diff --git a/src/pages/index.astro b/src/pages/index.astro index 777c211..ac8e26c 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -3,19 +3,6 @@ import Layout from "../layouts/Layout.astro" import Greeting from "../components/Greeting.astro" --- - diff --git a/src/pages/links.astro b/src/pages/links.astro index 853d812..528f9bc 100644 --- a/src/pages/links.astro +++ b/src/pages/links.astro @@ -1,3 +1,7 @@ --- - +import Layout from "@/layouts/Layout.astro" +import LinksPage from "@/components/myLinks/LinksPage.astro" --- + + + \ No newline at end of file diff --git a/src/types/icons.ts b/src/types/icons.ts new file mode 100644 index 0000000..f44c26a --- /dev/null +++ b/src/types/icons.ts @@ -0,0 +1,3 @@ +export type Icon = "gitea" | "github" | "mastodon" | "linkedin" | "link" | "status-health" + +export type PajamasIcon = `pajamas:${Icon}` diff --git a/src/types/props.ts b/src/types/props.ts new file mode 100644 index 0000000..a8c0fed --- /dev/null +++ b/src/types/props.ts @@ -0,0 +1,8 @@ +export interface ComponentProps { + class?: string; + title?: string; +} + +export interface LinkProps extends ComponentProps { + href: string; +}