diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ccff64d..3d5d2c8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -110,7 +110,7 @@ importers: version: 9.6.1 '@types/node': specifier: ^22.8.2 - version: 22.8.2 + version: 22.8.4 '@types/react': specifier: ^18.3.12 version: 18.3.12 @@ -119,16 +119,16 @@ importers: version: 18.3.1 '@typescript-eslint/eslint-plugin': specifier: ^8.12.1 - version: 8.12.1(@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + version: 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) '@typescript-eslint/parser': specifier: ^8.12.1 - version: 8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + version: 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) eslint: specifier: ^9.13.0 version: 9.13.0(jiti@1.21.6) eslint-config-next: specifier: ^15.0.1 - version: 15.0.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + version: 15.0.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) postcss: specifier: ^8.4.47 version: 8.4.47 @@ -195,8 +195,8 @@ packages: '@floating-ui/core@1.6.8': resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} - '@floating-ui/dom@1.6.11': - resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + '@floating-ui/dom@1.6.12': + resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} '@floating-ui/react-dom@2.1.2': resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} @@ -353,8 +353,8 @@ packages: '@next/env@15.0.2': resolution: {integrity: sha512-c0Zr0ModK5OX7D4ZV8Jt/wqoXtitLNPwUfG9zElCZztdaZyNVnN40rDXVZ/+FGuR4CcNV5AEfM6N8f+Ener7Dg==} - '@next/eslint-plugin-next@15.0.1': - resolution: {integrity: sha512-bKWsMaGPbiFAaGqrDJvbE8b4Z0uKicGVcgOI77YM2ui3UfjHMr4emFPrZTLeZVchi7fT1mooG2LxREfUUClIKw==} + '@next/eslint-plugin-next@15.0.2': + resolution: {integrity: sha512-R9Jc7T6Ge0txjmqpPwqD8vx6onQjynO9JT73ArCYiYPvSrwYXepH/UY/WdKDY8JPWJl72sAE4iGMHPeQ5xdEWg==} '@next/swc-darwin-arm64@15.0.2': resolution: {integrity: sha512-GK+8w88z+AFlmt+ondytZo2xpwlfAR8U6CRwXancHImh6EdGfHMIrTSCcx5sOSBei00GyLVL0ioo1JLKTfprgg==} @@ -1138,8 +1138,8 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/node@22.8.2': - resolution: {integrity: sha512-NzaRNFV+FZkvK/KLCsNdTvID0SThyrs5SHB6tsD/lajr22FGC73N2QeDPM2wHtVde8mgcXuSsHQkH5cX1pbPLw==} + '@types/node@22.8.4': + resolution: {integrity: sha512-SpNNxkftTJOPk0oN+y2bIqurEXHTA2AOZ3EJDDKeJ5VzkvvORSvmQXGQarcOzWV1ac7DCaPBEdMDxBsM+d8jWw==} '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} @@ -1150,8 +1150,8 @@ packages: '@types/react@18.3.12': resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} - '@typescript-eslint/eslint-plugin@8.12.1': - resolution: {integrity: sha512-gNg/inLRcPoBsKKIe4Vv38SVSOhk4BKWNO0T56sVff33gRqtTpOsrhHtiOKD1lmIOmCtZMPaW2x/h2FlM+sCEg==} + '@typescript-eslint/eslint-plugin@8.12.2': + resolution: {integrity: sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -1161,8 +1161,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.12.1': - resolution: {integrity: sha512-I/I9Bg7qFa8rOgBnUUHIWTgzbB5wVkSLX+04xGUzTcJUtdq/I2uHWR9mbW6qUYJG/UmkuDcTax5JHvoEWOAHOQ==} + '@typescript-eslint/parser@8.12.2': + resolution: {integrity: sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1171,12 +1171,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@8.12.1': - resolution: {integrity: sha512-bma6sD1iViTt+y9MAwDlBdPTMCqoH/BNdcQk4rKhIZWv3eM0xHmzeSrPJA663PAqFqfpOmtdugycpr0E1mZDVA==} + '@typescript-eslint/scope-manager@8.12.2': + resolution: {integrity: sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.12.1': - resolution: {integrity: sha512-zJzrvbDVjIzVKV2TGHcjembEhws8RWXJhmqfO9hS2gRXBN0gDwGhRPEdJ6AZglzfJ+YA1q09EWpSLSXjBJpIMQ==} + '@typescript-eslint/type-utils@8.12.2': + resolution: {integrity: sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1184,12 +1184,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@8.12.1': - resolution: {integrity: sha512-anMS4es5lxBe4UVcDXOkcDb3csnm5BvaNIbOFfvy/pJEohorsggdVB8MFbl5EZiEuBnZZ0ei1z7W5b6FdFiV1Q==} + '@typescript-eslint/types@8.12.2': + resolution: {integrity: sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.12.1': - resolution: {integrity: sha512-k/o9khHOckPeDXilFTIPsP9iAYhhdMh3OsOL3i2072PNpFqhqzRHx472/0DeC8H/WZee3bZG0z2ddGRSPgeOKw==} + '@typescript-eslint/typescript-estree@8.12.2': + resolution: {integrity: sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1197,14 +1197,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@8.12.1': - resolution: {integrity: sha512-sDv9yFHrhKe1WN8EYuzfhKCh/sFRupe9P+m/lZ5YgVvPoCUGHNN50IO4llSu7JAbftUM/QcCh+GeCortXPrBYQ==} + '@typescript-eslint/utils@8.12.2': + resolution: {integrity: sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@8.12.1': - resolution: {integrity: sha512-2RwdwnNGuOQKdGjuhujQHUqBZhEuodg2sLVPvOfWktvA9sOXOVqARjOyHSyhN2LiJGKxV6c8oOcmOtRcAnEeFw==} + '@typescript-eslint/visitor-keys@8.12.2': + resolution: {integrity: sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vercel/analytics@1.3.2': @@ -1405,8 +1405,8 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - caniuse-lite@1.0.30001674: - resolution: {integrity: sha512-jOsKlZVRnzfhLojb+Ykb+gyUSp9Xb57So+fAiFlLzzTKpqg8xxSav0e40c8/4F/v9N8QSvrRRaLeVzQbLqomYw==} + caniuse-lite@1.0.30001675: + resolution: {integrity: sha512-/wV1bQwPrkLiQMjaJF5yUMVM/VdRPOCU8QZ+PmG6uW6DvYSrNY1bpwHI/3mOcUosLaJCzYDi5o91IQB51ft6cg==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1611,8 +1611,8 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-next@15.0.1: - resolution: {integrity: sha512-3cYCrgbH6GS/ufApza7XCKz92vtq4dAdYhx++rMFNlH2cAV+/GsAKkrr4+bohYOACmzG2nAOR+uWprKC1Uld6A==} + eslint-config-next@15.0.2: + resolution: {integrity: sha512-N8o6cyUXzlMmQbdc2Kc83g1qomFi3ITqrAZfubipVKET2uR2mCStyGRcx/r8WiAIVMul2KfwRiCHBkTpBvGBmA==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 typescript: '>=3.3.1' @@ -1685,16 +1685,16 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-scope@8.1.0: - resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.1.0: - resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint@9.13.0: @@ -1707,8 +1707,8 @@ packages: jiti: optional: true - espree@10.2.0: - resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esquery@1.6.0: @@ -2922,7 +2922,7 @@ snapshots: dependencies: ajv: 6.12.6 debug: 4.3.7 - espree: 10.2.0 + espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 @@ -2944,14 +2944,14 @@ snapshots: dependencies: '@floating-ui/utils': 0.2.8 - '@floating-ui/dom@1.6.11': + '@floating-ui/dom@1.6.12': dependencies: '@floating-ui/core': 1.6.8 '@floating-ui/utils': 0.2.8 '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/dom': 1.6.11 + '@floating-ui/dom': 1.6.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -3071,7 +3071,7 @@ snapshots: '@next/env@15.0.2': {} - '@next/eslint-plugin-next@15.0.1': + '@next/eslint-plugin-next@15.0.2': dependencies: fast-glob: 3.3.1 @@ -3930,7 +3930,7 @@ snapshots: '@types/json5@0.0.29': {} - '@types/node@22.8.2': + '@types/node@22.8.4': dependencies: undici-types: 6.19.8 @@ -3945,14 +3945,14 @@ snapshots: '@types/prop-types': 15.7.13 csstype: 3.1.3 - '@typescript-eslint/eslint-plugin@8.12.1(@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/type-utils': 8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.12.1 + '@typescript-eslint/parser': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/type-utils': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/utils': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.12.2 eslint: 9.13.0(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 @@ -3963,12 +3963,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/typescript-estree': 8.12.1(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.12.1 + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.12.2 debug: 4.3.7 eslint: 9.13.0(jiti@1.21.6) optionalDependencies: @@ -3976,15 +3976,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.12.1': + '@typescript-eslint/scope-manager@8.12.2': dependencies: - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/visitor-keys': 8.12.1 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/visitor-keys': 8.12.2 - '@typescript-eslint/type-utils@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.12.1(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) + '@typescript-eslint/utils': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: @@ -3993,12 +3993,12 @@ snapshots: - eslint - supports-color - '@typescript-eslint/types@8.12.1': {} + '@typescript-eslint/types@8.12.2': {} - '@typescript-eslint/typescript-estree@8.12.1(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.12.2(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/visitor-keys': 8.12.1 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/visitor-keys': 8.12.2 debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -4010,20 +4010,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/utils@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0(jiti@1.21.6)) - '@typescript-eslint/scope-manager': 8.12.1 - '@typescript-eslint/types': 8.12.1 - '@typescript-eslint/typescript-estree': 8.12.1(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) eslint: 9.13.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@8.12.1': + '@typescript-eslint/visitor-keys@8.12.2': dependencies: - '@typescript-eslint/types': 8.12.1 + '@typescript-eslint/types': 8.12.2 eslint-visitor-keys: 3.4.3 '@vercel/analytics@1.3.2(next@15.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': @@ -4214,7 +4214,7 @@ snapshots: camelcase-css@2.0.1: {} - caniuse-lite@1.0.30001674: {} + caniuse-lite@1.0.30001675: {} chalk@4.1.2: dependencies: @@ -4465,16 +4465,16 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-next@15.0.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3): + eslint-config-next@15.0.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3): dependencies: - '@next/eslint-plugin-next': 15.0.1 + '@next/eslint-plugin-next': 15.0.2 '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/eslint-plugin': 8.12.1(@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/parser': 8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) eslint: 9.13.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.13.0(jiti@1.21.6)) eslint-plugin-react: 7.37.2(eslint@9.13.0(jiti@1.21.6)) eslint-plugin-react-hooks: 5.0.0(eslint@9.13.0(jiti@1.21.6)) @@ -4493,37 +4493,37 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 enhanced-resolve: 5.17.1 eslint: 9.13.0(jiti@1.21.6) - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) eslint: 9.13.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -4534,7 +4534,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.13.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -4546,7 +4546,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.12.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -4597,14 +4597,14 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - eslint-scope@8.1.0: + eslint-scope@8.2.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.1.0: {} + eslint-visitor-keys@4.2.0: {} eslint@9.13.0(jiti@1.21.6): dependencies: @@ -4625,9 +4625,9 @@ snapshots: cross-spawn: 7.0.3 debug: 4.3.7 escape-string-regexp: 4.0.0 - eslint-scope: 8.1.0 - eslint-visitor-keys: 4.1.0 - espree: 10.2.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -4648,11 +4648,11 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.2.0: + espree@10.3.0: dependencies: acorn: 8.14.0 acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.1.0 + eslint-visitor-keys: 4.2.0 esquery@1.6.0: dependencies: @@ -5117,7 +5117,7 @@ snapshots: '@swc/counter': 0.1.3 '@swc/helpers': 0.5.13 busboy: 1.6.0 - caniuse-lite: 1.0.30001674 + caniuse-lite: 1.0.30001675 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) diff --git a/src/app/articles/page.tsx b/src/app/articles/page.tsx index 8fe3ac3..d91c72d 100644 --- a/src/app/articles/page.tsx +++ b/src/app/articles/page.tsx @@ -5,31 +5,7 @@ import Link from "next/link"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "~/components/ui/card"; import { CardSkeleton } from "~/components/ui/skeletons"; import { useState, useEffect } from 'react'; - -const articles = [ - { - title: "Positively Innovative: Robotics for Good", - link: "https://magazine.bucknell.edu/issue/fall-2024/robotics-for-good/", - author: "Kate Willard", - description: "Sean Oโ€™Connor โ€™26 is using his interest in robotics to fuel forward-thinking research and lead important conversations about the impact robots can have on society.", - source: "Bucknell Magazine (Fall 2024)" - }, - { - title: "Student Story: Sean O'Connor '26, Computer Science and Engineering", - link: "https://www.bucknell.edu/meet-bucknell/bucknell-stories/student-stories/sean-oconnor-26-computer-science-engineering", - author: "Sarah Downey", - description: "At Bucknell, Sean O'Connor '26 is conducting research to improve the ways robots assist, collaborate and coexist with humans.", - source: "Bucknell Student Stories" - }, - { - title: "Shaping the Future: Exploring the Social Impact of Robots", - link: "https://magazine.bucknell.edu/college-of-engineering/2024-college-report/", - author: "Bucknell Publications", - description: "RoboLab provides an environment for scholarly and creative conversations.", - source: "the Bucknell College of Engineering Report 2024" - } - // Add more articles as needed -]; +import { articles } from '~/lib/data'; export default function ArticlesPage() { const [loading, setLoading] = useState(true); diff --git a/src/app/layout.tsx b/src/app/layout.tsx index d7e0656..4c47c16 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -5,22 +5,24 @@ import { Footer } from "~/components/Footer" import { Navigation } from "~/components/Navigation" import { Sidebar } from "~/components/Sidebar" import { inter } from "~/lib/fonts" +import { description, name } from "~/lib/data"; import "~/styles/globals.css" export const metadata = { - title: "Sean O'Connor", - description: "Personal website and portfolio", + title: `${name[0]?.first} ${name[0]?.last}`, + description: description, icons: [{ rel: "icon", url: "/favicon.ico" }], } export default function RootLayout({ children }: React.PropsWithChildren) { return ( - - + + diff --git a/src/app/page.tsx b/src/app/page.tsx index 641b0cb..6a171ee 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,7 +1,7 @@ import { ArrowUpRight, Code, FlaskConical, Users } from 'lucide-react'; import Link from "next/link"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "~/components/ui/card"; -import { projects } from "~/lib/data"; +import { projects, name } from "~/lib/data"; export default function HomePage() { return ( @@ -9,7 +9,7 @@ export default function HomePage() { {/* About Section */}
-

Hi! I'm Sean. ๐Ÿ‘‹

+

Hi! I'm {name[0]?.first}. ๐Ÿ‘‹

I am a Computer Science and Engineering student at Bucknell University, passionate about robotics, software development, and human-computer interaction. With a strong foundation in both academic diff --git a/src/app/publications/page.tsx b/src/app/publications/page.tsx index 78bc0f0..076b6de 100644 --- a/src/app/publications/page.tsx +++ b/src/app/publications/page.tsx @@ -60,7 +60,7 @@ export default function PublicationsPage() { return (

-

Publications ๐Ÿ“š

+

Peer-Reviewed Publications ๐Ÿ“š

My research publications in human-robot interaction and robotics.

diff --git a/src/app/travel/page.tsx b/src/app/travel/page.tsx index f26818b..2ce2c13 100644 --- a/src/app/travel/page.tsx +++ b/src/app/travel/page.tsx @@ -5,46 +5,7 @@ import { Card, CardHeader, CardTitle, CardContent, CardDescription } from "~/com import { CardSkeleton } from "~/components/ui/skeletons"; import Image from "next/image"; import { Badge } from "~/components/ui/badge"; - -const tripsData = [ - { - title: "AIChE Annual Student Conference 2024", - description: "With the funding of Bucknell's chemical engineering department, and an amazing team, I was able to attend the 2024 AIChE Annual Student Conference and compete in the national Chem-E-Car competition.", - images: ["/trips/asc2024/IMG_2641.png", "/trips/asc2024/IMG_2631.png", "/trips/asc2024/IMG_7987.png"], - tags: ["Chem-E-Car", "AIChE", "Conference", "Competition"] - }, - { - title: "IEEE RO-MAN 2024", - description: "I got to attend the IEEE RO-MAN 2024 conference in Pasadena, California. It was a great opportunity to present my work on my project HRIStudio, and to network with other researchers and industry professionals.", - images: ["/trips/roman2024/IMG_3951.png", "/trips/roman2024/IMG_3978.png", "/trips/roman2024/IMG_3946.png"], - tags: ["RO-MAN", "IEEE", "Conference", "Presentation"] - }, - { - title: "ENGR 290: Following da Vinci's Footsteps", - description: "During the summer of 2024, I went on a study abroad program with about thirty of my peers. We explored Italy and France, following the footsteps of Leonardo da Vinci- evaluating the world through his lenses.", - images: ["/trips/engr290/insta290.jpg", "/trips/engr290/P1013747.png"], - tags: ["Italy", "France", "Study Abroad", "Engineering"] - }, - { - title: "SCA Specialty Coffee Expo 2024", - description: "As a member of the executive board of the Bucknell Coffee Society, I was able to attend the Specialty Coffee Association's Specialty Coffee Expo in early 2024, traveling to Chicago, IL.", - images: ["/trips/sca2024/group.jpeg", "/trips/sca2024/bean.png", "/trips/sca2024/plane.png"], - tags: ["Coffee Society", "Chicago", "SCA", "Coffee"] - }, - { - title: "Formula 1 Gran Premio dell'Emilia Romagna 2024", - description: "While studying abroad with Bucknell Engineering, we were lucky enough to be within a few hours of the Imola Grand Prix! A group of students went to see the race, and it was an amazing experience.", - images: ["/trips/imola2024/IMG_2093.png", "/trips/imola2024/IMG_2050.png", "/trips/imola2024/IMG_2066.png"], - tags: ["Racing", "Formula One", "Italy"] - }, - { - title: "Formula 1 British Grand Prix 2024", - description: "As a semi-recent Formula One fan, I was very excited to have the opportunity to attend the British Grand Prix weekend in 2024. I was able to see every event- marking one of my favorite weekends, probably ever.", - images: ["/trips/silverstone/_1035852.png", "/trips/silverstone/P1025274.png", "/trips/silverstone/_1035764.png"], - tags: ["Racing", "Formula One", "Great Britain", "Silverstone"] - } -]; - +import { travel } from "~/lib/data"; export default function TripsPage() { const [loading, setLoading] = useState(true); @@ -75,7 +36,7 @@ export default function TripsPage() { ) : ( - tripsData.map((trip, index) => ( + travel.map((trip, index) => (
diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index d6b1ba7..87c0e55 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -1,11 +1,12 @@ import React from 'react'; +import { name } from '~/lib/data'; export function Footer() { return (

- © 2024 Sean O'Connor. All rights reserved. + © {new Date().getFullYear()} {name[0]?.first} {name[0]?.last}. All rights reserved.

diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index d892685..f171a65 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -1,55 +1,8 @@ 'use client'; -import { Github, Globe, GraduationCap, Linkedin, Mail, Phone, School } from 'lucide-react'; import Image from 'next/image'; import { usePathname } from 'next/navigation'; - -const schoolInfo = [ - { - icon: School, - label: 'Bucknell University', - href: 'https://bucknell.edu' - }, - { - label: 'Computer Science and Engineering', - } -] - -const contactInfo = [ - { - icon: Mail, - label: 'Personal Email', - href: 'mailto:sean@soconnor.dev' - }, - { - icon: Mail, - label: 'University Email', - href: 'mailto:sso005@bucknell.edu' - }, - { - icon: Phone, - label: 'Phone', - href: 'tel:+16316016555' - }, - { - icon: Globe, - label: 'Website', - href: 'https://soconnor.dev', - external: true - }, - { - icon: Linkedin, - label: 'LinkedIn', - href: 'https://linkedin.com/in/bu-soconnor', - external: true - }, - { - icon: Github, - label: 'GitHub', - href: 'https://github.com/soconnor0919', - external: true - } -]; +import { name, contact, location } from '~/lib/data'; export function Sidebar() { const pathname = usePathname(); @@ -64,7 +17,7 @@ export function Sidebar() {
Sean O'Connor
-

Sean O'Connor

- {schoolInfo.map((item) => ( +

{name[0]?.first} {name[0]?.last}

+ {location.map((item) => (
- + - + diff --git a/src/lib/data.ts b/src/lib/data.ts index d2835d8..a40bd23 100644 --- a/src/lib/data.ts +++ b/src/lib/data.ts @@ -1,3 +1,86 @@ +import { Globe, Mail, Phone, Linkedin, Github, School } from "lucide-react"; + +export const name = [ + { + first: "Sean", + last: "O'Connor" + } +] + +export const description = "Personal website and portfolio"; + +export const location = [ + { + icon: School, + label: 'Bucknell University', + href: 'https://bucknell.edu' + }, + { + label: 'Computer Science and Engineering', + } +] + +export const contact = [ + { + icon: Mail, + label: 'Personal Email', + href: 'mailto:sean@soconnor.dev' + }, + { + icon: Mail, + label: 'University Email', + href: 'mailto:sso005@bucknell.edu' + }, + { + icon: Phone, + label: 'Phone', + href: 'tel:+16316016555' + }, + { + icon: Globe, + label: 'Website', + href: 'https://soconnor.dev', + external: true + }, + { + icon: Linkedin, + label: 'LinkedIn', + href: 'https://linkedin.com/in/bu-soconnor', + external: true + }, + { + icon: Github, + label: 'GitHub', + href: 'https://github.com/soconnor0919', + external: true + } +]; + +export const articles = [ + { + title: "Positively Innovative: Robotics for Good", + link: "https://magazine.bucknell.edu/issue/fall-2024/robotics-for-good/", + author: "Kate Willard", + description: "Sean Oโ€™Connor โ€™26 is using his interest in robotics to fuel forward-thinking research and lead important conversations about the impact robots can have on society.", + source: "Bucknell Magazine (Fall 2024)" + }, + { + title: "Student Story: Sean O'Connor '26, Computer Science and Engineering", + link: "https://www.bucknell.edu/meet-bucknell/bucknell-stories/student-stories/sean-oconnor-26-computer-science-engineering", + author: "Sarah Downey", + description: "At Bucknell, Sean O'Connor '26 is conducting research to improve the ways robots assist, collaborate and coexist with humans.", + source: "Bucknell Student Stories" + }, + { + title: "Shaping the Future: Exploring the Social Impact of Robots", + link: "https://magazine.bucknell.edu/college-of-engineering/2024-college-report/", + author: "Bucknell Publications", + description: "RoboLab provides an environment for scholarly and creative conversations.", + source: "the Bucknell College of Engineering Report 2024" + } + // Add more articles as needed +]; + export const projects = [ { title: "HRIStudio", @@ -35,3 +118,42 @@ export const projects = [ }, ]; +export const travel = [ + { + title: "AIChE Annual Student Conference 2024", + description: "With the funding of Bucknell's chemical engineering department, and an amazing team, I was able to attend the 2024 AIChE Annual Student Conference and compete in the national Chem-E-Car competition.", + images: ["/trips/asc2024/IMG_2641.png", "/trips/asc2024/IMG_2631.png", "/trips/asc2024/IMG_7987.png"], + tags: ["Chem-E-Car", "AIChE", "Conference", "Competition"] + }, + { + title: "IEEE RO-MAN 2024", + description: "I got to attend the IEEE RO-MAN 2024 conference in Pasadena, California. It was a great opportunity to present my work on my project HRIStudio, and to network with other researchers and industry professionals.", + images: ["/trips/roman2024/IMG_3951.png", "/trips/roman2024/IMG_3978.png", "/trips/roman2024/IMG_3946.png"], + tags: ["RO-MAN", "IEEE", "Conference", "Presentation"] + }, + { + title: "ENGR 290: Following da Vinci's Footsteps", + description: "During the summer of 2024, I went on a study abroad program with about thirty of my peers. We explored Italy and France, following the footsteps of Leonardo da Vinci- evaluating the world through his lenses.", + images: ["/trips/engr290/insta290.jpg", "/trips/engr290/P1013747.png", "/trips/engr290/_1024461.png"], + tags: ["Italy", "France", "Study Abroad", "Engineering"] + }, + { + title: "SCA Specialty Coffee Expo 2024", + description: "As a member of the executive board of the Bucknell Coffee Society, I was able to attend the Specialty Coffee Association's Specialty Coffee Expo in early 2024, traveling to Chicago, IL.", + images: ["/trips/sca2024/group.jpeg", "/trips/sca2024/bean.png", "/trips/sca2024/plane.png"], + tags: ["Coffee Society", "Chicago", "SCA", "Coffee"] + }, + { + title: "Formula 1 Gran Premio dell'Emilia Romagna 2024", + description: "While studying abroad with Bucknell Engineering, we were lucky enough to be within a few hours of the Imola Grand Prix! A group of students went to see the race, and it was an amazing experience.", + images: ["/trips/imola2024/IMG_2093.png", "/trips/imola2024/IMG_2050.png", "/trips/imola2024/IMG_2066.png"], + tags: ["Racing", "Formula One", "Italy"] + }, + { + title: "Formula 1 British Grand Prix 2024", + description: "As a semi-recent Formula One fan, I was very excited to have the opportunity to attend the British Grand Prix weekend in 2024. I was able to see every event- marking one of my favorite weekends, probably ever.", + images: ["/trips/silverstone/_1035852.png", "/trips/silverstone/P1025274.png", "/trips/silverstone/_1035764.png"], + tags: ["Racing", "Formula One", "Great Britain", "Silverstone"] + } +]; +