From 6984448a3fa73a7f74e60bbaf5619e6ed0bebb64 Mon Sep 17 00:00:00 2001 From: rxyhn Date: Wed, 11 Sep 2024 01:44:13 +0700 Subject: [PATCH] chore: update content --- astro.config.mjs | 4 +- cv.json | 249 ++----- package.json | 1 + pnpm-lock.yaml | 831 ++++++++++++++++++++++- src/components/Button.astro | 20 +- src/components/Card.astro | 13 +- src/components/sections/Awards.astro | 14 +- src/components/sections/Education.astro | 3 +- src/components/sections/Experience.astro | 16 +- src/components/sections/Skills.astro | 14 +- src/consts.ts | 9 +- src/icons/email.svg | 1 + src/icons/github.svg | 1 + src/icons/linkedin.svg | 1 + src/icons/telegram.svg | 1 + src/layouts/Layout.astro | 5 +- src/pages/about.astro | 46 +- src/pages/contacts.astro | 31 - src/pages/index.astro | 19 +- src/pages/projects.astro | 35 +- 20 files changed, 968 insertions(+), 346 deletions(-) create mode 100644 src/icons/email.svg create mode 100644 src/icons/github.svg create mode 100644 src/icons/linkedin.svg create mode 100644 src/icons/telegram.svg delete mode 100644 src/pages/contacts.astro diff --git a/astro.config.mjs b/astro.config.mjs index 5998115..414fa46 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -2,8 +2,10 @@ import { defineConfig } from "astro/config"; import tailwind from "@astrojs/tailwind"; import react from "@astrojs/react"; +import icon from "astro-icon"; + // https://astro.build/config export default defineConfig({ site: "https://rxyhn.is-a.dev", - integrations: [tailwind(), react()], + integrations: [tailwind(), react(), icon()], }); diff --git a/cv.json b/cv.json index e2fe41f..bc97ed4 100644 --- a/cv.json +++ b/cv.json @@ -9,26 +9,22 @@ "countryCode": "ID", "region": "Indonesia" }, - "profiles": [ + "socials": [ { - "network": "Email", - "username": "rxyhn.dev@gmail.com", + "network": "email", "url": "mailto:rxyhn.dev@gmail.com" }, { - "network": "Telegram", - "username": "@rxxxyhn", + "network": "telegram", "url": "https://t.me/rxxxyhn" }, { - "network": "LinkedIn", - "username": "Rayhan Kafi Pratama", - "url": "https://linkedin.com/in/rayhankafipratama" + "network": "github", + "url": "https://github.com/rxyhn" }, { - "network": "GitHub", - "username": "rxyhn", - "url": "https://github.com/rxyhn" + "network": "linkedin", + "url": "https://linkedin.com/in/rayhankafipratama" } ] }, @@ -42,18 +38,11 @@ "startDate": "2024-08-01", "endDate": null, "summary": "Developed back-end systems and APIs for an Audit Trail Management System project, collaborating closely with Business Analysts to understand requirements and design the system architecture.", - "highlights": [ - "Participated in code reviews and pair programming sessions to ensure code quality and maintainability." - ], "responsibilities": [ "Developed back-end systems and APIs for Audit Trail Management System.", "Collaborated with Business Analysts to understand project requirements.", "Designed system architecture and participated in code reviews." - ], - "achievements": [ - "Contributed to the successful implementation of a scalable back-end system." - ], - "skills": ["Java", "Spring Boot", "MySQL"] + ] }, { "name": "PT. Khatulistiwa Nusantara Indonesia (KHANSIA)", @@ -64,18 +53,11 @@ "startDate": "2020-09-01", "endDate": "2021-04-01", "summary": "Assisted senior developers in building and maintaining back-end systems for mobile applications, gaining hands-on experience with back-end technologies.", - "highlights": [ - "Collaborated with front-end developers to integrate back-end functionalities with user interfaces." - ], "responsibilities": [ "Assisted in building and maintaining back-end systems for mobile applications.", "Participated in Agile development processes including sprint planning and daily stand-ups.", "Integrated back-end functionalities with front-end user interfaces." - ], - "achievements": [ - "Successfully contributed to the delivery of multiple mobile application projects." - ], - "skills": ["Node.js", "MongoDB", "Express"] + ] } ], "education": [ @@ -95,184 +77,54 @@ "studyType": "Vocational High School", "startDate": "2019-09-01", "endDate": "2022-06-01", - "summary": "Lab Assistant in the school's computer lab. Responsible for maintaining the computer lab, assisting students with computer-related problems, and providing technical support to teachers." + "summary": "Graduated as a top student, gained expertise in web and mobile development, and software methodologies. Served as a lab assistant, helping students with software engineering issues and providing technical support to teachers." } ], "awards": [ { - "title": "Finalist of Chain Fusion Hacker - ICP", + "title": "Finalist of Chain Fusion Hacker House", "date": "August 2024", - "awarder": "Chain Fusion", - "summary": "As a finalist in the Chain Fusion Hacker competition, I contributed to the advancement of Web3 technologies by developing user-centric decentralized applications. My focus was on addressing interoperability challenges, improving dApp usability, and facilitating seamless integration between blockchain platforms. In my role as a backend developer, I was responsible for managing APIs and creating smart contracts using Motoko." + "awarder": "ICP" }, { "title": "Finalist of ICPC Asia Jakarta National Contest", "date": "November 2023", - "awarder": "ICPC", - "summary": "As a finalist in the ICPC Asia Jakarta National Contest, I competed against top university teams across the region. The competition involved solving complex algorithmic challenges under strict time constraints, testing our teamwork, problem-solving abilities, and programming expertise. This experience significantly enhanced my technical skills and competitive mindset." + "awarder": "ICPC" } ], "skills": { "technologies": [ - { - "name": "Ansible", - "level": "Expert", - "keywords": ["Automation", "Configuration Management", "DevOps"] - }, - { - "name": "Docker", - "level": "Intermediate", - "keywords": ["Containers", "Virtualization", "DevOps"] - }, - { - "name": "Django", - "level": "Intermediate", - "keywords": ["Python", "Backend", "Web Development"] - }, - { - "name": "Express.js", - "level": "Intermediate", - "keywords": ["Node.js", "Backend", "Web Development"] - }, - { - "name": "Figma", - "level": "Expert", - "keywords": ["Design", "UI"] - }, - { - "name": "Flask", - "level": "Intermediate", - "keywords": ["Python", "Backend", "Web Development"] - }, - { - "name": "Git", - "level": "Expert", - "keywords": ["Version Control", "Collaboration", "Source Code"] - }, - { - "name": "Linux", - "level": "Intermediate", - "keywords": [ - "Operating System", - "System Administration", - "System Programming" - ] - }, - { - "name": "MySQL", - "level": "Intermediate", - "keywords": ["Databases", "SQL", "Data Storage", "Backend"] - }, - { - "name": "Nix Package Manager", - "level": "Intermediate", - "keywords": ["Package Management", "DevOps", "Configuration"] - }, - { - "name": "Node.js", - "level": "Intermediate", - "keywords": ["Web Development", "Backend", "JavaScript", "Server"] - }, - { - "name": "PostgreSQL", - "level": "Intermediate", - "keywords": ["Databases", "SQL", "Data Storage", "Backend"] - }, - { - "name": "React", - "level": "Intermediate", - "keywords": ["Web Development", "Frontend", "JavaScript Library", "UI"] - }, - { - "name": "Spring Boot", - "level": "Intermediate", - "keywords": ["Java", "Backend", "Framework"] - }, - { - "name": "Tailwind", - "level": "Intermediate", - "keywords": [ - "Web Development", - "Frontend", - "CSS Framework", - "Responsive Design" - ] - } + "Ansible", + "Docker", + "Django", + "Express.js", + "Figma", + "Flask", + "Git", + "Linux", + "MySQL", + "Nix Package Manager", + "Node.js", + "PostgreSQL", + "React", + "Spring Boot", + "Tailwind" ], "programming_languages": [ - { - "name": "C", - "level": "Intermediate", - "keywords": ["Programming", "Backend", "System Programming"] - }, - { - "name": "C#", - "level": "Intermediate", - "keywords": ["Programming", "Backend", "Object-Oriented"] - }, - { - "name": "C++", - "level": "Intermediate", - "keywords": ["Programming", "Backend", "Object-Oriented"] - }, - { - "name": "CSS", - "level": "Intermediate", - "keywords": ["Web Development", "Frontend", "Responsive Design"] - }, - { - "name": "HTML", - "level": "Intermediate", - "keywords": ["Web Development", "Frontend"] - }, - { - "name": "Java", - "level": "Intermediate", - "keywords": ["Programming", "Backend", "Object-Oriented"] - }, - { - "name": "JavaScript", - "level": "Intermediate", - "keywords": ["Web Development", "Frontend", "Backend", "Fullstack"] - }, - { - "name": "Lua", - "level": "Intermediate", - "keywords": ["Scripting", "Embedded Systems"] - }, - { - "name": "Nix", - "level": "Intermediate", - "keywords": ["Functional Programming", "Package Management"] - }, - { - "name": "Python", - "level": "Intermediate", - "keywords": ["Programming", "Backend", "Data Science"] - }, - { - "name": "Shell", - "level": "Intermediate", - "keywords": ["Scripting", "Automation", "System Programming"] - }, - { - "name": "TypeScript", - "level": "Intermediate", - "keywords": [ - "Web Development", - "Frontend", - "Backend", - "JavaScript Superset" - ] - } + "C", + "C#", + "C++", + "CSS", + "HTML", + "Java", + "JavaScript", + "Lua", + "Nix", + "Python", + "Shell", + "TypeScript" ] }, - "interests": [ - { - "name": "Technology", - "keywords": ["AI", "Blockchain"] - } - ], "projects": [ { "name": "Kanjo", @@ -282,7 +134,8 @@ "highlights": [ "Implemented various machine learning models like Naive Bayes, SVM, and Random Forest for sentiment analysis.", "Designed an intuitive Streamlit interface for easy model interaction." - ] + ], + "technologies": ["Python", "Streamlit", "Scikit-learn", "Pandas"] }, { "name": "Shusseki", @@ -292,7 +145,8 @@ "highlights": [ "Integrated facial recognition with OpenCV for real-time attendance tracking.", "Achieved 95% accuracy in facial recognition under various lighting conditions." - ] + ], + "technologies": ["Python", "OpenCV", "Dlib"] }, { "name": "Yoru", @@ -302,7 +156,8 @@ "highlights": [ "Customized AwesomeWM environment with a focus on aesthetics and productivity.", "Included several custom widgets for enhanced user experience." - ] + ], + "technologies": ["Lua", "Shell"] }, { "name": "Identik", @@ -312,7 +167,8 @@ "highlights": [ "Developed a decentralized identity system using Motoko on the Internet Computer (ICP) blockchain.", "Integrated multi-factor authentication for enhanced security." - ] + ], + "technologies": ["Motoko", "JavaScript", "HTML", "CSS"] }, { "name": "RAiso", @@ -322,7 +178,8 @@ "highlights": [ "Implemented a layered architecture to separate concerns and improve maintainability.", "Enhanced user experience with a modern and responsive UI design." - ] + ], + "technologies": ["C#", "ASP.NET", "Entity Framework"] }, { "name": "PyQtLMS", @@ -332,7 +189,8 @@ "highlights": [ "Developed a complete library management system with PyQt5.", "Implemented a robust database system for efficient book management." - ] + ], + "technologies": ["Python", "PyQt5", "MySQL"] }, { "name": "Cursed", @@ -342,7 +200,8 @@ "highlights": [ "Created a terminal-based calendar and todo-list application using ncurses.", "Optimized for low-resource environments with minimalistic design." - ] + ], + "technologies": ["C", "ncurses"] } ] } diff --git a/package.json b/package.json index 9b14772..2a9ad13 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@types/react": "^18.3.5", "@types/react-dom": "^18.3.0", "astro": "^4.15.3", + "astro-icon": "^1.1.1", "clsx": "^2.1.1", "framer-motion": "^11.5.4", "prettier-plugin-tailwindcss": "^0.6.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f0d1c7..8d01dd5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,10 +12,10 @@ importers: version: 0.9.3(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) "@astrojs/react": specifier: ^3.6.2 - version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.3) + version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.3(@types/node@22.5.4)) "@astrojs/tailwind": specifier: ^5.1.0 - version: 5.1.0(astro@4.15.3(rollup@4.21.2)(typescript@5.5.4))(tailwindcss@3.4.10) + version: 5.1.0(astro@4.15.3(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.5.4))(tailwindcss@3.4.10) "@tailwindcss/typography": specifier: ^0.5.15 version: 0.5.15(tailwindcss@3.4.10) @@ -36,7 +36,10 @@ importers: version: 18.3.0 astro: specifier: ^4.15.3 - version: 4.15.3(rollup@4.21.2)(typescript@5.5.4) + version: 4.15.3(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.5.4) + astro-icon: + specifier: ^1.1.1 + version: 1.1.1 clsx: specifier: ^2.1.1 version: 2.1.1 @@ -87,6 +90,18 @@ packages: } 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: { @@ -597,6 +612,24 @@ packages: cpu: [x64] os: [win32] + "@iconify/tools@4.0.6": + resolution: + { + integrity: sha512-riEQggXVuZNXjRdo+aKT0rkzn2XHslIqat8mdW/oVu5mLmP/95Hi+iaq4keT7WwMD97jsYPXMQ6QMCw0EWpRNw==, + } + + "@iconify/types@2.0.0": + resolution: + { + integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==, + } + + "@iconify/utils@2.1.32": + resolution: + { + integrity: sha512-LeifFZPPKu28O3AEDpYJNdEbvS4/ojAPyIW+pF/vUpJTYnbTiXUHkCh0bwgFRzKvdpb8H4Fbfd/742++MF4fPQ==, + } + "@img/sharp-darwin-arm64@0.33.5": resolution: { @@ -993,6 +1026,13 @@ 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" } + "@tsparticles/basic@3.5.0": resolution: { @@ -1267,6 +1307,12 @@ packages: integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==, } + "@types/node@22.5.4": + resolution: + { + integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==, + } + "@types/prop-types@15.7.12": resolution: { @@ -1285,12 +1331,24 @@ packages: integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==, } + "@types/tar@6.1.13": + resolution: + { + integrity: sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==, + } + "@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: { @@ -1454,6 +1512,12 @@ packages: integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==, } + astro-icon@1.1.1: + resolution: + { + integrity: sha512-HKBesWk2Faw/0+klLX+epQVqdTfSzZz/9+5vxXUjTJaN/HnpDf608gRPgHh7ZtwBPNJMEFoU5GLegxoDcT56OQ==, + } + astro@4.15.3: resolution: { @@ -1463,6 +1527,12 @@ packages: { node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: ">=9.6.5", pnpm: ">=7.1.0" } hasBin: true + asynckit@0.4.0: + resolution: + { + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, + } + autoprefixer@10.4.20: resolution: { @@ -1473,6 +1543,12 @@ packages: peerDependencies: postcss: ^8.1.0 + axios@1.7.7: + resolution: + { + integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==, + } + axobject-query@4.1.0: resolution: { @@ -1505,6 +1581,12 @@ packages: } engines: { node: ">=8" } + boolbase@1.0.0: + resolution: + { + integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, + } + boxen@7.1.1: resolution: { @@ -1533,6 +1615,12 @@ 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: { @@ -1591,6 +1679,19 @@ packages: integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==, } + 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: { @@ -1598,6 +1699,13 @@ packages: } engines: { node: ">= 8.10.0" } + chownr@2.0.0: + resolution: + { + integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==, + } + engines: { node: ">=10" } + ci-info@4.0.0: resolution: { @@ -1678,6 +1786,13 @@ packages: } engines: { node: ">=12.5.0" } + combined-stream@1.0.8: + resolution: + { + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, + } + engines: { node: ">= 0.8" } + comma-separated-tokens@2.0.3: resolution: { @@ -1691,12 +1806,25 @@ packages: } 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==, + } + convert-source-map@2.0.0: resolution: { @@ -1717,6 +1845,33 @@ packages: } engines: { node: ">= 8" } + css-select@5.1.0: + resolution: + { + integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==, + } + + 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: { @@ -1725,6 +1880,13 @@ packages: 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" } + csstype@3.1.3: resolution: { @@ -1749,6 +1911,13 @@ packages: integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==, } + delayed-stream@1.0.0: + resolution: + { + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, + } + engines: { node: ">=0.4.0" } + dequal@2.0.3: resolution: { @@ -1801,6 +1970,31 @@ packages: 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: { @@ -1844,6 +2038,18 @@ packages: 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: { @@ -1925,6 +2131,14 @@ packages: 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: { @@ -1950,6 +2164,12 @@ packages: integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==, } + fd-slicer@1.1.0: + resolution: + { + integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==, + } + fill-range@7.1.1: resolution: { @@ -1984,6 +2204,18 @@ packages: } engines: { node: ">=8" } + follow-redirects@1.15.9: + resolution: + { + integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==, + } + engines: { node: ">=4.0" } + peerDependencies: + debug: "*" + peerDependenciesMeta: + debug: + optional: true + foreground-child@3.3.0: resolution: { @@ -1991,6 +2223,13 @@ packages: } engines: { node: ">=14" } + form-data@4.0.0: + resolution: + { + integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, + } + engines: { node: ">= 6" } + fraction.js@4.3.7: resolution: { @@ -2014,6 +2253,13 @@ packages: react-dom: optional: true + fs-minipass@2.1.0: + resolution: + { + integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==, + } + engines: { node: ">= 8" } + fsevents@2.3.3: resolution: { @@ -2049,6 +2295,13 @@ packages: } 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: { @@ -2182,12 +2435,25 @@ packages: 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: { @@ -2394,6 +2660,12 @@ packages: } engines: { node: ">=6" } + kolorist@1.8.0: + resolution: + { + integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==, + } + lilconfig@2.1.0: resolution: { @@ -2421,6 +2693,13 @@ packages: } engines: { node: ">=6" } + local-pkg@0.5.0: + resolution: + { + integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==, + } + engines: { node: ">=14" } + locate-path@5.0.0: resolution: { @@ -2580,6 +2859,18 @@ packages: 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==, + } + merge2@1.4.1: resolution: { @@ -2762,6 +3053,20 @@ packages: } engines: { node: ">=8.6" } + mime-db@1.52.0: + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + } + engines: { node: ">= 0.6" } + + mime-types@2.1.35: + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + } + engines: { node: ">= 0.6" } + mimic-function@5.0.1: resolution: { @@ -2776,6 +3081,27 @@ packages: } 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: { @@ -2783,6 +3109,27 @@ packages: } 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: { @@ -2849,6 +3196,12 @@ packages: } 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: { @@ -2863,6 +3216,12 @@ packages: } engines: { node: ">= 6" } + once@1.4.0: + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + } + onetime@7.0.0: resolution: { @@ -2925,12 +3284,30 @@ packages: integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==, } + package-manager-detector@0.2.0: + resolution: + { + integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==, + } + 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: { @@ -2976,6 +3353,18 @@ packages: integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==, } + pathe@1.1.2: + resolution: + { + integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==, + } + + pend@1.2.0: + resolution: + { + integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==, + } + picocolors@1.1.0: resolution: { @@ -3017,6 +3406,12 @@ packages: } engines: { node: ">=8" } + pkg-types@1.2.0: + resolution: + { + integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==, + } + postcss-import@15.1.0: resolution: { @@ -3194,6 +3589,18 @@ packages: integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==, } + proxy-from-env@1.1.0: + resolution: + { + integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, + } + + pump@3.0.1: + resolution: + { + integrity: sha512-2ynnAmUu45oUSq51AQbeugLkMSKaz8FqVpZ6ykTqzOVkzXe8u/ezkGsYrFJqKZx+D9cVxoDrSbR7CeAwxFa5cQ==, + } + queue-microtask@1.2.3: resolution: { @@ -3381,6 +3788,12 @@ packages: integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==, } + safer-buffer@2.1.2: + resolution: + { + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, + } + sass-formatter@0.7.9: resolution: { @@ -3570,6 +3983,14 @@ packages: } engines: { node: ">= 0.4" } + svgo@3.3.2: + resolution: + { + integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==, + } + engines: { node: ">=14.0.0" } + hasBin: true + tailwind-merge@2.5.2: resolution: { @@ -3584,6 +4005,13 @@ packages: 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: { @@ -3681,12 +4109,31 @@ packages: engines: { node: ">=14.17" } hasBin: true + ufo@1.5.4: + resolution: + { + integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==, + } + ultrahtml@1.5.3: resolution: { integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==, } + undici-types@6.19.8: + resolution: + { + integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==, + } + + undici@6.19.8: + resolution: + { + integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==, + } + engines: { node: ">=18.17" } + unified@11.0.5: resolution: { @@ -4006,6 +4453,20 @@ packages: 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: { @@ -4049,6 +4510,12 @@ packages: } engines: { node: ">=12" } + wrappy@1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } + xxhash-wasm@1.0.2: resolution: { @@ -4068,6 +4535,12 @@ packages: integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, } + yallist@4.0.0: + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, + } + yaml-language-server@1.15.0: resolution: { @@ -4104,6 +4577,12 @@ packages: } engines: { node: ">=12" } + yauzl@2.10.0: + resolution: + { + integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==, + } + yocto-queue@1.1.1: resolution: { @@ -4148,6 +4627,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.0 + 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.5.4)": dependencies: "@astrojs/language-server": 2.14.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) @@ -4218,11 +4704,11 @@ snapshots: dependencies: prismjs: 1.29.0 - "@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.3)": + "@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.3(@types/node@22.5.4))": dependencies: "@types/react": 18.3.5 "@types/react-dom": 18.3.0 - "@vitejs/plugin-react": 4.3.1(vite@5.4.3) + "@vitejs/plugin-react": 4.3.1(vite@5.4.3(@types/node@22.5.4)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) ultrahtml: 1.5.3 @@ -4230,9 +4716,9 @@ snapshots: - supports-color - vite - "@astrojs/tailwind@5.1.0(astro@4.15.3(rollup@4.21.2)(typescript@5.5.4))(tailwindcss@3.4.10)": + "@astrojs/tailwind@5.1.0(astro@4.15.3(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.5.4))(tailwindcss@3.4.10)": dependencies: - astro: 4.15.3(rollup@4.21.2)(typescript@5.5.4) + astro: 4.15.3(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.5.4) autoprefixer: 10.4.20(postcss@8.4.45) postcss: 8.4.45 postcss-load-config: 4.0.2(postcss@8.4.45) @@ -4497,6 +4983,37 @@ snapshots: "@esbuild/win32-x64@0.21.5": optional: true + "@iconify/tools@4.0.6": + dependencies: + "@iconify/types": 2.0.0 + "@iconify/utils": 2.1.32 + "@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.32": + 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 @@ -4686,6 +5203,8 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 3.4.10 + "@trysound/sax@0.2.0": {} + "@tsparticles/basic@3.5.0": dependencies: "@tsparticles/engine": 3.5.0 @@ -4896,6 +5415,10 @@ snapshots: dependencies: "@types/unist": 3.0.3 + "@types/node@22.5.4": + dependencies: + undici-types: 6.19.8 + "@types/prop-types@15.7.12": {} "@types/react-dom@18.3.0": @@ -4907,18 +5430,28 @@ snapshots: "@types/prop-types": 15.7.12 csstype: 3.1.3 + "@types/tar@6.1.13": + dependencies: + "@types/node": 22.5.4 + minipass: 4.2.8 + "@types/unist@3.0.3": {} + "@types/yauzl@2.10.3": + dependencies: + "@types/node": 22.5.4 + optional: true + "@ungap/structured-clone@1.2.0": {} - "@vitejs/plugin-react@4.3.1(vite@5.4.3)": + "@vitejs/plugin-react@4.3.1(vite@5.4.3(@types/node@22.5.4))": dependencies: "@babel/core": 7.25.2 "@babel/plugin-transform-react-jsx-self": 7.24.7(@babel/core@7.25.2) "@babel/plugin-transform-react-jsx-source": 7.24.7(@babel/core@7.25.2) "@types/babel__core": 7.20.5 react-refresh: 0.14.2 - vite: 5.4.3 + vite: 5.4.3(@types/node@22.5.4) transitivePeerDependencies: - supports-color @@ -5020,7 +5553,16 @@ snapshots: array-iterate@2.0.1: {} - astro@4.15.3(rollup@4.21.2)(typescript@5.5.4): + astro-icon@1.1.1: + dependencies: + "@iconify/tools": 4.0.6 + "@iconify/types": 2.0.0 + "@iconify/utils": 2.1.32 + transitivePeerDependencies: + - debug + - supports-color + + astro@4.15.3(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.5.4): dependencies: "@astrojs/compiler": 2.10.3 "@astrojs/internal-helpers": 0.4.1 @@ -5080,8 +5622,8 @@ snapshots: tsconfck: 3.1.3(typescript@5.5.4) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.3 - vitefu: 1.0.2(vite@5.4.3) + vite: 5.4.3(@types/node@22.5.4) + vitefu: 1.0.2(vite@5.4.3(@types/node@22.5.4)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 @@ -5103,6 +5645,8 @@ snapshots: - terser - typescript + asynckit@0.4.0: {} + autoprefixer@10.4.20(postcss@8.4.45): dependencies: browserslist: 4.23.3 @@ -5113,6 +5657,14 @@ snapshots: postcss: 8.4.45 postcss-value-parser: 4.2.0 + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + axobject-query@4.1.0: {} bail@2.0.2: {} @@ -5123,6 +5675,8 @@ snapshots: binary-extensions@2.3.0: {} + boolbase@1.0.0: {} + boxen@7.1.1: dependencies: ansi-align: 3.0.1 @@ -5149,6 +5703,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: {} @@ -5171,6 +5727,29 @@ snapshots: character-entities@2.0.2: {} + 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 @@ -5183,6 +5762,8 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chownr@2.0.0: {} + ci-info@4.0.0: {} cli-boxes@3.0.0: {} @@ -5223,12 +5804,20 @@ snapshots: color-convert: 2.0.1 color-string: 1.9.1 + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} commander@4.1.1: {} + commander@7.2.0: {} + common-ancestor-path@1.0.1: {} + confbox@0.1.7: {} + convert-source-map@2.0.0: {} cookie@0.6.0: {} @@ -5239,8 +5828,32 @@ 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-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 + csstype@3.1.3: {} debug@4.3.7: @@ -5251,6 +5864,8 @@ snapshots: dependencies: character-entities: 2.0.2 + delayed-stream@1.0.0: {} + dequal@2.0.3: {} detect-libc@2.0.3: {} @@ -5271,6 +5886,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: {} @@ -5288,6 +5921,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: {} @@ -5340,6 +5982,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: @@ -5356,6 +6008,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 @@ -5374,11 +6030,19 @@ snapshots: flattie@1.1.1: {} + follow-redirects@1.15.9: {} + foreground-child@3.3.0: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + fraction.js@4.3.7: {} framer-motion@11.5.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): @@ -5388,6 +6052,10 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + fsevents@2.3.3: optional: true @@ -5399,6 +6067,10 @@ snapshots: get-east-asian-width@1.2.0: {} + get-stream@5.2.0: + dependencies: + pump: 3.0.1 + github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -5526,8 +6198,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: {} is-arrayish@0.3.2: {} @@ -5607,6 +6290,8 @@ snapshots: kleur@4.1.5: {} + kolorist@1.8.0: {} + lilconfig@2.1.0: {} lilconfig@3.1.2: {} @@ -5620,6 +6305,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-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -5780,6 +6470,10 @@ snapshots: dependencies: "@types/mdast": 4.0.4 + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + merge2@1.4.1: {} micromark-core-commonmark@2.0.1: @@ -5978,14 +6672,42 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + mimic-function@5.0.1: {} minimatch@9.0.5: 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: {} @@ -6012,10 +6734,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 @@ -6055,6 +6785,8 @@ snapshots: package-json-from-dist@1.0.0: {} + package-manager-detector@0.2.0: {} + parse-latin@7.0.0: dependencies: "@types/nlcst": 2.0.3 @@ -6064,6 +6796,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 @@ -6083,6 +6824,10 @@ snapshots: path-to-regexp@6.2.2: {} + pathe@1.1.2: {} + + pend@1.2.0: {} + picocolors@1.1.0: {} picomatch@2.3.1: {} @@ -6097,6 +6842,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 @@ -6171,6 +6922,13 @@ snapshots: property-information@6.5.0: {} + proxy-from-env@1.1.0: {} + + pump@3.0.1: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + queue-microtask@1.2.3: {} react-dom@18.3.1(react@18.3.1): @@ -6333,6 +7091,8 @@ snapshots: s.color@0.0.15: {} + safer-buffer@2.1.2: {} + sass-formatter@0.7.9: dependencies: suf-log: 2.5.3 @@ -6459,6 +7219,16 @@ snapshots: supports-preserve-symlinks-flag@1.0.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 + tailwind-merge@2.5.2: {} tailwindcss@3.4.10: @@ -6488,6 +7258,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 @@ -6526,8 +7305,14 @@ snapshots: typescript@5.5.4: {} + ufo@1.5.4: {} + ultrahtml@1.5.3: {} + undici-types@6.19.8: {} + + undici@6.19.8: {} + unified@11.0.5: dependencies: "@types/unist": 3.0.3 @@ -6603,17 +7388,18 @@ snapshots: "@types/unist": 3.0.3 vfile-message: 4.0.2 - vite@5.4.3: + vite@5.4.3(@types/node@22.5.4): dependencies: esbuild: 0.21.5 postcss: 8.4.45 rollup: 4.21.2 optionalDependencies: + "@types/node": 22.5.4 fsevents: 2.3.3 - vitefu@1.0.2(vite@5.4.3): + vitefu@1.0.2(vite@5.4.3(@types/node@22.5.4)): optionalDependencies: - vite: 5.4.3 + vite: 5.4.3(@types/node@22.5.4) volar-service-css@0.0.61(@volar/language-service@2.4.2): dependencies: @@ -6729,6 +7515,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: @@ -6755,12 +7547,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 @@ -6792,6 +7588,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/Button.astro b/src/components/Button.astro index d3617da..c350295 100644 --- a/src/components/Button.astro +++ b/src/components/Button.astro @@ -1,10 +1,22 @@ --- -const { link, text } = Astro.props; +import { Icon } from "astro-icon/components"; + +type Props = { + icon: string; + href: string; +}; + +const { icon, href } = Astro.props; --- - {text} + + + diff --git a/src/components/Card.astro b/src/components/Card.astro index f088b42..539e607 100644 --- a/src/components/Card.astro +++ b/src/components/Card.astro @@ -4,9 +4,11 @@ export interface CardProps { description: string; highlights: string[]; name: string; + technologies: string[]; } -const { url, description, highlights, name } = Astro.props as CardProps; +const { url, name, description, highlights, technologies } = + Astro.props as CardProps; --- {highlights.join(" ")}

+
diff --git a/src/components/sections/Awards.astro b/src/components/sections/Awards.astro index 098fe34..0ca46e0 100644 --- a/src/components/sections/Awards.astro +++ b/src/components/sections/Awards.astro @@ -6,7 +6,7 @@ import { awards } from "@cv";