personal website (jaspermayone.com)

initial linter run

+58
.eslintrc.json
··· 1 + { 2 + "parser": "@typescript-eslint/parser", 3 + "parserOptions": { 4 + "ecmaVersion": 2021, 5 + "sourceType": "module", 6 + "ecmaFeatures": { 7 + "jsx": true 8 + } 9 + }, 10 + "extends": [ 11 + "eslint:recommended", 12 + "plugin:@typescript-eslint/recommended", 13 + "plugin:react/recommended", 14 + "plugin:react-hooks/recommended", 15 + "plugin:jsx-a11y/recommended", 16 + "prettier" 17 + ], 18 + "plugins": ["@typescript-eslint", "react", "react-hooks", "jsx-a11y"], 19 + "settings": { 20 + "react": { 21 + "version": "detect" 22 + } 23 + }, 24 + "env": { 25 + "browser": true, 26 + "es2021": true, 27 + "node": true 28 + }, 29 + "rules": { 30 + "@typescript-eslint/no-unused-vars": [ 31 + "warn", 32 + { 33 + "argsIgnorePattern": "^_", 34 + "varsIgnorePattern": "^_" 35 + } 36 + ], 37 + "@typescript-eslint/no-explicit-any": "warn", 38 + "react-hooks/rules-of-hooks": "error", 39 + "react-hooks/exhaustive-deps": "warn", 40 + "react/no-unescaped-entities": "warn", 41 + "react/react-in-jsx-scope": "off", 42 + "react/prop-types": "off", 43 + "no-console": [ 44 + "warn", 45 + { 46 + "allow": ["warn", "error"] 47 + } 48 + ] 49 + }, 50 + "ignorePatterns": [ 51 + "node_modules/", 52 + ".next/", 53 + "out/", 54 + "public/", 55 + "*.config.js", 56 + "*.config.ts" 57 + ] 58 + }
+12
.prettierrc
··· 1 + { 2 + "semi": true, 3 + "trailingComma": "es5", 4 + "singleQuote": false, 5 + "printWidth": 80, 6 + "tabWidth": 2, 7 + "useTabs": false, 8 + "arrowParens": "always", 9 + "endOfLine": "lf", 10 + "bracketSpacing": true, 11 + "plugins": ["prettier-plugin-tailwindcss"] 12 + }
+661 -12
bun.lock
··· 36 36 "@types/node": "^22.18.6", 37 37 "@types/react": "^19.1.15", 38 38 "@types/react-dom": "^19.1.9", 39 + "@typescript-eslint/eslint-plugin": "^8.46.4", 40 + "@typescript-eslint/parser": "^8.46.4", 41 + "eslint": "8", 42 + "eslint-config-next": "^16.0.3", 43 + "eslint-config-prettier": "^10.1.8", 44 + "eslint-plugin-jsx-a11y": "^6.10.2", 45 + "eslint-plugin-react": "^7.37.5", 46 + "eslint-plugin-react-hooks": "^7.0.1", 39 47 "husky": "^9.1.7", 40 48 "lint-staged": "^16.2.3", 41 49 "postcss": "^8.5.6", 42 50 "prettier": "3.6.2", 51 + "prettier-plugin-tailwindcss": "^0.7.1", 43 52 "string-replace-loader": "^3.2.0", 44 53 "tailwindcss": "^4.1.13", 45 54 "typescript": "^5.9.2", ··· 86 95 87 96 "@arcjet/transport": ["@arcjet/transport@1.0.0-beta.8", "", { "dependencies": { "@bufbuild/protobuf": "1.10.1", "@connectrpc/connect": "1.6.1", "@connectrpc/connect-node": "1.6.1", "@connectrpc/connect-web": "1.6.1" } }, "sha512-Nlbd5ngPLkkZhmDece8S/kJPgXn1FubjXgTX90XayMFqUXUU+GJ8Jh5mqK1hnV91Y8BU8MvN4CYZ6NjpJ3VZ+g=="], 88 97 98 + "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], 99 + 100 + "@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], 101 + 102 + "@babel/core": ["@babel/core@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="], 103 + 104 + "@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], 105 + 106 + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], 107 + 108 + "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], 109 + 110 + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], 111 + 112 + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], 113 + 114 + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], 115 + 116 + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], 117 + 118 + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], 119 + 120 + "@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="], 121 + 122 + "@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], 123 + 124 + "@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], 125 + 126 + "@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], 127 + 128 + "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], 129 + 89 130 "@bufbuild/protobuf": ["@bufbuild/protobuf@1.10.1", "", {}, "sha512-wJ8ReQbHxsAfXhrf9ixl0aYbZorRuOWpBNzm8pL8ftmSxQx/wnJD5Eg861NwJU/czy2VXFIebCeZnZrI9rktIQ=="], 90 131 91 132 "@connectrpc/connect": ["@connectrpc/connect@1.6.1", "", { "peerDependencies": { "@bufbuild/protobuf": "^1.10.0" } }, "sha512-KchMDNtU4CDTdkyf0qG7ugJ6qHTOR/aI7XebYn3OTCNagaDYWiZUVKgRgwH79yeMkpNgvEUaXSK7wKjaBK9b/Q=="], ··· 97 138 "@corex/deepmerge": ["@corex/deepmerge@4.0.43", "", {}, "sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ=="], 98 139 99 140 "@discoveryjs/json-ext": ["@discoveryjs/json-ext@0.5.7", "", {}, "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw=="], 141 + 142 + "@emnapi/core": ["@emnapi/core@1.7.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg=="], 100 143 101 144 "@emnapi/runtime": ["@emnapi/runtime@1.7.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA=="], 102 145 146 + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], 147 + 148 + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g=="], 149 + 150 + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], 151 + 152 + "@eslint/eslintrc": ["@eslint/eslintrc@2.1.4", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ=="], 153 + 154 + "@eslint/js": ["@eslint/js@8.57.1", "", {}, "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q=="], 155 + 103 156 "@fastify/busboy": ["@fastify/busboy@2.1.1", "", {}, "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA=="], 104 157 105 158 "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], ··· 109 162 "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.6", "", { "dependencies": { "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw=="], 110 163 111 164 "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], 165 + 166 + "@humanwhocodes/config-array": ["@humanwhocodes/config-array@0.13.0", "", { "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" } }, "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw=="], 167 + 168 + "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], 169 + 170 + "@humanwhocodes/object-schema": ["@humanwhocodes/object-schema@2.0.3", "", {}, "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA=="], 112 171 113 172 "@img/colour": ["@img/colour@1.0.0", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="], 114 173 ··· 172 231 173 232 "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], 174 233 234 + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" } }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], 235 + 175 236 "@next/bundle-analyzer": ["@next/bundle-analyzer@15.5.6", "", { "dependencies": { "webpack-bundle-analyzer": "4.10.1" } }, "sha512-IHeyk2s9/fVDAGDLNbBkCSG8XBabhuMajiaJggjsg4GyFIswh78DzLo5Nl5th8QTs3U/teYeczvfeV9w1Tx3qA=="], 176 237 177 238 "@next/env": ["@next/env@16.0.3", "", {}, "sha512-IqgtY5Vwsm14mm/nmQaRMmywCU+yyMIYfk3/MHZ2ZTJvwVbBn3usZnjMi1GacrMVzVcAxJShTCpZlPs26EdEjQ=="], 239 + 240 + "@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.0.3", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-6sPWmZetzFWMsz7Dhuxsdmbu3fK+/AxKRtj7OB0/3OZAI2MHB/v2FeYh271LZ9abvnM1WIwWc/5umYjx0jo5sQ=="], 178 241 179 242 "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.0.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-MOnbd92+OByu0p6QBAzq1ahVWzF6nyfiH07dQDez4/Nku7G249NjxDVyEfVhz8WkLiOEU+KFVnqtgcsfP2nLXg=="], 180 243 ··· 198 261 199 262 "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], 200 263 264 + "@nolyfill/is-core-module": ["@nolyfill/is-core-module@1.0.39", "", {}, "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA=="], 265 + 201 266 "@phosphor-icons/react": ["@phosphor-icons/react@2.1.10", "", { "peerDependencies": { "react": ">= 16.8", "react-dom": ">= 16.8" } }, "sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA=="], 202 267 203 268 "@polka/url": ["@polka/url@1.0.0-next.29", "", {}, "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww=="], ··· 254 319 255 320 "@resvg/resvg-wasm": ["@resvg/resvg-wasm@2.4.0", "", {}, "sha512-C7c51Nn4yTxXFKvgh2txJFNweaVcfUPQxwEUFw4aWsCmfiBDJsTSwviIF8EcwjQ6k8bPyMWCl1vw4BdxE569Cg=="], 256 321 322 + "@rtsao/scc": ["@rtsao/scc@1.1.0", "", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="], 323 + 257 324 "@shuding/opentype.js": ["@shuding/opentype.js@1.4.0-beta.0", "", { "dependencies": { "fflate": "^0.7.3", "string.prototype.codepointat": "^0.2.1" }, "bin": { "ot": "bin/ot" } }, "sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA=="], 258 325 259 326 "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], ··· 290 357 291 358 "@tailwindcss/typography": ["@tailwindcss/typography@0.5.19", "", { "dependencies": { "postcss-selector-parser": "6.0.10" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg=="], 292 359 360 + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], 361 + 293 362 "@types/eslint": ["@types/eslint@9.6.1", "", { "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag=="], 294 363 295 364 "@types/eslint-scope": ["@types/eslint-scope@3.7.7", "", { "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg=="], ··· 298 367 299 368 "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], 300 369 370 + "@types/json5": ["@types/json5@0.0.29", "", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="], 371 + 301 372 "@types/node": ["@types/node@22.19.1", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ=="], 302 373 303 374 "@types/react": ["@types/react@19.2.5", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-keKxkZMqnDicuvFoJbzrhbtdLSPhj/rZThDlKWCDbgXmUg0rEUFtRssDXKYmtXluZlIqiC5VqkCgRwzuyLHKHw=="], 304 375 305 376 "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], 306 377 378 + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.46.4", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.46.4", "@typescript-eslint/type-utils": "8.46.4", "@typescript-eslint/utils": "8.46.4", "@typescript-eslint/visitor-keys": "8.46.4", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.46.4", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg=="], 379 + 380 + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.46.4", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.46.4", "@typescript-eslint/types": "8.46.4", "@typescript-eslint/typescript-estree": "8.46.4", "@typescript-eslint/visitor-keys": "8.46.4", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w=="], 381 + 382 + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.46.4", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.46.4", "@typescript-eslint/types": "^8.46.4", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ=="], 383 + 384 + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.46.4", "", { "dependencies": { "@typescript-eslint/types": "8.46.4", "@typescript-eslint/visitor-keys": "8.46.4" } }, "sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA=="], 385 + 386 + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.46.4", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A=="], 387 + 388 + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.46.4", "", { "dependencies": { "@typescript-eslint/types": "8.46.4", "@typescript-eslint/typescript-estree": "8.46.4", "@typescript-eslint/utils": "8.46.4", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ=="], 389 + 390 + "@typescript-eslint/types": ["@typescript-eslint/types@8.46.4", "", {}, "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w=="], 391 + 392 + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.46.4", "", { "dependencies": { "@typescript-eslint/project-service": "8.46.4", "@typescript-eslint/tsconfig-utils": "8.46.4", "@typescript-eslint/types": "8.46.4", "@typescript-eslint/visitor-keys": "8.46.4", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA=="], 393 + 394 + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.46.4", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.46.4", "@typescript-eslint/types": "8.46.4", "@typescript-eslint/typescript-estree": "8.46.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg=="], 395 + 396 + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.46.4", "", { "dependencies": { "@typescript-eslint/types": "8.46.4", "eslint-visitor-keys": "^4.2.1" } }, "sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw=="], 397 + 398 + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], 399 + 400 + "@unrs/resolver-binding-android-arm-eabi": ["@unrs/resolver-binding-android-arm-eabi@1.11.1", "", { "os": "android", "cpu": "arm" }, "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw=="], 401 + 402 + "@unrs/resolver-binding-android-arm64": ["@unrs/resolver-binding-android-arm64@1.11.1", "", { "os": "android", "cpu": "arm64" }, "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g=="], 403 + 404 + "@unrs/resolver-binding-darwin-arm64": ["@unrs/resolver-binding-darwin-arm64@1.11.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g=="], 405 + 406 + "@unrs/resolver-binding-darwin-x64": ["@unrs/resolver-binding-darwin-x64@1.11.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ=="], 407 + 408 + "@unrs/resolver-binding-freebsd-x64": ["@unrs/resolver-binding-freebsd-x64@1.11.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw=="], 409 + 410 + "@unrs/resolver-binding-linux-arm-gnueabihf": ["@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1", "", { "os": "linux", "cpu": "arm" }, "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw=="], 411 + 412 + "@unrs/resolver-binding-linux-arm-musleabihf": ["@unrs/resolver-binding-linux-arm-musleabihf@1.11.1", "", { "os": "linux", "cpu": "arm" }, "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw=="], 413 + 414 + "@unrs/resolver-binding-linux-arm64-gnu": ["@unrs/resolver-binding-linux-arm64-gnu@1.11.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ=="], 415 + 416 + "@unrs/resolver-binding-linux-arm64-musl": ["@unrs/resolver-binding-linux-arm64-musl@1.11.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w=="], 417 + 418 + "@unrs/resolver-binding-linux-ppc64-gnu": ["@unrs/resolver-binding-linux-ppc64-gnu@1.11.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA=="], 419 + 420 + "@unrs/resolver-binding-linux-riscv64-gnu": ["@unrs/resolver-binding-linux-riscv64-gnu@1.11.1", "", { "os": "linux", "cpu": "none" }, "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ=="], 421 + 422 + "@unrs/resolver-binding-linux-riscv64-musl": ["@unrs/resolver-binding-linux-riscv64-musl@1.11.1", "", { "os": "linux", "cpu": "none" }, "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew=="], 423 + 424 + "@unrs/resolver-binding-linux-s390x-gnu": ["@unrs/resolver-binding-linux-s390x-gnu@1.11.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg=="], 425 + 426 + "@unrs/resolver-binding-linux-x64-gnu": ["@unrs/resolver-binding-linux-x64-gnu@1.11.1", "", { "os": "linux", "cpu": "x64" }, "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w=="], 427 + 428 + "@unrs/resolver-binding-linux-x64-musl": ["@unrs/resolver-binding-linux-x64-musl@1.11.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA=="], 429 + 430 + "@unrs/resolver-binding-wasm32-wasi": ["@unrs/resolver-binding-wasm32-wasi@1.11.1", "", { "dependencies": { "@napi-rs/wasm-runtime": "^0.2.11" }, "cpu": "none" }, "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ=="], 431 + 432 + "@unrs/resolver-binding-win32-arm64-msvc": ["@unrs/resolver-binding-win32-arm64-msvc@1.11.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw=="], 433 + 434 + "@unrs/resolver-binding-win32-ia32-msvc": ["@unrs/resolver-binding-win32-ia32-msvc@1.11.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ=="], 435 + 436 + "@unrs/resolver-binding-win32-x64-msvc": ["@unrs/resolver-binding-win32-x64-msvc@1.11.1", "", { "os": "win32", "cpu": "x64" }, "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g=="], 437 + 307 438 "@vercel/og": ["@vercel/og@0.6.8", "", { "dependencies": { "@resvg/resvg-wasm": "2.4.0", "satori": "0.12.2", "yoga-wasm-web": "0.3.3" } }, "sha512-e4kQK9mP8ntpo3dACWirGod/hHv4qO5JMj9a/0a2AZto7b4persj5YP7t1Er372gTtYFTYxNhMx34jRvHooglw=="], 308 439 309 440 "@vercel/speed-insights": ["@vercel/speed-insights@1.2.0", "", { "peerDependencies": { "@sveltejs/kit": "^1 || ^2", "next": ">= 13", "react": "^18 || ^19 || ^19.0.0-rc", "svelte": ">= 4", "vue": "^3", "vue-router": "^4" }, "optionalPeers": ["@sveltejs/kit", "next", "react", "svelte", "vue", "vue-router"] }, "sha512-y9GVzrUJ2xmgtQlzFP2KhVRoCglwfRQgjyfY607aU0hh0Un6d0OUyrJkjuAlsV18qR4zfoFPs/BiIj9YDS6Wzw=="], ··· 346 477 347 478 "acorn-import-phases": ["acorn-import-phases@1.0.4", "", { "peerDependencies": { "acorn": "^8.14.0" } }, "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ=="], 348 479 480 + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], 481 + 349 482 "acorn-walk": ["acorn-walk@8.3.4", "", { "dependencies": { "acorn": "^8.11.0" } }, "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g=="], 350 483 351 - "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], 484 + "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], 352 485 353 486 "ajv-formats": ["ajv-formats@2.1.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="], 354 487 ··· 356 489 357 490 "ansi-escapes": ["ansi-escapes@7.2.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw=="], 358 491 359 - "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], 492 + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], 360 493 361 - "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], 494 + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], 362 495 363 496 "arcjet": ["arcjet@1.0.0-beta.8", "", { "dependencies": { "@arcjet/analyze": "1.0.0-beta.8", "@arcjet/cache": "1.0.0-beta.8", "@arcjet/duration": "1.0.0-beta.8", "@arcjet/headers": "1.0.0-beta.8", "@arcjet/protocol": "1.0.0-beta.8", "@arcjet/runtime": "1.0.0-beta.8", "@arcjet/stable-hash": "1.0.0-beta.8" } }, "sha512-5nkeNqVbvIpqloZ7rhuYZEzUc4L2KBlBdA+kit5CQQC+XNtdpLEobNQMgDfdz3LrPn9TOfRuXwMQvNvWY8lqig=="], 364 497 498 + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], 499 + 500 + "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], 501 + 502 + "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], 503 + 504 + "array-includes": ["array-includes@3.1.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.0", "es-object-atoms": "^1.1.1", "get-intrinsic": "^1.3.0", "is-string": "^1.1.1", "math-intrinsics": "^1.1.0" } }, "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ=="], 505 + 506 + "array.prototype.findlast": ["array.prototype.findlast@1.2.5", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ=="], 507 + 508 + "array.prototype.findlastindex": ["array.prototype.findlastindex@1.2.6", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-shim-unscopables": "^1.1.0" } }, "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ=="], 509 + 510 + "array.prototype.flat": ["array.prototype.flat@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg=="], 511 + 512 + "array.prototype.flatmap": ["array.prototype.flatmap@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg=="], 513 + 514 + "array.prototype.tosorted": ["array.prototype.tosorted@1.1.4", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA=="], 515 + 516 + "arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="], 517 + 518 + "ast-types-flow": ["ast-types-flow@0.0.8", "", {}, "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ=="], 519 + 520 + "async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], 521 + 522 + "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], 523 + 524 + "axe-core": ["axe-core@4.11.0", "", {}, "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ=="], 525 + 526 + "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], 527 + 528 + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], 529 + 365 530 "base64-js": ["base64-js@0.0.8", "", {}, "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw=="], 366 531 367 532 "baseline-browser-mapping": ["baseline-browser-mapping@2.8.28", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-gYjt7OIqdM0PcttNYP2aVrr2G0bMALkBaoehD4BuRGjAOtipg0b6wHg1yNL+s5zSnLZZrGHOw4IrND8CD+3oIQ=="], 368 533 534 + "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], 535 + 369 536 "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], 370 537 371 538 "browserslist": ["browserslist@4.28.0", "", { "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", "electron-to-chromium": "^1.5.249", "node-releases": "^2.0.27", "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" } }, "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ=="], 372 539 373 540 "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], 374 541 542 + "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], 543 + 544 + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], 545 + 546 + "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], 547 + 548 + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], 549 + 375 550 "camelize": ["camelize@1.0.1", "", {}, "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ=="], 376 551 377 552 "caniuse-lite": ["caniuse-lite@1.0.30001755", "", {}, "sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA=="], 553 + 554 + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], 378 555 379 556 "chrome-trace-event": ["chrome-trace-event@1.0.4", "", {}, "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ=="], 380 557 ··· 387 564 "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], 388 565 389 566 "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], 567 + 568 + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], 390 569 391 570 "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], 392 571 ··· 394 573 395 574 "commander": ["commander@14.0.2", "", {}, "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ=="], 396 575 576 + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], 577 + 578 + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], 579 + 580 + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], 581 + 397 582 "css-background-parser": ["css-background-parser@0.1.0", "", {}, "sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA=="], 398 583 399 584 "css-box-shadow": ["css-box-shadow@1.0.0-3", "", {}, "sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg=="], ··· 408 593 409 594 "csstype": ["csstype@3.2.2", "", {}, "sha512-D80T+tiqkd/8B0xNlbstWDG4x6aqVfO52+OlSUNIdkTvmNw0uQpJLeos2J/2XvpyidAFuTPmpad+tUxLndwj6g=="], 410 595 596 + "damerau-levenshtein": ["damerau-levenshtein@1.0.8", "", {}, "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="], 597 + 598 + "data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="], 599 + 600 + "data-view-byte-length": ["data-view-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ=="], 601 + 602 + "data-view-byte-offset": ["data-view-byte-offset@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="], 603 + 411 604 "date-fns": ["date-fns@4.1.0", "", {}, "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg=="], 412 605 413 606 "date-fns-tz": ["date-fns-tz@3.2.0", "", { "peerDependencies": { "date-fns": "^3.0.0 || ^4.0.0" } }, "sha512-sg8HqoTEulcbbbVXeg84u5UnlsQa8GS5QXMqjjYIhS4abEVVKIUwe0/l/UhrZdKaL/W5eWZNlbTeEIiOXTcsBQ=="], 414 607 415 608 "debounce": ["debounce@1.2.1", "", {}, "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="], 416 609 610 + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], 611 + 612 + "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], 613 + 614 + "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], 615 + 616 + "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], 617 + 417 618 "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], 619 + 620 + "doctrine": ["doctrine@3.0.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w=="], 621 + 622 + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], 418 623 419 624 "duplexer": ["duplexer@0.1.2", "", {}, "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="], 420 625 421 626 "electron-to-chromium": ["electron-to-chromium@1.5.254", "", {}, "sha512-DcUsWpVhv9svsKRxnSCZ86SjD+sp32SGidNB37KpqXJncp1mfUgKbHvBomE89WJDbfVKw1mdv5+ikrvd43r+Bg=="], 422 627 423 - "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], 628 + "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], 424 629 425 630 "enhanced-resolve": ["enhanced-resolve@5.18.3", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww=="], 426 631 427 632 "environment": ["environment@1.1.0", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="], 428 633 634 + "es-abstract": ["es-abstract@1.24.0", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg=="], 635 + 636 + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], 637 + 638 + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], 639 + 640 + "es-iterator-helpers": ["es-iterator-helpers@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.4", "safe-array-concat": "^1.1.3" } }, "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w=="], 641 + 429 642 "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="], 430 643 644 + "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], 645 + 646 + "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], 647 + 648 + "es-shim-unscopables": ["es-shim-unscopables@1.1.0", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="], 649 + 650 + "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], 651 + 431 652 "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], 432 653 433 654 "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], 434 655 435 656 "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], 436 657 437 - "eslint-scope": ["eslint-scope@5.1.1", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="], 658 + "eslint": ["eslint@8.57.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", "@eslint/js": "8.57.1", "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.2", "eslint-visitor-keys": "^3.4.3", "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" } }, "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA=="], 659 + 660 + "eslint-config-next": ["eslint-config-next@16.0.3", "", { "dependencies": { "@next/eslint-plugin-next": "16.0.3", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^7.0.0", "globals": "16.4.0", "typescript-eslint": "^8.46.0" }, "peerDependencies": { "eslint": ">=9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-5F6qDjcZldf0Y0ZbqvWvap9xzYUxyDf7/of37aeyhvkrQokj/4bT1JYWZdlWUr283aeVa+s52mPq9ogmGg+5dw=="], 661 + 662 + "eslint-config-prettier": ["eslint-config-prettier@10.1.8", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": { "eslint-config-prettier": "bin/cli.js" } }, "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w=="], 663 + 664 + "eslint-import-resolver-node": ["eslint-import-resolver-node@0.3.9", "", { "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", "resolve": "^1.22.4" } }, "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g=="], 665 + 666 + "eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@3.10.1", "", { "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.4.0", "get-tsconfig": "^4.10.0", "is-bun-module": "^2.0.0", "stable-hash": "^0.0.5", "tinyglobby": "^0.2.13", "unrs-resolver": "^1.6.2" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ=="], 667 + 668 + "eslint-module-utils": ["eslint-module-utils@2.12.1", "", { "dependencies": { "debug": "^3.2.7" } }, "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw=="], 669 + 670 + "eslint-plugin-import": ["eslint-plugin-import@2.32.0", "", { "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", "array.prototype.findlastindex": "^1.2.6", "array.prototype.flat": "^1.3.3", "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", "object.values": "^1.2.1", "semver": "^6.3.1", "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "peerDependencies": { "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA=="], 671 + 672 + "eslint-plugin-jsx-a11y": ["eslint-plugin-jsx-a11y@6.10.2", "", { "dependencies": { "aria-query": "^5.3.2", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", "axe-core": "^4.10.0", "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "safe-regex-test": "^1.0.3", "string.prototype.includes": "^2.0.1" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q=="], 673 + 674 + "eslint-plugin-react": ["eslint-plugin-react@7.37.5", "", { "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA=="], 675 + 676 + "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.0.1", "", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA=="], 677 + 678 + "eslint-scope": ["eslint-scope@7.2.2", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg=="], 679 + 680 + "eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], 681 + 682 + "espree": ["espree@9.6.1", "", { "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } }, "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="], 683 + 684 + "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], 438 685 439 686 "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], 440 687 441 - "estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="], 688 + "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], 689 + 690 + "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], 442 691 443 692 "eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], 444 693 ··· 448 697 449 698 "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], 450 699 700 + "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], 701 + 702 + "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], 703 + 451 704 "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], 452 705 453 706 "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], 707 + 708 + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], 454 709 455 710 "feed": ["feed@5.1.0", "", { "dependencies": { "xml-js": "^1.6.11" } }, "sha512-qGNhgYygnefSkAHHrNHqC7p3R8J0/xQDS/cYUud8er/qD9EFGWyCdUDfULHTJQN1d3H3WprzVwMc9MfB4J50Wg=="], 456 711 457 712 "fflate": ["fflate@0.7.4", "", {}, "sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw=="], 713 + 714 + "file-entry-cache": ["file-entry-cache@6.0.1", "", { "dependencies": { "flat-cache": "^3.0.4" } }, "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="], 458 715 459 716 "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], 460 717 718 + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], 719 + 720 + "flat-cache": ["flat-cache@3.2.0", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw=="], 721 + 722 + "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], 723 + 724 + "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], 725 + 726 + "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], 727 + 728 + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], 729 + 730 + "function.prototype.name": ["function.prototype.name@1.1.8", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="], 731 + 732 + "functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], 733 + 734 + "generator-function": ["generator-function@2.0.1", "", {}, "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g=="], 735 + 736 + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], 737 + 461 738 "get-east-asian-width": ["get-east-asian-width@1.4.0", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="], 462 739 463 - "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], 740 + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], 741 + 742 + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], 743 + 744 + "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], 745 + 746 + "get-tsconfig": ["get-tsconfig@4.13.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ=="], 747 + 748 + "glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], 749 + 750 + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], 464 751 465 752 "glob-to-regexp": ["glob-to-regexp@0.4.1", "", {}, "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="], 466 753 754 + "globals": ["globals@13.24.0", "", { "dependencies": { "type-fest": "^0.20.2" } }, "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ=="], 755 + 756 + "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], 757 + 758 + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], 759 + 467 760 "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], 761 + 762 + "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="], 468 763 469 764 "gzip-size": ["gzip-size@6.0.0", "", { "dependencies": { "duplexer": "^0.1.2" } }, "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q=="], 765 + 766 + "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], 470 767 471 768 "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], 472 769 770 + "has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], 771 + 772 + "has-proto": ["has-proto@1.2.0", "", { "dependencies": { "dunder-proto": "^1.0.0" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="], 773 + 774 + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], 775 + 776 + "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], 777 + 778 + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], 779 + 780 + "hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="], 781 + 782 + "hermes-parser": ["hermes-parser@0.25.1", "", { "dependencies": { "hermes-estree": "0.25.1" } }, "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA=="], 783 + 473 784 "hex-rgb": ["hex-rgb@4.3.0", "", {}, "sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw=="], 474 785 475 786 "html-escaper": ["html-escaper@2.0.2", "", {}, "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg=="], 476 787 477 788 "husky": ["husky@9.1.7", "", { "bin": { "husky": "bin.js" } }, "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA=="], 478 789 790 + "ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], 791 + 792 + "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], 793 + 794 + "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], 795 + 796 + "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="], 797 + 798 + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], 799 + 800 + "internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="], 801 + 802 + "is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="], 803 + 804 + "is-async-function": ["is-async-function@2.1.1", "", { "dependencies": { "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ=="], 805 + 806 + "is-bigint": ["is-bigint@1.1.0", "", { "dependencies": { "has-bigints": "^1.0.2" } }, "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ=="], 807 + 808 + "is-boolean-object": ["is-boolean-object@1.2.2", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="], 809 + 810 + "is-bun-module": ["is-bun-module@2.0.0", "", { "dependencies": { "semver": "^7.7.1" } }, "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ=="], 811 + 812 + "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], 813 + 814 + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], 815 + 816 + "is-data-view": ["is-data-view@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="], 817 + 818 + "is-date-object": ["is-date-object@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="], 819 + 479 820 "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], 480 821 822 + "is-finalizationregistry": ["is-finalizationregistry@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="], 823 + 481 824 "is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="], 482 825 826 + "is-generator-function": ["is-generator-function@1.1.2", "", { "dependencies": { "call-bound": "^1.0.4", "generator-function": "^2.0.0", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA=="], 827 + 483 828 "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], 484 829 830 + "is-map": ["is-map@2.0.3", "", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="], 831 + 832 + "is-negative-zero": ["is-negative-zero@2.0.3", "", {}, "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw=="], 833 + 485 834 "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], 486 835 836 + "is-number-object": ["is-number-object@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="], 837 + 838 + "is-path-inside": ["is-path-inside@3.0.3", "", {}, "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="], 839 + 487 840 "is-plain-object": ["is-plain-object@5.0.0", "", {}, "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="], 488 841 842 + "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], 843 + 844 + "is-set": ["is-set@2.0.3", "", {}, "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="], 845 + 846 + "is-shared-array-buffer": ["is-shared-array-buffer@1.0.4", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="], 847 + 848 + "is-string": ["is-string@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="], 849 + 850 + "is-symbol": ["is-symbol@1.1.1", "", { "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" } }, "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w=="], 851 + 852 + "is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="], 853 + 854 + "is-weakmap": ["is-weakmap@2.0.2", "", {}, "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="], 855 + 856 + "is-weakref": ["is-weakref@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew=="], 857 + 858 + "is-weakset": ["is-weakset@2.0.4", "", { "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ=="], 859 + 860 + "isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], 861 + 862 + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], 863 + 864 + "iterator.prototype": ["iterator.prototype@1.1.5", "", { "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="], 865 + 489 866 "jest-worker": ["jest-worker@27.5.1", "", { "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" } }, "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg=="], 490 867 491 868 "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], 492 869 870 + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], 871 + 872 + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], 873 + 874 + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], 875 + 876 + "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], 877 + 493 878 "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], 494 879 495 - "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], 880 + "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], 881 + 882 + "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], 883 + 884 + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], 885 + 886 + "jsx-ast-utils": ["jsx-ast-utils@3.3.5", "", { "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" } }, "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ=="], 887 + 888 + "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], 889 + 890 + "language-subtag-registry": ["language-subtag-registry@0.3.23", "", {}, "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ=="], 891 + 892 + "language-tags": ["language-tags@1.0.9", "", { "dependencies": { "language-subtag-registry": "^0.3.20" } }, "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA=="], 893 + 894 + "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], 496 895 497 896 "lightningcss": ["lightningcss@1.30.2", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.30.2", "lightningcss-darwin-arm64": "1.30.2", "lightningcss-darwin-x64": "1.30.2", "lightningcss-freebsd-x64": "1.30.2", "lightningcss-linux-arm-gnueabihf": "1.30.2", "lightningcss-linux-arm64-gnu": "1.30.2", "lightningcss-linux-arm64-musl": "1.30.2", "lightningcss-linux-x64-gnu": "1.30.2", "lightningcss-linux-x64-musl": "1.30.2", "lightningcss-win32-arm64-msvc": "1.30.2", "lightningcss-win32-x64-msvc": "1.30.2" } }, "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ=="], 498 897 ··· 526 925 527 926 "loader-runner": ["loader-runner@4.3.1", "", {}, "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q=="], 528 927 928 + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], 929 + 930 + "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], 931 + 529 932 "log-update": ["log-update@6.1.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w=="], 530 933 531 934 "loops": ["loops@5.0.1", "", {}, "sha512-xM1c9mnlr8Hr4cHW944TQoK6ApynjinUWOgYZd9/B0/3lwTThq24BQ7+XLjgbFAP5kJzqDTRDQi3t+Diy51Udw=="], 532 935 936 + "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], 937 + 938 + "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], 939 + 533 940 "lucide-react": ["lucide-react@0.511.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-VK5a2ydJ7xm8GvBeKLS9mu1pVK6ucef9780JVUjw6bAjJL/QXnd4Y0p7SPeOUMC27YhzNCZvm5d/QX0Tp3rc0w=="], 534 941 535 942 "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], 943 + 944 + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], 536 945 537 946 "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], 538 947 ··· 545 954 "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], 546 955 547 956 "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="], 957 + 958 + "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], 548 959 549 960 "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], 550 961 551 962 "mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="], 552 963 964 + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], 965 + 553 966 "nano-spawn": ["nano-spawn@2.0.0", "", {}, "sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw=="], 554 967 555 968 "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], 556 969 970 + "napi-postinstall": ["napi-postinstall@0.3.4", "", { "bin": { "napi-postinstall": "lib/cli.js" } }, "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ=="], 971 + 972 + "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], 973 + 557 974 "neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="], 558 975 559 976 "next": ["next@16.0.3", "", { "dependencies": { "@next/env": "16.0.3", "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.0.3", "@next/swc-darwin-x64": "16.0.3", "@next/swc-linux-arm64-gnu": "16.0.3", "@next/swc-linux-arm64-musl": "16.0.3", "@next/swc-linux-x64-gnu": "16.0.3", "@next/swc-linux-x64-musl": "16.0.3", "@next/swc-win32-arm64-msvc": "16.0.3", "@next/swc-win32-x64-msvc": "16.0.3", "sharp": "^0.34.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-Ka0/iNBblPFcIubTA1Jjh6gvwqfjrGq1Y2MTI5lbjeLIAfmC+p5bQmojpRZqgHHVu5cG4+qdIiwXiBSm/8lZ3w=="], ··· 566 983 567 984 "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], 568 985 986 + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], 987 + 988 + "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], 989 + 990 + "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], 991 + 992 + "object.assign": ["object.assign@4.1.7", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="], 993 + 994 + "object.entries": ["object.entries@1.1.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-object-atoms": "^1.1.1" } }, "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw=="], 995 + 996 + "object.fromentries": ["object.fromentries@2.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" } }, "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ=="], 997 + 998 + "object.groupby": ["object.groupby@1.0.3", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2" } }, "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ=="], 999 + 1000 + "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], 1001 + 1002 + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], 1003 + 569 1004 "onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], 570 1005 571 1006 "opener": ["opener@1.5.2", "", { "bin": { "opener": "bin/opener-bin.js" } }, "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A=="], 572 1007 1008 + "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], 1009 + 1010 + "own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], 1011 + 1012 + "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], 1013 + 1014 + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], 1015 + 573 1016 "pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], 1017 + 1018 + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], 574 1019 575 1020 "parse-css-color": ["parse-css-color@0.2.1", "", { "dependencies": { "color-name": "^1.1.4", "hex-rgb": "^4.1.0" } }, "sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg=="], 576 1021 1022 + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], 1023 + 1024 + "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="], 1025 + 1026 + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], 1027 + 1028 + "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], 1029 + 577 1030 "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], 578 1031 579 1032 "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 580 1033 581 1034 "pidtree": ["pidtree@0.6.0", "", { "bin": { "pidtree": "bin/pidtree.js" } }, "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g=="], 582 1035 1036 + "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], 1037 + 583 1038 "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], 584 1039 585 1040 "postcss-selector-parser": ["postcss-selector-parser@6.0.10", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w=="], 586 1041 587 1042 "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], 588 1043 1044 + "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], 1045 + 589 1046 "prettier": ["prettier@3.6.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="], 590 1047 1048 + "prettier-plugin-tailwindcss": ["prettier-plugin-tailwindcss@0.7.1", "", { "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", "@prettier/plugin-hermes": "*", "@prettier/plugin-oxc": "*", "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", "@trivago/prettier-plugin-sort-imports": "*", "@zackad/prettier-plugin-twig": "*", "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", "prettier-plugin-svelte": "*" }, "optionalPeers": ["@ianvs/prettier-plugin-sort-imports", "@prettier/plugin-hermes", "@prettier/plugin-oxc", "@prettier/plugin-pug", "@shopify/prettier-plugin-liquid", "@trivago/prettier-plugin-sort-imports", "@zackad/prettier-plugin-twig", "prettier-plugin-astro", "prettier-plugin-css-order", "prettier-plugin-jsdoc", "prettier-plugin-marko", "prettier-plugin-multiline-arrays", "prettier-plugin-organize-attributes", "prettier-plugin-organize-imports", "prettier-plugin-sort-imports", "prettier-plugin-svelte"] }, "sha512-Bzv1LZcuiR1Sk02iJTS1QzlFNp/o5l2p3xkopwOrbPmtMeh3fK9rVW5M3neBQzHq+kGKj/4LGQMTNcTH4NGPtQ=="], 1049 + 1050 + "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], 1051 + 1052 + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], 1053 + 591 1054 "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], 592 1055 593 1056 "randombytes": ["randombytes@2.1.0", "", { "dependencies": { "safe-buffer": "^5.1.0" } }, "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="], ··· 598 1061 599 1062 "react-icons": ["react-icons@5.5.0", "", { "peerDependencies": { "react": "*" } }, "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw=="], 600 1063 1064 + "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], 1065 + 1066 + "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], 1067 + 1068 + "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], 1069 + 601 1070 "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], 602 1071 1072 + "resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="], 1073 + 1074 + "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], 1075 + 1076 + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], 1077 + 603 1078 "restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="], 604 1079 605 1080 "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], 606 1081 607 1082 "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], 608 1083 1084 + "rimraf": ["rimraf@3.0.2", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" } }, "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="], 1085 + 609 1086 "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], 1087 + 1088 + "safe-array-concat": ["safe-array-concat@1.1.3", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="], 610 1089 611 1090 "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], 612 1091 1092 + "safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="], 1093 + 1094 + "safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="], 1095 + 613 1096 "satori": ["satori@0.12.2", "", { "dependencies": { "@shuding/opentype.js": "1.4.0-beta.0", "css-background-parser": "^0.1.0", "css-box-shadow": "1.0.0-3", "css-gradient-parser": "^0.0.16", "css-to-react-native": "^3.0.0", "emoji-regex": "^10.2.1", "escape-html": "^1.0.3", "linebreak": "^1.1.0", "parse-css-color": "^0.2.1", "postcss-value-parser": "^4.2.0", "yoga-wasm-web": "^0.3.3" } }, "sha512-3C/laIeE6UUe9A+iQ0A48ywPVCCMKCNSTU5Os101Vhgsjd3AAxGNjyq0uAA8kulMPK5n0csn8JlxPN9riXEjLA=="], 614 1097 615 1098 "sax": ["sax@1.4.3", "", {}, "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ=="], ··· 618 1101 619 1102 "schema-utils": ["schema-utils@4.3.3", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA=="], 620 1103 621 - "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1104 + "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], 622 1105 623 1106 "serialize-javascript": ["serialize-javascript@6.0.2", "", { "dependencies": { "randombytes": "^2.1.0" } }, "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g=="], 624 1107 1108 + "set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], 1109 + 1110 + "set-function-name": ["set-function-name@2.0.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="], 1111 + 1112 + "set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="], 1113 + 625 1114 "sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], 626 1115 1116 + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], 1117 + 1118 + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], 1119 + 1120 + "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], 1121 + 1122 + "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], 1123 + 1124 + "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], 1125 + 1126 + "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], 1127 + 627 1128 "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], 628 1129 629 1130 "sirv": ["sirv@2.0.4", "", { "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", "totalist": "^3.0.0" } }, "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ=="], ··· 636 1137 637 1138 "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], 638 1139 1140 + "stable-hash": ["stable-hash@0.0.5", "", {}, "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA=="], 1141 + 1142 + "stop-iteration-iterator": ["stop-iteration-iterator@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="], 1143 + 639 1144 "string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="], 640 1145 641 1146 "string-replace-loader": ["string-replace-loader@3.2.0", "", { "dependencies": { "schema-utils": "^4" }, "peerDependencies": { "webpack": "^5" } }, "sha512-q7+F4DC6MAKkszF3ZQEuZ3dDH25wXPxFA0maTLk3TOTAYPLDgwqCeCKIvOd8xJhYYYl+EXusYRCyKIJliT/olg=="], ··· 644 1149 645 1150 "string.prototype.codepointat": ["string.prototype.codepointat@0.2.1", "", {}, "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg=="], 646 1151 647 - "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], 1152 + "string.prototype.includes": ["string.prototype.includes@2.0.1", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3" } }, "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg=="], 1153 + 1154 + "string.prototype.matchall": ["string.prototype.matchall@4.0.12", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA=="], 1155 + 1156 + "string.prototype.repeat": ["string.prototype.repeat@1.0.0", "", { "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" } }, "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w=="], 1157 + 1158 + "string.prototype.trim": ["string.prototype.trim@1.2.10", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="], 1159 + 1160 + "string.prototype.trimend": ["string.prototype.trimend@1.0.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="], 1161 + 1162 + "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], 1163 + 1164 + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], 1165 + 1166 + "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], 1167 + 1168 + "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], 648 1169 649 1170 "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], 650 1171 651 - "supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], 1172 + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], 1173 + 1174 + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], 652 1175 653 1176 "tailwind-merge": ["tailwind-merge@3.4.0", "", {}, "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g=="], 654 1177 ··· 659 1182 "terser": ["terser@5.44.1", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw=="], 660 1183 661 1184 "terser-webpack-plugin": ["terser-webpack-plugin@5.3.14", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "peerDependencies": { "webpack": "^5.1.0" } }, "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw=="], 1185 + 1186 + "text-table": ["text-table@0.2.0", "", {}, "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="], 662 1187 663 1188 "tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="], 664 1189 1190 + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], 1191 + 665 1192 "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], 666 1193 667 1194 "totalist": ["totalist@3.0.1", "", {}, "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ=="], 1195 + 1196 + "ts-api-utils": ["ts-api-utils@2.1.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ=="], 1197 + 1198 + "tsconfig-paths": ["tsconfig-paths@3.15.0", "", { "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg=="], 668 1199 669 1200 "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], 670 1201 1202 + "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], 1203 + 1204 + "type-fest": ["type-fest@0.20.2", "", {}, "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="], 1205 + 1206 + "typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="], 1207 + 1208 + "typed-array-byte-length": ["typed-array-byte-length@1.0.3", "", { "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.14" } }, "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg=="], 1209 + 1210 + "typed-array-byte-offset": ["typed-array-byte-offset@1.0.4", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.15", "reflect.getprototypeof": "^1.0.9" } }, "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ=="], 1211 + 1212 + "typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], 1213 + 671 1214 "typeid-js": ["typeid-js@1.2.0", "", { "dependencies": { "uuid": "^10.0.0" } }, "sha512-t76ZucAnvGC60ea/HjVsB0TSoB0cw9yjnfurUgtInXQWUI/VcrlZGpO23KN3iSe8yOGUgb1zr7W7uEzJ3hSljA=="], 672 1215 673 1216 "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], 674 1217 1218 + "typescript-eslint": ["typescript-eslint@8.46.4", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.46.4", "@typescript-eslint/parser": "8.46.4", "@typescript-eslint/typescript-estree": "8.46.4", "@typescript-eslint/utils": "8.46.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-KALyxkpYV5Ix7UhvjTwJXZv76VWsHG+NjNlt/z+a17SOQSiOcBdUXdbJdyXi7RPxrBFECtFOiPwUJQusJuCqrg=="], 1219 + 1220 + "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], 1221 + 675 1222 "undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], 676 1223 677 1224 "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], 678 1225 679 1226 "unicode-trie": ["unicode-trie@2.0.0", "", { "dependencies": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" } }, "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ=="], 1227 + 1228 + "unrs-resolver": ["unrs-resolver@1.11.1", "", { "dependencies": { "napi-postinstall": "^0.3.0" }, "optionalDependencies": { "@unrs/resolver-binding-android-arm-eabi": "1.11.1", "@unrs/resolver-binding-android-arm64": "1.11.1", "@unrs/resolver-binding-darwin-arm64": "1.11.1", "@unrs/resolver-binding-darwin-x64": "1.11.1", "@unrs/resolver-binding-freebsd-x64": "1.11.1", "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-musl": "1.11.1", "@unrs/resolver-binding-wasm32-wasi": "1.11.1", "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg=="], 680 1229 681 1230 "update-browserslist-db": ["update-browserslist-db@1.1.4", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A=="], 682 1231 1232 + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], 1233 + 683 1234 "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], 684 1235 685 1236 "uuid": ["uuid@10.0.0", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ=="], ··· 692 1243 693 1244 "webpack-sources": ["webpack-sources@3.3.3", "", {}, "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg=="], 694 1245 1246 + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], 1247 + 1248 + "which-boxed-primitive": ["which-boxed-primitive@1.1.1", "", { "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", "is-number-object": "^1.1.1", "is-string": "^1.1.1", "is-symbol": "^1.1.1" } }, "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA=="], 1249 + 1250 + "which-builtin-type": ["which-builtin-type@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", "which-typed-array": "^1.1.16" } }, "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q=="], 1251 + 1252 + "which-collection": ["which-collection@1.0.2", "", { "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" } }, "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw=="], 1253 + 1254 + "which-typed-array": ["which-typed-array@1.1.19", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw=="], 1255 + 1256 + "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], 1257 + 695 1258 "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], 1259 + 1260 + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], 696 1261 697 1262 "ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="], 698 1263 699 1264 "xml-js": ["xml-js@1.6.11", "", { "dependencies": { "sax": "^1.2.4" }, "bin": { "xml-js": "./bin/cli.js" } }, "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g=="], 1265 + 1266 + "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], 700 1267 701 1268 "yaml": ["yaml@2.8.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw=="], 702 1269 1270 + "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], 1271 + 703 1272 "yoga-wasm-web": ["yoga-wasm-web@0.3.3", "", {}, "sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA=="], 1273 + 1274 + "zod": ["zod@4.1.12", "", {}, "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ=="], 1275 + 1276 + "zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], 1277 + 1278 + "@eslint/eslintrc/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], 1279 + 1280 + "@next/eslint-plugin-next/fast-glob": ["fast-glob@3.3.1", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" } }, "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg=="], 704 1281 705 1282 "@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 706 1283 ··· 720 1297 721 1298 "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], 722 1299 723 - "esrecurse/estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], 1300 + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], 1301 + 1302 + "@typescript-eslint/typescript-estree/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1303 + 1304 + "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], 1305 + 1306 + "ajv-formats/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], 1307 + 1308 + "ajv-keywords/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], 1309 + 1310 + "eslint/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], 1311 + 1312 + "eslint-config-next/globals": ["globals@16.4.0", "", {}, "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw=="], 1313 + 1314 + "eslint-import-resolver-node/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], 1315 + 1316 + "eslint-import-resolver-node/resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], 1317 + 1318 + "eslint-module-utils/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], 1319 + 1320 + "eslint-plugin-import/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], 1321 + 1322 + "eslint-plugin-import/doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], 1323 + 1324 + "eslint-plugin-react/doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], 1325 + 1326 + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], 1327 + 1328 + "is-bun-module/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1329 + 1330 + "jest-worker/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], 1331 + 1332 + "log-update/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], 724 1333 725 1334 "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], 726 1335 727 1336 "next-sitemap/@next/env": ["@next/env@13.5.11", "", {}, "sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg=="], 728 1337 1338 + "satori/emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], 1339 + 1340 + "schema-utils/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], 1341 + 1342 + "sharp/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1343 + 1344 + "slice-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], 1345 + 1346 + "string-width/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], 1347 + 729 1348 "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], 730 1349 1350 + "tinyglobby/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], 1351 + 1352 + "tsconfig-paths/json5": ["json5@1.0.2", "", { "dependencies": { "minimist": "^1.2.0" }, "bin": { "json5": "lib/cli.js" } }, "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA=="], 1353 + 1354 + "webpack/eslint-scope": ["eslint-scope@5.1.1", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="], 1355 + 731 1356 "webpack-bundle-analyzer/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], 732 1357 1358 + "wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], 1359 + 733 1360 "wrap-ansi/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], 1361 + 1362 + "wrap-ansi/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], 1363 + 1364 + "@next/eslint-plugin-next/fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], 1365 + 1366 + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], 1367 + 1368 + "ajv-formats/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], 1369 + 1370 + "ajv-keywords/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], 1371 + 1372 + "log-update/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], 1373 + 1374 + "schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], 1375 + 1376 + "string-width/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], 1377 + 1378 + "webpack/eslint-scope/estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="], 1379 + 1380 + "wrap-ansi/string-width/emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], 1381 + 1382 + "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], 734 1383 } 735 1384 }
+20 -2
package.json
··· 7 7 "build": "bunx --bun next build", 8 8 "postbuild": "next-sitemap", 9 9 "start": "bunx --bun next start", 10 - "lint": "bunx --bun next lint", 10 + "lint": "eslint . --ext .js,.jsx,.ts,.tsx", 11 + "lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --fix", 12 + "format": "prettier --write .", 13 + "format:check": "prettier --check .", 11 14 "analyze": "ANALYZE=true bunx --bun next build", 12 15 "prepare": "husky" 13 16 }, ··· 44 47 "@types/node": "^22.18.6", 45 48 "@types/react": "^19.1.15", 46 49 "@types/react-dom": "^19.1.9", 50 + "@typescript-eslint/eslint-plugin": "^8.46.4", 51 + "@typescript-eslint/parser": "^8.46.4", 52 + "eslint": "8", 53 + "eslint-config-next": "^16.0.3", 54 + "eslint-config-prettier": "^10.1.8", 55 + "eslint-plugin-jsx-a11y": "^6.10.2", 56 + "eslint-plugin-react": "^7.37.5", 57 + "eslint-plugin-react-hooks": "^7.0.1", 47 58 "husky": "^9.1.7", 48 59 "lint-staged": "^16.2.3", 49 60 "postcss": "^8.5.6", 50 61 "prettier": "3.6.2", 62 + "prettier-plugin-tailwindcss": "^0.7.1", 51 63 "string-replace-loader": "^3.2.0", 52 64 "tailwindcss": "^4.1.13", 53 65 "typescript": "^5.9.2" ··· 65 77 "sharp" 66 78 ], 67 79 "lint-staged": { 68 - "**/*": "prettier --write --ignore-unknown" 80 + "*.{js,jsx,ts,tsx}": [ 81 + "eslint --fix", 82 + "prettier --write" 83 + ], 84 + "*.{json,css,md,mdx}": [ 85 + "prettier --write" 86 + ] 69 87 } 70 88 }
+30 -35
src/app/(home)/page.tsx
··· 6 6 import JmDark from "@public/images/jmdark-min.webp"; 7 7 import JmLight from "@public/images/jmlite-min.webp"; 8 8 import Link from "next/link"; 9 - import { useEffect, useState } from "react"; 9 + import { useSyncExternalStore } from "react"; 10 10 11 - export default function Home() { 12 - const [isLightMode, setIsLightMode] = useState(false); 11 + // Subscribe function for useSyncExternalStore 12 + function subscribeToLightMode(callback: () => void) { 13 + const mediaQuery = window.matchMedia("(prefers-color-scheme: light)"); 14 + mediaQuery.addEventListener("change", callback); 15 + return () => mediaQuery.removeEventListener("change", callback); 16 + } 13 17 14 - useEffect(() => { 15 - // Initialize theme 16 - if (typeof window !== "undefined") { 17 - const mediaQuery = window.matchMedia("(prefers-color-scheme: light)"); 18 - setIsLightMode(mediaQuery.matches); 18 + // Get current snapshot for client 19 + function getLightModeSnapshot() { 20 + return window.matchMedia("(prefers-color-scheme: light)").matches; 21 + } 19 22 20 - // Add listener for theme changes 21 - const handleThemeChange = (e) => { 22 - setIsLightMode(e.matches); 23 - }; 23 + // Get snapshot for server-side rendering 24 + function getLightModeServerSnapshot() { 25 + return false; 26 + } 24 27 25 - mediaQuery.addEventListener("change", handleThemeChange); 26 - 27 - // Cleanup listener 28 - return () => { 29 - mediaQuery.removeEventListener("change", handleThemeChange); 30 - }; 31 - } 32 - }, []); 28 + export default function Home() { 29 + const isLightMode = useSyncExternalStore( 30 + subscribeToLightMode, 31 + getLightModeSnapshot, 32 + getLightModeServerSnapshot 33 + ); 33 34 34 35 const imgpath = isLightMode ? JmDark : JmLight; 35 36 36 - const fadeVariants = { 37 - hidden: { opacity: 0 }, 38 - visible: { opacity: 1 }, 39 - exit: { opacity: 0 }, 40 - }; 41 - 42 37 return ( 43 - <div className="min-h-screen min-w-screen mx-auto flex flex-col"> 38 + <div className="mx-auto flex min-h-screen min-w-screen flex-col"> 44 39 <MENU pageFirstWord="Jasper" pageSecondWord="Mayone" /> 45 40 <main className="flex-1"> 46 41 <ConfettiWrapper /> 47 - <div className="flex flex-col md:flex-row gap-8 mx-5 mt-5 mb-5"> 48 - <div className="w-64 flex-shrink-0 mt-8 mx-auto md:mx-0 md:self-start overflow-hidden"> 42 + <div className="mx-5 mt-5 mb-5 flex flex-col gap-8 md:flex-row"> 43 + <div className="mx-auto mt-8 w-64 flex-shrink-0 overflow-hidden md:mx-0 md:self-start"> 49 44 <RoundedImage 50 45 src={imgpath} 51 46 alt="Jasper Mayone" ··· 56 51 </div> 57 52 <div className="flex flex-col justify-center"> 58 53 <div className="space-y-4"> 59 - <p className="font-medium text-xl"> 54 + <p className="text-xl font-medium"> 60 55 <span style={{ fontFamily: "var(--font-balgin)" }}> 61 56 Jasper Mayone [<i>he/they</i>] 62 57 </span>{" "} 63 - <span className="text-gray-700 dark:text-white/70 font-normal"> 58 + <span className="font-normal text-gray-700 dark:text-white/70"> 64 59 is a 19-year-old college student from rural Vermont, currently 65 60 residing in Boston. 66 61 </span> 67 62 </p> 68 - <p className="text-gray-600 dark:text-white/70 text-sm"> 63 + <p className="text-sm text-gray-600 dark:text-white/70"> 69 64 A computer science major at{" "} 70 65 <Link 71 66 className="lnk" ··· 80 75 photography, computer programming, cooking, and running away to 81 76 join the circus. 82 77 </p> 83 - <p className="text-gray-600 dark:text-white/70 text-sm"> 78 + <p className="text-sm text-gray-600 dark:text-white/70"> 84 79 An avid organizer and big picture thinker, you can often find 85 80 them scheming up some sort of business venture. From developing 86 81 a small app to drafting large scale plans for a world domination ··· 90 85 Jasper to take on exciting roles in various projects and 91 86 adventures, both close to home and abroad. 92 87 </p> 93 - <p className="text-gray-600 dark:text-white/70 text-sm"> 88 + <p className="text-sm text-gray-600 dark:text-white/70"> 94 89 Recently they've been focusing their time (outside of their 95 90 degree) on{" "} 96 91 <Link ··· 106 101 creativity and support the next generation of makers. 107 102 </p> 108 103 109 - <p className="text-gray-600 dark:text-white/70 text-sm"> 104 + <p className="text-sm text-gray-600 dark:text-white/70"> 110 105 Previously, Jasper's adventures included working at{" "} 111 106 <Link 112 107 className="lnk"
+4 -5
src/app/api/commits/route.ts
··· 1 - // pages/api/commits.ts (for Pages Router) or app/api/commits/route.ts (for App Router) 2 - import { NextApiRequest, NextApiResponse } from "next"; 1 + // app/api/commits/route.ts (for App Router) 3 2 4 3 interface GitHubCommitResponse { 5 4 sha: string; ··· 50 49 51 50 const response = await fetch( 52 51 `https://api.github.com/repos/${owner}/${repo}/commits?per_page=${limit}`, 53 - { headers }, 52 + { headers } 54 53 ); 55 54 56 55 if (!response.ok) { 57 56 if (response.status === 403) { 58 57 throw new Error( 59 - "GitHub API rate limit exceeded or repository access denied", 58 + "GitHub API rate limit exceeded or repository access denied" 60 59 ); 61 60 } 62 61 throw new Error( 63 - `GitHub API error: ${response.status} ${response.statusText}`, 62 + `GitHub API error: ${response.status} ${response.statusText}` 64 63 ); 65 64 } 66 65
+1 -1
src/app/api/email/new.tsx
··· 62 62 63 63 export default async function handler( 64 64 req: NextApiRequest, 65 - res: NextApiResponse, 65 + res: NextApiResponse 66 66 ) { 67 67 if (req.method !== "POST") { 68 68 return res
+28 -28
src/app/colophon/page.tsx
··· 116 116 __html: JSON.stringify(colophonPageSchema), 117 117 }} 118 118 /> 119 - <div className="min-h-screen flex flex-col"> 119 + <div className="flex min-h-screen flex-col"> 120 120 <MENU pageFirstWord="Colophon" /> 121 121 <main className="flex-1"> 122 - <div className="max-w-4xl mx-auto px-6 py-12"> 122 + <div className="mx-auto max-w-4xl px-6 py-12"> 123 123 <div className="mb-16"> 124 124 <h1 125 - className="text-4xl font-bold mb-4 text-gray-900 dark:text-white" 125 + className="mb-4 text-4xl font-bold text-gray-900 dark:text-white" 126 126 style={{ fontFamily: "var(--font-balgin)" }} 127 127 > 128 128 Colophon ··· 135 135 {/* Site History Section */} 136 136 <section className="mb-16"> 137 137 <h2 138 - className="text-2xl font-bold mb-6 text-gray-900 dark:text-white" 138 + className="mb-6 text-2xl font-bold text-gray-900 dark:text-white" 139 139 style={{ fontFamily: "var(--font-balgin)" }} 140 140 > 141 141 Site History 142 142 </h2> 143 - <div className="border border-gray-200 dark:border-gray-700 rounded-2xl p-8"> 144 - <p className="text-gray-600 dark:text-gray-300 text-lg leading-relaxed"> 143 + <div className="rounded-2xl border border-gray-200 p-8 dark:border-gray-700"> 144 + <p className="text-lg leading-relaxed text-gray-600 dark:text-gray-300"> 145 145 The original site was developed by{" "} 146 146 <Link 147 147 href="https://aram.sh?utm_source=jaspermayone.com&utm_medium=referral" ··· 159 159 {/* Technology Stack Section */} 160 160 <section className="mb-16"> 161 161 <h2 162 - className="text-2xl font-bold mb-6 text-gray-900 dark:text-white" 162 + className="mb-6 text-2xl font-bold text-gray-900 dark:text-white" 163 163 style={{ fontFamily: "var(--font-balgin)" }} 164 164 > 165 165 Technology Stack 166 166 </h2> 167 - <div className="grid lg:grid-cols-2 gap-6"> 167 + <div className="grid gap-6 lg:grid-cols-2"> 168 168 {techStack.map((tech, index) => ( 169 169 <div 170 170 key={index} 171 - className="border border-gray-200 dark:border-gray-700 rounded-2xl p-6 hover:border-gray-300 dark:hover:border-gray-600 transition-colors" 171 + className="rounded-2xl border border-gray-200 p-6 transition-colors hover:border-gray-300 dark:border-gray-700 dark:hover:border-gray-600" 172 172 > 173 - <div className="flex items-start justify-between mb-3"> 173 + <div className="mb-3 flex items-start justify-between"> 174 174 <h3 className="text-lg font-bold text-gray-900 dark:text-white"> 175 175 {tech.name} 176 176 </h3> 177 177 <span 178 - className="px-3 py-1 text-sm font-medium text-gray-600 dark:text-gray-300 bg-gray-100 dark:bg-gray-800 rounded-full" 178 + className="rounded-full bg-gray-100 px-3 py-1 text-sm font-medium text-gray-600 dark:bg-gray-800 dark:text-gray-300" 179 179 style={{ fontFamily: "var(--font-balgin)" }} 180 180 > 181 181 {tech.category} 182 182 </span> 183 183 </div> 184 - <p className="text-gray-600 dark:text-gray-300 leading-relaxed"> 184 + <p className="leading-relaxed text-gray-600 dark:text-gray-300"> 185 185 {tech.description} 186 186 </p> 187 187 </div> ··· 192 192 {/* Hosting & Deployment Section */} 193 193 <section className="mb-16"> 194 194 <h2 195 - className="text-2xl font-bold mb-6 text-gray-900 dark:text-white" 195 + className="mb-6 text-2xl font-bold text-gray-900 dark:text-white" 196 196 style={{ fontFamily: "var(--font-balgin)" }} 197 197 > 198 198 Hosting & Deployment 199 199 </h2> 200 - <div className="border border-gray-200 dark:border-gray-700 rounded-2xl p-8"> 201 - <h3 className="text-xl font-bold text-gray-900 dark:text-white mb-3"> 200 + <div className="rounded-2xl border border-gray-200 p-8 dark:border-gray-700"> 201 + <h3 className="mb-3 text-xl font-bold text-gray-900 dark:text-white"> 202 202 Vercel Platform 203 203 </h3> 204 - <p className="text-gray-600 dark:text-gray-300 leading-relaxed mb-4"> 204 + <p className="mb-4 leading-relaxed text-gray-600 dark:text-gray-300"> 205 205 The site is hosted on{" "} 206 206 <Link 207 207 href="https://vercel.com?utm_source=jaspermayone.com&utm_medium=referral" ··· 218 218 className="flex flex-wrap gap-2" 219 219 style={{ fontFamily: "var(--font-balgin)" }} 220 220 > 221 - <span className="px-3 py-1 text-sm font-medium text-gray-600 dark:text-gray-300 bg-gray-100 dark:bg-gray-800 rounded-full"> 221 + <span className="rounded-full bg-gray-100 px-3 py-1 text-sm font-medium text-gray-600 dark:bg-gray-800 dark:text-gray-300"> 222 222 GitHub Integration 223 223 </span> 224 - <span className="px-3 py-1 text-sm font-medium text-gray-600 dark:text-gray-300 bg-gray-100 dark:bg-gray-800 rounded-full"> 224 + <span className="rounded-full bg-gray-100 px-3 py-1 text-sm font-medium text-gray-600 dark:bg-gray-800 dark:text-gray-300"> 225 225 Automatic HTTPS 226 226 </span> 227 - <span className="px-3 py-1 text-sm font-medium text-gray-600 dark:text-gray-300 bg-gray-100 dark:bg-gray-800 rounded-full"> 227 + <span className="rounded-full bg-gray-100 px-3 py-1 text-sm font-medium text-gray-600 dark:bg-gray-800 dark:text-gray-300"> 228 228 Global CDN 229 229 </span> 230 230 </div> ··· 234 234 {/* Development Tools Section */} 235 235 <section className="mb-16"> 236 236 <h2 237 - className="text-2xl font-bold mb-6 text-gray-900 dark:text-white" 237 + className="mb-6 text-2xl font-bold text-gray-900 dark:text-white" 238 238 style={{ fontFamily: "var(--font-balgin)" }} 239 239 > 240 240 Development Tools 241 241 </h2> 242 - <div className="border border-gray-200 dark:border-gray-700 rounded-2xl p-8"> 243 - <div className="grid sm:grid-cols-2 lg:grid-cols-3 gap-6"> 242 + <div className="rounded-2xl border border-gray-200 p-8 dark:border-gray-700"> 243 + <div className="grid gap-6 sm:grid-cols-2 lg:grid-cols-3"> 244 244 {tools.map((tool, index) => ( 245 245 <div key={index}> 246 - <h3 className="font-bold text-gray-900 dark:text-white mb-2"> 246 + <h3 className="mb-2 font-bold text-gray-900 dark:text-white"> 247 247 {tool.name} 248 248 </h3> 249 - <p className="text-gray-600 dark:text-gray-300 leading-relaxed"> 249 + <p className="leading-relaxed text-gray-600 dark:text-gray-300"> 250 250 {tool.description} 251 251 </p> 252 252 </div> ··· 258 258 {/* Hardware Section */} 259 259 <section className="mb-16"> 260 260 <h2 261 - className="text-2xl font-bold mb-6 text-gray-900 dark:text-white" 261 + className="mb-6 text-2xl font-bold text-gray-900 dark:text-white" 262 262 style={{ fontFamily: "var(--font-balgin)" }} 263 263 > 264 264 Hardware 265 265 </h2> 266 - <div className="border border-gray-200 dark:border-gray-700 rounded-2xl p-8"> 267 - <h3 className="text-xl font-bold text-gray-900 dark:text-white mb-2"> 266 + <div className="rounded-2xl border border-gray-200 p-8 dark:border-gray-700"> 267 + <h3 className="mb-2 text-xl font-bold text-gray-900 dark:text-white"> 268 268 Apple M4 Pro MacBook Pro 269 269 </h3> 270 - <p className="text-gray-600 dark:text-gray-300 text-lg"> 270 + <p className="text-lg text-gray-600 dark:text-gray-300"> 271 271 Primary development machine for coding, design, and testing 272 272 </p> 273 273 </div>
+7 -7
src/app/concerts/page.tsx
··· 73 73 __html: JSON.stringify(concertsPageSchema), 74 74 }} 75 75 /> 76 - <div className="min-h-screen flex flex-col"> 76 + <div className="flex min-h-screen flex-col"> 77 77 <MENU pageFirstWord="Concerts" /> 78 78 <main className="flex-1"> 79 79 <div className="mx-5 mt-4 mb-4"> 80 80 <h1 81 - className="text-xl font-bold mb-4 text-gray-800 dark:text-white" 81 + className="mb-4 text-xl font-bold text-gray-800 dark:text-white" 82 82 style={{ fontFamily: "var(--font-balgin)" }} 83 83 > 84 84 Concerts I've Attended 85 85 </h1> 86 86 87 - <p className="text-gray-600 dark:text-white/70 mb-6"> 87 + <p className="mb-6 text-gray-600 dark:text-white/70"> 88 88 A running list of live shows and concerts I've been to over the 89 89 years. 90 90 </p> ··· 93 93 {sortedConcerts.map((yearGroup) => ( 94 94 <div key={yearGroup.year}> 95 95 <h2 96 - className="text-lg font-semibold mb-3 text-gray-900 dark:text-white" 96 + className="mb-3 text-lg font-semibold text-gray-900 dark:text-white" 97 97 style={{ fontFamily: "var(--font-balgin)" }} 98 98 > 99 99 {yearGroup.year} ··· 102 102 {yearGroup.concerts.map((concert, index) => ( 103 103 <li 104 104 key={index} 105 - className="pl-4 border-l-2 border-gray-300 dark:border-gray-600" 105 + className="border-l-2 border-gray-300 pl-4 dark:border-gray-600" 106 106 > 107 107 <div className="flex items-start gap-2"> 108 108 <div className="flex-1"> ··· 133 133 )} 134 134 {concert.setlist && ( 135 135 <div 136 - className="text-xs mt-1" 136 + className="mt-1 text-xs" 137 137 style={{ fontFamily: "var(--font-balgin)" }} 138 138 > 139 139 <a 140 140 href={concert.setlist} 141 141 target="_blank" 142 142 rel="noopener noreferrer" 143 - className="text-blue-600 dark:text-blue-400 hover:underline" 143 + className="text-blue-600 hover:underline dark:text-blue-400" 144 144 > 145 145 View Setlist → 146 146 </a>
+2 -2
src/app/contact/page.tsx
··· 97 97 __html: JSON.stringify(contactPageSchema), 98 98 }} 99 99 /> 100 - <div className="min-h-screen flex flex-col"> 100 + <div className="flex min-h-screen flex-col"> 101 101 <MENU pageFirstWord="Contact" /> 102 102 <main className="flex-1"> 103 103 <div className="mx-5 mt-4 mb-4"> 104 104 <h1 105 - className="text-xl font-bold mb-4 text-gray-800 dark:text-white" 105 + className="mb-4 text-xl font-bold text-gray-800 dark:text-white" 106 106 style={{ fontFamily: "var(--font-balgin)" }} 107 107 > 108 108 Get in Touch
+13 -13
src/app/elsewhere/page.tsx
··· 55 55 export default function Elsewhere() { 56 56 // Sort appearances by date (most recent first) 57 57 const sortedAppearances = [...appearances].sort( 58 - (a, b) => new Date(b.date).getTime() - new Date(a.date).getTime(), 58 + (a, b) => new Date(b.date).getTime() - new Date(a.date).getTime() 59 59 ); 60 60 61 61 return ( ··· 67 67 __html: JSON.stringify(elsewherePageSchema), 68 68 }} 69 69 /> 70 - <div className="min-h-screen flex flex-col"> 70 + <div className="flex min-h-screen flex-col"> 71 71 <MENU pageFirstWord="Elsewhere" /> 72 72 <main className="flex-1"> 73 73 <div className="mx-5 mt-4 mb-4"> 74 74 <h1 75 - className="text-xl font-bold mb-2 text-gray-800 dark:text-white" 75 + className="mb-2 text-xl font-bold text-gray-800 dark:text-white" 76 76 style={{ fontFamily: "var(--font-balgin)" }} 77 77 > 78 78 My appearances elsewhere. 79 79 </h1> 80 - <p className="text-gray-600 dark:text-white/70 mb-6 italic"> 80 + <p className="mb-6 text-gray-600 italic dark:text-white/70"> 81 81 a list of output or writings on sites other than one's own 82 82 </p> 83 83 84 84 {sortedAppearances.length === 0 ? ( 85 - <div className="text-center py-12"> 85 + <div className="py-12 text-center"> 86 86 <p className="text-gray-500 dark:text-gray-400"> 87 87 No appearances yet. Check back soon! 88 88 </p> ··· 95 95 href={`${appearance.url}?utm_source=jaspermayone.com&utm_medium=referral`} 96 96 target="_blank" 97 97 rel="noopener noreferrer" 98 - className="block p-4 border border-gray-200 dark:border-gray-700 rounded-lg hover:border-gray-300 dark:hover:border-gray-600 hover:bg-gray-50 dark:hover:bg-gray-800/30 transition-colors group" 98 + className="group block rounded-lg border border-gray-200 p-4 transition-colors hover:border-gray-300 hover:bg-gray-50 dark:border-gray-700 dark:hover:border-gray-600 dark:hover:bg-gray-800/30" 99 99 > 100 100 <div className="flex items-start justify-between gap-4"> 101 - <div className="flex-1 min-w-0"> 102 - <div className="flex items-start gap-2 mb-1"> 101 + <div className="min-w-0 flex-1"> 102 + <div className="mb-1 flex items-start gap-2"> 103 103 <h2 104 - className="font-semibold text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors" 104 + className="font-semibold text-gray-900 transition-colors group-hover:text-blue-600 dark:text-white dark:group-hover:text-blue-400" 105 105 style={{ fontFamily: "var(--font-balgin)" }} 106 106 > 107 107 {appearance.title} 108 108 </h2> 109 - <ArrowUpRight className="w-4 h-4 text-gray-400 group-hover:text-blue-600 dark:group-hover:text-blue-400 flex-shrink-0 mt-0.5" /> 109 + <ArrowUpRight className="mt-0.5 h-4 w-4 flex-shrink-0 text-gray-400 group-hover:text-blue-600 dark:group-hover:text-blue-400" /> 110 110 </div> 111 111 112 - <div className="flex flex-wrap items-center gap-2 text-sm text-gray-600 dark:text-gray-400 mb-2"> 112 + <div className="mb-2 flex flex-wrap items-center gap-2 text-sm text-gray-600 dark:text-gray-400"> 113 113 <span className="font-medium"> 114 114 {appearance.platform} 115 115 </span> ··· 117 117 <> 118 118 <span>•</span> 119 119 <span 120 - className="px-2 py-0.5 text-xs rounded-full bg-gray-100 dark:bg-gray-700" 120 + className="rounded-full bg-gray-100 px-2 py-0.5 text-xs dark:bg-gray-700" 121 121 style={{ fontFamily: "var(--font-balgin)" }} 122 122 > 123 123 {appearance.type} ··· 141 141 year: "numeric", 142 142 month: "long", 143 143 day: "numeric", 144 - }, 144 + } 145 145 )} 146 146 </time> 147 147 </div>
+5 -13
src/app/error.tsx
··· 12 12 }); 13 13 14 14 return ( 15 - <div className="h-screen w-screen flex flex-col items-center justify-center overflow-hidden py-6"> 15 + <div className="flex h-screen w-screen flex-col items-center justify-center overflow-hidden py-6"> 16 16 {bottomSquiggles.map((config, index) => ( 17 17 <SquigglyLine 18 18 key={index} ··· 23 23 /> 24 24 ))} 25 25 26 - <div className="my-12 flex flex-col items-center justify-center rounded-md bg-linkHover/40 p-10"> 27 - <div className="flex gap-2 mb-1"> 26 + <div className="bg-linkHover/40 my-12 flex flex-col items-center justify-center rounded-md p-10"> 27 + <div className="mb-1 flex gap-2"> 28 28 {["E", "R", "R", "O", "R"].map((letter, i) => ( 29 29 <div 30 30 key={i} 31 - className="font-cute-notes w-12 h-12 flex items-center justify-center text-5xl font-medium" 31 + className="font-cute-notes flex h-12 w-12 items-center justify-center text-5xl font-medium" 32 32 > 33 33 {letter} 34 34 </div> 35 35 ))} 36 36 </div> 37 - 38 - {/* <SquigglyLine 39 - frequency={50} 40 - amplitude={0.4} 41 - className="w-3/4" 42 - color="#56ba8e" 43 - /> */} 44 - 45 37 <div className="max-w-lg text-center"> 46 38 <p className="inline" style={{ fontFamily: "var(--font-balgin)" }}> 47 39 Uh oh! This page seems to have lost artistic direction. Please try 48 40 to 49 41 </p>{" "} 50 - <p className="inline underline decoration-wavy decoration-greeen hover:decoration-linkHover hover:bg-blue-400 hover:rounded-md transition-all duration-300"> 42 + <p className="decoration-greeen hover:decoration-linkHover inline underline decoration-wavy transition-all duration-300 hover:rounded-md hover:bg-blue-400"> 51 43 <Link href="/">return home!</Link> 52 44 </p> 53 45 </div>
+10 -10
src/app/green/page.tsx
··· 58 58 __html: JSON.stringify(greenPageSchema), 59 59 }} 60 60 /> 61 - <div className="min-h-screen flex flex-col"> 61 + <div className="flex min-h-screen flex-col"> 62 62 <MENU pageFirstWord="Green" /> 63 63 <main className="flex-1"> 64 64 <div className="mx-5 mt-4 mb-4"> 65 65 <h1 66 - className="text-xl font-bold mb-4 text-gray-800 dark:text-white" 66 + className="mb-4 text-xl font-bold text-gray-800 dark:text-white" 67 67 style={{ fontFamily: "var(--font-balgin)" }} 68 68 > 69 69 Living Green ··· 77 77 </p> 78 78 79 79 {/* Carbon Rating Card */} 80 - <div className="border border-gray-200 dark:border-gray-700 rounded-lg p-6 bg-white dark:bg-gray-800/20"> 81 - <div className="flex items-center justify-between mb-4"> 80 + <div className="rounded-lg border border-gray-200 bg-white p-6 dark:border-gray-700 dark:bg-gray-800/20"> 81 + <div className="mb-4 flex items-center justify-between"> 82 82 <h2 83 83 className="text-lg font-semibold text-gray-800 dark:text-white" 84 84 style={{ fontFamily: "var(--font-balgin)" }} 85 85 > 86 86 Website Carbon Rating 87 87 </h2> 88 - <div className="flex items-center justify-center w-12 h-12 rounded-full bg-green-100 dark:bg-green-900/30"> 88 + <div className="flex h-12 w-12 items-center justify-center rounded-full bg-green-100 dark:bg-green-900/30"> 89 89 <span 90 90 className="text-2xl font-bold text-green-700 dark:text-green-400" 91 91 style={{ fontFamily: "var(--font-balgin)" }} ··· 95 95 </div> 96 96 </div> 97 97 98 - <div className="grid grid-cols-1 md:grid-cols-3 gap-4 mb-4"> 99 - <div className="text-center p-3 rounded-md bg-gray-50 dark:bg-gray-700/30"> 98 + <div className="mb-4 grid grid-cols-1 gap-4 md:grid-cols-3"> 99 + <div className="rounded-md bg-gray-50 p-3 text-center dark:bg-gray-700/30"> 100 100 <div 101 101 className="text-2xl font-bold text-gray-900 dark:text-white" 102 102 style={{ fontFamily: "var(--font-balgin)" }} ··· 108 108 </div> 109 109 </div> 110 110 111 - <div className="text-center p-3 rounded-md bg-gray-50 dark:bg-gray-700/30"> 111 + <div className="rounded-md bg-gray-50 p-3 text-center dark:bg-gray-700/30"> 112 112 <div 113 113 className="text-2xl font-bold text-gray-900 dark:text-white" 114 114 style={{ fontFamily: "var(--font-balgin)" }} ··· 120 120 </div> 121 121 </div> 122 122 123 - <div className="text-center p-3 rounded-md bg-gray-50 dark:bg-gray-700/30"> 123 + <div className="rounded-md bg-gray-50 p-3 text-center dark:bg-gray-700/30"> 124 124 <div 125 125 className="text-2xl font-bold text-gray-900 dark:text-white" 126 126 style={{ fontFamily: "var(--font-balgin)" }} ··· 133 133 </div> 134 134 </div> 135 135 136 - <p className="text-sm text-gray-600 dark:text-gray-400 mb-2"> 136 + <p className="mb-2 text-sm text-gray-600 dark:text-gray-400"> 137 137 This website produces minimal carbon emissions with just{" "} 138 138 <strong>0.17 grams of CO₂</strong> per page view. That's 139 139 excellent for web sustainability!
+1 -1
src/app/keys/[key]/data.ts
··· 17 17 } 18 18 19 19 export async function getKeyByTitle( 20 - title: string, 20 + title: string 21 21 ): Promise<KeyRecord | undefined> { 22 22 const res = await get(); 23 23 const obj = JSON.parse(res.body) as KeysIndex;
+20 -20
src/app/keys/[key]/page.tsx
··· 117 117 /> 118 118 <main className="min-h-screen"> 119 119 <div 120 - className="max-w-4xl mx-auto px-4 py-8 md:py-12" 120 + className="mx-auto max-w-4xl px-4 py-8 md:py-12" 121 121 style={{ fontFamily: "var(--font-balgin)" }} 122 122 > 123 123 {/* Header */} 124 124 <div className="mb-8"> 125 - <h1 className="text-3xl md:text-4xl font-bold text-gray-900 dark:text-white mb-2"> 125 + <h1 className="mb-2 text-3xl font-bold text-gray-900 md:text-4xl dark:text-white"> 126 126 {title.toUpperCase()} Key 127 127 </h1> 128 128 <p className="text-gray-600 dark:text-gray-400"> ··· 131 131 </div> 132 132 133 133 {/* Quick Actions Card */} 134 - <div className="bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-xl p-6 mb-6 shadow-sm"> 135 - <h2 className="text-lg font-semibold text-gray-900 dark:text-white mb-4"> 134 + <div className="mb-6 rounded-xl border border-gray-200 bg-white p-6 shadow-sm dark:border-gray-700 dark:bg-gray-800"> 135 + <h2 className="mb-4 text-lg font-semibold text-gray-900 dark:text-white"> 136 136 Quick Actions 137 137 </h2> 138 - <div className="flex flex-col sm:flex-row gap-3"> 138 + <div className="flex flex-col gap-3 sm:flex-row"> 139 139 <CopyButton label="Copy Key" valueToCopy={keyData} /> 140 140 <Link href={downloadURL} className="flex-1 sm:flex-initial"> 141 141 <Button variant="outline" className="w-full"> ··· 146 146 </div> 147 147 148 148 {/* Key Details Card */} 149 - <div className="bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-xl p-6 mb-6 shadow-sm"> 150 - <h2 className="text-lg font-semibold text-gray-900 dark:text-white mb-5"> 149 + <div className="mb-6 rounded-xl border border-gray-200 bg-white p-6 shadow-sm dark:border-gray-700 dark:bg-gray-800"> 150 + <h2 className="mb-5 text-lg font-semibold text-gray-900 dark:text-white"> 151 151 Key Information 152 152 </h2> 153 153 154 154 <div className="space-y-5"> 155 155 <div> 156 - <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> 156 + <div className="mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"> 157 157 Fingerprint 158 - </label> 159 - <div className="bg-gray-50 dark:bg-gray-900 px-4 py-3 rounded-lg border border-gray-200 dark:border-gray-700"> 160 - <code className="text-sm font-mono text-gray-800 dark:text-gray-200 break-all"> 158 + </div> 159 + <div className="rounded-lg border border-gray-200 bg-gray-50 px-4 py-3 dark:border-gray-700 dark:bg-gray-900"> 160 + <code className="font-mono text-sm break-all text-gray-800 dark:text-gray-200"> 161 161 {fingerprint} 162 162 </code> 163 163 </div> 164 164 </div> 165 165 166 166 <div> 167 - <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> 167 + <div className="mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"> 168 168 Direct Link 169 - </label> 170 - <div className="bg-gray-50 dark:bg-gray-900 px-4 py-3 rounded-lg border border-gray-200 dark:border-gray-700"> 169 + </div> 170 + <div className="rounded-lg border border-gray-200 bg-gray-50 px-4 py-3 dark:border-gray-700 dark:bg-gray-900"> 171 171 <Link 172 172 href={directURL} 173 - className="text-sm text-blue-600 dark:text-blue-400 hover:underline break-all font-mono" 173 + className="font-mono text-sm break-all text-blue-600 hover:underline dark:text-blue-400" 174 174 > 175 175 {fullDirectURL} 176 176 </Link> ··· 181 181 182 182 {/* Import Command Card */} 183 183 {(title === "ssh" || title === "gpg") && ( 184 - <div className="bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-xl p-6 shadow-sm"> 185 - <h2 className="text-lg font-semibold text-gray-900 dark:text-white mb-3"> 184 + <div className="rounded-xl border border-gray-200 bg-white p-6 shadow-sm dark:border-gray-700 dark:bg-gray-800"> 185 + <h2 className="mb-3 text-lg font-semibold text-gray-900 dark:text-white"> 186 186 Import Command 187 187 </h2> 188 - <p className="text-sm text-gray-600 dark:text-gray-400 mb-4"> 188 + <p className="mb-4 text-sm text-gray-600 dark:text-gray-400"> 189 189 Run this command in your terminal to import the key: 190 190 </p> 191 191 192 192 <div className="space-y-3"> 193 - <div className="bg-gray-900 dark:bg-black p-4 rounded-lg border border-gray-700 overflow-x-auto"> 194 - <code className="text-sm font-mono text-green-400 block whitespace-nowrap"> 193 + <div className="overflow-x-auto rounded-lg border border-gray-700 bg-gray-900 p-4 dark:bg-black"> 194 + <code className="block font-mono text-sm whitespace-nowrap text-green-400"> 195 195 {title === "ssh" ? sshImportCommand : gpgImportCommand} 196 196 </code> 197 197 </div>
+5 -5
src/app/not-found.tsx
··· 11 11 }); 12 12 13 13 return ( 14 - <div className="h-screen w-screen flex flex-col items-center justify-center overflow-hidden py-6"> 14 + <div className="flex h-screen w-screen flex-col items-center justify-center overflow-hidden py-6"> 15 15 {bottomSquiggles.map((config, index) => ( 16 16 <SquigglyLine 17 17 key={index} ··· 22 22 /> 23 23 ))} 24 24 25 - <div className="my-12 flex flex-col items-center justify-center rounded-md bg-linkHover/40 p-10"> 26 - <div className="flex gap-2 mb-1"> 25 + <div className="bg-linkHover/40 my-12 flex flex-col items-center justify-center rounded-md p-10"> 26 + <div className="mb-1 flex gap-2"> 27 27 {["4", "0", "4"].map((letter, i) => ( 28 28 <div 29 29 key={i} 30 - className="font-cute-notes w-12 h-12 flex items-center justify-center text-5xl font-medium" 30 + className="font-cute-notes flex h-12 w-12 items-center justify-center text-5xl font-medium" 31 31 > 32 32 {letter} 33 33 </div> ··· 38 38 <p className="inline"> 39 39 This page seems to have run away to join the circus. 40 40 </p>{" "} 41 - <p className="inline underline decoration-wavy decoration-greeen hover:decoration-linkHover hover:bg-blue-400 hover:rounded-md transition-all duration-300"> 41 + <p className="decoration-greeen hover:decoration-linkHover inline underline decoration-wavy transition-all duration-300 hover:rounded-md hover:bg-blue-400"> 42 42 <Link href="/">Go home!</Link> 43 43 </p> 44 44 </div>
+4 -4
src/app/now/page.tsx
··· 82 82 __html: JSON.stringify(nowPageSchema), 83 83 }} 84 84 /> 85 - <div className="h-screen flex flex-col"> 85 + <div className="flex h-screen flex-col"> 86 86 <MENU pageFirstWord="Now" /> 87 - <main className="m-5 flex-1 overflow-hidden flex flex-col"> 87 + <main className="m-5 flex flex-1 flex-col overflow-hidden"> 88 88 <div className="mb-6"> 89 - <p className="text-gray-700 mb-3"> 89 + <p className="mb-3 text-gray-700"> 90 90 This is a semi-realtime status update system for posting updates 91 91 to{" "} 92 92 <Link ··· 108 108 </Link>{" "} 109 109 that updates automatically. 110 110 </p> 111 - <p className="text-gray-600 text-sm"> 111 + <p className="text-sm text-gray-600"> 112 112 The original was called a.status.update and created by{" "} 113 113 <Link 114 114 href="https://dame.is/creating/shortcuts/a-status-update/?utm_source=jaspermayone.com&utm_medium=referral"
+5 -5
src/app/panera/page.tsx
··· 76 76 addBackground={true} 77 77 disableSquig={true} 78 78 /> 79 - <main className="max-w-4xl mx-auto px-4 py-8"> 80 - <div className="text-center mb-8"> 79 + <main className="mx-auto max-w-4xl px-4 py-8"> 80 + <div className="mb-8 text-center"> 81 81 <div 82 - className="inline-block rounded-lg p-8 mb-4" 82 + className="mb-4 inline-block rounded-lg p-8" 83 83 style={{ 84 84 background: "#fff", 85 85 boxShadow: "0 2px 8px rgba(0,0,0,0.08)", 86 86 }} 87 87 > 88 88 <div 89 - className="text-3xl font-bold mb-4" 89 + className="mb-4 text-3xl font-bold" 90 90 style={{ 91 91 fontFamily: "var(--font-balgin)", 92 92 color: "#051402", ··· 96 96 Jasper's Panera Bread Order 97 97 </div> 98 98 <p 99 - className="text-gray-600 max-w-2xl mx-auto" 99 + className="mx-auto max-w-2xl text-gray-600" 100 100 style={{ lineHeight: "1.6", fontFamily: "var(--font-balgin)" }} 101 101 > 102 102 Inspired by people creating /chipotle pages with their Chipotle
+6 -6
src/app/pfp/page.tsx
··· 55 55 }; 56 56 57 57 export default function PFP() { 58 - let paths = [jm, dark, lite, circus, waves]; 58 + const paths = [jm, dark, lite, circus, waves]; 59 59 60 60 return ( 61 61 <> ··· 66 66 __html: JSON.stringify(pfpPageSchema), 67 67 }} 68 68 /> 69 - <div className="min-h-screen flex flex-col"> 69 + <div className="flex min-h-screen flex-col"> 70 70 <MENU pageFirstWord="PFPs" /> 71 71 <main className="flex-1"> 72 72 <div className="mx-5 mt-4 mb-4"> 73 73 <h1 74 - className="text-xl font-bold underline mb-4 text-gray-800 dark:text-white" 74 + className="mb-4 text-xl font-bold text-gray-800 underline dark:text-white" 75 75 style={{ fontFamily: "var(--font-balgin)" }} 76 76 > 77 77 Profile Photos ··· 81 81 Here's all the profile photos I've used over the years 82 82 </p> 83 83 84 - <div className="grid grid-cols-4 md:grid-cols-5 lg:grid-cols-6 gap-4"> 84 + <div className="grid grid-cols-4 gap-4 md:grid-cols-5 lg:grid-cols-6"> 85 85 {paths.map((path, index) => ( 86 86 <div 87 87 key={index} 88 - className="aspect-square overflow-hidden rounded-[10%] w-50 h-50 bg-white/50 dark:bg-gray-800/20 p-1" 88 + className="aspect-square h-50 w-50 overflow-hidden rounded-[10%] bg-white/50 p-1 dark:bg-gray-800/20" 89 89 > 90 90 <Image 91 91 src={path} ··· 95 95 aria-label="one of jasper's previous profile photos" 96 96 placeholder="blur" 97 97 priority={true} 98 - className="w-full h-full object-cover object-center rounded-[8%]" 98 + className="h-full w-full rounded-[8%] object-cover object-center" 99 99 /> 100 100 </div> 101 101 ))}
+7 -7
src/app/podroll/page.tsx
··· 98 98 __html: JSON.stringify(podrollPageSchema), 99 99 }} 100 100 /> 101 - <div className="min-h-screen flex flex-col"> 101 + <div className="flex min-h-screen flex-col"> 102 102 <MENU pageFirstWord="Podcasts" /> 103 103 <main className="flex-1"> 104 104 <div className="mx-5 mt-4 mb-4"> 105 105 <h1 106 - className="text-xl font-bold mb-2 text-gray-800 dark:text-white" 106 + className="mb-2 text-xl font-bold text-gray-800 dark:text-white" 107 107 style={{ fontFamily: "var(--font-balgin)" }} 108 108 > 109 109 Recommended Podcasts 110 110 </h1> 111 111 112 - <div className="grid grid-cols-1 md:grid-cols-2 gap-3"> 112 + <div className="grid grid-cols-1 gap-3 md:grid-cols-2"> 113 113 {podcasts.map((podcast, index) => ( 114 114 <Link 115 115 key={index} 116 116 href={`${podcast.url}?utm_source=jaspermayone.com&utm_medium=referral`} 117 117 target="_blank" 118 118 rel="noopener noreferrer" 119 - className="flex p-3 bg-white/50 dark:bg-gray-800/20 rounded-lg hover:bg-blue-50 dark:hover:bg-blue-900/20 transition-colors" 119 + className="flex rounded-lg bg-white/50 p-3 transition-colors hover:bg-blue-50 dark:bg-gray-800/20 dark:hover:bg-blue-900/20" 120 120 > 121 - <div className="shrink-0 mr-3 text-blue-500"> 121 + <div className="mr-3 shrink-0 text-blue-500"> 122 122 <HeadphonesIcon size={20} /> 123 123 </div> 124 124 <div> 125 - <h2 className="font-medium text-gray-800 dark:text-gray-100 text-sm"> 125 + <h2 className="text-sm font-medium text-gray-800 dark:text-gray-100"> 126 126 {podcast.name} 127 127 </h2> 128 - <p className="text-gray-600 dark:text-white/70 text-xs mt-1"> 128 + <p className="mt-1 text-xs text-gray-600 dark:text-white/70"> 129 129 {podcast.description} 130 130 </p> 131 131 </div>
+12 -12
src/app/portfolio/page.tsx
··· 70 70 __html: JSON.stringify(portfolioSchema), 71 71 }} 72 72 /> 73 - <div className="min-h-screen flex flex-col"> 73 + <div className="flex min-h-screen flex-col"> 74 74 <MENU pageFirstWord="Portfolio" /> 75 75 <main className="m-5 flex-1"> 76 76 <div className="mb-8"> 77 - <p className="text-gray-700 dark:text-white/70 mb-3"> 77 + <p className="mb-3 text-gray-700 dark:text-white/70"> 78 78 A collection of projects I've worked on, ranging from web 79 79 applications to creative tools and experiments. 80 80 </p> 81 81 </div> 82 82 83 - <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> 83 + <div className="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3"> 84 84 {projects.map((project, index) => ( 85 85 <div 86 86 key={index} 87 - className="border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden hover:shadow-lg transition-shadow duration-200" 87 + className="overflow-hidden rounded-lg border border-gray-200 transition-shadow duration-200 hover:shadow-lg dark:border-gray-700" 88 88 > 89 - <div className="relative w-full h-48 bg-gray-100 dark:bg-gray-800"> 89 + <div className="relative h-48 w-full bg-gray-100 dark:bg-gray-800"> 90 90 {project.image ? ( 91 91 <Image 92 92 src={project.image} ··· 99 99 blurDataURL="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAE0lEQVR42mNk+P+fgYGBgQEAAP8A/ueJdwEAAAAASUVORK5CYII=" 100 100 /> 101 101 ) : ( 102 - <div className="w-full h-full flex items-center justify-center text-gray-400 dark:text-gray-600 text-sm"> 102 + <div className="flex h-full w-full items-center justify-center text-sm text-gray-400 dark:text-gray-600"> 103 103 No image provided 104 104 </div> 105 105 )} 106 106 </div> 107 107 <div className="p-6"> 108 - <div className="flex justify-between items-start mb-3"> 108 + <div className="mb-3 flex items-start justify-between"> 109 109 <h2 className="text-xl font-semibold text-gray-900 dark:text-white"> 110 110 {project.title} 111 111 </h2> ··· 118 118 className="text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white" 119 119 aria-label="Visit project" 120 120 > 121 - <PaperclipIcon className="w-5 h-5" /> 121 + <PaperclipIcon className="h-5 w-5" /> 122 122 </Link> 123 123 )} 124 124 {project.github && ( ··· 129 129 className="text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white" 130 130 aria-label="View on GitHub" 131 131 > 132 - <GithubLogoIcon className="w-5 h-5" /> 132 + <GithubLogoIcon className="h-5 w-5" /> 133 133 </Link> 134 134 )} 135 135 </div> 136 136 </div> 137 137 138 - <p className="text-gray-600 dark:text-white/70 text-sm mb-4"> 138 + <p className="mb-4 text-sm text-gray-600 dark:text-white/70"> 139 139 {project.description} 140 140 </p> 141 141 142 142 {project.tags && project.tags.length > 0 && ( 143 - <div className="flex flex-wrap gap-2 mb-3"> 143 + <div className="mb-3 flex flex-wrap gap-2"> 144 144 {project.tags.map((tag, tagIndex) => ( 145 145 <span 146 146 key={tagIndex} 147 - className="px-2 py-1 text-xs rounded-full bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-300" 147 + className="rounded-full bg-blue-100 px-2 py-1 text-xs text-blue-800 dark:bg-blue-900/30 dark:text-blue-300" 148 148 style={{ fontFamily: "var(--font-balgin)" }} 149 149 > 150 150 {tag}
+5 -5
src/app/to/page.tsx
··· 14 14 const toRoutes = redirects.filter((redirect) => redirect.slashToLink); 15 15 16 16 return ( 17 - <div className="min-h-screen bg-background text-foreground"> 17 + <div className="bg-background text-foreground min-h-screen"> 18 18 <div className="container mx-auto px-4 py-8"> 19 19 <h1 20 - className="text-3xl font-bold mb-8" 20 + className="mb-8 text-3xl font-bold" 21 21 style={{ fontFamily: "var(--font-balgin)" }} 22 22 > 23 23 All /to Routes ··· 27 27 {toRoutes.map((redirect) => ( 28 28 <div 29 29 key={redirect.slug} 30 - className="border rounded-lg p-4 hover:bg-accent/50 transition-colors" 30 + className="hover:bg-accent/50 rounded-lg border p-4 transition-colors" 31 31 > 32 32 <div className="flex items-center justify-between"> 33 33 <div> 34 - <h3 className="font-semibold text-lg underline decoration-wavy decoration-greeen text-greeen hover:decoration-linkHover"> 34 + <h3 className="decoration-greeen text-greeen hover:decoration-linkHover text-lg font-semibold underline decoration-wavy"> 35 35 {redirect.slug} 36 36 </h3> 37 37 <p className="text-muted-foreground text-sm break-all"> ··· 40 40 </div> 41 41 <Link 42 42 href={`/to/${redirect.slug}?utm_source=jaspermayone.com&utm_medium=referral`} 43 - className="text-primary hover:underline text-sm" 43 + className="text-primary text-sm hover:underline" 44 44 > 45 45 Visit → 46 46 </Link>
+7 -7
src/app/uses/page.tsx
··· 85 85 __html: JSON.stringify(usesPageSchema), 86 86 }} 87 87 /> 88 - <div className="min-h-screen flex flex-col"> 88 + <div className="flex min-h-screen flex-col"> 89 89 <MENU pageFirstWord="Uses" /> 90 90 <main className="flex-1"> 91 91 <div className="mx-5 mt-4 mb-4"> 92 - <h1 className="text-xl font-bold mb-2 text-gray-800 dark:text-white"> 92 + <h1 className="mb-2 text-xl font-bold text-gray-800 dark:text-white"> 93 93 What I Use 94 94 </h1> 95 95 96 - <div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-2"> 96 + <div className="grid grid-cols-1 gap-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4"> 97 97 {tools.map((item, index) => ( 98 98 <div 99 99 key={index} 100 - className="flex items-center p-2 bg-white/50 dark:bg-gray-800/20 rounded-md" 100 + className="flex items-center rounded-md bg-white/50 p-2 dark:bg-gray-800/20" 101 101 > 102 - <div className="text-lg mr-2">{item.emoji}</div> 102 + <div className="mr-2 text-lg">{item.emoji}</div> 103 103 <div> 104 - <div className="font-medium text-sm text-gray-800 dark:text-gray-100"> 104 + <div className="text-sm font-medium text-gray-800 dark:text-gray-100"> 105 105 {item.name} 106 106 </div> 107 - <div className="text-gray-600 dark:text-white/70 text-xs"> 107 + <div className="text-xs text-gray-600 dark:text-white/70"> 108 108 {item.result} 109 109 </div> 110 110 </div>
+34 -34
src/app/verify/page.tsx
··· 47 47 48 48 const LetterBlock = ({ letter }) => ( 49 49 <span 50 - className="inline-block py-1 mx-0.5" 50 + className="mx-0.5 inline-block py-1" 51 51 style={{ fontFamily: "var(--font-cuteNotes)" }} 52 52 > 53 53 {letter} ··· 56 56 57 57 const SectionHeader = ({ children }) => ( 58 58 <h2 59 - className="text-4xl mb-2 dark:text-white" 59 + className="mb-2 text-4xl dark:text-white" 60 60 style={{ fontFamily: "var(--font-cuteNotes)" }} 61 61 > 62 62 {children.split("").map((letter, index) => ( ··· 103 103 }; 104 104 105 105 const VerifyPage = () => { 106 - const title = "/VERIFY"; 106 + const _title = "/VERIFY"; 107 107 108 108 enum domainType { 109 109 personal, ··· 238 238 }, 239 239 ]; 240 240 241 - const cryptoKeys = [ 241 + const _cryptoKeys = [ 242 242 { 243 243 type: "GPG", 244 244 fingerprint: "00E6 43C2 1FAC 965F FB28 D3B7 14D0 D45A 1DAD AAFA", ··· 257 257 const getIcon = (platform) => { 258 258 switch (platform.toLowerCase()) { 259 259 case "github": 260 - return <SiGithub className="w-4 h-4" />; 260 + return <SiGithub className="h-4 w-4" />; 261 261 case "linkedin": 262 - return <SiLinkedin className="w-4 h-4" />; 262 + return <SiLinkedin className="h-4 w-4" />; 263 263 case "instagram": 264 - return <SiInstagram className="w-4 h-4" />; 264 + return <SiInstagram className="h-4 w-4" />; 265 265 case "youtube": 266 - return <SiYoutube className="w-4 h-4" />; 266 + return <SiYoutube className="h-4 w-4" />; 267 267 case "buy me a coffee": 268 - return <SiBuymeacoffee className="w-4 h-4" />; 268 + return <SiBuymeacoffee className="h-4 w-4" />; 269 269 case "matrix": 270 - return <SiMatrix className="w-4 h-4" />; 270 + return <SiMatrix className="h-4 w-4" />; 271 271 case "bluesky": 272 - return <SiBluesky className="w-4 h-4" />; 272 + return <SiBluesky className="h-4 w-4" />; 273 273 case "threads": 274 - return <SiThreads className="w-4 h-4" />; 274 + return <SiThreads className="h-4 w-4" />; 275 275 case "signal": 276 - return <SiSignal className="w-4 h-4" />; 276 + return <SiSignal className="h-4 w-4" />; 277 277 case "reddit": 278 - return <SiReddit className="w-4 h-4" />; 278 + return <SiReddit className="h-4 w-4" />; 279 279 case "hackerone": 280 - return <SiHackerone className="w-4 h-4" />; 280 + return <SiHackerone className="h-4 w-4" />; 281 281 case "twitter/x": 282 - return <SiX className="w-4 h-4" />; 282 + return <SiX className="h-4 w-4" />; 283 283 case "dev.to": 284 - return <SiDevdotto className="w-4 h-4" />; 284 + return <SiDevdotto className="h-4 w-4" />; 285 285 case "product hunt": 286 - return <SiProducthunt className="w-4 h-4" />; 286 + return <SiProducthunt className="h-4 w-4" />; 287 287 case "hacker news": 288 288 // HN doesn't have an official icon, use YCombinator as a placeholder 289 - return <SiYcombinator className="w-4 h-4" />; 289 + return <SiYcombinator className="h-4 w-4" />; 290 290 case "thingiverse": 291 - return <SiThingiverse className="w-4 h-4" />; 291 + return <SiThingiverse className="h-4 w-4" />; 292 292 default: 293 - return <AtSign className="w-4 h-4" />; 293 + return <AtSign className="h-4 w-4" />; 294 294 } 295 295 }; 296 296 ··· 304 304 }} 305 305 /> 306 306 <MENU pageFirstWord="/verify" /> 307 - <main className="max-w-4xl mx-auto px-4 pt-6"> 307 + <main className="mx-auto max-w-4xl px-4 pt-6"> 308 308 <header className="mb-8"> 309 - <p className="text-neutral-500 dark:text-neutral-400 text-[0.60rem] mb-2"> 309 + <p className="mb-2 text-[0.60rem] text-neutral-500 dark:text-neutral-400"> 310 310 Inspired by{" "} 311 311 <Link 312 312 className="lnk" ··· 326 326 platforms listed below. 327 327 </p> 328 328 329 - <p className="text-neutral-700 dark:text-neutral-300 mt-2"> 329 + <p className="mt-2 text-neutral-700 dark:text-neutral-300"> 330 330 My entire identity can also be verified at{" "} 331 331 <Link 332 332 href="https://keyoxide.org/00E643C21FAC965FFB28D3B714D0D45A1DADAAFA?utm_source=jaspermayone.com&utm_medium=referral" ··· 370 370 {/* Domains Section */} 371 371 <section className="mb-6"> 372 372 <SectionHeader>domains</SectionHeader> 373 - <div className="bg-gradient-to-br from-blue-50 to-pink-50 dark:from-slate-800 dark:to-slate-900 p-6 rounded-xl border border-gray-200 dark:border-gray-700"> 373 + <div className="rounded-xl border border-gray-200 bg-gradient-to-br from-blue-50 to-pink-50 p-6 dark:border-gray-700 dark:from-slate-800 dark:to-slate-900"> 374 374 <p className="mb-4 text-gray-700 dark:text-gray-300"> 375 375 These are the domains I own and operate. I also operate a few 376 376 other domains for work and clients that are not listed here for 377 377 privacy reasons. 378 378 </p> 379 - <div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4"> 379 + <div className="grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3"> 380 380 {domains.map((domain) => { 381 381 const getBadgeStyles = (type) => { 382 382 switch (type) { ··· 396 396 return ( 397 397 <div 398 398 key={domain.name} 399 - className="bg-white dark:bg-slate-800 p-4 rounded-lg border border-gray-200 dark:border-gray-700 hover:border-blue-300 dark:hover:border-blue-500 hover:bg-blue-50 dark:hover:bg-slate-700 hover:shadow-sm transition-all duration-300" 399 + className="rounded-lg border border-gray-200 bg-white p-4 transition-all duration-300 hover:border-blue-300 hover:bg-blue-50 hover:shadow-sm dark:border-gray-700 dark:bg-slate-800 dark:hover:border-blue-500 dark:hover:bg-slate-700" 400 400 > 401 - <h3 className="font-medium text-lg text-gray-800 dark:text-gray-200"> 401 + <h3 className="text-lg font-medium text-gray-800 dark:text-gray-200"> 402 402 {domain.name} 403 403 </h3> 404 404 <div className="mt-2 flex items-center gap-2"> 405 405 <span 406 - className={`text-xs px-2 py-1 rounded-full ${getBadgeStyles( 407 - domain.type, 406 + className={`rounded-full px-2 py-1 text-xs ${getBadgeStyles( 407 + domain.type 408 408 )}`} 409 409 > 410 410 {domainType[domain.type].charAt(0).toUpperCase() + ··· 423 423 {/* Email Section */} 424 424 <section className="mb-12"> 425 425 <SectionHeader>email</SectionHeader> 426 - <div className="bg-gradient-to-br from-blue-50 to-pink-50 dark:from-slate-800 dark:to-slate-900 p-6 rounded-xl border border-gray-200 dark:border-gray-700"> 426 + <div className="rounded-xl border border-gray-200 bg-gradient-to-br from-blue-50 to-pink-50 p-6 dark:border-gray-700 dark:from-slate-800 dark:to-slate-900"> 427 427 <p className="mb-4 text-gray-700 dark:text-gray-300"> 428 428 I maintain email addresses across various domains. Some addresses 429 429 for organizations I am a part of are not published here for 430 430 privacy reasons. 431 431 </p> 432 - <div className="grid grid-cols-1 md:grid-cols-2 gap-4"> 432 + <div className="grid grid-cols-1 gap-4 md:grid-cols-2"> 433 433 {emails.map((email) => ( 434 434 <EmailCard 435 435 key={email.address} ··· 455 455 {/* Accounts Section */} 456 456 <section className="mb-12"> 457 457 <SectionHeader>accounts</SectionHeader> 458 - <div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4"> 458 + <div className="grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4"> 459 459 {accounts.map((account) => ( 460 460 <Link 461 461 key={account.platform} 462 462 href={`${account.url}?utm_source=jaspermayone.com&utm_medium=referral`} 463 463 rel="me" 464 - className="block p-4 rounded-lg border border-gray-200 dark:border-gray-700 transition-all duration-300 bg-white dark:bg-slate-800 hover:bg-blue-50 dark:hover:bg-slate-700 hover:border-blue-300 dark:hover:border-blue-500 hover:shadow-sm group" 464 + className="group block rounded-lg border border-gray-200 bg-white p-4 transition-all duration-300 hover:border-blue-300 hover:bg-blue-50 hover:shadow-sm dark:border-gray-700 dark:bg-slate-800 dark:hover:border-blue-500 dark:hover:bg-slate-700" 465 465 style={{ 466 466 height: account.note ? "auto" : "5rem", 467 467 minHeight: "5rem",
+1 -1
src/components/AnimatedTitle.tsx
··· 110 110 <span 111 111 key={`third-${index}`} 112 112 style={getLetterStyle( 113 - index + firstWord.length + (secondWord ? secondWord.length : 0), 113 + index + firstWord.length + (secondWord ? secondWord.length : 0) 114 114 )} 115 115 > 116 116 {letter}
+60 -54
src/components/ConfettiWrapper.tsx
··· 1 1 "use client"; 2 2 3 3 import { usePathname } from "next/navigation"; 4 - import { useEffect, useState } from "react"; 4 + import { useEffect, useState, useSyncExternalStore } from "react"; 5 5 6 6 const ImageConfetti = ({ imagePath, duration = 3000 }) => { 7 7 // Existing confetti implementation remains the same ··· 80 80 ctx.save(); 81 81 ctx.translate( 82 82 particle.x + particle.size / 2, 83 - particle.y + particle.size / 2, 83 + particle.y + particle.size / 2 84 84 ); 85 85 ctx.rotate((particle.rotation * Math.PI) / 180); 86 86 ··· 92 92 -particle.size / 2, 93 93 -particle.size / 2, 94 94 particle.size, 95 - particle.size, 95 + particle.size 96 96 ); 97 97 ctx.restore(); 98 98 ··· 185 185 return null; 186 186 }; 187 187 188 + // Subscribe function for dark mode detection 189 + function subscribeToDarkMode(callback: () => void) { 190 + const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); 191 + mediaQuery.addEventListener("change", callback); 192 + return () => mediaQuery.removeEventListener("change", callback); 193 + } 194 + 195 + // Get current snapshot for client 196 + function getDarkModeSnapshot() { 197 + return window.matchMedia("(prefers-color-scheme: dark)").matches; 198 + } 199 + 200 + // Get snapshot for server-side rendering 201 + function getDarkModeServerSnapshot() { 202 + return false; 203 + } 204 + 188 205 export default function ConfettiWrapper() { 189 206 enum confettiTrigger { 190 207 wit = "wit", ··· 234 251 235 252 const pathname = usePathname(); 236 253 const [showConfetti, setShowConfetti] = useState(false); 237 - const [isDarkMode, setIsDarkMode] = useState(false); 254 + const isDarkMode = useSyncExternalStore( 255 + subscribeToDarkMode, 256 + getDarkModeSnapshot, 257 + getDarkModeServerSnapshot 258 + ); 238 259 const [activeImage, setActiveImage] = useState<(typeof images)[0] | null>( 239 - null, 260 + null 240 261 ); 241 262 242 263 // Use a ref to track if we've already shown confetti in this page load ··· 256 277 // Check if browser environment 257 278 if (typeof window === "undefined") return; 258 279 259 - // Detect dark mode 260 - const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); 261 - setIsDarkMode(mediaQuery.matches); 262 - 263 - // Add listener for theme changes 264 - const handleThemeChange = (e: MediaQueryListEvent) => { 265 - setIsDarkMode(e.matches); 266 - }; 267 - 268 - mediaQuery.addEventListener("change", handleThemeChange); 269 - 270 - // Cleanup listener 271 - return () => { 272 - mediaQuery.removeEventListener("change", handleThemeChange); 273 - }; 274 - }, []); 275 - 276 - useEffect(() => { 277 - // Check if browser environment 278 - if (typeof window === "undefined") return; 280 + // Skip if already shown 281 + if (hasShownThisSession || showConfetti) return; 279 282 280 283 // Check URL parameters for any configured triggers 281 284 const searchParams = new URLSearchParams(window.location.search); ··· 289 292 }) 290 293 : null; 291 294 292 - // Only run once on page load when matched and not shown yet 293 - if (matchedConfig && !hasShownThisSession && !showConfetti) { 294 - // Mark that we've shown it this session 295 - setHasShownThisSession(true); 296 - setActiveImage(matchedConfig); 295 + // Only run once on page load when matched 296 + if (matchedConfig) { 297 + // Schedule state updates asynchronously to avoid cascading renders 298 + queueMicrotask(() => { 299 + // Mark that we've shown it this session 300 + setHasShownThisSession(true); 301 + setActiveImage(matchedConfig); 297 302 298 - // Show confetti 299 - setShowConfetti(true); 303 + // Show confetti 304 + setShowConfetti(true); 300 305 301 - // Track confetti display with Umami 302 - const trackingElement = document.createElement("div"); 303 - trackingElement.setAttribute( 304 - "data-umami-event", 305 - matchedConfig.trackingEvent, 306 - ); 307 - trackingElement.setAttribute("data-umami-event-path", pathname); 308 - trackingElement.setAttribute( 309 - "data-umami-event-triggered-by", 310 - "url-param", 311 - ); 312 - trackingElement.style.display = "none"; 313 - document.body.appendChild(trackingElement); 306 + // Track confetti display with Umami 307 + const trackingElement = document.createElement("div"); 308 + trackingElement.setAttribute( 309 + "data-umami-event", 310 + matchedConfig.trackingEvent 311 + ); 312 + trackingElement.setAttribute("data-umami-event-path", pathname); 313 + trackingElement.setAttribute( 314 + "data-umami-event-triggered-by", 315 + "url-param" 316 + ); 317 + trackingElement.style.display = "none"; 318 + document.body.appendChild(trackingElement); 314 319 315 - // Clean up the tracking element after a brief delay 316 - setTimeout(() => { 317 - if (document.body.contains(trackingElement)) { 318 - document.body.removeChild(trackingElement); 319 - } 320 - }, 100); 320 + // Clean up the tracking element after a brief delay 321 + setTimeout(() => { 322 + if (document.body.contains(trackingElement)) { 323 + document.body.removeChild(trackingElement); 324 + } 325 + }, 100); 321 326 322 - // Hide confetti after it finishes (4 seconds total: 2.5s active + 1.5s fade out) 323 - setTimeout(() => setShowConfetti(false), 4000); 327 + // Hide confetti after it finishes (4 seconds total: 2.5s active + 1.5s fade out) 328 + setTimeout(() => setShowConfetti(false), 4000); 329 + }); 324 330 } 325 - }, [pathname, showConfetti, hasShownThisSession]); 331 + }, [pathname, showConfetti, hasShownThisSession, images]); 326 332 327 333 return showConfetti && activeImage ? ( 328 334 <ImageConfetti
+10 -10
src/components/EmailCard.tsx
··· 25 25 }; 26 26 27 27 return ( 28 - <div className="group relative bg-white dark:bg-slate-800 p-4 rounded-lg border border-gray-200 dark:border-gray-700 hover:border-blue-300 dark:hover:border-blue-500 transition-all duration-300"> 28 + <div className="group relative rounded-lg border border-gray-200 bg-white p-4 transition-all duration-300 hover:border-blue-300 dark:border-gray-700 dark:bg-slate-800 dark:hover:border-blue-500"> 29 29 <div className="flex items-center gap-2"> 30 - <Mailbox className="w-4 h-4 text-gray-400 dark:text-gray-500" /> 30 + <Mailbox className="h-4 w-4 text-gray-400 dark:text-gray-500" /> 31 31 <span className="font-mono text-sm text-gray-800 dark:text-gray-200"> 32 32 {formatEmail(email)} 33 33 </span> ··· 39 39 <a 40 40 href={`mailto:${email}`} 41 41 rel="me" 42 - className="flex items-center gap-1 text-xs px-3 py-1 rounded-full bg-blue-50 dark:bg-blue-900/50 text-blue-600 dark:text-blue-200 hover:bg-blue-100 dark:hover:bg-blue-800/50 transition-colors duration-200" 42 + className="flex items-center gap-1 rounded-full bg-blue-50 px-3 py-1 text-xs text-blue-600 transition-colors duration-200 hover:bg-blue-100 dark:bg-blue-900/50 dark:text-blue-200 dark:hover:bg-blue-800/50" 43 43 > 44 - <Mail className="w-3 h-3" /> 44 + <Mail className="h-3 w-3" /> 45 45 Send Email 46 46 </a> 47 47 )} ··· 53 53 )} 54 54 55 55 {isPrimary && ( 56 - <span className="flex items-center gap-1 bg-rose-100 dark:bg-rose-900/50 text-rose-800 dark:text-rose-200 text-xs px-2 py-1 rounded-full"> 57 - <Star className="w-3 h-3" /> 56 + <span className="flex items-center gap-1 rounded-full bg-rose-100 px-2 py-1 text-xs text-rose-800 dark:bg-rose-900/50 dark:text-rose-200"> 57 + <Star className="h-3 w-3" /> 58 58 Primary 59 59 </span> 60 60 )} ··· 65 65 </span> 66 66 )} */} 67 67 {isSchool && ( 68 - <span className="flex items-center gap-1 bg-violet-100 dark:bg-violet-900/50 text-violet-800 dark:text-violet-200 text-xs px-2 py-1 rounded-full"> 69 - <GraduationCap className="w-3 h-3" /> 68 + <span className="flex items-center gap-1 rounded-full bg-violet-100 px-2 py-1 text-xs text-violet-800 dark:bg-violet-900/50 dark:text-violet-200"> 69 + <GraduationCap className="h-3 w-3" /> 70 70 School 71 71 </span> 72 72 )} 73 73 {isBusiness && ( 74 - <span className="flex items-center gap-1 bg-green-100 dark:bg-green-900/50 text-green-800 dark:text-green-200 text-xs px-2 py-1 rounded-full"> 75 - <Briefcase className="w-3 h-3" /> 74 + <span className="flex items-center gap-1 rounded-full bg-green-100 px-2 py-1 text-xs text-green-800 dark:bg-green-900/50 dark:text-green-200"> 75 + <Briefcase className="h-3 w-3" /> 76 76 Business 77 77 </span> 78 78 )}
+4 -4
src/components/FOOTER.tsx
··· 13 13 const currentYear = new Date().getFullYear().toString(); 14 14 15 15 return ( 16 - <footer className="w-full flex justify-center"> 16 + <footer className="flex w-full justify-center"> 17 17 {/* Constrain width and center content */} 18 18 <div 19 19 className="max-w-screen-md px-4" ··· 32 32 } 33 33 > 34 34 {/* Social icons row */} 35 - <div className="flex w-full items-center justify-center gap-1.5 pt-2 overflow-x-hidden"> 35 + <div className="flex w-full items-center justify-center gap-1.5 overflow-x-hidden pt-2"> 36 36 {socialLinks.map(({ href, label, Icon }) => ( 37 37 <Link 38 38 key={label} ··· 40 40 target="_blank" 41 41 rel="noopener noreferrer" 42 42 aria-label={label} 43 - className="transition-colors duration-200 hover:!text-[#56ba8e] inline-flex items-center justify-center" 43 + className="inline-flex items-center justify-center transition-colors duration-200 hover:!text-[#56ba8e]" 44 44 style={{ color: textColor }} 45 45 > 46 46 <Icon size={16} /> ··· 54 54 style={{ color: textColor }} 55 55 > 56 56 <p 57 - className="text-xs text-center leading-relaxed break-words" 57 + className="text-center text-xs leading-relaxed break-words" 58 58 style={{ fontFamily: "var(--font-balgin)", color: textColor }} 59 59 > 60 60 ©{currentYear} Jasper Mayone. Made with &lt;3 in{" "}
+8 -4
src/components/ImageConfetti.jsx
··· 17 17 18 18 const ctx = canvas.getContext("2d"); 19 19 20 + // Define animation frame reference for cleanup 21 + let animationFrame = null; 22 + 20 23 // Load the image 21 24 const img = new Image(); 22 25 img.src = imagePath; ··· 40 43 } 41 44 42 45 // Animation loop 43 - let animationFrame; 44 46 const animate = () => { 45 47 ctx.clearRect(0, 0, canvas.width, canvas.height); 46 48 ··· 48 50 ctx.save(); 49 51 ctx.translate( 50 52 particle.x + particle.size / 2, 51 - particle.y + particle.size / 2, 53 + particle.y + particle.size / 2 52 54 ); 53 55 ctx.rotate((particle.rotation * Math.PI) / 180); 54 56 ctx.drawImage( ··· 56 58 -particle.size / 2, 57 59 -particle.size / 2, 58 60 particle.size, 59 - particle.size, 61 + particle.size 60 62 ); 61 63 ctx.restore(); 62 64 ··· 98 100 if (document.body.contains(canvas)) { 99 101 document.body.removeChild(canvas); 100 102 } 101 - cancelAnimationFrame(animationFrame); 103 + if (animationFrame !== null) { 104 + cancelAnimationFrame(animationFrame); 105 + } 102 106 }; 103 107 }, [imagePath, duration]); 104 108
+3 -3
src/components/MENU.tsx
··· 22 22 addBackground, 23 23 } = props; 24 24 return ( 25 - <div className="pb-1 w-full"> 26 - <div className="pt-3 w-full"> 27 - <div className="flex w-full justify-center items-center mb-4 text-center"> 25 + <div className="w-full pb-1"> 26 + <div className="w-full pt-3"> 27 + <div className="mb-4 flex w-full items-center justify-center text-center"> 28 28 <div 29 29 style={ 30 30 addBackground
+14 -11
src/components/PageNavigation.tsx
··· 167 167 key={item.slug} 168 168 className={`${styles.menuItemContainer} flex items-center`} 169 169 > 170 - <p 171 - className={`${styles.menuItem} ${item.slug === selectedTab ? "lnk" : ""} hover:!text-[#56ba8e] cursor-pointer flex items-center`} 170 + <button 171 + type="button" 172 + className={`${styles.menuItem} ${item.slug === selectedTab ? "lnk" : ""} flex cursor-pointer items-center border-0 bg-transparent p-0 hover:!text-[#56ba8e]`} 172 173 onClick={() => handleMenuClick(item.slug)} 173 174 title={`Go to ${item.slug}`} 174 175 style={ ··· 182 183 } 183 184 > 184 185 /{item.slug} 185 - </p> 186 + </button> 186 187 </div> 187 188 ))} 188 189 <div 189 190 key={"more"} 190 - className={`${styles.menuItemContainer} flex items-center relative`} 191 + className={`${styles.menuItemContainer} relative flex items-center`} 191 192 style={{ isolation: "isolate" }} 192 193 ref={dropdownRef} 193 194 > 194 - <p 195 - className={`${styles.menuItem} ${showMoreDropdown ? "lnk" : ""} hover:!text-[#56ba8e] cursor-pointer flex items-center`} 195 + <button 196 + type="button" 197 + className={`${styles.menuItem} ${showMoreDropdown ? "lnk" : ""} flex cursor-pointer items-center border-0 bg-transparent p-0 hover:!text-[#56ba8e]`} 196 198 onClick={() => setShowMoreDropdown(!showMoreDropdown)} 197 199 title={`see more pages`} 198 200 style={ ··· 206 208 } 207 209 > 208 210 /more 209 - </p> 211 + </button> 210 212 {showMoreDropdown && morePages.length > 0 && ( 211 213 <div 212 - className="absolute top-full mt-2 rounded-[10px] py-2 px-3 min-w-[150px] z-[9999] backdrop-blur-[10px] border-2 border-dashed border-stone-950 dark:border-stone-50" 214 + className="absolute top-full z-[9999] mt-2 min-w-[150px] rounded-[10px] border-2 border-dashed border-stone-950 px-3 py-2 backdrop-blur-[10px] dark:border-stone-50" 213 215 style={{ 214 216 background: "light-dark(#f8fbf8, #151922)", 215 217 boxShadow: ··· 218 220 > 219 221 {morePages.map((item: PageItem, index) => ( 220 222 <div key={item.slug}> 221 - <p 222 - className="cursor-pointer py-1 px-2 transition-colors duration-300 ease-in-out italic text-sm hover:!text-[#56ba8e] hover:underline hover:decoration-wavy" 223 + <button 224 + type="button" 225 + className="w-full cursor-pointer border-0 bg-transparent px-2 py-1 text-left text-sm italic transition-colors duration-300 ease-in-out hover:!text-[#56ba8e] hover:underline hover:decoration-wavy" 223 226 onClick={() => { 224 227 handleMenuClick(item.slug); 225 228 setShowMoreDropdown(false); ··· 230 233 }} 231 234 > 232 235 /{item.slug} 233 - </p> 236 + </button> 234 237 {index < morePages.length - 1 && ( 235 238 <div 236 239 className="my-1 h-px opacity-20"
+5 -5
src/components/PostList.tsx
··· 64 64 return ( 65 65 <div className="space-y-3"> 66 66 <div className="flex items-center justify-center py-8"> 67 - <div className="animate-spin rounded-full h-6 w-6 border-b-2 border-gray-600"></div> 67 + <div className="h-6 w-6 animate-spin rounded-full border-b-2 border-gray-600"></div> 68 68 <span 69 69 className="ml-3 text-gray-600" 70 70 style={{ fontFamily: "var(--font-balgin)" }} ··· 87 87 > 88 88 Failed to load updates 89 89 </p> 90 - <p className="text-sm mt-1">{error}</p> 90 + <p className="mt-1 text-sm">{error}</p> 91 91 </div> 92 92 </div> 93 93 </div> ··· 101 101 <div className="space-y-3"> 102 102 {postsToShow.map((post, index) => ( 103 103 <div key={index} className="flex items-start gap-3"> 104 - <div className="w-2 h-2 bg-gray-400 rounded-full mt-2 shrink-0"></div> 104 + <div className="mt-2 h-2 w-2 shrink-0 rounded-full bg-gray-400"></div> 105 105 <div className="flex-1"> 106 106 <p 107 107 className="text-gray-800" ··· 109 109 > 110 110 {post.text} 111 111 </p> 112 - <p className="text-xs text-gray-500 mt-1"> 112 + <p className="mt-1 text-xs text-gray-500"> 113 113 {formatTimeAgo(post.createdAt)} 114 114 </p> 115 115 </div> ··· 119 119 <div className="flex justify-center pt-4"> 120 120 <button 121 121 onClick={() => setShowCount((prev) => prev + 5)} 122 - className="px-4 py-2 text-sm text-gray-600 hover:text-gray-800 hover:bg-gray-100 rounded-md transition-colors" 122 + className="rounded-md px-4 py-2 text-sm text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-800" 123 123 > 124 124 Show more 125 125 </button>
+8 -8
src/components/ProfileEmailCard.tsx
··· 15 15 const [user, domain] = email.split("@"); 16 16 17 17 return ( 18 - <div className="w-64 mt-2 p-3 border border-greeen rounded-lg hover:bg-blue-100 transition-all duration-300 bg-white/50"> 19 - <h3 className="text-gray-700 font-medium text-sm mb-2 text-center"> 18 + <div className="border-greeen mt-2 w-64 rounded-lg border bg-white/50 p-3 transition-all duration-300 hover:bg-blue-100"> 19 + <h3 className="mb-2 text-center text-sm font-medium text-gray-700"> 20 20 Contact me 21 21 </h3> 22 - <div className="text-sm text-gray-600 font-mono mb-2 text-center"> 22 + <div className="mb-2 text-center font-mono text-sm text-gray-600"> 23 23 {user}[at]{domain} 24 24 </div> 25 25 <div className="flex gap-2"> 26 26 <Link 27 27 rel="me" 28 28 href={`mailto:${email}`} 29 - className="flex items-center justify-center gap-1 px-2 py-1 rounded-md bg-blue-50 text-blue-600 hover:bg-blue-50 transition-colors duration-200 text-xs flex-1" 29 + className="flex flex-1 items-center justify-center gap-1 rounded-md bg-blue-50 px-2 py-1 text-xs text-blue-600 transition-colors duration-200 hover:bg-blue-50" 30 30 > 31 - <Mail className="w-3 h-3" /> 31 + <Mail className="h-3 w-3" /> 32 32 Email 33 33 </Link> 34 34 <button 35 35 onClick={copyToClipboard} 36 - className="flex items-center justify-center space-x-2 px-3 py-2 rounded bg-gray-200 text-gray-600 hover:bg-gray-300 transition-colors duration-200 outline-1 outline-gray-300 text-sm w-full" 36 + className="flex w-full items-center justify-center space-x-2 rounded bg-gray-200 px-3 py-2 text-sm text-gray-600 outline-1 outline-gray-300 transition-colors duration-200 hover:bg-gray-300" 37 37 data-umami-event="copy_email" 38 38 > 39 39 {copied ? ( 40 40 <> 41 - <Check className="w-3 h-3" /> 41 + <Check className="h-3 w-3" /> 42 42 Copied 43 43 </> 44 44 ) : ( 45 45 <> 46 - <Copy className="w-3 h-3" /> 46 + <Copy className="h-3 w-3" /> 47 47 Copy 48 48 </> 49 49 )}
+1 -1
src/components/RoundedImage.tsx
··· 32 32 loading={isPriority ? undefined : loading} // Remove loading prop when priority is true 33 33 placeholder="blur" 34 34 priority={isPriority} 35 - className="border-2 border-dotted border-stone-950 dark:border-stone-50 rounded-[10%]" 35 + className="rounded-[10%] border-2 border-dotted border-stone-950 dark:border-stone-50" 36 36 style={{ 37 37 maxWidth: "100%", 38 38 height: "auto",
+4 -4
src/components/SquigglyLine.tsx
··· 46 46 47 47 // Create a smooth sine wave 48 48 const points = []; 49 - const steps = screenWidth; 49 + const _steps = screenWidth; 50 50 const waveLength = screenWidth / frequency; 51 51 52 52 for (let x = 0; x <= screenWidth; x++) { 53 53 const y = amplitude * Math.sin((2 * Math.PI * x) / waveLength); 54 - // @ts-expect-error 54 + // @ts-expect-error - TypeScript infers string[] but we know it's a valid point string 55 55 points.push(`${x},${y}`); 56 56 } 57 57 58 58 // Create the path with smooth curves 59 59 const path = points.reduce((acc, point, i) => { 60 60 if (i === 0) return `M ${point}`; 61 - // @ts-expect-error 61 + // @ts-expect-error - Array destructuring from split() returns string[], which is correct here 62 62 const [prevX, prevY] = points[i - 1].split(","); 63 - // @ts-expect-error 63 + // @ts-expect-error - Array destructuring from split() returns string[], which is correct here 64 64 const [x, y] = point.split(","); 65 65 66 66 // Calculate control points for smooth curve
+2 -2
src/components/WavyDivider.tsx
··· 1 1 export default function WavyDivider() { 2 2 return ( 3 - <div className="mb-2 -mt-2.5"> 3 + <div className="-mt-2.5 mb-2"> 4 4 <svg 5 - className="w-full h-7" 5 + className="h-7 w-full" 6 6 viewBox="0 0 1200 24" 7 7 preserveAspectRatio="none" 8 8 >
+8 -8
src/components/email.tsx
··· 64 64 }; 65 65 66 66 return ( 67 - <div className="w-full max-w-6xl mx-auto px-4"> 67 + <div className="mx-auto w-full max-w-6xl px-4"> 68 68 {/* h2 with custom .ul class */} 69 69 <h2 className={styles.lightUl}>Newsletter</h2> 70 - <p className="text-gray-700 dark:text-white/70 text-sm mb-4"> 70 + <p className="mb-4 text-sm text-gray-700 dark:text-white/70"> 71 71 Subscribe to my newsletter to get <i>occasioal</i> updates on what I'm 72 72 up to. 73 73 </p> 74 74 75 75 {!submitted ? ( 76 76 <form onSubmit={onSubmit} className="w-full"> 77 - <div className="flex flex-col sm:flex-row gap-3 w-full"> 77 + <div className="flex w-full flex-col gap-3 sm:flex-row"> 78 78 <Input 79 79 type="email" 80 80 placeholder="example@example.com" 81 - className="flex-1 text-sm outline-none border-1 border-gray-300 focus:border-blue-400 focus:ring-blue-400" 81 + className="flex-1 border-1 border-gray-300 text-sm outline-none focus:border-blue-400 focus:ring-blue-400" 82 82 value={email} 83 83 onChange={handleInputChange} 84 84 aria-label="email" ··· 86 86 /> 87 87 <Button 88 88 type="submit" 89 - className="text-sm whitespace-nowrap bg-blue-400" 89 + className="bg-blue-400 text-sm whitespace-nowrap" 90 90 aria-label="submit" 91 91 disabled={isLoading} 92 92 data-umami-event="newsletter_submit" ··· 97 97 </div> 98 98 99 99 {woahThere && ( 100 - <p className="text-purple-500 text-sm mt-2"> 100 + <p className="mt-2 text-sm text-purple-500"> 101 101 Slow down cowboy! You&apos;re not Jasper! 102 102 </p> 103 103 )} 104 - {error && <p className="text-red-500 text-sm mt-2">{error}</p>} 104 + {error && <p className="mt-2 text-sm text-red-500">{error}</p>} 105 105 </form> 106 106 ) : ( 107 - <p className="text-green-400 text-sm"> 107 + <p className="text-sm text-green-400"> 108 108 Submitted! Be sure to look out for emails in the future! 109 109 </p> 110 110 )}
+35 -41
src/components/experience.tsx
··· 8 8 import { ExperienceItem } from "@/lib/types"; 9 9 import styles from "@/styles/Misc.module.css"; 10 10 11 + const ExperienceColumn = ({ items }: { items: ExperienceItem[] }) => ( 12 + <div className="flex-1"> 13 + <Accordion type="single" collapsible> 14 + {items.map((item, index) => ( 15 + <AccordionItem 16 + key={item.company} 17 + value={`item-${index}`} 18 + className="mb-2 border-b-0 last:mb-0" 19 + > 20 + <AccordionTrigger className="rounded-lg px-2 py-2 text-sm hover:bg-blue-50 hover:no-underline data-[state=open]:bg-blue-50 dark:hover:bg-slate-600 dark:data-[state=open]:bg-slate-600"> 21 + <div className="text-left group-hover:bg-blue-50 dark:group-hover:bg-slate-700"> 22 + {item.company} 23 + </div> 24 + </AccordionTrigger> 25 + <AccordionContent className="px-2 py-2"> 26 + <p className="text-sm text-gray-700 dark:text-stone-200"> 27 + {item.role} 28 + </p> 29 + <p className="mt-1 text-xs text-gray-500 dark:text-stone-400"> 30 + {item.location} 31 + </p> 32 + <p className="text-xs text-gray-500 italic dark:text-stone-400"> 33 + {item.date} 34 + </p> 35 + </AccordionContent> 36 + </AccordionItem> 37 + ))} 38 + </Accordion> 39 + </div> 40 + ); 41 + 11 42 export default function Experience() { 12 43 const columnSize = Math.ceil(experience.length / 2); 13 44 const firstColumn = experience.slice(0, columnSize); 14 45 const secondColumn = experience.slice(columnSize, columnSize * 2); 15 46 16 - const ExperienceColumn = ({ 17 - items, 18 - columnId, 19 - }: { 20 - items: ExperienceItem[]; 21 - columnId: string; 22 - }) => ( 23 - <div className="flex-1"> 24 - <Accordion type="single" collapsible> 25 - {items.map((item, index) => ( 26 - <AccordionItem 27 - key={item.company} 28 - value={`item-${index}`} 29 - className="mb-2 last:mb-0 border-b-0" 30 - > 31 - <AccordionTrigger className="py-2 rounded-lg px-2 text-sm hover:bg-blue-50 dark:hover:bg-slate-600 hover:no-underline data-[state=open]:bg-blue-50 dark:data-[state=open]:bg-slate-600"> 32 - <div className="text-left group-hover:bg-blue-50 dark:group-hover:bg-slate-700"> 33 - {item.company} 34 - </div> 35 - </AccordionTrigger> 36 - <AccordionContent className="px-2 py-2"> 37 - <p className="text-gray-700 dark:text-stone-200 text-sm"> 38 - {item.role} 39 - </p> 40 - <p className="text-xs text-gray-500 dark:text-stone-400 mt-1"> 41 - {item.location} 42 - </p> 43 - <p className="text-xs text-gray-500 dark:text-stone-400 italic"> 44 - {item.date} 45 - </p> 46 - </AccordionContent> 47 - </AccordionItem> 48 - ))} 49 - </Accordion> 50 - </div> 51 - ); 52 - 53 47 return ( 54 - <div className="w-full max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"> 48 + <div className="mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8"> 55 49 <h2 className={styles.lightUl}>Experience</h2> 56 - <div className="grid grid-cols-1 md:grid-cols-2 gap-4"> 57 - <ExperienceColumn items={firstColumn} columnId="first" /> 58 - <ExperienceColumn items={secondColumn} columnId="second" /> 50 + <div className="grid grid-cols-1 gap-4 md:grid-cols-2"> 51 + <ExperienceColumn items={firstColumn} /> 52 + <ExperienceColumn items={secondColumn} /> 59 53 </div> 60 54 </div> 61 55 );
+3 -4
src/components/helpers/commitHash.tsx
··· 1 1 "use client"; 2 2 3 3 import * as TooltipPrimitive from "@radix-ui/react-tooltip"; 4 - import { formatDistanceToNow, isWeekend } from "date-fns"; 4 + import { formatDistanceToNow } from "date-fns"; 5 5 6 6 interface CommitHashProps { 7 7 color?: string; ··· 9 9 10 10 export default function CommitHash({ color }: CommitHashProps) { 11 11 const commitDate = new Date(process.env.COMMIT_DATE!); 12 - const isitweekend = isWeekend(commitDate); 13 12 const formattedCommitDate = formatDistanceToNow(commitDate, { 14 13 addSuffix: true, 15 14 }); ··· 24 23 <TooltipPrimitive.Root> 25 24 <TooltipPrimitive.Trigger asChild> 26 25 <a 27 - className="decoration-wavy underline hover:text-blur transition-colors duration-300" 26 + className="hover:text-blur underline decoration-wavy transition-colors duration-300" 28 27 style={{ 29 28 color: linkColor, 30 29 textDecorationColor: linkColor, ··· 36 35 </TooltipPrimitive.Trigger> 37 36 <TooltipPrimitive.Portal> 38 37 <TooltipPrimitive.Content 39 - className="rounded-xl bg-white dark:bg-slate-800 p-3 font-mono text-sm text-slate-800 dark:text-slate-200 shadow-xl border border-slate-200 dark:border-slate-600 backdrop-blur-sm z-50" 38 + className="z-50 rounded-xl border border-slate-200 bg-white p-3 font-mono text-sm text-slate-800 shadow-xl backdrop-blur-sm dark:border-slate-600 dark:bg-slate-800 dark:text-slate-200" 40 39 sideOffset={5} 41 40 > 42 41 {process.env.FULL_COMMIT_HASH}
+2 -2
src/components/theme-updater.tsx
··· 25 25 26 26 // Update the apple-mobile-web-app-status-bar-style 27 27 const appleMetaTag = document.querySelector( 28 - 'meta[name="apple-mobile-web-app-status-bar-style"]', 28 + 'meta[name="apple-mobile-web-app-status-bar-style"]' 29 29 ); 30 30 if (appleMetaTag) { 31 31 appleMetaTag.setAttribute( 32 32 "content", 33 - resolvedTheme === "dark" ? "black-translucent" : "default", 33 + resolvedTheme === "dark" ? "black-translucent" : "default" 34 34 ); 35 35 } 36 36 }, [resolvedTheme]);
+4 -4
src/components/ui/accordion.tsx
··· 27 27 ref={ref} 28 28 className={cn( 29 29 "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all [&[data-state=open]>svg]:rotate-180", 30 - className, 30 + className 31 31 )} 32 32 {...props} 33 33 > 34 34 {children} 35 - <CaretDownIcon className="h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" /> 35 + <CaretDownIcon className="text-muted-foreground h-4 w-4 shrink-0 transition-transform duration-200" /> 36 36 </AccordionPrimitive.Trigger> 37 37 </AccordionPrimitive.Header> 38 38 )); ··· 44 44 >(({ className, children, ...props }, ref) => ( 45 45 <AccordionPrimitive.Content 46 46 ref={ref} 47 - className="overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down" 47 + className="data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm" 48 48 {...props} 49 49 > 50 - <div className={cn("pb-4 pt-0", className)}>{children}</div> 50 + <div className={cn("pt-0 pb-4", className)}>{children}</div> 51 51 </AccordionPrimitive.Content> 52 52 )); 53 53 AccordionContent.displayName = AccordionPrimitive.Content.displayName;
+2 -2
src/components/ui/button.tsx
··· 31 31 variant: "default", 32 32 size: "default", 33 33 }, 34 - }, 34 + } 35 35 ); 36 36 37 37 export interface ButtonProps ··· 50 50 {...props} 51 51 /> 52 52 ); 53 - }, 53 + } 54 54 ); 55 55 Button.displayName = "Button"; 56 56
+9 -7
src/components/ui/card.tsx
··· 10 10 <div 11 11 ref={ref} 12 12 className={cn( 13 - "rounded-lg border bg-card text-card-foreground shadow-sm", 14 - className, 13 + "bg-card text-card-foreground rounded-lg border shadow-sm", 14 + className 15 15 )} 16 16 {...props} 17 17 /> ··· 33 33 const CardTitle = React.forwardRef< 34 34 HTMLParagraphElement, 35 35 React.HTMLAttributes<HTMLHeadingElement> 36 - >(({ className, ...props }, ref) => ( 36 + >(({ className, children, ...props }, ref) => ( 37 37 <h3 38 38 ref={ref} 39 39 className={cn( 40 - "text-2xl font-semibold leading-none tracking-tight", 41 - className, 40 + "text-2xl leading-none font-semibold tracking-tight", 41 + className 42 42 )} 43 43 {...props} 44 - /> 44 + > 45 + {children} 46 + </h3> 45 47 )); 46 48 CardTitle.displayName = "CardTitle"; 47 49 ··· 51 53 >(({ className, ...props }, ref) => ( 52 54 <p 53 55 ref={ref} 54 - className={cn("text-sm text-muted-foreground", className)} 56 + className={cn("text-muted-foreground text-sm", className)} 55 57 {...props} 56 58 /> 57 59 ));
+4 -5
src/components/ui/input.tsx
··· 2 2 3 3 import { cn } from "../../lib/utils"; 4 4 5 - export interface InputProps 6 - extends React.InputHTMLAttributes<HTMLInputElement> {} 5 + export type InputProps = React.InputHTMLAttributes<HTMLInputElement>; 7 6 8 7 const Input = React.forwardRef<HTMLInputElement, InputProps>( 9 8 ({ className, type, ...props }, ref) => { ··· 11 10 <input 12 11 type={type} 13 12 className={cn( 14 - "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50", 15 - className, 13 + "border-input placeholder:text-muted-foreground focus-visible:ring-ring flex h-9 w-full rounded-md border bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:ring-1 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50", 14 + className 16 15 )} 17 16 ref={ref} 18 17 aria-label="input" 19 18 {...props} 20 19 /> 21 20 ); 22 - }, 21 + } 23 22 ); 24 23 Input.displayName = "Input"; 25 24
+2 -2
src/components/ui/tooltip.tsx
··· 17 17 ref={ref} 18 18 sideOffset={sideOffset} 19 19 className={cn( 20 - "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", 21 - className, 20 + "bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 overflow-hidden rounded-md px-3 py-1.5 text-xs", 21 + className 22 22 )} 23 23 {...props} 24 24 />
+3 -3
src/lib/keysIndex.ts
··· 10 10 title: string, 11 11 fingerprint: string, 12 12 key: string, 13 - fileExtension: string = "pub", 13 + fileExtension: string = "pub" 14 14 ) { 15 15 this.title = title; 16 16 this.fingerprint = fingerprint; ··· 25 25 "ssh", 26 26 "256 MD5:b7:e0:9e:44:c3:98:8d:64:3e:6b:da:5f:01:db:58:dc jsp@remus (ED25519)", 27 27 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHm7lo7umraewipgQu1Pifmoo/V8jYGDHjBTmt+7SOCe jsp@remus", 28 - "pub", 28 + "pub" 29 29 ), 30 30 gpg: new Key( 31 31 "gpg", ··· 255 255 ayb88UeQwysyCDxW1JAA 256 256 =gjq7 257 257 -----END PGP PUBLIC KEY BLOCK-----`, 258 - "gpg", 258 + "gpg" 259 259 ), 260 260 }); 261 261
+1 -1
src/lib/og-image.tsx
··· 162 162 { 163 163 width: 1200, 164 164 height: 630, 165 - }, 165 + } 166 166 ); 167 167 }
+2 -2
src/lib/og-utils.ts
··· 97 97 // Helper function to generate OG image URL for any page 98 98 export const getOGImageUrl = ( 99 99 path: string, 100 - customData?: Partial<OGImageData>, 100 + customData?: Partial<OGImageData> 101 101 ) => { 102 102 const baseUrl = "/api/og"; 103 103 const params = new URLSearchParams(); ··· 120 120 path: string, 121 121 title: string, 122 122 description: string, 123 - customData?: Partial<OGImageData>, 123 + customData?: Partial<OGImageData> 124 124 ) => { 125 125 const ogImageUrl = getOGImageUrl(path, customData); 126 126
+17 -6
tsconfig.json
··· 1 1 { 2 2 "compilerOptions": { 3 3 "target": "ES2017", 4 - "lib": ["dom", "dom.iterable", "esnext"], 4 + "lib": [ 5 + "dom", 6 + "dom.iterable", 7 + "esnext" 8 + ], 5 9 "allowJs": true, 6 10 "skipLibCheck": true, 7 11 "strict": true, ··· 20 24 } 21 25 ], 22 26 "paths": { 23 - "@/*": ["./src/*"], 24 - "@public/*": ["./public/*"] 25 - } 27 + "@/*": [ 28 + "./src/*" 29 + ], 30 + "@public/*": [ 31 + "./public/*" 32 + ] 33 + }, 34 + // "baseUrl": "src/" 26 35 }, 27 36 "include": [ 28 37 "next-env.d.ts", ··· 31 40 ".next/types/**/*.ts", 32 41 ".next/dev/types/**/*.ts" 33 42 ], 34 - "exclude": ["node_modules"] 35 - } 43 + "exclude": [ 44 + "node_modules" 45 + ] 46 + }